[{"data":1,"prerenderedAt":2725},["ShallowReactive",2],{"blog-posts":3},[4,481,856,1471,1607,2597],{"id":5,"title":6,"activeDiscussion":7,"body":8,"category":464,"cover":465,"date":466,"description":467,"disabled":7,"extension":468,"highlighted":7,"layout":469,"meta":470,"navigation":471,"path":472,"readTimeInMinutes":473,"seo":474,"stem":475,"tags":476,"useAltColors":471,"__hash__":480},"blog\u002Fsony-no-physical-media.md","The death of physical media",false,{"type":9,"value":10,"toc":453},"minimark",[11,15,40,43,55,61,105,136,178,202,211,216,219,224,233,238,250,265,271,281,286,347,351,369,373,397,399,403,422,448],[12,13,6],"h1",{"id":14},"the-death-of-physical-media",[16,17,18,19,26,27,30,31,36,37,39],"p",{},"Yesterday, Sony announced two major decisions, one concerning ",[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fblog.playstation.com\u002F2026\u002F07\u002F01\u002Fan-update-on-playstation-store-for-ps3-and-ps-vita\u002F",[24],"nofollow","the PS3 and PS Vita stores",", with the other marking the beginning of the end of physical media on Sony consoles.",[28,29],"br",{},"\nJust a few days prior, Sony nonchalantly confirmed that over ",[20,32,35],{"href":33,"rel":34},"https:\u002F\u002Fwww.playstation.com\u002Fen-gb\u002Flegal\u002Fpsvideocontent\u002F",[24],"500 movies"," will be removed from your video library, once more highlighting why piracy is a necessity.",[28,38],{},"\nOh, the irony.",[16,41,42],{},"First of all, take a proper look at the wording in the article about the PS3 and PS Vita store closure:",[44,45,47],"simple-quote",{"author":46},"Sid Shuman",[16,48,49,50,54],{},"To ease the transition, players will still be able to download previously purchased content after the closing date ",[51,52,53],"b",{},"for the foreseeable future",".",[16,56,57,58,60],{},"What this means is that eventually, you will no longer be able to access your digitally purchased content.",[28,59],{},"\nAt the same time, they force you to go digital, making it the new norm to lose access to content you purchased with your hard-earned money somewhere down the road.",[16,62,63,64,68,69,71,72,74,75,77,78,80,81,85,86,85,89,92,93,54,96,98,99,101,102,104],{},"Honestly, I saw all that crap coming for a ",[65,66,67],"strong",{},"long"," time, given that I moved to PC in 2019, with the PS4 being my last ever PlayStation anyways.",[28,70],{},"\nEven before we received that news, the PS6 was already an incredibly bad value proposition.",[28,73],{},"\nIf the PS5’s lifecycle is anything to go by, then we’re looking at a very limited amount of exclusive titles, despite Sony announcing that it’ll stop porting all first-party single-player narrative games from PlayStation Studios to PC.",[28,76],{},"\nBesides Astro Bot, there weren’t any true exclusives worth buying the console for.",[28,79],{},"\nThe only other games I was interested in were also available on PS4 or PC, including ",[82,83,84],"em",{},"Stellar Blade",", ",[82,87,88],{},"Ghost of Tsushima",[82,90,91],{},"Gran Turismo 7",", and ",[82,94,95],{},"Ratchet & Clank - Rift Apart",[28,97],{},"\nWhile ",[82,100,95],{}," is a good game, it was yet another step in the wrong direction, giving Ratchet & Clank the Disney treatment.",[28,103],{},"\nCompare PS5 Ratchet to PS2 Ratchet and you can see how the games have lost their edgy early 2000s humor, and that Ratchet clearly lost his snarky tone.",[16,106,107,108,110,111,114,115,117,118,121,122,125,126,128,129,131,132,135],{},"On the game side of things, we’re facing a second issue.",[28,109],{},"\nHave you noticed these ",[65,112,113],{},"insane"," release cadences?",[28,116],{},"\nThe last mainline Ratchet title was ",[82,119,120],{},"Into the Nexus"," from 2013, ",[82,123,124],{},"Rift Apart"," dropped in 2021, so 8 years after—and that’s one of the shorter turnaround times.",[28,127],{},"\nJust for comparison’s sake, we saw four of the best Ratchet games of all time released in the span of just 4 years back on the PS2. Now we’re getting one game every 8 years—in a best-case scenario.",[28,130],{},"\nThe last proper Gran Turismo? Also from 2013, with ",[82,133,134],{},"GT7"," seeing the light of day in 2022, 9 years after its predecessor.",[16,137,138,139,141,142,145,146,149,150,152,153,156,157,160,161,164,165,167,168,170,171,174,175,177],{},"What about the other anticipated games?",[28,140],{},"\nGTA? ",[82,143,144],{},"GTA V"," was released in 2013 as well, with ",[82,147,148],{},"GTA 6","… set for release in late 2026, so 13 years later.",[28,151],{},"\nWitcher? ",[82,154,155],{},"Witcher 3"," is from 2015. With CDPR ",[82,158,159],{},"aiming"," for a ",[82,162,163],{},"Witcher 4"," release in late 2027, we’re looking at a minimum of 12 years between releases.",[28,166],{},"\nTES 6? No official release date yet, 2028 or 2029 at the earliest. That would make it 17 to 18 years between installments.",[28,169],{},"\nWhat about Fallout? Well, since The Elder Scrolls is Bethesda’s priority, and ",[82,172,173],{},"Fallout 4"," was released over a decade ago, chances are that we’re looking at two decades between releases.",[28,176],{},"\nAnd that’s just waiting time between releases. This doesn’t even account for the dramatic drop in quality that we’ve seen over the years, the political activism in gaming, and the complete disdain most devs have for their audience.",[16,179,180,181,183,184,186,187,189,190,192,193,195,196,198,199,201],{},"Furthermore, there is the estimated price point of $1,000+ at release, with most games climbing to at least $80.",[28,182],{},"\nLong gone are the days of teens buying their first console, getting one as a gift for their birthday, or unpacking that shiny new console on Christmas Eve.",[28,185],{},"\nOn top of that, we’re looking at several price increases over the course of the console’s lifecycle, given that AI is here to stay, with RAM going to data centers, not consumers, and further price hikes guaranteed.",[28,188],{},"\nI don’t even want to think about what a potential Pro model could cost.",[28,191],{},"\nConsoles sold so well because they made gaming affordable. Console makers subsidized consoles and made profits from selling games and deals they held with publishers.",[28,194],{},"\nThey made gaming effortless. Buy disc, insert disc, play game.",[28,197],{},"\nNow it’s buy pretend-disc, realize it’s just a download code, enter download code, download game, download Day-1 patch, lose interest before ever playing the game.",[28,200],{},"\nWelcome to modern gaming!",[16,203,204,205,207,208,210],{},"In essence, the blog post was just a big fuck you to all PlayStation fans, or even console fans in general.",[28,206],{},"\nBut hey, at least Sid Shuman was kind enough to share his pronouns with us, right?",[28,209],{},"\nIt’s all good!",[212,213],"simple-image",{"alt":214,"src":215},"Sid Shuman showing us his pronouns.","images\u002Fblog\u002Farticles\u002Fsony-no-physical-media\u002Fpronouns.webp",[217,218],"hr",{},[220,221,223],"h2",{"id":222},"how-is-this-going-to-affect-us","How is this going to affect us?",[16,225,226,227,229,230,232],{},"A little bit of background info about my relationship to consoles.",[28,228],{},"\nI started gaming on a PS2 in the early 2000s, with some weird PS1 Hot Wheels game being the first game I remember playing when I was 4, maybe 5 years old?",[28,231],{},"\nMy first ever console was a PS3, which I absolutely loved, thanks to free online gaming, fantastic exclusives (Tools of Destruction, A Crack in Time, Little Big Planet, God of War, etc.), and one of the best console UIs of all time.",[212,234],{"alt":235,"src":236,"caption":237},"The PlayStation 3’s XMB.","images\u002Fblog\u002Farticles\u002Fsony-no-physical-media\u002Fxmb.webp","The XMB on a jailbroken PS3 in all its glory.",[16,239,240,241,243,244,246,247,249],{},"The 8th generation of consoles was already a step in the wrong direction.",[28,242],{},"\nMicrosoft tried to get rid of the used games market, which resulted in a major backlash, sealing the Xbox One’s fate before the generation even started.",[28,245],{},"\nThe PS4, while the better console, highlighted several other issues the industry was steering towards.",[28,248],{},"\nRemasters and remakes everywhere, games locked to 30 FPS, live-service titles, and an overall decline in quality troubled the 8th gen consoles.",[16,251,252,253,255,256,258,259,261,262,264],{},"Besides a jailbroken PS3, I haven’t owned a console since my Xbox One days, back in 2019.",[28,254],{},"\nI went full digital-only over seven years ago—with a twist.",[28,257],{},"\nWhile I may occasionally buy the odd game or two per year, I usually just play older games, mostly by emulating titles from the golden era of gaming, including PS2, PS3, GBA, GC, and so on.",[28,260],{},"\nFor the PS3, I emulate those titles that were outright locked to 30 FPS on actual hardware, or those that had a hard time reaching a steady 60 FPS.",[28,263],{},"\nBesides that, I play most PS3 games on actual hardware, which has cost me a total of $80 so far, including the console and a 1TB 2.5” SSD, which is where I store all my games on.",[16,266,267,268,270],{},"For PC games, I pirate absolutely everything I’m mildly interested in.",[28,269],{},"\nGiven the state of the industry, there is no other way around; too many games are broken at release, include political propaganda, or get praised by paid shills on social media, despite being subpar experiences.",[16,272,273,274,277,278,280],{},"Me personally, I’m not ",[82,275,276],{},"directly"," affected by the changes that Sony announced.",[28,279],{},"\nBut one always has to think about collateral damage and what certain actions may lead to in the near future. And then again, tuning out the second something doesn’t affect us personally is exactly how we got there in the first place.",[282,283,285],"h3",{"id":284},"gaming-will-become-a-luxury","Gaming will become a luxury",[16,287,288,289,291,292,294,295,297,298,301,302,305,306,308,309,311,312,314,315,317,318,85,321,324,325,54,328,330,331,333,334,336,337,339,340,343,344,346],{},"With physical media being phased out, prices for existing physical copies will skyrocket, very likely way before the actual transition takes place in 2028.",[28,290],{},"\nRetro gaming has been pricey for quite a while, with sought-after titles raking in hundreds, if not thousands of dollars.",[28,293],{},"\nSony’s decision could not just impact retro titles, but rather modern titles—think PS4 and even PS5—as well.",[28,296],{},"\nPhysical media allowed players to play some of those “play once, sell” games, such as ",[82,299,300],{},"Hogwarts Legacy"," and ",[82,303,304],{},"Red Dead Redemption 2",", which are great on the first playthrough, but offer nothing on subsequent playthroughs.",[28,307],{},"\nSure, you can technically sell digital games, but it entails severe risks, since you’re breaking Sony’s TOS.",[28,310],{},"\nYou could create a new account per game, play the game, then sell the account either on eBay or dedicated platforms. Get caught, and your account will be banned. On the buyer’s side, you risk being scammed, so prices for accounts are usually much lower than their physical equivalent.",[28,313],{},"\nOn top of that, lending games to your friends is going to be a thing of the past.",[28,316],{},"\nI distinctly remember every single game I borrowed from a friend, whether it be ",[82,319,320],{},"Final Fantasy Tactics Advance",[82,322,323],{},"Tony Hawk’s Proving Ground",", or ",[82,326,327],{},"Animal Crossing: Wild World",[28,329],{},"\nWhy?",[28,332],{},"\nBecause otherwise, I wouldn’t have given some of these games a chance—looking at you, Animal Crossing.",[28,335],{},"\nYou and your friends had something to talk about; you could share your experiences and discuss strategies. With digital-only, you’d have to share accounts.",[28,338],{},"\nBack in the day, this wasn’t ",[82,341,342],{},"as"," bad, but still rather risky. With digital becoming the norm, your account becomes increasingly more important, with potentially thousands of dollars worth of content and active payment methods linked to it.",[28,345],{},"\nYou may be inclined to grant your best friend access to your account, but what about not-so-close friends that you hardly ever speak to? Probably not.",[282,348,350],{"id":349},"its-just-the-beginning","It’s just the beginning",[16,352,353,354,356,357,359,360,362,363,365,366,368],{},"Another important aspect that we can’t forget about is that Sony paved the way for other companies to follow suit.",[28,355],{},"\nI have no doubt that both Microsoft and Nintendo will abolish physical media in due time.",[28,358],{},"\nThis is going to amplify all the downsides I already mentioned above, from price increases to the inability to sell and lend games.",[28,361],{},"\nThe official stores will become the only source for games, handing them complete control over pricing and distribution.",[28,364],{},"\nRemember when we were told that digital games would be cheaper, given that companies would no longer have to pay for boxes, manuals, and shipping?",[28,367],{},"\nPepperidge Farm remembers.",[282,370,372],{"id":371},"community","Community",[16,374,375,376,378,379,381,382,384,385,387,388,390,391,393,394,396],{},"Finally, it’ll take a toll on free speech.",[28,377],{},"\nWhile it sounds completely bonkers at first, it’s exactly what’s going to happen.",[28,380],{},"\nThe importance of your account grows with the amount of money you spend on digital content. No physical media means more digitally purchased goods.",[28,383],{},"\nIf you only had the odd item or two bought on your account, you may not care all that much about losing access to it, but what about an account worth thousands of dollars?",[28,386],{},"\nYou may be inclined to shut up as to not get your account banned for arbitrary reasons.",[28,389],{},"\nAnybody who played multiplayer games during the 2010s remembers how unhinged some in-game conversations were. We insulted each other, fucked around, and bonded over stupid shit.",[28,392],{},"\nThat has long since been a thing of the past thanks to draconian moderation, which can often get you banned for anything from simple trash-talking to having a laugh with your friends.",[28,395],{},"\nThis will get exponentially worse, and in-game chat will be even more of a ghost town than it already is.",[217,398],{},[220,400,402],{"id":401},"what-can-we-do","What can we do?",[16,404,405,406,408,409,411,412,414,415,418,419,421],{},"As always, scanning social media after such news would make you think that people are finally fed up, and that the industry is on the verge of changing.",[28,407],{},"\nMark my words: it isn’t.",[28,410],{},"\nPeople are going to buy the PS6, just like people preordered GTA 6.",[28,413],{},"\nThey sure love ",[82,416,417],{},"talking"," about boycotting Sony, but they never actually follow through.",[28,420],{},"\nIn short, as long as companies keep getting away with their bullshit, things will remain the same.",[16,423,424,425,428,429,54,432,434,435,437,438,441,442,447],{},"For anybody who is ",[82,426,427],{},"actually"," fed up, there is always retro gaming, emulation, piracy, and—most importantly—",[65,430,431],{},"patience",[28,433],{},"\nAlways buying the latest game as soon as it comes out will cost you a shitload of money, and oftentimes, you’ll be serving as a beta tester, given that modern games are often unfinished, badly optimized, or bug-ridden.",[28,436],{},"\nI, for one, am currently enjoying ",[82,439,440],{},"Ratchet & Clank: Going Command"," with ",[20,443,446],{"href":444,"rel":445},"https:\u002F\u002Fretroachievements.org\u002Fgame\u002F3072",[24],"RetroAchievements",", one of more than 200 PlayStation 2 games that are currently in my backlog.",[212,449],{"alt":450,"src":451,"caption":452},"Ratchet & Clank: Going Commando running on ARMSX2","images\u002Fblog\u002Farticles\u002Fsony-no-physical-media\u002Fratchet-2.webp","Ratchet & Clank: Going Commando running in ARMSX2.",{"title":454,"searchDepth":455,"depth":455,"links":456},"",2,[457,463],{"id":222,"depth":455,"text":223,"children":458},[459,461,462],{"id":284,"depth":460,"text":285},3,{"id":349,"depth":460,"text":350},{"id":371,"depth":460,"text":372},{"id":401,"depth":455,"text":402},"gaming","\u002Fimages\u002Fblog\u002Fsony-no-physical-media.webp","2026-07-02","Sony kills physical media starting 2028.","md","square",{},true,"\u002Fsony-no-physical-media",8,{"title":6,"description":467},"sony-no-physical-media",[477,478,479],"Gaming","Sony","News","dfjRZYbqTQN6W7m1bRbW4lA43FPlm5_yTUA6-1sAlLo",{"id":482,"title":483,"activeDiscussion":7,"body":484,"category":464,"cover":843,"date":844,"description":845,"disabled":7,"extension":468,"highlighted":7,"layout":846,"meta":847,"navigation":471,"path":848,"readTimeInMinutes":849,"seo":850,"stem":488,"tags":851,"useAltColors":471,"__hash__":855},"blog\u002Fdusklight.md","Dusklight",{"type":9,"value":485,"toc":837},[486,489,508,515,520,522,526,554,591,596,599,603,607,610,615,661,688,694,712,716,725,729,742,746,764,768,770,774,786,811,814,833],[12,487,483],{"id":488},"dusklight",[16,490,491,492,494,495,497,498,501,502,504,505,507],{},"At this point, I may sound like a broken record, but gaming is not what it used to be.",[28,493],{},"\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.",[28,496],{},"\nWith an absolute classic—",[82,499,500],{},"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.",[28,503],{},"\nThe stars aligned perfectly as ",[82,506,483],{},", 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,509,510,511,514],{},"To get in the mood, give ",[82,512,513],{},"Twilight",", a synth-heavy song from the game's OST, a listen.",[516,517],"simple-audio",{"cover":518,"src":519,"title":513},"\u002Fimages\u002Fblog\u002Farticles\u002Fdusklight\u002Fost.webp","\u002Faudio\u002Fblog\u002Farticles\u002Fdusklight\u002FTwilight.mp3",[217,521],{},[220,523,525],{"id":524},"about-dusklight","About Dusklight",[16,527,528,530,531,534,535,54,537,539,540,542,543,546,547,549,550,553],{},[82,529,483],{}," is a ",[82,532,533],{},"source port"," of ",[82,536,500],{},[28,538],{},"\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.",[28,541],{},"\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 ",[82,544,545],{},"decompilation projects"," since the original game has to be decompiled in order to port it to another platform.",[28,548],{},"\nOriginal game assets are ",[65,551,552],{},"not"," provided by the Dusklight team, though, which means you’ll have to bring your own copy of the original GameCube game.",[16,555,556,557,559,560,562,563,565,566,569,570,572,573,576,577,579,580,582,583,585,586,590],{},"One of the most substantial changes introduced by Dusklight is related to frame rate.",[28,558],{},"\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.",[28,561],{},"\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.",[28,564],{},"\nDusklight uses a technique they themselves refer to as ",[82,567,568],{},"interpolation",", which is not to be confused with frame interpolation techniques we know all too well these days.",[28,571],{},"\nIn the case of Dusklight, interpolation describes a technique used to render additional frames between ",[82,574,575],{},"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.",[28,578],{},"\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.",[28,581],{},"\nThe result is a buttery-smooth experience, which clearly is a well-deserved modernization for such an already amazing game.",[28,584],{},"\nJust look at how awesome ",[587,588,589],"del",{},"Zelda’s"," Link’s sheathing animation looks:",[592,593],"simple-video",{"caption":594,"src":595},"Link sheathing his sword after a fight.","\u002Fvideos\u002Fblog\u002Farticles\u002Fdusklight\u002Fanimation.mp4",[16,597,598],{},"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.",[212,600],{"alt":601,"src":602},"An image showcasing Dusklight’s QoL improvements.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fqol.webp",[282,604,606],{"id":605},"user-experience","User experience",[16,608,609],{},"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.",[611,612,614],"h4",{"id":613},"setup","Setup",[16,616,617,618,54,623,625,626,631,632,634,635,640,641,643,644,649,650,654,655,660],{},"The setup process is incredibly straightforward and well-documented over on ",[20,619,622],{"href":620,"rel":621},"https:\u002F\u002Ftwilitrealm.dev\u002Finstall\u002F",[24],"their website",[28,624],{},"\nIf you have issues with getting it up and running, a dedicated ",[20,627,630],{"href":628,"rel":629},"https:\u002F\u002Ftwilitrealm.dev\u002Ffaq\u002F",[24],"FAQ"," section offers answers to the most frequently asked questions.",[28,633],{},"\nShould you need support beyond that, checking Dusklight’s ",[20,636,639],{"href":637,"rel":638},"https:\u002F\u002Fdiscord.gg\u002F6NpMhefCK9",[24],"Discord"," is always a good idea.",[28,642],{},"\nOn macOS, you can grab the latest release from their ",[20,645,648],{"href":646,"rel":647},"https:\u002F\u002Fgithub.com\u002FTwilitRealm\u002Fdusklight\u002Freleases",[24],"GitHub",", extract it, then move the resulting app to your ",[651,652,653],"code",{},"Applications"," folder. Or, even better, you may use ",[20,656,659],{"href":657,"rel":658},"https:\u002F\u002Fbrew.sh\u002F",[24],"Homebrew",", my package manager of choice:",[662,663,665],"code-block",{"language":664},"bash",[666,667,670],"pre",{"className":668,"code":669,"language":664,"meta":454,"style":454},"language-bash shiki shiki-themes ayu-dark","brew install dusklight\n",[651,671,672],{"__ignoreMap":454},[673,674,677,681,685],"span",{"class":675,"line":676},"line",1,[673,678,680],{"class":679},"sP_rH","brew",[673,682,684],{"class":683},"skAsU"," install",[673,686,687],{"class":683}," dusklight\n",[16,689,690,691,693],{},"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.",[28,692],{},"\nYou can either manually dump your game files from a genuine disc or… sail the high seas—it’s your choice.",[695,696,699],"simple-callout",{"title":697,"type":698},"Save games","caution",[16,700,701,702,704,705,301,708,711],{},"Save games are tied to the region of your game.",[28,703],{},"Dusklight supports both the ",[51,706,707],{},"NTSC",[51,709,710],{},"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.",[611,713,715],{"id":714},"configuration","Configuration",[16,717,718,719,721,722,724],{},"Dusklight’s menus offer full controller support, allowing you to navigate them easily, ultimately making changes on the fly a breeze.",[28,720],{},"\nSince Dusklight is highly configurable, you can even skip its custom menu and boot right into the game, as if it were 2006.",[28,723],{},"\nModern displays are supported, offering native support for wider aspect ratios and resolutions even beyond 4K.",[212,726],{"alt":727,"src":728},"Dusklight’s main menu.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fmain-menu.webp",[16,730,731,732,734,735,737,738,741],{},"Only the act of updating the game involves a little more manual labor than expected, but that’s a negligible caveat.",[28,733],{},"\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.",[28,736],{},"\nYou’ll then have to grab the correct version for your system—the file with a ",[651,739,740],{},"-macos-arm64.zip"," suffix in my case—and install it by replacing your existing version of Dusklight.",[611,743,745],{"id":744},"performance","Performance",[16,747,748,749,751,752,754,755,760,761,763],{},"Both on a base-level M4 Mac mini, as well as a much more potent M4 Max Mac Studio, the game ran flawlessly.",[28,750],{},"\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.",[28,753],{},"\nI used an ",[20,756,759],{"href":757,"rel":758},"https:\u002F\u002Fgamebanana.com\u002Fmods\u002F676609",[24],"HD texture pack"," during both tests in combination with maxed out settings.",[28,762],{},"\nEven on the Mac mini, the game looks as good as ever.",[212,765],{"alt":766,"src":767},"Screenshot of Dusklight.","images\u002Fblog\u002Farticles\u002Fdusklight\u002Fgameplay.webp",[217,769],{},[220,771,773],{"id":772},"what-about-emulation","What about emulation?",[16,775,776,777,782,783,785],{},"In one of my early articles from 2024, in which I talked about ",[20,778,781],{"href":779,"rel":780},"https:\u002F\u002Fopengoal.dev\u002F",[24],"OpenGOAL",", which brought the Jak & Daxter series to the PC, we had a pretty heated debate about emulation vs source ports and decompilation projects.",[28,784],{},"\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,787,788,789,794,795,798,799,801,802,804,805,807,808,810],{},"Using an emulator, you can play hundreds, if not thousands of games using the same piece of software. In the case of ",[20,790,793],{"href":791,"rel":792},"https:\u002F\u002Fpcsx2.net\u002F",[24],"PCSX2",", we’re currently looking at ",[65,796,797],{},"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.",[28,800],{},"\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.",[28,803],{},"\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.",[28,806],{},"\nA lot of them come with their own set of quirks, like in the case of OpenGOAL, where menus can be incredibly laggy.",[28,809],{},"\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,812,813],{},"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,815,816,817,820,821,823,824,829,830,832],{},"Despite me preferring emulation in general, Dusklight is a fantastic source port and, without a doubt, the ",[65,818,819],{},"best"," way to enjoy an already fantastic classic.",[28,822],{},"\nI’m greatly looking forward to the ",[20,825,828],{"href":826,"rel":827},"https:\u002F\u002Fdecomp.dev\u002Fzeldaret\u002Ftww",[24],"Wind Waker decompilation project",", which is coming along nicely.",[28,831],{},"\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.",[834,835,836],"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":454,"searchDepth":455,"depth":455,"links":838},[839,842],{"id":524,"depth":455,"text":525,"children":840},[841],{"id":605,"depth":460,"text":606},{"id":772,"depth":455,"text":773},"\u002Fimages\u002Fblog\u002Fdusklight.webp","2026-06-25","A quick look at Dusklight, a source port of Twilight Princess.","wide",{},"\u002Fdusklight",6,{"title":483,"description":845},[477,852,853,854],"Review","Zelda","RPG","S58042O4HC8Zi6XfnlOlXg99WrvED_-O1KcHWGsQGg0",{"id":857,"title":858,"activeDiscussion":7,"body":859,"category":464,"cover":1460,"date":1461,"description":1462,"disabled":7,"extension":468,"highlighted":7,"layout":469,"meta":1463,"navigation":471,"path":1464,"readTimeInMinutes":1007,"seo":1465,"stem":1466,"tags":1467,"useAltColors":471,"__hash__":1470},"blog\u002Fdx9-games-on-mac.md","DX9 games on Apple Silicon",{"type":9,"value":860,"toc":1450},[861,865,871,883,885,889,892,912,944,958,965,1017,1026,1030,1060,1064,1080,1091,1118,1121,1123,1127,1133,1207,1214,1217,1234,1248,1251,1318,1335,1340,1343,1345,1349,1357,1409,1413,1423,1427,1436,1440,1447],[12,862,864],{"id":863},"running-dx9-32-bit-games-on-apple-silicon-macs","Running DX9 & 32-bit games on Apple Silicon Macs",[16,866,867,868,870],{},"With modern games becoming nothing but a chore, and an ever-increasing array of monetization strategies, more and more people have turned to retro gaming—myself included.",[28,869],{},"\nWhile we can easily emulate a huge library of games spanning several console generations, older PC titles are also becoming increasingly popular.\nIf you find yourself on an Apple Silicon Mac, though, playing older titles, often relying on older DirectX versions, or making use of now-deprecated 32-bit architectures, can get rather tricky.\nIn this short tutorial, I’ll show you how you can run DX9 and 32-bit games on Apple Silicon Macs.",[695,872,875],{"title":873,"type":874},"Tip","tip",[16,876,877,878,882],{},"If you’re on an Intel Mac, you don’t need any of this. Simply follow ",[20,879,881],{"href":880},"https:\u002F\u002Fsupport.apple.com\u002Fen-us\u002F102622","this guide"," to set up Boot Camp, allowing you to run Windows on bare metal.",[217,884],{},[220,886,888],{"id":887},"preparation","Preparation",[282,890,891],{"id":891},"rosettax87-jit",[16,893,894,895,899,900,902,905,906,911],{},"First off, we need to get our hands on the latest release of ",[20,896,891],{"href":897,"rel":898},"https:\u002F\u002Fgithub.com\u002FLifeisawful\u002Frosettax87_jit\u002Freleases\u002Fdownload\u002Flatest\u002Frosettax87-jit-macos-arm64.tar.gz",[24]," for Apple Silicon Macs.\nDownload it, and unpack it.",[28,901],{},[651,903,904],{},"Archive Utility",", the app that ships with macOS by default, is unable to extract said archive, though, so you either need something like ",[20,907,910],{"href":908,"rel":909},"https:\u002F\u002Fwww.keka.io\u002Fen\u002F",[24],"Keka",", or you can use the following command instead:",[662,913,914],{"language":664},[666,915,917],{"className":668,"code":916,"language":664,"meta":454,"style":454},"tar -xzf rosettax87-jit-macos-arm64.tar.gz -C $HOME\u002FDocuments\u002Frosettax87jit --strip-components=1\n",[651,918,919],{"__ignoreMap":454},[673,920,921,924,928,931,934,938,941],{"class":675,"line":676},[673,922,923],{"class":679},"tar",[673,925,927],{"class":926},"sHCZS"," -xzf",[673,929,930],{"class":683}," rosettax87-jit-macos-arm64.tar.gz",[673,932,933],{"class":926}," -C",[673,935,937],{"class":936},"skCYq"," $HOME",[673,939,940],{"class":683},"\u002FDocuments\u002Frosettax87jit",[673,942,943],{"class":926}," --strip-components=1\n",[16,945,946,947,949,950,953,954,957],{},"Pay close attention to what you name the resulting folder and where it is stored, as we will need both pieces of information when we want to launch our game.",[28,948],{},"\nThe command above will create a folder called ",[651,951,952],{},"rosettax87jit"," in your ",[651,955,956],{},"Documents"," folder with all the required files present.",[16,959,960,961,964],{},"Next up, we need to strip the quarantine attribute from the ",[651,962,963],{},"runtime_loader"," binary, as otherwise, Gatekeeper will prevent us from executing it.\nTo do so, simply run one of the following commands:",[662,966,967],{"language":664},[666,968,970],{"className":668,"code":969,"language":664,"meta":454,"style":454},"# removes the quarantine attribute from extended attributes\nxattr -d com.apple.quarantine $HOME\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\n\n# clears extended attributes recursively\nxattr -cr $HOME\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\n",[651,971,972,978,994,999,1005],{"__ignoreMap":454},[673,973,974],{"class":675,"line":676},[673,975,977],{"class":976},"sOSKZ","# removes the quarantine attribute from extended attributes\n",[673,979,980,983,986,989,991],{"class":675,"line":455},[673,981,982],{"class":679},"xattr",[673,984,985],{"class":926}," -d",[673,987,988],{"class":683}," com.apple.quarantine",[673,990,937],{"class":936},[673,992,993],{"class":683},"\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\n",[673,995,996],{"class":675,"line":460},[673,997,998],{"emptyLinePlaceholder":471},"\n",[673,1000,1002],{"class":675,"line":1001},4,[673,1003,1004],{"class":976},"# clears extended attributes recursively\n",[673,1006,1008,1010,1013,1015],{"class":675,"line":1007},5,[673,1009,982],{"class":679},[673,1011,1012],{"class":926}," -cr",[673,1014,937],{"class":936},[673,1016,993],{"class":683},[695,1018,1020],{"title":1019,"type":698},"Check your paths",[16,1021,1022,1023,1025],{},"As mentioned before, if you don’t closely follow the instructions, you may end up with a different set of files and folders, in completely different locations.",[28,1024],{},"That’s fine, as long as you adjust the commands accordingly to reflect your actual setup.",[282,1027,1029],{"id":1028},"wine","Wine",[16,1031,1032,1033,1038,1039,1043,1044,1046,1047,1050,1051,1055,1056,1059],{},"Once that’s done, we can install Wine, which lets us run Windows applications on macOS, Linux, and BSD systems.\nSimply grab the latest release ",[20,1034,1037],{"href":1035,"rel":1036},"https:\u002F\u002Fgithub.com\u002Faitorciki\u002FmacOS_Wine_builds\u002Freleases\u002Ftag\u002F11.6",[24],"here",", then extract it using the methods mentioned ",[20,1040,1042],{"href":1041},"#rosettax87-jit","above",".\nOnce that’s done, you can move the resulting application into your ",[651,1045,653],{}," folder.\nChecking the requirements listed in the README for the latest release, you can see that you need to be on a macOS version >= macOS Catalina—which every single Apple Silicon Mac is by default—and you also need to have ",[651,1048,1049],{},"GStreamer.framework"," installed.\nSimply download it from ",[20,1052,1037],{"href":1053,"rel":1054},"https:\u002F\u002Fgstreamer.freedesktop.org\u002Fdata\u002Fpkg\u002Fosx\u002F1.28.1\u002Fgstreamer-1.0-1.28.1-universal.pkg",[24],", then run the ",[651,1057,1058],{},".pkg"," installer.",[282,1061,1063],{"id":1062},"using-d9vk","Using d9vk",[16,1065,1066,1067,1071,1072,1075,1076,1079],{},"Finally, we need to grab d9vk, which translates Direct3D 9 calls into either Vulkan or Metal, improving both performance and compatibility. You can grab it ",[20,1068,1037],{"href":1069,"rel":1070},"https:\u002F\u002Fgithub.com\u002FSikarugir-App\u002Fd9vk\u002Freleases\u002Fdownload\u002Fv1.10.3-20250511\u002Fd9vk-macOS-async-v1.10.3-20250511.tar.gz",[24],".\nExtract it, then move the 32-bit DLL called ",[651,1073,1074],{},"d3d9.dll"," from the ",[651,1077,1078],{},"x32"," folder into your game folder.",[16,1081,1082,1083,1086,1087,1090],{},"In my case, I’m using the Steam version of ",[82,1084,1085],{},"Star Wars - Knights of the Old Republic",", installed on an external drive.\nSince I extracted the archive to my desktop and named it ",[82,1088,1089],{},"d9vk",", I can move it to the root of my game’s install folder via:",[662,1092,1093],{"language":664},[666,1094,1096],{"className":668,"code":1095,"language":664,"meta":454,"style":454},"cd ~\u002FDesktop\u002Fd9vk\nmv .\u002Fx32\u002Fd3d9.dll \"\u002FVolumes\u002FNVME SSD\u002FGames\u002FWindows\u002FSteam\u002Fsteamapps\u002Fcommon\u002Fswkotor\u002Fd3d9.dll\"\n",[651,1097,1098,1107],{"__ignoreMap":454},[673,1099,1100,1104],{"class":675,"line":676},[673,1101,1103],{"class":1102},"s-wAU","cd",[673,1105,1106],{"class":683}," ~\u002FDesktop\u002Fd9vk\n",[673,1108,1109,1112,1115],{"class":675,"line":455},[673,1110,1111],{"class":679},"mv",[673,1113,1114],{"class":683}," .\u002Fx32\u002Fd3d9.dll",[673,1116,1117],{"class":683}," \"\u002FVolumes\u002FNVME SSD\u002FGames\u002FWindows\u002FSteam\u002Fsteamapps\u002Fcommon\u002Fswkotor\u002Fd3d9.dll\"\n",[16,1119,1120],{},"And just like that, all the prep work is done and we can focus on actually running our game.",[217,1122],{},[220,1124,1126],{"id":1125},"launching-your-game","Launching your game",[16,1128,1129,1130,1132],{},"All that’s left to do is to actually launch your game.",[28,1131],{},"\nRefer to the following code block for the commands needed to launch your game:",[662,1134,1135],{"language":664},[666,1136,1138],{"className":668,"code":1137,"language":664,"meta":454,"style":454},"cd \"\u003CPLACEHOLDER>\"\n\nROSETTA_X87_PATH=\"\u003CPLACEHOLDER>\" \\\nMVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS=1 \\\nDXVK_ASYNC=1 \\\nWINEDLLOVERRIDES=\"d3d9=n\" \\\nWINE_DISABLE_NX_COMPAT=1 \\\nwine \"\u003CPLACEHOLDER>\"\n",[651,1139,1140,1147,1151,1166,1174,1181,1191,1199],{"__ignoreMap":454},[673,1141,1142,1144],{"class":675,"line":676},[673,1143,1103],{"class":1102},[673,1145,1146],{"class":683}," \"\u003CPLACEHOLDER>\"\n",[673,1148,1149],{"class":675,"line":455},[673,1150,998],{"emptyLinePlaceholder":471},[673,1152,1153,1156,1160,1163],{"class":675,"line":460},[673,1154,1155],{"class":936},"ROSETTA_X87_PATH",[673,1157,1159],{"class":1158},"sh1d5","=",[673,1161,1162],{"class":683},"\"\u003CPLACEHOLDER>\"",[673,1164,1165],{"class":679}," \\\n",[673,1167,1168,1171],{"class":675,"line":1001},[673,1169,1170],{"class":936},"MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS=1 ",[673,1172,1173],{"class":926},"\\\n",[673,1175,1176,1179],{"class":675,"line":1007},[673,1177,1178],{"class":936},"DXVK_ASYNC=1 ",[673,1180,1173],{"class":926},[673,1182,1183,1186,1189],{"class":675,"line":849},[673,1184,1185],{"class":936},"WINEDLLOVERRIDES=",[673,1187,1188],{"class":683},"\"d3d9=n\"",[673,1190,1165],{"class":926},[673,1192,1194,1197],{"class":675,"line":1193},7,[673,1195,1196],{"class":936},"WINE_DISABLE_NX_COMPAT=1 ",[673,1198,1173],{"class":926},[673,1200,1201,1204],{"class":675,"line":473},[673,1202,1203],{"class":936},"wine ",[673,1205,1206],{"class":683},"\"\u003CPLACEHOLDER>\"\n",[16,1208,1209,1210,1213],{},"You need to replace all instances of ",[651,1211,1212],{},"\u003CPLACEHOLDER>"," with the correct paths for your machine.",[16,1215,1216],{},"The first path you need to fill in is the path to your game installation.",[16,1218,1219,1220,1222,1223,1225,1226,1229,1230,1233],{},"The second path should point to your rosettax87-jit runtime loader.",[28,1221],{},"\nIf you followed my instructions regarding rosettax87-jit, the correct value for ",[651,1224,1155],{}," should be\n",[651,1227,1228],{},"\"$HOME\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\"",", with ",[651,1231,1232],{},"$HOME"," being an alias for your home directory, so no need to change anything on your end. If you placed it somewhere else, update the path accordingly.",[16,1235,1236,1237,1239,1240,1243,1244,1247],{},"Finally, we need to fill in the path to our game’s executable. This is a relative path, starting from the root of our game’s installation.",[28,1238],{},"\nIn my case, it’s simply ",[651,1241,1242],{},".\u002Fswkotor.exe",", since the executable is called ",[651,1245,1246],{},"swkotor.exe"," and is located right within the root of my game’s install folder.",[16,1249,1250],{},"With all paths filled in, the commands could look like this:",[662,1252,1253],{"language":664},[666,1254,1256],{"className":668,"code":1255,"language":664,"meta":454,"style":454},"cd \"\u002FVolumes\u002FNVME SSD\u002FGames\u002FWindows\u002FSteamLibrary\u002Fsteamapps\u002Fcommon\u002Fswkotor\"\n\nROSETTA_X87_PATH=\"$HOME\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\" \\\nMVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS=1 \\\nDXVK_ASYNC=1 \\\nWINEDLLOVERRIDES=\"d3d9=n\" \\\nWINE_DISABLE_NX_COMPAT=1 \\\nwine \".\u002Fswkotor.exe\"\n",[651,1257,1258,1265,1269,1285,1291,1297,1305,1311],{"__ignoreMap":454},[673,1259,1260,1262],{"class":675,"line":676},[673,1261,1103],{"class":1102},[673,1263,1264],{"class":683}," \"\u002FVolumes\u002FNVME SSD\u002FGames\u002FWindows\u002FSteamLibrary\u002Fsteamapps\u002Fcommon\u002Fswkotor\"\n",[673,1266,1267],{"class":675,"line":455},[673,1268,998],{"emptyLinePlaceholder":471},[673,1270,1271,1273,1275,1278,1280,1283],{"class":675,"line":460},[673,1272,1155],{"class":936},[673,1274,1159],{"class":1158},[673,1276,1277],{"class":683},"\"",[673,1279,1232],{"class":936},[673,1281,1282],{"class":683},"\u002FDocuments\u002Frosettax87jit\u002Fruntime_loader\"",[673,1284,1165],{"class":679},[673,1286,1287,1289],{"class":675,"line":1001},[673,1288,1170],{"class":936},[673,1290,1173],{"class":926},[673,1292,1293,1295],{"class":675,"line":1007},[673,1294,1178],{"class":936},[673,1296,1173],{"class":926},[673,1298,1299,1301,1303],{"class":675,"line":849},[673,1300,1185],{"class":936},[673,1302,1188],{"class":683},[673,1304,1165],{"class":926},[673,1306,1307,1309],{"class":675,"line":1193},[673,1308,1196],{"class":936},[673,1310,1173],{"class":926},[673,1312,1313,1315],{"class":675,"line":473},[673,1314,1203],{"class":936},[673,1316,1317],{"class":683},"\".\u002Fswkotor.exe\"\n",[16,1319,1320,1321,1324,1325,1328,1329,1331,1332,1334],{},"Simply copy ",[65,1322,1323],{},"all"," the commands, then start ",[651,1326,1327],{},"Wine Staging",", which we installed earlier.",[28,1330],{},"\nOnce it has started, you should see a terminal window. Simply paste the commands you copied into the terminal window.",[28,1333],{},"\nCongrats, you’re now running a DirectX 9 game on an Apple Silicon Mac, with much better performance than previously possible.",[212,1336],{"alt":1337,"caption":1338,"src":1339},"“Kotor running on an Apple Silicon Mac”","KOTOR running on an Apple Silicon Mac using the latest version of Wine Staging.","\u002Fimages\u002Fblog\u002Farticles\u002Fdx9-games-on-mac\u002Fkotor-dx9.webp",[16,1341,1342],{},"Last but not least, we should go over some troubleshooting tips.",[217,1344],{},[282,1346,1348],{"id":1347},"troubleshooting","Troubleshooting",[611,1350,1352,1353,1356],{"id":1351},"using-game-mode-for-better-performance","Using ",[82,1354,1355],{},"game mode"," for better performance",[16,1358,1359,1360,1362,1363,1365,1366,54,1368,1370,1371,1376,1377,1379,1380,1382,1385,1387,1388,1391,1392,1394,1397,1398,1400,1401,1404,1405,1408],{},"macOS is not able to automatically engage ",[82,1361,1355],{}," for most DX9 games.",[28,1364],{},"\nYou need to manually toggle ",[82,1367,1355],{},[28,1369],{},"\nTo do that, you need the full version of ",[20,1372,1375],{"href":1373,"rel":1374},"https:\u002F\u002Fdeveloper.apple.com\u002Fxcode\u002F",[24],"Xcode"," installed—simply installing the command-line tools won’t do the trick here.",[28,1378],{},"\nCopy the game policy control utility from",[28,1381],{},[651,1383,1384],{},"\u002FApplications\u002FXcode.app\u002FContents\u002FDeveloper\u002Fusr\u002Fbin\u002Fgamepolicyctl",[28,1386],{},"\ninto a folder of your choice. If it’s on your ",[651,1389,1390],{},"PATH",", you can interact with it from anywhere on your system. If not, simply navigate to the folder you stored it in from your terminal, then use",[28,1393],{},[651,1395,1396],{},".\u002Fgamepolicyctl game-mode set on"," to enable game mode.",[28,1399],{},"\nSwap the word ",[651,1402,1403],{},"on"," for ",[651,1406,1407],{},"off"," to turn it off after your gaming session.",[611,1410,1412],{"id":1411},"my-game-is-not-launching","My game is not launching",[16,1414,1415,1416,1419,1420,1422],{},"If you receive an error along the lines of ",[651,1417,1418],{},"wine: failed to open ...",", then you forgot to navigate into your game installation folder. Do so by using the ",[651,1421,1103],{}," command, followed by a space and your game’s install folder.",[611,1424,1426],{"id":1425},"whats-the-easiest-way-to-get-my-games-installation-path","What’s the easiest way to get my game’s installation path?",[16,1428,1429,1430,1432,1433,1435],{},"Navigate to your game install folder in Finder. Open a terminal window and type out ",[651,1431,1103],{},", followed by a space.",[28,1434],{},"\nNext, simply drag your game install folder onto the terminal window. The path will automatically be populated.",[611,1437,1439],{"id":1438},"handling-wine-related-errors","Handling Wine-related errors",[16,1441,1442,1443,1446],{},"In most cases, deleting the ",[651,1444,1445],{},".wine"," folder from the root of your home folder will get rid of all issues.",[834,1448,1449],{},"html pre.shiki code .sP_rH, html code.shiki .sP_rH{--shiki-default:#59C2FF}html pre.shiki code .sHCZS, html code.shiki .sHCZS{--shiki-default:#95E6CB}html pre.shiki code .skAsU, html code.shiki .skAsU{--shiki-default:#AAD94C}html pre.shiki code .skCYq, html code.shiki .skCYq{--shiki-default:#BFBDB6}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);}html pre.shiki code .sOSKZ, html code.shiki .sOSKZ{--shiki-default:#5A6673;--shiki-default-font-style:italic}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sh1d5, html code.shiki .sh1d5{--shiki-default:#F29668}",{"title":454,"searchDepth":455,"depth":455,"links":1451},[1452,1457],{"id":887,"depth":455,"text":888,"children":1453},[1454,1455,1456],{"id":891,"depth":460,"text":891},{"id":1028,"depth":460,"text":1029},{"id":1062,"depth":460,"text":1063},{"id":1125,"depth":455,"text":1126,"children":1458},[1459],{"id":1347,"depth":460,"text":1348},"\u002Fimages\u002Fblog\u002Fdx9-mac.webp","2026-06-15","Run DirectX 9 and 32-bit games on modern Macs.",{},"\u002Fdx9-games-on-mac",{"title":858,"description":1462},"dx9-games-on-mac",[477,1468,1469],"Tutorial","macOS","l4r4EdhjyAASuE7V3HMwzrdM6kUvnxaWabw-WimJ-6o",{"id":1472,"title":1473,"activeDiscussion":7,"body":1474,"category":1595,"cover":1596,"date":1597,"description":1598,"disabled":7,"extension":468,"highlighted":7,"layout":469,"meta":1599,"navigation":471,"path":1600,"readTimeInMinutes":455,"seo":1601,"stem":1602,"tags":1603,"useAltColors":7,"__hash__":1606},"blog\u002Froditch-2.0.md","Roditch 2.0",{"type":9,"value":1475,"toc":1590},[1476,1479,1488,1491,1493,1497,1500,1503,1510,1513,1529,1531,1535,1544,1553,1556,1567,1578,1580,1584,1587],[12,1477,1473],{"id":1478},"roditch-20",[16,1480,1481,1482,1484,1485,1487],{},"When I took my old blog offline, I didn’t anticipate to be gone for over a month.",[28,1483],{},"\nWhile rebuilding parts of my blog and integrating it with my portfolio didn’t take all too long in itself, I just couldn’t find the time to actually sit down and get to it.",[28,1486],{},"\nMost of the main building blocks are done, the integration with my portfolio is done—I'm on the finish stretch, gradually migrating over all my old blog posts before finally enabling comments again. Comments and old blog posts will be back online in the coming weeks.",[16,1489,1490],{},"Since I’ve already got your attention, let me quickly go over upcoming changes and exciting features, and what I’ve got in store for you in the not so distant future.",[217,1492],{},[220,1494,1496],{"id":1495},"uiux","UI\u002FUX",[16,1498,1499],{},"My blog now finally looks the part, basically mirroring the design of my portfolio, reusing the existing color scheme, and adhering to the established design language, with dark gray tones, orange highlights, and boxy, rectangular designs, going against the mainstream of rounded borders.",[16,1501,1502],{},"While animations can make any given website feel more “prestigious”, I’ve tried to keep it down, settling for subtle animations where they can not only improve visuals, but also serve a critical role in masking loading times.",[16,1504,1505,1506,1509],{},"On top of all that, I introduced close to ",[65,1507,1508],{},"50"," custom components, from images, videos, and slideshows, to embedded tweets, sophisticated code blocks, audio players, and more.",[16,1511,1512],{},"Finally, I implemented most suggestions I received from the final poll on my old blog, including:",[1514,1515,1516,1520,1523,1526],"ul",{},[1517,1518,1519],"li",{},"additional padding where useful,",[1517,1521,1522],{},"centered content on larger screens,",[1517,1524,1525],{},"better legibility and readability,",[1517,1527,1528],{},"and improved visual hierarchy",[217,1530],{},[220,1532,1534],{"id":1533},"features","Features",[16,1536,1537,1538,1543],{},"In essence, I swapped the comment system I used previously, ",[20,1539,1542],{"href":1540,"rel":1541},"https:\u002F\u002Fgiscus.app\u002F",[24],"Giscus",", for a lightweight, custom-built, and privacy-oriented comment system.\nWhile Giscus was incredibly easy to use and maintain, I’ve received several messages about users not wanting to create a GitHub account just to comment on my blog, so it was time for me to switch things up, moving away from Giscus sooner, rather than later.",[16,1545,1546,1547,1552],{},"At first, I thought about using ",[20,1548,1551],{"href":1549,"rel":1550},"https:\u002F\u002Fcusdis.com\u002F",[24],"Cusdis",", an open-source comment system that values user privacy above all else—perfectly suited for my specific use case.\nAfter browsing the repo, checking and cross-referencing issues, and browsing forums online, I decided against it, since it seems like it’s no longer being actively worked on.",[16,1554,1555],{},"Long story short, instead of using a pre-existing solution, I decided to build my own comment system.\nI tried to stay as close to what Cusdis provides out of the box while adding useful features on top, including:",[1514,1557,1558,1561,1564],{},[1517,1559,1560],{},"notifications,",[1517,1562,1563],{},"subscribing to threads,",[1517,1565,1566],{},"and highlighting\u002Fpromoting individual comments",[16,1568,1569,1570,1574,1575,1577],{},"All in all, the new comment system allows anyone with an email address to join discussions on my blog.\nAny given comment will be hidden by default, and will go through a manual review process, done by yours truly. I simply copied over all previously established ",[20,1571,1573],{"href":1572},"\u002Fblog\u002Frules","rules"," from my old blog and adjusted them where needed.",[28,1576],{},"\nThe new comment system will be available in the coming weeks.",[217,1579],{},[220,1581,1583],{"id":1582},"whats-to-come","What’s to come?",[16,1585,1586],{},"More features, more articles, more discussions.\nI’m still working on adding new components, which should make this blog all the more exciting to interact with.\nAll of my old posts should be back up before the end of July, with new posts already on the horizon.\nWhile I’ve been rather lazy on finally migrating over my blog, I’ve been actively working on new blog posts left and right, so there should be more than enough content coming up over the next couple of weeks, hopefully making up for the drought that lasted almost two whole months.",[16,1588,1589],{},"Let’s see where this goes, shall we?",{"title":454,"searchDepth":455,"depth":455,"links":1591},[1592,1593,1594],{"id":1495,"depth":455,"text":1496},{"id":1533,"depth":455,"text":1534},{"id":1582,"depth":455,"text":1583},"web",null,"2026-06-14","After an almost 2-month-long hiatus, I'm back to posting on my blog. See what's new.",{},"\u002Froditch-2.0",{"title":1473,"description":1598},"roditch-2.0",[1604,1605],"Blog","Personal","aeQBxYFZDIIacqicutpgFp_A2BTSOgbZSzWWaKUflWw",{"id":1608,"title":1609,"activeDiscussion":7,"body":1610,"category":464,"cover":2586,"date":2587,"description":2588,"disabled":7,"extension":468,"highlighted":7,"layout":469,"meta":2589,"navigation":471,"path":2590,"readTimeInMinutes":2591,"seo":2592,"stem":2593,"tags":2594,"useAltColors":471,"__hash__":2596},"blog\u002Fkotor-on-mac.md","Running KOTOR on a Mac",{"type":9,"value":1611,"toc":2568},[1612,1615,1618,1621,1624,1626,1629,1643,1647,1650,1653,1657,1668,1694,1697,1701,1725,1728,1732,1735,1768,1771,1775,1798,1801,1805,1808,1829,1846,1853,1876,1888,1915,1940,1946,2024,2040,2056,2059,2062,2064,2068,2071,2080,2084,2090,2102,2106,2120,2124,2129,2136,2139,2144,2164,2172,2176,2185,2189,2212,2216,2227,2231,2246,2250,2253,2255,2259,2262,2274,2286,2289,2293,2306,2317,2350,2353,2357,2370,2373,2377,2390,2397,2549,2553,2565],[12,1613,1609],{"id":1614},"running-kotor-on-a-mac",[16,1616,1617],{},"Star Wars: Knights of the Old Republic is still among my favorite RPGs of all time.\nIf you haven’t played the game yet, and you want to experience a classic Star Wars story, it’s about as good a time as any to jump in.\nFor the guys over on Windows machines, things are super simple, but what about good old trusty macOS?\nRemember, back then, top-tier games like Neverwinter Nights, Fable, and also KOTOR, still saw physical releases on Mac.",[16,1619,1620],{},"Not only that, KOTOR, to this day, is still available as an actual app in the Mac App Store.\nWhen Apple dropped 32-bit support with the release of macOS Catalina, KOTOR got its well-deserved update to 64-bit.\nUnfortunately, that’s about the only thing Aspyr changed. Unlike KOTOR II, which supports modern controllers, high refresh rate monitors, and modern high-resolution displays, KOTOR supports none of that.\nTechnically, you can run this game on any high refresh rate monitor, but at anything above 85Hz, the maximum refresh rate supported without hiccups, your characters will be unable to move after combat, forcing you to save and reload countless times.",[16,1622,1623],{},"In this guide, I’ll show you three distinct ways to install and play KOTOR on your Mac, and what pros and cons they come with.",[217,1625],{},[220,1627,1469],{"id":1628},"macos",[16,1630,1631,1632,1635,1636,1639,1640,1642],{},"As stated in the intro, KOTOR is available on macOS. You can just fire up Steam or the Mac App Store, buy the game, install it, and you’ll be able to play it.\nCap the frame rate at a maximum of 85 FPS, and you can play the game just fine—for the most part.\nThe elephant in the room is the resolution. First of all, your options are rather limited: for most people, ",[651,1633,1634],{},"1280x1024"," will be the maximum, with some people reporting resolutions of up to ",[651,1637,1638],{},"1600x1200","—the latter only being available if your host resolution is at least 1440p.\nNo matter how you look at it, that’s bad. The resolution itself is not great, and while most people could probably live with it, the far bigger issue is the aspect ratio.",[28,1641],{},"\nBack in the early 2000s, when KOTOR originally came out, 4:3 was the golden standard.\nNowadays, we use 16:9, 16:10, 21:9, or even wider aspect ratios. Suffice to say, the offered resolutions look abysmal on modern monitors.",[282,1644,1646],{"id":1645},"installing-the-game","Installing the game",[16,1648,1649],{},"To get started, we need to get our hands on the game. While there are both physical and digital releases of KOTOR available for Mac, only digital versions are usable on modern Macs.\nApple dropped 32-bit support in 2019, so the executables that shipped on the disc are no longer usable.\nFor completion’s sake: If you have an older Mac lying around, running an OS that still supports 32-bit, you could go ahead and use the physical release just fine.",[16,1651,1652],{},"For the digital release, you can choose between Steam and the Mac App Store.\nThere are resellers out there, and Aspyr themselves sold KOTOR for a while, but all of these boiled down to keys for Steam.\nI myself am using the Steam version of the game, so I’ll just download that.",[282,1654,1656],{"id":1655},"setting-the-correct-language","Setting the correct language",[16,1658,1659,1660,1664,1665,1667],{},"With the game downloaded and installed, we could go ahead and launch the game, only to see that the game is in English, no matter what.\nIf we open up Steam, navigate to the game and open its properties, we can see that unlike other games, KOTOR on Mac does not support setting a different language.\nTo fix that, go ahead and install the game once more, this time on Windows, with your prefered language selected.\nYou can find instructions in ",[20,1661,1663],{"href":1662},"#installing-crossover","this section"," of the article.\nBy the end of that process, you should have CrossOver installed, allowing you to run Windows programs on your Mac.",[28,1666],{},"\nFollow the instructions to install the game in your desired language.",[16,1669,1670,1671,85,1674,85,1677,92,1680,1683,1684,1687,1688,1687,1691,54],{},"Once that's done, navigate to the root of your new install folder.\nYou should be greeted by several files and folders:\n",[651,1672,1673],{},"streamsounds",[651,1675,1676],{},"streamwaves",[651,1678,1679],{},"lips",[651,1681,1682],{},"dialog.tlk",".\nCopy all of them, then navigate to the installation directory of the Mac version. In Steam, simply go to your library, right-click on KOTOR, select ",[651,1685,1686],{},"Properties",", then click on ",[651,1689,1690],{},"Installed Files",[651,1692,1693],{},"Browse",[16,1695,1696],{},"If you followed these steps correctly, you should be greeted by an application inside a Finder window:",[212,1698],{"alt":1699,"src":1700},"An image showing the KOTOR app","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fkotor-app.webp",[16,1702,1703,1704,1707,1708,1711,1712,1715,1716,85,1718,85,1720,92,1722,1724],{},"Simply right-click, then select ",[651,1705,1706],{},"Show Package Contents",".\nNow open the ",[651,1709,1710],{},"Contents"," folder, and head into ",[651,1713,1714],{},"Assets",".\nOnce there, delete ",[651,1717,1682],{},[651,1719,1679],{},[651,1721,1673],{},[651,1723,1676],{},".\nOnce that’s done, simply insert the files and folders you copied earlier, and you’re done!",[16,1726,1727],{},"You can launch the game, and you’ll be greeted by UI elements in the language you selected.\nAlso, since we copied the audio files, voice-over for all characters will be in the correct language.\nFinally, we need to fix the resolution issue, as best as we can, at least.",[282,1729,1731],{"id":1730},"embracing-43","Embracing 4:3",[16,1733,1734],{},"To play this game in a non-stretched resolution, you need to set your screen to 4:3.\nThis is only really possible if you’re connected to an external monitor.\nmacOS does not expose the relevant display resolutions out of the box, though, so we need to grab some piece of software first.",[1736,1737,1738,1747,1758],"ol",{},[1517,1739,1740,1741,1746],{},"Head over to ",[20,1742,1745],{"href":1743,"rel":1744},"https:\u002F\u002Fgithub.com\u002Fwaydabber\u002FBetterDisplay",[24],"BetterDisplay's repo",", and download the latest release",[1517,1748,1749,1750,1753,1754,1757],{},"Find the ",[651,1751,1752],{},"Releases"," section on the right side, click on the latest version, scroll down a little, then download the ",[651,1755,1756],{},".dmg"," file",[1517,1759,1760,1761,1764,1765,1767],{},"Once downloaded, double-click on it, and drag the ",[651,1762,1763],{},"BetterDisplay"," app into your ",[651,1766,653],{}," folder.",[16,1769,1770],{},"You can now launch the app.\nIn your menu bar, you should now see this new icon right here:",[212,1772],{"alt":1773,"src":1774},"An image showcasing the ‘BetterDisplay’ icon a Mac’s menu bar","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fbetter-display-icon.webp",[16,1776,1777,1778,1781,1782,1785,1786,1789,1790,1793,1794,1797],{},"Simply click on it, then click on ",[651,1779,1780],{},"Display Mode",".\nIn this submenu, you now need to click on the ",[651,1783,1784],{},"Filter"," button, and then toggle ",[651,1787,1788],{},"4:3"," resolutions.\nYou can now see all the resolutions available that fit the 4:3 aspect ratio.\nI selected ",[651,1791,1792],{},"120Hz",", but feel free to choose something different—given KOTOR’s internal 85 FPS limit, selecting something like ",[651,1795,1796],{},"72Hz"," might be a good idea.\nOnce you select your desired resolution, you’ll now be greeted by some black bars on either side of the screen, and your screen real estate got visibly reduced to an almost square-like area—that’s what we wanted.",[16,1799,1800],{},"If we launch KOTOR again, we can now see that the game is no longer stretched.\nThat’s how the game looked back in the day on our fat CRT monitors.\nIt’s entirely up to you whether you prefer fullscreen stretched or proper scaling on 4:3 resolutions.\nFinally, we should talk about modding the game.",[282,1802,1804],{"id":1803},"modding-the-game","Modding the game",[16,1806,1807],{},"KOTOR has a very active modding community, and I remember modding the crap out of this game all the way back in 2006.\nWhile the good old days of Filefront\u002FGamefront are long since gone, there are thousands of mods available for KOTOR to download right now, and basically all of them can be used on your Mac as well.\nThere are two types of mods, and both are rather easy to install.",[16,1809,1810,1811,1816,1817,1820,1821,1824,1825,1828],{},"For demonstration purposes, I chose ",[20,1812,1815],{"href":1813,"rel":1814},"https:\u002F\u002Fwww.nexusmods.com\u002Fkotor\u002Fmods\u002F1184",[24],"Fens – Bastila",", a fan-favorite retexture of Bastila.\nThis mod is special, because in most cases, it’s trivial to install, but under certain circumstances, we need to cover both installation options, so you can see both in action.\nTo grab the mod yourself, just follow the link to the mod, click on the ",[651,1818,1819],{},"Files"," tab, then download whichever version you prefer—I went with ",[651,1822,1823],{},"Fen's — Bastila Corrupted",".\nOnce downloaded, you’ll end up with an archive. Simply unarchive it using either the default Unarchiver or use something more sophisticated like ",[20,1826,910],{"href":908,"rel":1827},[24],", my personal favorite—not an advertisement, I’ve been using it for several years now, so I may as well give it a shoutout.\nOnce done, you’ll end up with a folder, containing all files and folders needed to install the mod.",[16,1830,1831,1832,1834,1835,1838,1839,1842,1843,1845],{},"Most mods come with a readme that explains how to install them.",[28,1833],{},"\nIn our case, we simply go into the ",[651,1836,1837],{},"Fens - Bastila Corrupted"," folder, copy everything inside the ",[651,1840,1841],{},"Override"," folder, and move it into our game’s own ",[651,1844,1841],{}," folder.\nIf you just installed the game, it won’t come with said folder yet, so we need to create it manually.",[16,1847,1848,1849,1852],{},"Follow the steps outlined ",[20,1850,1042],{"href":1851},"#setting-the-correct-language"," to find your KOTOR installation.",[1736,1854,1855,1858,1863,1871],{},[1517,1856,1857],{},"Right-click on the KOTOR app",[1517,1859,1860,1861],{},"Click on ",[651,1862,1706],{},[1517,1864,1865,1866,1868,1869],{},"Navigate to ",[651,1867,1710],{}," -> ",[651,1870,1714],{},[1517,1872,1873,1874],{},"Create a new folder called ",[651,1875,1841],{},[16,1877,1878,1879,1881,1882,1885,1886,1767],{},"Finally, just drop the files into your newly created ",[651,1880,1841],{}," folder.\nNext, we copy the contents of the ",[651,1883,1884],{},"Modules"," folder and copy those into our game’s ",[651,1887,1884],{},[16,1889,1890,1891,1894,1895,1898,1899,1902,1903,1906,1907,1912,1913,54],{},"Finally, there is another folder called ",[651,1892,1893],{},"Existing2DAPatch",".\nKOTOR makes use of ",[651,1896,1897],{},".2da"," files, which are similar to an Excel spreadsheet, or a local database.\nIf you already have mods installed that affect either the ",[651,1900,1901],{},"heads.2da"," or ",[651,1904,1905],{},"portraits.2da"," files, you must use the included TSL patcher—TSL being an acronym for “The Sith Lords”, the subtitle of KOTOR II.\nSince it’s a Windows executable, we need access to Windows in one way or another. Depending on whether you chose to extract the correct language files yourself or you chose the ones I provided, you may already have ",[20,1908,1911],{"href":1909,"rel":1910},"https:\u002F\u002Fwww.codeweavers.com\u002Fcrossover",[24],"CrossOver"," installed. If not, follow the instructions right ",[20,1914,1037],{"href":1662},[16,1916,1917,1918,85,1923,324,1928,1933,1934,1939],{},"I chose CrossOver for ease of access, but other options include virtual machines like ",[20,1919,1922],{"href":1920,"rel":1921},"https:\u002F\u002Fwww.parallels.com\u002F",[24],"Parallels",[20,1924,1927],{"href":1925,"rel":1926},"https:\u002F\u002Fwww.vmware.com\u002Fproducts\u002Fdesktop-hypervisor\u002Fworkstation-and-fusion",[24],"VMWare",[20,1929,1932],{"href":1930,"rel":1931},"https:\u002F\u002Fmac.getutm.app\u002F",[24],"UTM",", or other apps like ",[20,1935,1938],{"href":1936,"rel":1937},"https:\u002F\u002Fwww.portingkit.com\u002F",[24],"Porting Kit",", which is a free alternative to CrossOver.\nFollow the steps outlined below to run the patcher correctly.",[695,1941,1943],{"title":1942,"type":698},"Create a backup",[16,1944,1945],{},"You should always create a backup of your current installation before applying one of these patches. Things may go wrong, and depending on how excessively you modded your game, returning to the previous state may take a while if you haven’t got a backup.",[1736,1947,1948,1953,1960,1977,1984,1991,2000,2009,2014],{},[1517,1949,1950,1951],{},"Open CrossOver and choose any Windows 10 bottle. If you haven’t created one yet, refer to ",[20,1952,1663],{"href":1662},[1517,1954,1955,1956,1959],{},"Click on the ",[651,1957,1958],{},"Run Command"," button",[1517,1961,1962,1963,1966,1967,1969,1970,1973,1974],{},"Next to ",[651,1964,1965],{},"Command",", click on ",[651,1968,1693],{}," and point it to the ",[651,1971,1972],{},"TSLPatcher.exe"," inside the mod folder, then click on ",[651,1975,1976],{},"Open",[1517,1978,1979,1980,1983],{},"Click ",[651,1981,1982],{},"Run","; the Windows executable will be launched",[1517,1985,1986,1987,1990],{},"Depending on the mod, you may need to click on the ",[651,1988,1989],{},"🔍"," icon in the bottom right, toggling the mod’s config summary",[1517,1992,1860,1993,1996,1997],{},[651,1994,1995],{},"Start patching",", then confirm with ",[651,1998,1999],{},"Yes",[1517,2001,2002,2003,2005,2006,2008],{},"You are prompted to point it to your ",[651,2004,1901],{}," file. This file resides in your ",[651,2007,1841],{}," folder, so navigate there, then select it",[1517,2010,2011,2012,1757],{},"Repeat the same process for the ",[651,2013,1905],{},[1517,2015,2016,2017,2020,2021],{},"Let the patcher do its thing, click ",[651,2018,2019],{},"Ok",", then ",[651,2022,2023],{},"Exit",[16,2025,2026,2027,2029,2030,2032,2033,2036,2037,2039],{},"What we just did has no effect, given that no other mod has affected those ",[651,2028,1897],{}," files, but you learned how to use those patchers.\nLots of mods use these patchers; some simply move some files into your ",[651,2031,1841],{}," folder, and you can get away with just manually moving all the files from the ",[651,2034,2035],{},"tslpatchdata"," folder into your ",[651,2038,1841],{}," folder—like the one we used in this example—but others do more than that.",[16,2041,2042,2043,2045,2046,2048,2049,2052,2053,2055],{},"So what did the patcher do? Why can’t we just move the files from ",[651,2044,2035],{}," into our ",[651,2047,1841],{}," folder manually?\nIt ",[82,2050,2051],{},"merged"," our existing ",[651,2054,1897],{}," files with the changes introduced by the mod.",[16,2057,2058],{},"And that’s it.\nSome mods include well-documented installation instructions, while others are severely lacking in that department. The large majority of mods works perfectly fine out of the box, but as always, when it comes to modding, be prepared to troubleshoot.",[16,2060,2061],{},"If you enjoy that nostalgic feeling of lower resolutions and long-forgotten aspect ratios, this is the way to play the game on a Mac.\nIf you fancy a more modern experience, check out one of the other options.",[217,2063],{},[220,2065,2067],{"id":2066},"switch-emulation","Switch Emulation",[16,2069,2070],{},"If you followed my tutorial for installing and setting up the native version of KOTOR on macOS and decided that you need a more modern experience, Switch emulation may very well be an option for you.\nThe Switch version offers controller support and widescreen resolutions out of the box. However, unlike the other versions, it lacks official mod support, so modding is basically out of the question.",[16,2072,2073,2074,2079],{},"As of writing this article, there are several Switch emulators available on Mac, but ",[20,2075,2078],{"href":2076,"rel":2077},"https:\u002F\u002Fgithub.com\u002FV380-Ori\u002FAstris.Binaries",[24],"Astris",", a Mac-exclusive Switch emulator that comes with a beautiful interface built in SwiftUI, is currently the most performant and most recent emulator on the market.",[282,2081,2083],{"id":2082},"installing-an-emulator","Installing an emulator",[16,2085,2086,2087,54],{},"Just follow the link above, and grab the latest release from GitHub. If you need a little extra help, I already showed you how to download releases from GitHub earlier, when we downloaded ",[20,2088,1763],{"href":2089},"#embracing-43",[16,2091,2092,2093,2095,2096,2098,2099,2101],{},"Once that’s done, you’ll end up with a ",[651,2094,1756],{}," file—simply mount it by double-clicking on it, and drag the ",[651,2097,2078],{}," icon onto your ",[651,2100,653],{}," folder.\nNext, simply try to launch the app. You’ll be greeted by this warning here:",[212,2103],{"alt":2104,"src":2105},"Non-trusted app on macOS.","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fwarning.webp",[16,2107,2108,2109,2112,2113,2116,2117,54],{},"Simply open your System Preferences, scroll down to ",[651,2110,2111],{},"Privacy & Security",", then scroll all the way down, and click on ",[651,2114,2115],{},"Open Anyway"," next to ",[651,2118,2119],{},"\"Astris\" was blocked to protect your Mac",[212,2121],{"alt":2122,"src":2123},"Opening Astris.","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fastris-allow-anyway.webp",[16,2125,1860,2126,2128],{},[651,2127,2115],{}," in the dialog that opens up, enter your password when prompted, and you’re good to go.",[16,2130,2131,2132,2135],{},"Next up, you’ll be greeted by Astris’s welcome screen, asking you to point it to your data directory.\nIf you want to continue using data created by Ryujinx, one of the other emulators available on macOS, you can do so by pointing it to Ryujinx’s ",[651,2133,2134],{},"data"," directory.\nIt will automatically locate it, as long as you used the default directory.\nIf you haven’t used Ryujinx before, no problem either, just point it to somewhere else, wherever you feel comfortable.\nI would still recommend you to point it to where Ryujinx would save your config at, simply to make your setup more versatile.",[16,2137,2138],{},"The default path for that folder is",[16,2140,2141],{},[651,2142,2143],{},"~\u002FLibrary\u002FApplication Support\u002FRyujinx",[16,2145,2146,2147,2152,2153,2156,2157,2160,2161,1767],{},"If you don’t bring an existing data folder, you’ll then be asked for production keys.\nYou can just follow ",[20,2148,2151],{"href":2149,"rel":2150},"https:\u002F\u002Fletmegooglethat.com\u002F?q=prod+keys+net+switch",[24],"this link",", and you’ll find a website where you can grab not only the production keys but also the title keys, which we will need for actually running games.\nSimply download both keys, then point Astris to the location of your keys.\nIdeally, you would move both the ",[651,2154,2155],{},"prod.keys",", as well as the ",[651,2158,2159],{},"title.keys"," file into your Ryujinx’s ",[651,2162,2163],{},"system",[16,2165,2166,2167,2171],{},"After you provided the production keys, Astris needs a firmware file. You can always grab the latest firmware from ",[20,2168,1037],{"href":2169,"rel":2170},"https:\u002F\u002Fgithub.com\u002FTHZoria\u002FNX_Firmware\u002Freleases",[24],", but keep in mind that the keys are tied to a specific firmware, so if the firmware version is newer than your keys, they won’t work.\nAstris will tell you if you try to install a firmware that would lead to a version mismatch with your keys.",[282,2173,2175],{"id":2174},"setting-up-the-game","Setting up the game",[16,2177,2178,2179,2184],{},"Now that that’s done, we can focus on getting KOTOR ready.\nYou need to get a hold of the game itself, and its 1.0.4 update. You may search ",[20,2180,2183],{"href":2181,"rel":2182},"https:\u002F\u002Fletmegooglethat.com\u002F?q=ziperto",[24],"this"," via Google to find a place to get both.\nOnce you got those, extract the game and the update to a place where you can find them.\nIn my case, I have dedicated folders on my external drive—one for all my games\u002FROMs, and one specifically for Switch extras, such as updates, DLC, and mods.",[212,2186],{"alt":2187,"src":2188},"Folder structure in Finder","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Femulation-folder-structure.webp",[16,2190,2191,2192,2195,2196,2199,2200,2203,2204,2207,2208,2211],{},"Next, go to Astris, open its settings, then under ",[651,2193,2194],{},"General",", add a new game library by clicking the button labeled ",[651,2197,2198],{},"Add game folder...",".\nSimply point it to where your game is stored.\nYour game should now appear in Astris’s library.\nOnce that’s done, right-click on the game, and select ",[651,2201,2202],{},"Manage Updates",", then click ",[651,2205,2206],{},"Add",", and point it to your KOTOR update file.\nOnce that’s done, you should see the version jump to ",[651,2209,2210],{},"1.0.4",".\nAlternatively, you can just add the folder containing your updates, DLC, and so on as a game folder. That way, Astris will pick up game updates and DLCs automatically, and you no longer need to manually point each game to its dedicated update files or DLC.",[212,2213],{"alt":2214,"src":2215},"Astris library on display","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fastris-library.webp",[16,2217,2218,2219,2222,2223,2226],{},"Finally, we need to set up our controller.\nThis is probably the biggest difference between the Switch version and all other versions—it has native controller support.\nYou could, in theory, work around that issue via Steam Controller support and dabbling around in there, but it’s not the same.\nSimply open up Astris, go into your settings, and then ",[651,2220,2221],{},"Input",". Make sure your controller is connected, then click on the dropdown next to one of the list items here, then select ",[651,2224,2225],{},"Controller",".\nNow you need to point it to your controller, and choose if you want to use it as a pair of JoyCons or a Pro controller—I usually go with the latter.",[212,2228],{"alt":2229,"src":2230},"Controller settings in Astris","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fcontroller-setup.webp",[16,2232,2233,2234,2237,2238,2241,2242,2245],{},"And that’s it. You can return to your library and start the game.\nBy default, it’s locked to 60Hz, but you can just disable VSync by clicking this ",[651,2235,2236],{},"VSync"," button down here.\nAlternatively, you can head into Astris’s settings once more, then ",[651,2239,2240],{},"System",", then disable ",[651,2243,2244],{},"Emulated VSync",".\nKeep in mind that in some games, the game speed is tied to the frame rate, so frame rates above default may make the game unplayably fast—this does not apply to KOTOR, though.",[212,2247],{"alt":2248,"src":2249,"caption":2248},"KOTOR running in Astris.","images\u002Fblog\u002Farticles\u002Fkotor-on-mac\u002Fswitch-ingame.webp",[16,2251,2252],{},"With macOS and Switch emulation taken care of, let’s tackle the final option for running KOTOR on your Mac: Windows!",[217,2254],{},[220,2256,2258],{"id":2257},"windows","Windows",[16,2260,2261],{},"Finally, we can take a look at Windows, and probably the best way to run the game on a Mac, albeit with some heavy lifting on our part required before we can get to it.\nThere are several different ways to run Windows games on a Mac, including virtual machines, translation layers, such as CrossOver or PortingKit, or Bootcamp, allowing us to run Windows on bare metal—at least on Macs with Intel chipsets.",[16,2263,2264,2265,2268,2269,2273],{},"If you’re going the Bootcamp route, simply follow ",[20,2266,2183],{"href":880,"rel":2267},[24]," tutorial on how to set it up, then follow ",[20,2270,2183],{"href":2271,"rel":2272},"https:\u002F\u002Fsteamcommunity.com\u002Fsharedfiles\u002Ffiledetails\u002F?id=2901738838",[24]," guide to set up the widescreen patch and more.",[16,2275,2276,2277,2280,2281,2285],{},"For people on Apple Silicon Macs, let me make a couple of suggestions.\nSince KOTOR is a DirectX 9 game, neither CrossOver, nor PortingKit will be able to offer good performance out of the box.\nInstead, we need to either run the game on virtual machines, or use workarounds to make DX9 games playable on a Mac.\nGiven that virtual machines don’t offer the same performance as solutions like CrossOver or PortingKit, require more time and effort to get up and running, and consume much more of your precious disk space, I’ve opted for ",[20,2278,1911],{"href":1909,"rel":2279},[24],", a piece of software developed by Codeweavers, who are responsible for Proton on Linux.\nIt is basically the de-facto way of playing Windows games on Apple Silicon Macs, and despite it being a paid software, I still recommend you go for it.\nFirst of all, it has a 14-day trial, so you can easily try it out and, if you truly want to commit to gaming on a Mac, you may as well grab a perpetual license for as low as $40, whenever it’s on sale.\nSecondly, you won’t need CrossOver for anything besides installing the game, installing some mods, and applying the widescreen patch anyways—we will be using ",[20,2282,1029],{"href":2283,"rel":2284},"https:\u002F\u002Fwww.winehq.org\u002F",[24]," to run the game itself.",[16,2287,2288],{},"So why don’t we start off by getting everything set up on the software side of things?",[282,2290,2292],{"id":2291},"installing-crossover","Installing CrossOver",[16,2294,1740,2295,2300,2301,1764,2303,2305],{},[20,2296,2299],{"href":2297,"rel":2298},"https:\u002F\u002Fwww.codeweavers.com\u002Fcrossover\u002Fdownload",[24],"the CrossOver website"," and grab the 14-day trial.\nYou need to enter your name and email, but masked email addresses are fine, so no need to give them your email address.\nOnce that’s done, simply unpack the archive you just downloaded, then move the ",[651,2302,1911],{},[651,2304,653],{}," folder.\nFinally, launch it, and you’re good to go.\nIf we were to do more than just install a game, we would need to install some dependencies, worry about DLL overrides, but thankfully, we don’t have to do any of that.",[16,2307,2308,2309,2312,2313,2316],{},"If you got the Steam version of the game, simply install Steam.\nTo do that, simply search for the ",[651,2310,2311],{},"Steam"," crosstie using CrossOver’s UI. A ",[65,2314,2315],{},"crosstie"," bundles dependencies and useful fixes and patches together, making the install process that much easier.\nSimply follow the on-screen instructions to get Steam installed.\nOnce done, open it up, log in, then download the game from Steam.",[16,2318,2319,2320,2325,2326,2329,2330,2333,2334,2337,2338,2341,2342,2345,2346,2349],{},"Alternatively, you may be using the ",[20,2321,2324],{"href":2322,"rel":2323},"https:\u002F\u002Fwww.gog.com\u002Fen\u002Fgame\u002Fstar_wars_knights_of_the_old_republic",[24],"GOG"," version of the game.\nWhile you could go ahead and install ",[651,2327,2328],{},"GOG Galaxy"," via CrossOver, you may as well just grab the offline installers for KOTOR off GOG’s website.\nOnce done, open CrossOver and click on the ",[651,2331,2332],{},"Install"," button.\nNext, click on ",[651,2335,2336],{},"Install an unlisted application"," in the top right corner. There is a crosstie available for KOTOR, but it’s not useful for us in any way.\nOnce that’s done, you need to do two things: provide the installer, and choose a ",[82,2339,2340],{},"bottle"," to install the application into.\nI won’t go over what a bottle is, but just think of it as an environment that your Windows applications can run in.\nFor the installer, choose the ",[651,2343,2344],{},".exe","  file from GOG you just downloaded, and for the bottle, create a new Windows 10 bottle and name it whatever you like.\nClick ",[651,2347,2348],{},"Next"," and let the installer do its thing.",[16,2351,2352],{},"Once your copy of KOTOR is installed, we can focus on installing mods.",[282,2354,2356],{"id":2355},"installing-mods","Installing mods",[16,2358,2359,2360,2363,2364,2366,2367,2369],{},"The installation process is almost the same as for the Mac version of the game, which you can reference ",[20,2361,1037],{"href":2362},"#modding-the-game",".\nThe only real difference is that the Windows version won’t require you to click ",[651,2365,1706],{},"—you can just browse to your installation, then find the ",[651,2368,1841],{}," folder inside the root of your game folder.",[16,2371,2372],{},"Apart from that, the installation process is identical to what I showcased in the section linked above.",[282,2374,2376],{"id":2375},"widescreen","Widescreen!",[16,2378,2379,2380,324,2385,54],{},"Unlike the Switch version, the Windows version does not come with native widescreen support, but unlike the macOS version, we can fix that by applying an unofficial widescreen patch.\nThere are two options we could choose from: ",[20,2381,2384],{"href":2382,"rel":2383},"https:\u002F\u002Fwww.flawlesswidescreen.org\u002F",[24],"Flawless Widescreen",[20,2386,2389],{"href":2387,"rel":2388},"https:\u002F\u002Fwww.wsgf.org\u002Farticle\u002Funiversal-widescreen-uniws-patcher",[24],"UniWS",[16,2391,2392,2393,2396],{},"Flawless Widescreen ",[82,2394,2395],{},"injects"," a patch during runtime, whereas UniWS alters game files permanently.\nOn actual Windows hardware, both are viable options, but for us, UniWS is the better solution, saving us from running yet another background process.\nTo get everything set up, simply follow the instructions below:",[1736,2398,2399,2414,2447,2457,2517],{},[1517,2400,2401,2402,2404,2405,2410,2411,2413],{},"Create a backup of your original ",[651,2403,1246],{},", which can be found in the root of your game’s installation folder. Next, download a ",[20,2406,2409],{"href":2407,"rel":2408},"https:\u002F\u002Fdeadlystream.com\u002Ffiles\u002Ffile\u002F1320-kotor-editable-executable\u002F",[24],"hex-editable version"," of the executable, then replace the original ",[651,2412,2344],{}," with the modified version.\nThis step is mandatory, as otherwise, UniWS won’t be able to apply the widescreen patch.",[1517,2415,2416,2417,2420,2421,2424,2425,2427,2428,2430,2431,2433,2434,2437,2438,2440,2441,2444,2445,54],{},"If you haven’t done so already, download UniWS from ",[20,2418,1037],{"href":2387,"rel":2419},[24],".\nRun ",[651,2422,2423],{},"uniws.exe"," via CrossOver by opening the app, clicking on ",[651,2426,1958],{},", then clicking on ",[651,2429,1693],{},", then selecting ",[651,2432,2423],{},". Once that’s done, the path next to ",[651,2435,2436],{},"Command:"," will be populated with the path to ",[651,2439,2423],{},".\nFeel free to click ",[651,2442,2443],{},"Save Command as a Launcher",", to get easy access to UniWS at any time. Then, click on ",[651,2446,1982],{},[1517,2448,2449,2450,2453,2454,54],{},"Select ",[651,2451,2452],{},"Star Wars: KOTOR (1024x768 interface)"," in the dropdown menu, then browse to your KOTOR installation folder.\nSelect your desired game resolution—I’ll go with 1920x1080—and click on ",[651,2455,2456],{},"Patch",[1517,2458,2459,2460,2463,2464,2469,2470,2473,2474,301,2477,2480,2481,2483,2484],{},"Browse to your game installation folder, then open ",[651,2461,2462],{},"swkotor.ini"," with a text\u002Fcode editor of your choice—I’m using ",[20,2465,2468],{"href":2466,"rel":2467},"https:\u002F\u002Fcode.visualstudio.com\u002F",[24],"VSCode",", for example.\nFind the ",[651,2471,2472],{},"[Graphics Options]"," section. Change ",[651,2475,2476],{},"Height=",[651,2478,2479],{},"Width="," to the same resolution you selected in UniWS. If neither of these entries exists, simply add them under ",[651,2482,2472],{},".\nIn my case, I would end up with:",[662,2485,2487],{"language":2486},"ini",[666,2488,2490],{"className":668,"code":2489,"language":664,"meta":454,"style":454},"[Graphics Options]\nWidth=1920\nHeight=1080\n",[651,2491,2492,2497,2507],{"__ignoreMap":454},[673,2493,2494],{"class":675,"line":676},[673,2495,2496],{"class":936},"[Graphics Options]\n",[673,2498,2499,2502,2504],{"class":675,"line":455},[673,2500,2501],{"class":936},"Width",[673,2503,1159],{"class":1158},[673,2505,2506],{"class":683},"1920\n",[673,2508,2509,2512,2514],{"class":675,"line":460},[673,2510,2511],{"class":936},"Height",[673,2513,1159],{"class":1158},[673,2515,2516],{"class":683},"1080\n",[1517,2518,2519,2520,2525,2526,2529,2530,2532,2533,2538,2539,301,2542,2545,2546,2548],{},"Optionally, install ",[20,2521,2524],{"href":2522,"rel":2523},"https:\u002F\u002Fdeadlystream.com\u002Ffiles\u002Ffile\u002F1159-kotor-high-resolution-menus\u002F",[24],"high resolution menus"," by copying the files from the folder named after your chosen resolution—",[651,2527,2528],{},"gui.1920x1080"," in my case—into your game’s ",[651,2531,1841],{}," folder.\nIf you do so, you may also want to check out ",[20,2534,2537],{"href":2535,"rel":2536},"https:\u002F\u002Fdeadlystream.com\u002Ffiles\u002Ffile\u002F1891-larger-text-fonts-for-kotor",[24],"this font mod",", as otherwise, text could be hard to read.\nFinally, copy both ",[651,2540,2541],{},"hires_patcher.bat",[651,2543,2544],{},"hires_patcher.exe"," into your KOTOR installation folder, then run ",[651,2547,2541],{}," using CrossOver.\nYou’ll be prompted for the desired resolution once more.",[282,2550,2552],{"id":2551},"running-kotor","Running KOTOR",[16,2554,2555,2556,2559,2560,2564],{},"Finally, we can run KOTOR.\nThis section originally contained detailed instructions on how to run the game through Wine.\nI have since written a dedicated article about running ",[65,2557,2558],{},"any"," DX9 game on Apple Silicon, so instead, reference ",[20,2561,2563],{"href":2562},"\u002Fblog\u002Fdx9-games-on-mac","that article"," to run the game.",[834,2566,2567],{},"html pre.shiki code .skCYq, html code.shiki .skCYq{--shiki-default:#BFBDB6}html pre.shiki code .sh1d5, html code.shiki .sh1d5{--shiki-default:#F29668}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":454,"searchDepth":455,"depth":455,"links":2569},[2570,2576,2580],{"id":1628,"depth":455,"text":1469,"children":2571},[2572,2573,2574,2575],{"id":1645,"depth":460,"text":1646},{"id":1655,"depth":460,"text":1656},{"id":1730,"depth":460,"text":1731},{"id":1803,"depth":460,"text":1804},{"id":2066,"depth":455,"text":2067,"children":2577},[2578,2579],{"id":2082,"depth":460,"text":2083},{"id":2174,"depth":460,"text":2175},{"id":2257,"depth":455,"text":2258,"children":2581},[2582,2583,2584,2585],{"id":2291,"depth":460,"text":2292},{"id":2355,"depth":460,"text":2356},{"id":2375,"depth":460,"text":2376},{"id":2551,"depth":460,"text":2552},"\u002Fimages\u002Fblog\u002Fkotor.webp","2026-04-18","Learn how to run one of the greatest RPGs of all time on a modern Mac.",{},"\u002Fkotor-on-mac",17,{"title":1609,"description":2588},"kotor-on-mac",[477,1468,1469,854,2595],"Star Wars","bS_HxvD1JJ2gwXcqZqUdrUcd-3nE6XdMfSq8BdTjbLk",{"id":2598,"title":2599,"activeDiscussion":7,"body":2600,"category":2716,"cover":1596,"date":2717,"description":2718,"disabled":7,"extension":468,"highlighted":7,"layout":469,"meta":2719,"navigation":471,"path":2720,"readTimeInMinutes":455,"seo":2721,"stem":2722,"tags":2723,"useAltColors":7,"__hash__":2724},"blog\u002Fdisable-apple-intelligence.md","How to disable Apple Intelligence properly",{"type":9,"value":2601,"toc":2714},[2602,2605,2608,2612,2619,2704,2711],[12,2603,2599],{"id":2604},"how-to-disable-apple-intelligence-properly",[16,2606,2607],{},"Lots of people—myself included—don’t use Apple Intelligence.\nDespite being turned off, it still takes up precious space, so I decided to create a simple tutorial showing how to disable it properly and remove all related data in the process.",[212,2609],{"alt":2610,"src":2611},"Apple Intelligence takes up space despite turning it off.","images\u002Fblog\u002Farticles\u002Fremove-apple-intelligence\u002Fturned-off.webp",[695,2613,2616],{"title":2614,"type":2615},"Important","important",[16,2617,2618],{},"The terminal commands mentioned below won’t work outside of recovery mode.",[1736,2620,2621,2624,2632,2638,2652,2661,2682,2701],{},[1517,2622,2623],{},"Disable Apple Intelligence in System Settings.",[1517,2625,2626,2627,54],{},"Boot into ",[20,2628,2631],{"href":2629,"rel":2630},"https:\u002F\u002Fsupport.apple.com\u002Fguide\u002Fmac-help\u002Fmacos-recovery-a-mac-apple-silicon-mchl82829c17\u002F15.0\u002Fmac\u002F15.0",[24],"Recovery Mode",[1517,2633,2634,2635,54],{},"Open ",[651,2636,2637],{},"Disk Utility",[1517,2639,2640,2641,2644,2645,2648,2649,54],{},"Right-click on ",[651,2642,2643],{},"Data"," under ",[651,2646,2647],{},"Macintosh HD"," and select ",[651,2650,2651],{},"Mount",[1517,2653,2654,2655,2657,2658,54],{},"Quit ",[651,2656,2637],{}," and open ",[651,2659,2660],{},"Terminal",[1517,2662,2663,2664],{},"Run the following command:",[662,2665,2666],{"language":664},[666,2667,2669],{"className":668,"code":2668,"language":664,"meta":454,"style":454},"rm -rf \u002FVolumes\u002FData\u002FSystem\u002FLibrary\u002FAssetsV2\u002Fcom_apple_MobileAsset_UAF_FM_GenerativeModels\n",[651,2670,2671],{"__ignoreMap":454},[673,2672,2673,2676,2679],{"class":675,"line":676},[673,2674,2675],{"class":679},"rm",[673,2677,2678],{"class":926}," -rf",[673,2680,2681],{"class":683}," \u002FVolumes\u002FData\u002FSystem\u002FLibrary\u002FAssetsV2\u002Fcom_apple_MobileAsset_UAF_FM_GenerativeModels\n",[1517,2683,2684,2685],{},"If you used Image Playground, you also need to run:",[662,2686,2687],{"language":664},[666,2688,2690],{"className":668,"code":2689,"language":664,"meta":454,"style":454},"rm -rf \u002FVolumes\u002FData\u002FSystem\u002FLibrary\u002FAssetsV2\u002Fcom_apple_MobileAsset_UAF_FM_Visual\n",[651,2691,2692],{"__ignoreMap":454},[673,2693,2694,2696,2698],{"class":675,"line":676},[673,2695,2675],{"class":679},[673,2697,2678],{"class":926},[673,2699,2700],{"class":683}," \u002FVolumes\u002FData\u002FSystem\u002FLibrary\u002FAssetsV2\u002Fcom_apple_MobileAsset_UAF_FM_Visual\n",[1517,2702,2703],{},"Reboot",[16,2705,2706,2707,2710],{},"Once that’s done, Apple Intelligence will no longer appear in ",[651,2708,2709],{},"Storage"," in System Settings.",[834,2712,2713],{},"html pre.shiki code .sP_rH, html code.shiki .sP_rH{--shiki-default:#59C2FF}html pre.shiki code .sHCZS, html code.shiki .sHCZS{--shiki-default:#95E6CB}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":454,"searchDepth":455,"depth":455,"links":2715},[],"tech","2026-04-11","Stop Apple Intelligence from wasting precious space.",{},"\u002Fdisable-apple-intelligence",{"title":2599,"description":2718},"disable-apple-intelligence",[1468,1469],"qn3dsO77Dsas4qwkRL_oqDgB5tzB1RIwVGpZ-biu4r0",1784357034334]