[{"data":1,"prerenderedAt":450},["ShallowReactive",2],{"project-48703412":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":35,"aspects":36,"strip":43,"post_text":44,"what":45,"said":97,"maker_in_thread":194,"shape":204,"grid":207,"attempts":411,"same_week":412,"maker_shows":38,"maker_hidden":443,"reader_version":444,"card":445},"48703412","Decomp Academy","Learn to decompile GameCube games into matching C","title","Show HN: Decomp Academy – Learn to decompile GameCube games into matching C","https:\u002F\u002Fdecomp-academy.dev","decomp-academy.dev","jackpriceburns",1782609680,2026,197,78,299,4366,7,"notable","learning_science","decompilation tutorial","web_app",[24,25,26,27,28],"decompilation","gamecube decompilation","powerpc assembly","matching decomp","reverse engineering","mixed",0,{"positive":18,"neutral":32,"mixed":33,"critical":34},13,2,5,27,{"docs":37,"execution":39,"design":40,"idea":42},{"positive":38,"critical":38},1,{"positive":30,"critical":33},{"positive":41,"critical":38},3,{"positive":33,"critical":38},[41,30,41,38,30,30,30,30,30,30,30,30,30,30,41,41,30,34,34,34,30,34,30,30,34,41,38,38,41,30,30,30,41,41,38,38,41,41,34,41],"Over the past few months I've been heavily involved in the decompilation community. I've been hands-on decompiling a beloved game from my childhood (Star Fox Adventures). I started this journey with zero prior decomp experience—and to make things worse I had never really touched C nor assembly either.\n\nLearning how to decompile was challenging. It's difficult to find any good learning resources for it and any open-source projects for this are inactive and\u002For contain little actual learning material.\n\nSo I put together Decomp Academy! Decomp Academy is an interactive way to learn how to decompil",{"problem":46,"audience":52,"pricing":56,"motivation":60,"time_to_build":64,"stack":65,"openness":94,"stage":95,"team_size":96},{"value":47,"source":48,"evidence":49},"Learning decompilation has few good resources and existing projects contain little learning material","maker",[50],{"id":51},"post",{"value":53,"source":48,"evidence":54},"People with a little programming experience who want to learn decompilation and contribute to game decomp projects",[55],{"id":51},{"value":57,"source":48,"evidence":58},"Free, no sign-up required",[59],{"id":51},{"value":61,"source":48,"evidence":62},"Learn decompilation after struggling with Star Fox Adventures and to help others learn",[63],{"id":51},null,[66,72,76,80,84,88],{"value":67,"source":48,"evidence":68},"Rust",[69],{"id":70,"by":11,"text":71},"48703426","The backend is closed source, but it runs all on AWS Lambda\u002FDynamoDB\u002FAPIGateway and is written in Rust. Getting the compiler running in a Lambda was an adventure of it's own",{"value":73,"source":48,"evidence":74},"AWS Lambda",[75],{"id":70,"by":11,"text":71},{"value":77,"source":48,"evidence":78},"DynamoDB",[79],{"id":70,"by":11,"text":71},{"value":81,"source":48,"evidence":82},"API Gateway",[83],{"id":70,"by":11,"text":71},{"value":85,"source":48,"evidence":86},"Metrowerks CodeWarrior GC\u002F2.0 compiler",[87],{"id":51},{"value":89,"source":48,"evidence":90},"objdiff wasm",[91],{"id":92,"by":11,"text":93},"48703661","decomp.me is also a great tool! The playground section of the site allows you to turn the code into a decomp.me scratch. I also use the objdiff wasm on the frontend for the…","free","beta","solo",{"praise":98,"objections":114,"requests":140,"questions":167,"alternatives":182},[99,107],{"value":100,"source":101,"evidence":102},"Browser-based approach removes setup friction","commenter",[103],{"id":104,"by":105,"text":106},"48707182","nativeforks","The browser-first approach is a bigger deal than it sounds. Every time I've looked at reverse engineering, I got stuck somewhere between \"install this ancient compiler\" and…",{"value":108,"source":101,"evidence":109},"Impressive project from a commenter's perspective",[110],{"id":111,"by":112,"text":113},"48703647","saturn8601","Damn this is next level. Congratulations on your achievements! When Fable was around I thought i'd test it by taking an old piece of Windows software from the late…",[115,126,133],{"value":116,"source":101,"evidence":117},"Lesson wall of LLM-flavoured text and purple theme feel AI-generated",[118,122],{"id":119,"by":120,"text":121},"48703578","Retr0id","I'd love it if there was some way to contribute to ongoing game decompilation projects, with a similarly streamlined web interface - it's something I'd be willing to dedicate…",{"id":123,"by":124,"text":125},"48705816","HiPhish","Love the idea! Assembly has been on my forever-list to eventually learn. I have worked through the warmup exercises, but I doubt I'll have the time to continue much past that. A…",{"value":127,"source":101,"evidence":128},"Contributing to decomp.me was hard",[129],{"id":130,"by":131,"text":132},"48706283","StilesCrisis","This was interesting, but actually trying to contribute to decomp.me was still really hard! I found a lot of code that seemed perfect except for instructions slightly out of…",{"value":134,"source":101,"evidence":135},"Legal risk from Nintendo",[136],{"id":137,"by":138,"text":139},"48706541","__alexander","Hi OP, I would be careful if you profit from this project in anyway. Nintendo is not a company that takes reverse engineering of their hardware or games lightly. You will…",[141,145,156,163],{"value":142,"source":101,"evidence":143},"Lesson on setting up a decomp project from scratch",[144],{"id":130,"by":131,"text":132},{"value":146,"source":101,"evidence":147},"Support for ARM or x86\u002F64 instruction sets",[148,152],{"id":149,"by":150,"text":151},"48705326","supaflybanzai","Is there something similar to learn ARM decompiling?",{"id":153,"by":154,"text":155},"48706501","bpavuk","I'd enjoy having something like this but for x86\u002F64 :)",{"value":157,"source":101,"evidence":158},"Light theme",[159],{"id":160,"by":161,"text":162},"48706168","eunos","Feasible to have light theme?",{"value":164,"source":101,"evidence":165},"Assembly instruction reference and syntax primer",[166],{"id":123,"by":124,"text":125},[168,175],{"value":169,"source":101,"evidence":170},"Does matching require the exact compiler version?",[171],{"id":172,"by":173,"text":174},"48705654","dataflow","> If even 1 instruction or bit is off, that's a fail. Does this assume having access to the exact version of the compiler use, or can it be done with a different compiler in…",{"value":176,"source":101,"evidence":177},"Why does exact instruction matching matter?",[178],{"id":179,"by":180,"text":181},"48706667","not_a9","Interesting exercise. Why does 1\u002F1 matching to original asm matter, though? Maintaining same timing as original game?",[183,187],{"value":184,"source":101,"evidence":185},"decomp.me",[186],{"id":92,"by":11,"text":93},{"value":188,"source":101,"evidence":189},"Splat and SPIM",[190],{"id":191,"by":192,"text":193},"48704010","jonhohle","Most decomp projects (that I know of) are Ship of Theseus style projects where the minimum unit is a function, give or take alignment requirements and quirks of the compiler. I’m…",{"comments":195,"answered":41,"key":196},15,[197,198,201],{"id":92,"text":93},{"id":199,"text":200},"48703652","I was thinking of something similar as well, perhaps a section of this site after you've completed the course where we show functions from popular decomp projects that aren't…",{"id":202,"text":203},"48707720","There will deffo be a lesson on how to setup a decomp project from scratch! This is far from finished, there's opportunity to add so much more. I'd argue that I'd rather teach…",{"commenters":205,"max_depth":18,"maker_replies":195,"first_comment_mins":41,"lifespan_hours":206},43,45,[208,210,214,216,218,220,222,225,228,229,232,235,239,242,244,247,249,251,252,254,257,259,262,264,266,268,270,273,275,279,281,283,286,288,291,293,297,300,303,305,307,310,314,317,320,322,325,327,330,331,334,339,341,344,348,350,353,357,360,363,366,369,371,375,377,379,380,382,386,389,391,394,396,398,400,404,406,409],[119,30,41,209,120,30],"project\u002Fmixed\u002Fdocs",[211,30,30,212,213,30],"48703617","other\u002Fneutral\u002Fnone","someone2639",[92,30,30,215,11,38],"project\u002Fpositive\u002Fexecution",[199,30,30,217,11,38],"project\u002Fneutral\u002Fidea",[130,38,41,219,131,30],"project\u002Fneutral\u002Fdocs",[202,38,30,221,11,38],"maker\u002Fneutral\u002Fdocs",[223,38,38,224,131,30],"48709476","project\u002Fcritical\u002Fdocs",[226,33,30,212,227,30],"48703964","OsrsNeedsf2P",[191,33,30,212,192,30],[230,33,30,212,231,30],"48705530","low_tech_love",[233,33,30,212,234,30],"48708033","jevndev",[236,33,30,237,238,30],"48704495","commenter\u002Fneutral\u002Fnone","charcircuit",[240,33,30,212,241,30],"48705093","paavohtl",[243,33,30,212,180,30],"48706517",[245,33,30,212,246,30],"48724388","skotobaza",[248,33,30,212,120,30],"48707785",[250,33,30,212,246,30],"48724486",[111,41,30,212,112,30],[253,41,30,212,11,38],"48703684",[255,41,30,212,256,30],"48704054","ducktective",[258,41,30,212,192,30],"48704061",[260,41,30,212,261,30],"48704455","asiekierka",[263,41,30,237,192,30],"48704615",[265,41,30,237,241,30],"48705285",[267,41,30,237,192,30],"48709509",[269,41,30,237,238,30],"48704801",[271,41,30,237,272,30],"48723617","skelpmargyar",[274,41,30,237,238,30],"48726129",[276,41,41,277,278,30],"48704932","project\u002Fneutral\u002Fexecution","koala_man",[280,41,41,277,131,30],"48706251",[282,41,30,212,256,30],"48704043",[284,41,30,212,285,30],"48704073","hsuduebc2",[287,41,30,212,272,30],"48723834",[104,289,34,290,105,30],4,"project\u002Fpositive\u002Fdesign",[123,34,41,292,124,30],"project\u002Fmixed\u002Fdesign",[294,34,30,295,296,30],"48705951","commenter\u002Fneutral\u002Fdesign","allan_s",[298,34,34,290,299,30],"48706594","Klonoar",[301,34,30,302,11,38],"48709460","maker\u002Fneutral\u002Fdesign",[304,34,34,290,124,30],"48711356",[306,34,30,295,11,38],"48718140",[308,34,34,309,124,30],"48711391","project\u002Fpositive\u002Fdocs",[311,312,30,212,313,30],"48704257",6,"sciencejerk",[315,312,30,212,316,30],"48704334","xahrepap",[318,312,30,212,319,30],"48707450","Randomno",[321,312,30,212,11,38],"48704335",[323,312,30,212,324,30],"48704358","teaearlgraycold",[326,312,30,212,11,38],"48704419",[328,312,34,329,313,30],"48720103","maker\u002Fpositive\u002Fnone",[70,18,30,277,11,38],[332,18,41,277,333,30],"48703851","rybosome",[335,336,38,337,338,30],"48703776",8,"project\u002Fcritical\u002Fexecution","nosioptar",[340,336,30,277,11,38],"48703784",[342,336,38,343,338,30],"48706353","project\u002Fcritical\u002Fdesign",[345,346,30,212,347,30],"48706562",9,"rowanG077",[172,349,41,277,173,30],10,[351,349,41,277,352,30],"48706566","dezgeg",[354,355,30,212,356,30],"48704922",11,"oneshtein",[358,355,30,212,359,30],"48705057","LelouBil",[361,355,30,212,362,30],"48705065","tudelo",[364,355,30,237,365,30],"48705639","realusername",[367,355,30,212,368,30],"48705740","RossBencina",[370,355,30,212,365,30],"48705828",[372,373,41,217,374,30],"48704466",12,"bottlepalm",[376,373,41,217,238,30],"48704480",[378,373,41,217,352,30],"48706590",[149,32,41,217,150,30],[381,32,30,221,11,38],"48705480",[383,384,38,337,385,30],"48704492",14,"soxfox42",[387,384,30,388,11,38],"48704521","maker\u002Fneutral\u002Fexecution",[137,195,38,390,138,30],"project\u002Fcritical\u002Fidea",[392,195,30,393,11,38],"48707644","maker\u002Fneutral\u002Fpricing",[153,395,41,217,154,30],16,[397,395,30,217,11,38],"48707660",[179,399,41,217,180,30],17,[401,399,34,402,403,30],"48706673","project\u002Fpositive\u002Fidea","Philpax",[405,399,34,402,131,30],"48706759",[160,407,41,408,161,30],18,"project\u002Fneutral\u002Fdesign",[410,407,30,302,11,38],"48707636",[],[413,418,423,428,433,438],{"id":414,"name":415,"points":416,"category":417},"48673671","Hacker News Trends",822,"data",{"id":419,"name":420,"points":421,"category":422},"48708182","Zanagrams",400,"games",{"id":424,"name":425,"points":426,"category":427},"48752905","worker-owned",398,"web_saas",{"id":429,"name":430,"points":431,"category":432},"48675435","OpenKnowledge",381,"productivity",{"id":434,"name":435,"points":436,"category":437},"48688700","Weave Router",216,"dev_tools",{"id":439,"name":440,"points":441,"category":442},"48667807","Cross Canon",166,"languages",false,"v2",{"id":446,"name":5,"line":6,"ai":443,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":447,"maker":11,"domain":10,"tier":19,"attempts":30,"strip":448,"url":9,"mix":449,"praise":100,"objection":116,"sub":21},48703412,[24,25,26,27,28],"3031000000000033055505005311300033113353",[18,32,33,34],1793991158047]