[{"data":1,"prerenderedAt":675},["ShallowReactive",2],{"project-50052251":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":47,"post_text":49,"what":50,"said":95,"maker_in_thread":195,"shape":203,"grid":208,"attempts":638,"same_week":639,"maker_shows":39,"maker_hidden":667,"reader_version":668,"card":669},"50052251","ps2-web-recomp","PS2 games statically recompiled to WebAssembly","title","Show HN: PS2 games statically recompiled to WebAssembly","https:\u002F\u002Fgithub.com\u002Fsnuri00\u002Fps2-web-recomp","github.com","deadxwarrior",1791787613,2026,316,159,135,4366,4,"legend","games","game emulation and recompilation","web_app",[24,25,26,27,28],"ps2 recompilation","webassembly","webgpu","emotion engine","game preservation","mixed",-0.101,{"positive":32,"neutral":33,"mixed":34,"critical":35},8,26,0,20,54,{"privacy":38,"idea":40,"performance":42,"execution":44,"docs":45,"design":46},{"positive":34,"critical":39},1,{"positive":41,"critical":32},5,{"positive":43,"critical":39},3,{"positive":34,"critical":18},{"positive":34,"critical":41},{"positive":34,"critical":34},[39,34,34,34,34,41,39,34,48,39,43,39,43,34,43,39,34,34,34,34,34,39,39,43,39,39,43,48,43,34,43,18,39,39,43,34,18,18,41,43],2,null,{"problem":51,"audience":49,"pricing":49,"motivation":62,"time_to_build":49,"stack":68,"openness":93,"stage":94,"team_size":94},{"value":52,"source":53,"evidence":54},"Lets PS2 game discs run in a web browser or natively without a traditional emulator.","maker",[55,59],{"id":56,"by":57,"text":58},"50068324","vrighter","\"PlayStation 2 games running in the browser without an emulator. The game's Emotion Engine machine code is translated ahead of time into C++, compiled to WebAssembly, and linked…",{"id":60,"by":11,"text":61},"50055543","yes, and its probably where this should go. The recompiler itself is plain C++ and builds for wasm easily, the heavy part is compiling its output (GoW2 becomes about 670k lines…",{"value":63,"source":53,"evidence":64},"Maker wanted to play their own game dumps remotely via VPN from a home server.",[65],{"id":66,"by":11,"text":67},"50057890","i actually developed the project to play my own game dumps remotely via VPN from my home server; making it publicly available is not legal and will be consequences:)",[69,73,77,83,89],{"value":70,"source":53,"evidence":71},"C++",[72],{"id":60,"by":11,"text":61},{"value":74,"source":53,"evidence":75},"WebAssembly",[76],{"id":60,"by":11,"text":61},{"value":78,"source":53,"evidence":79},"WebGPU",[80],{"id":81,"by":11,"text":82},"50060199","the GS was the biggest one, i emulate it in WebGPU compute shaders, and texture sampling alone takes about a third of the GPU time, so at 2x GoWw is gpu-bound on an integrated…",{"value":84,"source":53,"evidence":85},"wgpu",[86],{"id":87,"by":11,"text":88},"50055638","There is already a native Linux build (Vulkan through wgpu, SDL2 window, audio and gamepad support), so it can run on the Deck as a non-steam game, and the browser build should…",{"value":90,"source":53,"evidence":91},"SDL2",[92],{"id":87,"by":11,"text":88},"open_source","unknown",{"praise":96,"objections":113,"requests":140,"questions":155,"alternatives":168},[97],{"value":98,"source":99,"evidence":100},"Impressive technical work on recompiling PS2 games","commenter",[101,105,109],{"id":102,"by":103,"text":104},"50052370","danxbuild","Impressive. How are you handling the PS2’s timing sensitive hardware, like the vector units, in a static recompilation? Curious how close you can get to correct behavior without…",{"id":106,"by":107,"text":108},"50059928","shan-pafin","Recompiling PS2 games to WebAssembly is insane. Have you noticed any major performance bottlenecks when running heavier titles in the browser?",{"id":110,"by":111,"text":112},"50063513","krishhgg","this is sick",[114,125,133],{"value":115,"source":99,"evidence":116},"Called an emulator in disguise rather than true static recompilation",[117,118,121],{"id":56,"by":57,"text":58},{"id":119,"by":57,"text":120},"50068383","The exact same as before. Emulators existed. This is literally an emulator running in a browser. But one that doesn't have a file dialog. It walks like an emulator, quacks like…",{"id":122,"by":123,"text":124},"50054504","krystalgamer","ah yes, another recomp that still emulates a core system component.…",{"value":126,"source":99,"evidence":127},"Legal concerns about distributing games and hosting",[128,132],{"id":129,"by":130,"text":131},"50057782","khalidkhair","I wonder how \"legal\" hosting this would be given that it would require the host to basically distribute the game for free for everyone else",{"id":66,"by":11,"text":67},{"value":134,"source":99,"evidence":135},"Security concerns about hidden malware in native decomps",[136],{"id":137,"by":138,"text":139},"50057773","aceazzameen","I don't know. There's suddenly so many decomps that run native (granted this post is about WebAssembly). Is there no concern about hidden malware? IMO it doesn't have the same…",[141,148],{"value":142,"source":99,"evidence":143},"Make it work on Steam Deck",[144],{"id":145,"by":146,"text":147},"50054261","spwa4","VERY cool. I wish you could make this work for steam deck (and friends) though.",{"value":149,"source":99,"evidence":150},"Provide a playable GitHub Pages demo",[151],{"id":152,"by":153,"text":154},"50054396","simonmales","No GitHub pages so I can play?",[156,164],{"value":157,"source":99,"evidence":158},"Performance on heavier titles",[159,163],{"id":160,"by":161,"text":162},"50056325","Benard-dev","This is good, I didn't know 3DS could handle PS2 emulation. What's the performance like on heavier titles?",{"id":106,"by":107,"text":108},{"value":165,"source":99,"evidence":166},"Timing accuracy of vector units",[167],{"id":102,"by":103,"text":104},[169,177,188],{"value":170,"source":99,"evidence":171},"Emulators with ROMs",[172,176],{"id":173,"by":174,"text":175},"50056739","fwip","I think it's less that recompilation is stealing the code, and more that it is a piece of the puzzle to 'stealing' the game experience (the thing that you would pay for).…",{"id":119,"by":57,"text":120},{"value":178,"source":99,"evidence":179},"psp-web-recomp",[180,184],{"id":181,"by":182,"text":183},"50059029","mamonoleechi","- related thread:https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=49991243 (God of War on PSP, recompiled to WebAssembly and running in the browser) - might interest you, if you like the…",{"id":185,"by":186,"text":187},"50060584","anonymous908213","> This is the sibling of psp-web-recomp and follows the same method Fucking amazing that this person can prompt to embed an emulator into a binary and call it \"no emulation…",{"value":189,"source":99,"evidence":190},"vitaslop",[191],{"id":192,"by":193,"text":194},"50055649","kodablah","I did similar for PS Vita over the past few months: https:\u002F\u002Fgithub.com\u002Fcretz\u002Fvitaslop But instead of single games, I \"built\" an ARM-to-WASM transpiler in WASM. Also cool…",{"comments":196,"answered":43,"key":197},7,[198,199,202],{"id":60,"text":61},{"id":200,"text":201},"50055289","Fair point, the IOP is interpreted. Its the PS1-class I\u002FO CPU, and here it only runs the driver modules a game ships on its disc (sound engine, pad, memory card). The IOP kernel…",{"id":66,"text":67},{"commenters":204,"max_depth":205,"maker_replies":196,"first_comment_mins":206,"lifespan_hours":207},109,9,14,205,[209,211,215,219,222,224,226,228,230,232,235,238,241,244,247,250,253,256,258,261,265,269,273,276,279,282,286,289,292,295,297,300,303,306,307,311,313,315,316,320,323,327,329,332,335,338,341,343,345,347,350,353,355,358,360,362,365,368,371,374,378,381,384,386,389,392,395,397,399,402,405,408,411,414,417,420,421,424,426,428,431,434,437,440,442,445,446,447,451,454,457,459,462,463,467,471,474,478,480,482,483,484,486,490,493,495,497,498,501,504,507,509,511,515,517,520,523,526,529,531,533,536,538,541,542,546,550,555,558,561,564,566,568,572,576,579,581,584,586,588,590,592,594,596,600,603,605,606,608,611,613,617,621,625,628,630,631,633,636],[137,34,39,210,138,34],"project\u002Fcritical\u002Fprivacy",[212,34,34,213,214,34],"50058716","commenter\u002Fneutral\u002Fprivacy","ReptileMan",[216,34,34,217,218,34],"50059474","commenter\u002Fneutral\u002Fnone","natpalmer1776",[220,34,34,217,221,34],"50062991","Xirdus",[223,34,34,217,218,34],"50063012",[225,34,34,217,221,34],"50064047",[227,34,34,217,218,34],"50064185",[229,34,34,217,221,34],"50065378",[231,34,34,217,218,34],"50065418",[233,34,34,213,234,34],"50059490","j45",[236,34,34,213,237,34],"50058773","zamadatix",[239,34,34,213,240,34],"50063128","edflsafoiewq",[242,34,34,213,243,34],"50064050","jychang",[245,34,34,217,246,34],"50064492","sublinear",[248,34,34,217,249,34],"50064835","jkahrs595",[251,34,34,217,252,34],"50171839","kira222",[254,34,34,213,255,34],"50065707","Shekelphile",[257,34,34,213,57,34],"50068541",[259,34,34,213,260,34],"50059596","johnfn",[262,39,41,263,264,34],"50055027","project\u002Fpositive\u002Fidea","zuInnp",[266,39,41,267,268,34],"50056895","project\u002Fpositive\u002Fperformance","exhumet",[270,39,34,271,272,34],"50057919","other\u002Fneutral\u002Fnone","patrickk",[274,39,34,217,275,34],"50059405","mwkaufma",[277,39,34,217,278,34],"50059485","IshKebab",[280,39,34,271,281,34],"50061409","yuriks",[283,39,39,284,285,34],"50063347","project\u002Fcritical\u002Fidea","jonwinstanley",[287,39,34,271,288,34],"50063862","63stack",[290,39,34,271,291,34],"50064700","torben-friis",[293,39,34,271,294,34],"50065924","deadbabe",[296,39,34,271,264,34],"50067970",[298,39,34,271,299,34],"50062517","matheusmoreira",[301,39,39,284,302,34],"50063082","dfxm12",[304,39,39,305,57,34],"50069239","project\u002Fcritical\u002Fexecution",[192,48,41,263,193,34],[308,43,43,309,310,34],"50055373","project\u002Fneutral\u002Fidea","Megabinator",[60,43,34,312,11,39],"maker\u002Fneutral\u002Fexecution",[314,43,43,309,193,34],"50055675",[56,18,39,284,57,34],[317,41,39,318,319,34],"50053843","project\u002Fcritical\u002Fnone","eluusive",[321,41,34,271,322,34],"50053977","ssl-3",[324,41,43,325,326,34],"50054073","project\u002Fneutral\u002Fnone","embedding-shape",[328,41,34,271,221,34],"50058008",[330,41,43,309,331,34],"50054190","rickdeckard",[333,41,39,284,334,34],"50059953","bpye",[336,41,34,271,337,34],"50054232","easyThrowaway",[339,41,34,271,340,34],"50055281","suprjami",[342,41,34,271,337,34],"50055731",[344,41,34,271,174,34],"50056778",[346,41,34,271,340,34],"50061963",[348,41,34,271,349,34],"50059862","sgalbincea",[351,41,43,309,352,34],"50056193","sigmar",[354,41,34,271,221,34],"50057902",[356,41,34,271,357,34],"50060211","unleaded",[359,41,34,271,221,34],"50062444",[361,41,34,271,337,34],"50062075",[363,41,34,271,364,34],"50062726","artisinal",[366,41,34,271,367,34],"50064222","CTDOCodebases",[369,41,43,325,370,34],"50054891","styleio",[372,41,34,271,373,34],"50055246","ErroneousBosh",[375,376,39,284,377,34],"50056065",6,"Elizer0x0309",[379,376,34,217,380,34],"50056129","goosejuice",[382,376,34,217,383,34],"50057400","Laremere",[385,376,34,217,246,34],"50057805",[387,376,34,271,388,34],"50058864","doublerabbit",[390,376,34,271,391,34],"50059752","axus",[393,376,34,217,394,34],"50063235","jasomill",[396,376,34,271,367,34],"50064241",[398,376,34,271,380,34],"50067649",[400,376,34,271,401,34],"50056180","iugtmkbdfil834",[403,376,34,271,404,34],"50056186","vjsrinivas",[406,376,34,271,407,34],"50056342","diath",[409,376,34,271,410,34],"50058300","nullishdomain",[412,376,34,271,413,34],"50058322","jgalt212",[415,376,34,271,416,34],"50059397","matsemann",[418,376,34,217,419,34],"50056404","treyd",[173,376,34,217,174,34],[422,376,34,217,423,34],"50058546","ndriscoll",[425,376,34,217,174,34],"50075973",[427,376,34,217,423,34],"50076524",[429,376,34,271,430,34],"50065657","scheeseman486",[432,376,34,271,433,34],"50058482","yieldcrv",[435,376,34,271,436,34],"50058562","chaosharmonic",[438,376,34,271,439,34],"50058955","arshxyz",[441,376,43,325,275,34],"50059431",[443,376,34,271,444,34],"50065516","jubilanti",[119,376,39,284,57,34],[122,196,39,305,123,34],[448,196,43,449,450,34],"50054800","project\u002Fneutral\u002Fexecution","ekremabiii01",[452,196,39,305,453,34],"50055118","xyzsparetimexyz",[455,196,34,217,456,34],"50055671","wasabinator",[458,196,34,217,453,34],"50055888",[460,196,34,271,461,34],"50056047","dmonterocrespo",[200,196,34,449,11,39],[464,196,43,465,466,34],"50059828","maker\u002Fneutral\u002Fnone","foltik",[468,196,34,469,470,34],"50055435","other\u002Fcritical\u002Fnone","popcar2",[472,196,34,271,473,34],"50066085","ranger_danger",[475,196,39,476,477,34],"50056050","project\u002Fcritical\u002Fdocs","rvz",[479,196,39,476,123,34],"50060708",[481,196,39,476,57,34],"50068412",[181,32,34,271,182,34],[185,205,39,476,186,34],[485,205,39,476,57,34],"50068399",[487,488,34,271,489,34],"50057345",10,"Hyperlisk",[491,492,34,271,413,34],"50058278",11,[129,494,43,325,130,34],12,[496,494,43,325,221,34],"50057829",[66,494,34,465,11,39],[499,494,43,325,500,34],"50062105","herunan",[160,502,43,503,161,34],13,"project\u002Fneutral\u002Fperformance",[505,206,39,305,506,34],"50057959","Altern4tiveAcc",[508,206,34,312,11,39],"50058104",[145,510,43,325,146,34],15,[512,510,34,513,514,34],"50054493","other\u002Fcritical\u002Fidea","TheCapeGreek",[516,510,34,271,146,34],"50054642",[518,510,34,271,519,34],"50054674","hodgehog11",[521,510,34,271,522,34],"50054968","FanaHOVA",[524,510,34,271,525,34],"50055683","nottorp",[527,510,34,271,528,34],"50055863","ntauthority",[530,510,34,271,525,34],"50056042",[532,510,34,271,146,34],"50062116",[534,510,43,309,535,34],"50056715","captainbland",[537,510,39,284,57,34],"50068446",[539,510,41,267,540,34],"50058394","corysama",[87,510,34,449,11,39],[543,544,41,263,545,34],"50054950",16,"CodeCompost",[547,548,43,325,549,34],"50056179",17,"gitowiec",[551,552,43,553,554,34],"50054244",18,"project\u002Fneutral\u002Fdesign","anthk",[556,552,39,284,557,34],"50054345","m00dy",[559,552,34,217,560,34],"50055189","Narishma",[562,552,34,217,563,34],"50055601","dewey",[565,552,34,217,560,34],"50056011",[567,552,34,217,237,34],"50061623",[569,552,39,570,571,34],"50054753","project\u002Fcritical\u002Fperformance","fps-hero",[573,552,34,574,575,34],"50055082","other\u002Fneutral\u002Fperformance","ant6n",[577,552,34,217,578,34],"50055346","mathgeek",[580,552,34,217,554,34],"50056413",[582,552,43,553,583,34],"50055075","pjmlp",[585,552,34,217,560,34],"50055170",[587,552,34,217,583,34],"50055196",[589,552,34,217,560,34],"50055363",[591,552,34,217,583,34],"50055839",[593,552,34,217,560,34],"50056093",[595,552,34,217,554,34],"50059311",[597,598,43,309,599,34],"50056849",19,"nashtik",[601,598,43,309,602,34],"50058088","TheSkyHasEyes",[106,35,41,604,107,34],"maker\u002Fpositive\u002Fperformance",[81,35,34,503,11,39],[152,607,43,325,153,34],21,[609,607,43,325,610,34],"50054717","svantana",[612,607,43,325,477,34],"50054868",[614,615,41,263,616,34],"50053772",22,"fonrex",[618,619,34,271,620,34],"50058545",23,"SIMPL_Language",[622,623,43,309,624,34],"50056108",24,"mglvsky",[626,623,34,217,627,34],"50060150","ultropolis",[110,629,41,263,111,34],25,[102,33,43,503,103,34],[632,33,34,503,11,39],"50055738",[634,33,43,312,635,34],"50058814","1500100900",[637,33,34,271,57,34],"50068494",[],[640,644,649,654,659,663],{"id":641,"name":642,"points":643,"category":20},"50077020","Guitoro",573,{"id":645,"name":646,"points":647,"category":648},"50024499","Carrier-Explode",433,"infrastructure",{"id":650,"name":651,"points":652,"category":653},"50018817","big-arrow-on-the-screen",421,"dev_tools",{"id":655,"name":656,"points":657,"category":658},"50038634","WallHop",289,"consumer_social",{"id":660,"name":661,"points":662,"category":20},"50016312","quake-srp",241,{"id":664,"name":665,"points":666,"category":653},"50092470","Petal",228,false,"v2",{"id":670,"name":5,"line":6,"ai":667,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":671,"top":18,"kw":672,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":673,"url":9,"mix":674,"praise":98,"objection":115,"sub":21},50052251,-0.1,[24,25,26,27,28],"1000051021313031000001131132303411304453",[32,33,34,35],1794036711869]