24 comments

  • wis4 hours ago
    Cool! I like the speeding up feature. I suggest making the UI indicate that you can press the keys `z` and `x` on the keyboard to trigger the A and B buttons respectively, I figured that out by pressing on my keyboard the A and B keys and then all the letter keys.<p>Btw, it seems there&#x27;s a crash when you choose &quot;Pokemon&quot; in the &quot;Fight&#x2F;Bag&#x2F;Pokemon&#x2F;Run&quot; menu:<p><a href="https:&#x2F;&#x2F;i.ibb.co&#x2F;tpVV8q83&#x2F;poke-fight-menu.png" rel="nofollow">https:&#x2F;&#x2F;i.ibb.co&#x2F;tpVV8q83&#x2F;poke-fight-menu.png</a>
    • tripplyons4 hours ago
      Thanks for the info! I will collect all these reports today and get these issues fixed in the next few days when I can.
    • sergiotapia4 hours ago
      Z and X are old school emulator keys. I knew right away to use them from the visual boy advance &#x2F; zsnes days. :D
  • hawkice9 hours ago
    Confirming that saving genuinely works. Interesting stuff. Wonder if we can get trades working too.
    • tripplyons8 hours ago
      Yeah, I made sure saving worked correctly
    • ceroxylon7 hours ago
      First thing I checked as well! I&#x27;ve been Poke-sniped, there goes a few hours.
  • astlouis443 hours ago
    Really exciting to see more games ported to WASM. For anyone interested, I just did a HN post detailing a port I spent the last 5 days on - Xonotic, an arena FPS. Includes a technical writeup too:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=48428133">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=48428133</a>
    • potsandpans2 hours ago
      This is super cool. Do you have any code up in a public repo that I could peek at? I&#x27;ve been working on and off on a static recompiler for playstation games, wasm was kind of my end goal.
  • theowaway2134563 hours ago
    Certain entities seem to be displayed as numbers for me, like &quot;You received a 6&quot; etc when getting my first potion. Anyone else seeing this bug?
    • tripplyons3 hours ago
      I have not encountered this, but I will note it down as something to look into. Which potion was it?
  • wild_pointer6 hours ago
    There should be 2 options for speed, regular and sped up. Then there should be a key to speed the game up. When I was a kid, it was the space key for GBA. You could have the normal game and skip the boring parts fast.
  • weird-eye-issue9 hours ago
    I did a Pokémon Crystal playthrough several months ago, still great games!<p>I used an emulator on my laptop with increased speed so it made everything like walking and combat way faster which was really nice and I probably would have given up if it wasn&#x27;t for that
    • t0bia_s2 hours ago
      Currently playing Pokémon Unbound, that is probably best ROM hack ever made. I grow up on 1st and 2nd GB and GBC games so Unbound feels a little bit bloated to me with 8 generations of monsters but man... This project is completely new experience, especially playing on retro hand-held like Trimui Brick Hammer.<p>Then I start to explore another Pokémon hacks and find out that those project has big fan community that are very enthusiastic about bringing new features to classical Pokémon formula. Documents&#x2F;wiki on web are more detailed than original games has!<p>For example R.O.W.E mix all kind of modes that you can select, connect Johto and Kanto maps togather, gives you options to limit avalible generations of Pokémon&#x27;s, so as veteran you can feel more like home.<p>Another hacks that I need to explore more - Pokémon Gaia and Pokémon Odyssey.
    • nosioptar4 hours ago
      I use the cheat engine in zsnes to get rid of the grinding in final fantasy games.<p>I find it improves the game when I don&#x27;t have to spend a bunch of time leveling up or earning gold for equipment.
  • Luc9 hours ago
    <a href="https:&#x2F;&#x2F;github.com&#x2F;tripplyons&#x2F;pokeemerald-wasm&#x2F;" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tripplyons&#x2F;pokeemerald-wasm&#x2F;</a>
    • fc417fc8029 hours ago
      How long until this is DMCA&#x27;d? How has the project it&#x27;s based on stuck around for so long? Do I perhaps misunderstand what this is? <a href="https:&#x2F;&#x2F;github.com&#x2F;pret&#x2F;pokeemerald" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;pret&#x2F;pokeemerald</a>
      • orlp5 hours ago
        Copyright being as long as it is is a theft of our culture. I (and many of our generation) grew up with Pokemon, it&#x27;s a common experience for many of us. A classic of our culture. Except we&#x27;re not allowed to use it, remix it, build our own versions, etc. We still do, of course, but it&#x27;s all illegal.<p>It didn&#x27;t used to be this way.<p>I think 20-30 years of copyright should be plenty to extract whatever profits you deserve from the fruits of your labor. Anything beyond that is just holding culture hostage for the benefit of a few. It doesn&#x27;t serve society in any meaningful way.
      • bottlepalm30 minutes ago
        I get nervous releasing just symbols for a game and here is a full disassembly. I have no idea how tolerant the rights holders are to this kind of stuff. I guess you just roll the dice, but the power is in their hands how far they take action.
      • mathgeek8 hours ago
        It&#x27;s a port of a disassembly that requires you to provide your own ROM. The legality of such things is a tangled web that anyone producing them needs to navigate very, very carefully.
        • yw34108 hours ago
          Interesting; but the GitHub project linked seems to have the original animations from the ROM.
          • mathgeek8 hours ago
            It&#x27;s mostly argued around or against the application of fair use. I suggest consulting a lawyer if you&#x27;re truly interested, as it quickly gets into legalese around what constitutes ownership, distribution, etc. Throw in a lack of extensive case law and you quickly get into opinions rather than legal bases.
          • derefr5 hours ago
            I get the sense that these disassembly&#x2F;decompilation projects believe that <i>some</i> types of IP-laden asset data <i>can</i> be shipped embedded into the project — not necessarily &quot;legally&quot;, but in that they&#x27;ll likely get away with doing so indefinitely — as long as:<p>1. those assets are stored in proprietary formats that only the game code itself understands, and<p>2. no tool exists in the project to extract the assets from these proprietary formats into open formats, unless that tool itself exists only in source-code form in the codebase, <i>and</i> requires the ROM as an input to compile it (even if in the case of such a tool, the ROM is doing nothing but serving as a &quot;key&quot; to unlock compilation.)<p>Basically, if you have to prove <i>you</i> have your own copy of the IP in order to make <i>their</i> embedded copy of the IP &quot;legible&quot;, then it&#x27;s very hard to construct an evidence-based DMCA takedown order that actually makes any coherent point about the project &quot;distributing&quot; said IP.<p>That being said, shipping assets like this at all, even if you &quot;can get away with it&quot;, is ultimately just a kind of laziness &#x2F; shortcut-taking. They do it because there&#x27;s either no clear&#x2F;simple&#x2F;obvious way to automatically extract the given asset data from the ROM (e.g. because the relevant data is split up into various data planes + metadata bits that are stored &quot;exploded&quot; all over the ROM), so they just did it once by hand, committing the results; or because there&#x27;s no clear&#x2F;simple&#x2F;obvious way to store the extracted asset data such that a regular compiler&#x2F;assembler natively understands how to embed it into the binary in the particular form it was found in the original ROM. (Remember, re-assembling&#x2F;compiling to the original ROM is always the test these projects use to ensure their disassembly&#x2F;decompilation is preserving semantics. So they need to replicate <i>every</i> weird layout quirk the original dev tooling imposed upon the original ROM. And sometimes the original dev tooling included special-purpose domain-specific asset-codegen tools that aren&#x27;t part of regular compiler toolchains.)<p>What these projects should <i>actually</i> be doing, is taking on the schlep: writing the extract tooling anyway, even if it&#x27;s just &quot;copy these bytes from here and these bytes from there, and spit them out as hex in an .asm file with this header&quot;; and&#x2F;or writing matching asset-codegen tooling to the tooling that likely existed in the platform SDK, to run before compile&#x2F;assemble time, converting the extracted ROM asset files into a form (probably a bunch of little assembly files) that will land in the right places when linked back together to form the original ROM.<p>And, to be clear, they mostly <i>do</i> do this! These projects are very good at doing this!<p>But sometimes — especially on a larger project with many contributors — one or two things like this aren&#x27;t audited properly, and fall through the cracks. Or they start out as temporary &quot;bootstrap&quot; approaches made during a private phase of development to get things working + compiling to a correct image; and then not all of those get cleaned up before the repo gets made public.
            • yw34104 hours ago
              Perhaps I&#x27;m mistaken but the project doesn&#x27;t need a copy of the original ROM at all right?<p>To be clear; I don&#x27;t really understand the law around this - my own country is based on case law which means that even if I wanted to open source some of my reverse engineered games (I have a few private partial implementations of some old defunct game engines in-progress), the distinct lack of prior cases means, sadly, it&#x27;s prudent not to release them at all while the companies are still active.
        • Lplololopo6 hours ago
          How is this a port which requires you to provide my own ROM?
          • giancarlostoro5 hours ago
            Its not requiring you to provide your own ROM so this demo very sell could get DMCAd but Nintendo layers are surprisingly asleep.
      • oompydoompy747 hours ago
        I’m of the opinion that projects like this should start hosting Forgejo instances in countries with favorable laws and just mirroring to Github for exposure.
        • elmt356 hours ago
          or something decentralised, like radicle (<a href="https:&#x2F;&#x2F;radicle.dev" rel="nofollow">https:&#x2F;&#x2F;radicle.dev</a>)
  • cadamsdotcom1 hour ago
    So you’re saying I have 1900 Game Boys in my pocket everywhere I go AND don’t have to buy batteries?<p>AND - I didn’t have to blow air on the cartridge connector for it to work?<p>Is this the future?
  • vesche4 hours ago
    This is awesome! It would be neato if you could export and reload your save file, I clear my browser data a lot.
    • tripplyons3 hours ago
      Yes, this has been a highly requested feature! This will be the next feature for me to add after addressing the bug reports.
  • gobdovan9 hours ago
    Any way to get sound?
    • tripplyons8 hours ago
      I have not added that yet, but it would probably be quite easy to throw a few prompts to Codex to do so.
  • arthurcolle3 hours ago
    This is amazing. Are the left right up down controls a bit wonky? If I cycle through the letters in the name select menu it seem to buggily not actually go through it?
  • firefax7 hours ago
    Why Emerald -- is classic already done?<p>If anyone has emulator suggestions, I recently attempted a playthrough and found that midway through my copy of red, the game was corrupted? Oddest thing -- hadn&#x27;t reading the point where you do the &quot;Missingno trick&quot; near cinnebar.<p>Anyways, I suspect the save got corrupted somehow but it made me swear off emulation and try a physical copy. (Which had the battery I replaced fail... it&#x27;s been a comedy of errors).
    • jeremyloy_wt6 hours ago
      Emerald is well regarded as the best of Generation 3, which is the final of the traditional 2D games and can trade with Fire Red&#x2F;Leaf Green (remakes of the classic)<p>So you have available all of the original Pokémon
    • tripplyons6 hours ago
      I chose Pokemon Emerald because it is my favorite of the games that have been disassembled!
    • giancarlostoro5 hours ago
      Maybe the internal battery died. I honestly recommend you look at GBC style handhelds or if you like the GBA style, Anbernic made one that looks insanely close to a GBA.<p>There also a craze of DS style emulators popping up. They all give you comfort knowing that your saves will be fine forever if you back them up, even if the device dies.
    • patrickcorrigan7 hours ago
      Try <a href="https:&#x2F;&#x2F;afterplay.io" rel="nofollow">https:&#x2F;&#x2F;afterplay.io</a> it’s cross platform, saves every 20 seconds and keeps your last 50 saves which you can recover from if anything goes wrong
  • ianm2185 hours ago
    What are considered the best games in WASM? I recently got into playing around with WASM - it would&#x27;ve been great if this technology was prevalent during the Flash games era
    • prinny_4 hours ago
      WASM is not for games specifically, it&#x27;s for anything that needs native performance but also needs to run on the web.
  • oceansky9 hours ago
    Next step: 100% browser javascript pokémon emerald.
  • dmitrygr9 hours ago
    Ok. So what’s interesting here, presumably, is that this isn’t a wasm GBA emulator (which also exist and work). This is the game itself compiled to wasm. Even though no official source code was ever published, there was a community based decompilation.
    • tripplyons8 hours ago
      Yes, it a recompilation of a community decompilation!
    • rootsudo3 hours ago
      I think the official source code was leaked, several times.
  • eigenspace10 hours ago
    Very cool. Too bad this doesnt seem to work as a PWA, or am I jusr missing the button on Android Firefox?
    • ameliaquining8 hours ago
      You could send a PR. It&#x27;s reasonably straightforward to add a manifest to make the app installable (<a href="https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;Progressive_web_apps&#x2F;Manifest" rel="nofollow">https:&#x2F;&#x2F;developer.mozilla.org&#x2F;en-US&#x2F;docs&#x2F;Web&#x2F;Progressive_web...</a>), and to use Workbox to make it work offline since it&#x27;s fully static (<a href="https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;workbox" rel="nofollow">https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;workbox</a>).<p>The one caveat is that a PWA needs an icon but the project doesn&#x27;t currently have one, so you&#x27;d have to design, find, or LLM-generate one.
    • parasti9 hours ago
      You have to use &quot;Add to home&quot; menu item on Firefox for Android. But this web app doesn&#x27;t seem to be a PWA.
  • Navaie5 hours ago
    Crashed when using a potion vs May :(
    • tripplyons4 hours ago
      Thanks for the info, I will look into this! I got past that battle and further into the game in my testing, but I don&#x27;t think I&#x27;ve tried using an item in battle yet.
  • danielrmay8 hours ago
    Super neat. I&#x27;d love to see what it would be like to play with more modern &amp;intuitive touch controls instead of just the D-pad and A&#x2F;B.
  • simianwords1 hour ago
    Question to WASM and low level nerds: is this the sort of things LLMs are good at? Since the end verification is stable and conclusive and you can just &quot;goal&quot; this project into existence until this somewhat objective verification is met.
  • Innittech7 hours ago
    29 FPS for me, what hardware are you using to get a hundred thousand FPS?
    • _vertigo7 hours ago
      iPhone 13. Did you change the slider at the bottom?
      • Innittech6 hours ago
        Yeah, just found that. Now I&#x27;m getting 3000+FPS on my ancient Thinkpad T520.
  • deadbabe6 hours ago
    What kind of mods and new features could be added?
  • zuzululu6 hours ago
    <i>Nintendo lawyers intensifi</i>
  • itsthecourier9 hours ago
    some weeks ago I made a Gameboy emulator from zero in rust and then exported it to wasm<p><a href="https:&#x2F;&#x2F;holy-lake-f6df.sdreyesg.workers.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;holy-lake-f6df.sdreyesg.workers.dev&#x2F;</a><p>took me 3 hours with Opus. Opus knew the whole ISA, clock, bus quirks, etc. from their training without any external docs
    • mathgeek8 hours ago
      Likely because all of the external docs were already in its training set.
    • BearOso4 hours ago
      Alternatively, you could have downloaded an existing one. What you did is just a roundabout way of acquiring one of the many WASM Rust GB emulators in the training set. Except it probably now has several problems from reconstruction. You didn&#x27;t learn anything new from the process. It&#x27;s just wasteful in several ways.
      • itsthecourier2 hours ago
        bro, I learned a lot, I did it step by step and discussed everything with Claude, then used the knowledge to build an emulator at work for a rtos machine (WIP)
    • tripplyons8 hours ago
      Yes, this project was made in around 15 hours of Codex.