I'm glad to see a working proof of concept of Flash emulation in the browser. What's sad is Google and Mozilla could have easily implemented such a thing themselves to make a painless transition away from the plugin years ago. Maybe there was some legal issue but I bet they simply found it more convenient to wipe their hands of it.
Google had Swiffy, an online service that took your SWF and repackaged it in a non-Flash form. It was primarily intended for advertisers but it eventually had AVM1 and 2 support. It's discontinued because advertisers moved away from Flash faster than expected (and Adobe Animate got some amount of HTML5 export capability). I'm also not sure how well it handled some of Flash's trickier to emulate behaviors.
Mozilla had Shumway, a browser extension that runs SWF files in JavaScript. According to another comment in this particular thread, Shumway was discontinued when Mozilla started bumping up against large compatibility problems. I can hazard a guess as to why: AVM1 in particular is a garbage fire of poorly-specified behaviors and execution order. Macromedia provided no runtime error behavior and had extreme deference to backwards compatibility. Movies are versioned and things like whether or not variables are case-sensitive change based on what SWF version it was compiled for. Furthermore, this VM was originally not intended to run an ECMAScript-like language, you originally put together AVM1 opcodes by hand, so a lot of opcodes are far more tolerant of programmer error than they have any right to be.
As an example of this, ActionGetVariable and ActionSetVariable (the thing that handles statements like "child_clip.var") aren't just limited to taking an object and a property name string, because that's not how they were originally intended to be used. Originally, those actions would take a whole path to the variable, and it was in slash-path syntax, e.g. "\child_clip:var". You could also chain paths in one op, and the implementation would dutifully parse the path out and traverse it to get the variable. This means that there are movies that will issue opcodes like "ActionGetVariable this '\level.Alien\bullet:speed'" and we have to support any combination of slashes, colons, and dots or SWFs will break.
AVM1 is a bottomless pit of those kinds of odd exceptions, and you have to support them all in order to get good compatibility with games. This is the sort of thing that only makes sense for an entity like Ruffle funded entirely by people who want to make old games work. It does not make financial or any other kind of sense to sink many hours of development time into an old-and-busted proprietary animation platform other than on the basis of preservation.