Helpful Resources - ruffle-rs/ruffle GitHub Wiki
Here are miscellaneous links to resources that will be helpful for Ruffle developers:
Documentation
- Adobe SWF File Format Specification: The official SWF spec. Also lists all AVM1 opcodes. This is referred to as SWF19 in Ruffle code documentation.
- AVM2 Overview: High level overview and AVM2 opcode list (initial release of AVM2, so does not include later features).
- ActionScript 2.0 Language Reference: Reference for all AVM1 (AS1/2) APIs.
- ActionScript 3.0 Language Reference: Reference for all AVM2 (ActionScript 3) APIs.
- AMF0 Specification: Adobe's official documentation of Action Message Format used in AVM1's
SharedObject
. - AMF3 Specification: Adobe's official documentation of Action Message Format used in AVM2's
flash.net.SharedObject
,ByteArray.readObject
andByteArray.writeObject
. - FLV Specification: Adobe's official documentation of the Flash Video file format.
- Cross-domain policy file specification: Adobe's official documentation of the
crossdomain.xml
standard. - JPEXS AVM2 Instruction List: List of AVM2 instructions (including undocumented).
- AVM2 Instructions: Another list of AVM2 instructions with descriptions.
wasm-bindgen
documentation: Docs and examples forwasm-bindgen
, the tool used for interop between Rust and WebAssembly.- Flash Player release notes: Official Adobe release notes for each Flash Player version
- Flash Player and Adobe AIR feature list: Lists new features introduced in Flash and AIR by SWF version
- Pixel Bender developer center
- AIR SDK setup: Instructions for adding AIR SDK to Adobe animate.
- Adobe Texture Format (ATF) spec: Spec for the ATF format used with Stage3D
- Using Adobe Flex 4.6
- Gnash Wiki: Information gathered by the GNU Gnash developers. Useful for understanding early SWFs; see in particular the Timeline Control page.
- Alexis' SWF Reference: An old but very detailed reference document, last updated in 2005.
Tools
- Ruffle Regressions: A website for quickly testing old versions of Ruffle. Useful for figuring out when a new bug was introduced, or when an old bug was fixed.
- JPEXS Free Flash Decompiler: The best Flash decompiler. Indispensable for investigating content and debugging emulator issues.
- Apache Flex: SDK for building Flash-based applications. Includes many utilities, notably an AS3 compiler. Open-sourced at GitHub.
- Flash Player Debug Downloads: Standalone Flash Player projectors for Windows, MacOS, and Linux.
- Flash Player Archive: A list of versions of Flash Player projectors, plugins, and SWCs.
- MTASC: ActionScript 2.0 compiler.
- buraks.com: A website with old utilities for SWF files.
- Flasm: An old AVM1 (dis)assembler.
- Flare: An old AVM1 decompiler.
- RABCDAsm: AVM2 (dis)assembler.
- OpenFL SWF: SWF parser written in Haxe.
- Haxe support for Pixel Bender bytecode: The Haxe project's code for parsing Adobe Pixel Bender bytecode.
- Pixel Bender Tools for ActionScript: An ActionScript library for reading/writing Adobe Pixel Bender bytecode. This is based off of the same Haxe code, and contains unit tests that assemble and run a shader: https://jamesward.com/2009/04/29/announcing-pbjas-an-actionscript-3-pixel-bender-shader-library/
- ATF-Encoder: An ActionScript library for encoding/decoding ATF textures
- dds2atf: Adobe tool for creating ATF files from DDS textures
- dpbj / apbj: PixelBender assembler/disassembler
Similar projects
- AVMplus, Adobe's open-sourced AVM2 virtual machine, MPL licensed. Sometimes known as Tamarin.
- Lightspark (started in 2008): Open-source, written in C++. Supports most of AS3, and has some support for AS1/2.
- GNU Gnash (started in 2005): Open-source, written in C++. Focused on AS1/2, but has basic AS3 support.
- Mozilla Shumway (started in 2012): Open-source, written in TypeScript.
- AwayFL: Open-source, written in TypeScript. Focuses on early AS3 content.
- swf2js (started in 2013): Written in JavaScript. Has a paid version that supports more features. The open-source Next2D animation library is based upon the paid version of swf2js.
- swfdec (open-source since 2002): Written in C. Supports only AS1/2.
- WAFlash: Closed-source. Supports both AS1/2 and AS3 well.
- OpenFL: An open-source implementation of most Flash APIs, written in Haxe.
SWF resources
- Newgrounds.com: Many historic SWF files.
- Flashpoint Archive: The largest archive of SWF content available.
Pages in this Wiki
- SWF Specification Errata: Errors in the official specs, so that I'm not constantly forgetting them
- Flash Player Oddities: Behavior we don't quite understand
- SWF version chart: Map of SWF versions to Flash Player versions