[{"data":1,"prerenderedAt":451},["ShallowReactive",2],{"project-35055308":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":45,"what":46,"said":80,"maker_in_thread":161,"shape":173,"grid":178,"attempts":411,"same_week":412,"maker_shows":44,"maker_hidden":443,"reader_version":444,"card":445},"35055308","NESFab","Programming language for making NES games","title","Show HN: NESFab – Programming language for making NES games","https:\u002F\u002Fpubby.games\u002Fnesfab.html","pubby.games","pubby",1678197166,2023,298,90,147,3109,5,"legend","languages","programming language","other",[24,25,26,27],"nes game development","6502 compiler","retro game programming","nes programming language","curious",0.195,{"positive":31,"neutral":32,"mixed":33,"critical":34},11,20,0,4,35,{"design":37,"idea":39,"performance":41,"docs":42},{"positive":38,"critical":33},2,{"positive":40,"critical":40},3,{"positive":33,"critical":33},{"positive":33,"critical":33},[40,33,18,40,18,40,33,40,33,33,33,40,18,18,18,40,44,18,40,18,44,40,33,18,44,44,33,40,18,40,18,18,40,33,33,33,33,33,33,33],1,null,{"problem":47,"audience":54,"pricing":45,"motivation":66,"time_to_build":45,"stack":72,"openness":77,"stage":78,"team_size":79},{"value":48,"source":49,"evidence":50},"6502 assembly is hard at scale: multi-byte arithmetic, bank switching and local variables are tedious.","maker",[51],{"id":52,"by":11,"text":53},"35057902","I like 6502 assembly a whole lot, but there's definitely limitations to it at scale. Multi-byte arithmetic is a chore, bank switching is a pointless time sink, and managing local…",{"value":55,"source":56,"evidence":57},"NES game developers","inferred",[58,62],{"id":59,"by":60,"text":61},"35061585","lastdong","Congrats on the release! Website and code look super clean, and looks like super useful for anyone getting into NES game development. - What languages did you use as inspiration?…",{"id":63,"by":64,"text":65},"35101711","apple4ever","This is awesome! I'm currently learning programming NES in assembler with FamicomParty[0], and this look like a great next step!! 0. https:\u002F\u002Ffamicom.party",{"value":67,"source":49,"evidence":68},"Long-running personal project; began as a scripting language, then became a C++ replacement, then an NES language.",[69],{"id":70,"by":11,"text":71},"35056980","This is a long-running personal project I've had to write an optimizing compiler from scratch. Everything was done by me, including the lexer\u002Fparser, SSA-based IR,…",[73],{"value":74,"source":49,"evidence":75},"Compiler written from scratch by the maker, with SSA-based IR and lexer\u002Fparser",[76],{"id":70,"by":11,"text":71},"unknown","launched","solo",{"praise":81,"objections":103,"requests":122,"questions":130,"alternatives":147},[82,95],{"value":83,"source":84,"evidence":85},"Clean docs and code; useful for NES newcomers","commenter",[86,87,91],{"id":59,"by":60,"text":61},{"id":88,"by":89,"text":90},"35069397","russellsprouts","Just read through the documentation. There are so many great ideas for generating efficient code. `goto mode` in particular is an awesome idea. Generalizing the program to have…",{"id":92,"by":93,"text":94},"35062278","nunobrito","It is looking fantastic. Great work!",{"value":96,"source":84,"evidence":97},"Smart bank handling and compiler optimizations",[98,102],{"id":99,"by":100,"text":101},"35061118","jonny_eh","> Handling banks is normally a tedious affair for programmers, but NESFab handles it for you. The compiler smartly allocates code and data into banks, with the gritty details…",{"id":88,"by":89,"text":90},[104,111],{"value":105,"source":84,"evidence":106},"Windows Defender flagged the binary as a trojan",[107],{"id":108,"by":109,"text":110},"35060766","hunta2097","I got a Windows Defender alert when downloading the Windows binary: Detected: Trojan:Script\u002FWacatac.H!ml Status: Removed Details: This program is dangerous and executes commands…",{"value":112,"source":84,"evidence":113},"Hard-coded register addresses and space indentation questioned",[114,118],{"id":115,"by":116,"text":117},"35057491","Taikonerd","This is a really interesting approach. One thing that surprised me from the code snippet: ``` fn play_sound() {$4015}(%100) {$4008}($FF) ``` Are these hard-coded memory addresses…",{"id":119,"by":120,"text":121},"35057221","benj111","Why spaces and not tabs for indents? I know this conversation has probably been had many times before. But if I prefer a 2 space tab, and you prefer a 4 space tab, we both get…",[123],{"value":124,"source":84,"evidence":125},"Syntax highlighting for editors like VSCode",[126],{"id":127,"by":128,"text":129},"35060484","foldor","Really cool stuff! Is there an syntax highlighter available on any IDE's like VSCode available? I'm having a hard time following the documentation without it as it's hard for me…",[131,139],{"value":132,"source":84,"evidence":133},"Can the game run on a physical cartridge?",[134,135],{"id":59,"by":60,"text":61},{"id":136,"by":137,"text":138},"35063274","stehtisch123","Awesome! Is it hard\u002Fpossible to put the finished game on a cartridge or do you play it with an emulator?",{"value":140,"source":84,"evidence":141},"Why spaces instead of tabs, and why disallow tabs?",[142,143],{"id":119,"by":120,"text":121},{"id":144,"by":145,"text":146},"35063024","Timwi","Out of curiosity, why did you disallow tabs for indentation, and \u002F...\u002F-style comments in the middle of a line?",[148,155],{"value":149,"source":84,"evidence":150},"ca65 assembler",[151],{"id":152,"by":153,"text":154},"35057543","nubinetwork","Its nice that people are still writing code for the NES, but I have to ask what makes this better than using ca65... assembly isn't hard to learn.",{"value":156,"source":49,"evidence":157},"LLVM-MOS",[158],{"id":159,"by":11,"text":160},"35057170","That was the original plan, but I veered off to focus on doing one system really well. I figured if some company wanted to sponsor a port, I could do it, but otherwise I'd direct…",{"comments":31,"answered":162,"key":163},9,[164,167,170],{"id":165,"text":166},"35059014","Motivation was sporadic. I'd have a few weeks of intense focus, followed by months of inactivity. The nice thing about compilers it that 90% of their code is interesting, so…",{"id":168,"text":169},"35060345","Yeah, external bugs suck, but usually there's workarounds. > Is this because you draw attention to an unfinished project, get distracted by feature requests or praise, or…",{"id":171,"text":172},"35060465","I think it helps that I'm not working as a software developer right now, so I have more energy for coding projects. (I'd like to write software professionally, but no company…",{"commenters":174,"max_depth":175,"maker_replies":31,"first_comment_mins":176,"lifespan_hours":177},53,12,137,191,[179,183,187,190,191,194,195,198,201,202,204,207,210,213,216,218,220,222,225,227,229,232,235,238,241,244,248,251,253,257,259,261,264,265,267,270,274,276,279,282,283,285,288,291,295,297,298,301,303,307,310,312,314,316,319,323,327,329,331,333,335,338,340,342,346,347,351,352,355,357,360,363,366,370,372,375,378,381,383,385,387,389,391,393,395,397,399,401,404,406,408],[180,33,40,181,182,33],"35058547","maker\u002Fneutral\u002Fnone","bmitc",[184,33,33,185,186,33],"35058590","other\u002Fneutral\u002Fnone","MysteryChessBox",[188,33,33,185,189,33],"35058926","cloogshicer",[165,33,33,181,11,44],[192,33,18,193,182,33],"35059267","maker\u002Fpositive\u002Fnone",[168,33,33,181,11,44],[196,33,33,185,197,33],"35061877","detrites",[199,33,40,181,200,33],"35059844","proper_elb",[171,33,33,181,11,44],[203,33,40,181,200,33],"35061031",[205,33,18,193,206,33],"35065783","iancmceachern",[208,33,40,181,209,33],"35073200","marketdev",[211,33,33,185,212,33],"35060977","and0",[214,33,33,185,215,33],"35064783","keyle",[217,33,33,185,182,33],"35073387",[115,44,40,219,116,33],"project\u002Fneutral\u002Fdesign",[221,44,33,185,153,33],"35057571",[223,44,40,219,224,33],"35057650","kristiandupont",[226,44,33,185,153,33],"35057699",[228,44,33,219,11,44],"35057752",[230,44,33,185,231,33],"35060670","postalrat",[233,44,33,185,234,33],"35061266","Drakim",[236,44,33,185,237,33],"35062840","noobermin",[239,44,33,185,240,33],"35057676","wk_end",[242,44,33,185,243,33],"35057908","karmakaze",[245,38,40,246,247,33],"35060756","project\u002Fneutral\u002Fidea","mungoman2",[249,38,33,185,250,33],"35062598","JohnBooty",[88,40,18,252,89,33],"project\u002Fpositive\u002Fdesign",[254,34,40,255,256,33],"35060537","project\u002Fneutral\u002Fperformance","leroy-is-here",[258,34,33,255,11,44],"35060805",[260,34,18,193,256,33],"35062363",[262,34,33,185,263,33],"35063100","mysterymath",[59,18,18,252,60,33],[144,266,40,219,145,33],6,[127,268,40,269,128,33],7,"project\u002Fneutral\u002Fdocs",[271,272,40,246,273,33],"35067345",8,"terrycody",[108,162,44,275,109,33],"project\u002Fcritical\u002Fnone",[277,162,33,185,278,33],"35060875","easrng",[63,280,18,281,64,33],10,"project\u002Fpositive\u002Fidea",[99,31,40,255,100,33],[284,31,33,255,11,44],"35062268",[286,31,33,185,287,33],"35064166","eru",[289,175,40,269,290,33],"35059118","a_e_k",[292,293,18,281,294,33],"35059835",13,"warpspin",[152,296,40,246,153,33],14,[52,296,33,246,11,44],[299,296,44,300,243,33],"35057980","project\u002Fcritical\u002Fidea",[302,296,33,185,237,33],"35062899",[304,305,40,246,306,33],"35059025",15,"AdmiralAsshat",[308,305,33,309,11,44],"35059184","project\u002Fneutral\u002Fnone",[311,305,33,185,237,33],"35062877",[313,305,33,185,287,33],"35064171",[136,315,40,309,137,33],16,[92,317,18,318,93,33],17,"project\u002Fpositive\u002Fnone",[320,321,44,300,322,33],"35059404",18,"dom96",[324,321,33,325,326,33],"35059453","commenter\u002Fneutral\u002Fnone","detaro",[328,321,44,300,322,33],"35063550",[330,321,33,325,326,33],"35066993",[332,321,33,325,322,33],"35067489",[334,321,33,325,326,33],"35067970",[336,321,33,325,337,33],"35167465","wtetzner",[339,321,40,246,287,33],"35064194",[341,321,33,325,322,33],"35067494",[343,344,18,318,345,33],"35057656",19,"algem",[70,32,33,181,11,44],[348,32,40,349,350,33],"35057006","maker\u002Fneutral\u002Fidea","tibbon",[159,32,33,349,11,44],[353,32,33,325,354,33],"35061365","TedDoesntTalk",[356,32,33,325,197,33],"35061619",[358,32,18,281,359,33],"35061787","agiacalone",[361,32,40,246,362,33],"35059388","cpeterso",[364,32,18,193,365,33],"35059965","agentultra",[367,32,40,368,369,33],"35061242","maker\u002Fneutral\u002Fdocs","pkaye",[119,371,33,185,120,33],21,[373,371,33,185,374,33],"35057296","resizeitplz",[376,371,33,185,377,33],"35057310","incrudible",[379,371,33,185,380,33],"35057655","stcroixx",[382,371,33,185,231,33],"35060686",[384,371,33,185,377,33],"35062367",[386,371,33,185,287,33],"35064208",[388,371,33,185,377,33],"35064510",[390,371,33,185,287,33],"35066992",[392,371,33,185,377,33],"35081518",[394,371,33,185,287,33],"35104626",[396,371,33,185,377,33],"35111475",[398,371,33,185,287,33],"35116445",[400,371,33,185,377,33],"35128741",[402,371,33,325,403,33],"35057462","MoSattler",[405,371,33,325,120,33],"35066674",[407,371,33,185,11,44],"35057475",[409,371,33,185,410,33],"35062019","mwcremer",[],[413,418,423,428,433,438],{"id":414,"name":415,"points":416,"category":417},"35073603","Braggoscope",688,"learning_science",{"id":419,"name":420,"points":421,"category":422},"35032506","Lander",564,"games",{"id":424,"name":425,"points":426,"category":427},"35026902","Llama-dl",343,"ai",{"id":429,"name":430,"points":431,"category":432},"35042316","UJRPC",290,"infrastructure",{"id":434,"name":435,"points":436,"category":437},"34999774","Mathesar",281,"data",{"id":439,"name":440,"points":441,"category":442},"35071755","CodeGPT.nvim",228,"dev_tools",false,"v2",{"id":446,"name":5,"line":6,"ai":443,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":447,"top":18,"kw":448,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":449,"url":9,"mix":450,"praise":83,"objection":105,"sub":21},35055308,0.2,[24,25,26,27],"3053530300035553153513051103535530000000",[31,32,33,34],1794036632201]