ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.77k stars 819 forks source link

Actionscript Tracking: Top Level #310

Open Dinnerbone opened 4 years ago

Dinnerbone commented 4 years ago

This is the tracking issue for Top Level in AVM1. We will check off each item of progress as appropriate, and fill in any relevant or missing information as we continue development of Ruffle.

Legend

Each checkbox is independent of another. It's entirely possible for something to be tested but not exist yet, or for us to believe that it's completely functional but we haven't made enough tests to prove it.

"Property Exists"

This means the item exists, but may not necessarily be fully implemented.

"Has Test Coverage"

This means that we believe that we have a good test coverage of this item, regardless of if those tests pass. It's okay to have tests available but not implement the item yet.

"Completely Functional"

This means we believe that the item is completely implemented, and no more work needs to be done towards making it functional.

Top Level

Properties

_focusRect : Boolean

Methods

ASSetPropFlags(object, properties, setFlags, clearFlags)

Herschel commented 4 years ago

Here is some content that requires setTimeout/setInterval along with updateAfterEvent for the preloader: https://www.newgrounds.com/portal/view/558833

Currently gets stuck on the preloader because those functions aren't implemented. (Ironically this is code from some official Newgrounds preloaders I programmed eons ago... !)

nagayev commented 3 years ago

@Dinnerbone Hello. Is this issue corresponds to the current state of affairs? We already have implemented parseFloat as I know.

Juanepaktho commented 3 years ago

This is the tracking issue for Top Level in AVM1. We will check off each item of progress as appropriate, and fill in any relevant or missing information as we continue development of Ruffle.

Legend

Each checkbox is independent of another. It's entirely possible for something to be tested but not exist yet, or for us to believe that it's completely functional but we haven't made enough tests to prove it.

"Property Exists"

This means the item exists, but may not necessarily be fully implemented.

"Has Test Coverage"

This means that we believe that we have a good test coverage of this item, regardless of if those tests pass. It's okay to have tests available but not implement the item yet.

"Completely Functional"

This means we believe that the item is completely implemented, and no more work needs to be done towards making it functional.

Top Level

Properties

_focusRect : Boolean

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

_global : Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

_highquality : Number

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

_quality : String

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

_root : MovieClip

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

_soundbuftime : Number

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

$version : Number

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Infinity : Number

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

NaN : Number

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Accessibility: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Array: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

AsBroadcaster: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

Boolean: Object

  • [X] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

Button: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Camera: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Color: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

ContextMenu: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

ContextMenuItem: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

CustomActions: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Date: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

Error: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

Function: Object

  • [X] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

FunctionArguments: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

Key: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

LoadVars: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

LocalConnection: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Math: Object

  • [X] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

Microphone: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Mouse: Object

  • [X] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

MovieClip: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

MovieClipLoader: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

NetConnection: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

NetStream: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Number: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Object: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

PrintJob: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Selection: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

SharedObject: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Sound: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Stage: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

String: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

System: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

TextField: Object

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

TextFormat: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

TextSnapshot: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Video: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

XML: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

XMLNode: Object

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

XMLSocket: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.display.BitmapData: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.external.ExternalInterface: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.filters.BevelFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.BitmapFilter: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.filters.BlurFilter: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.filters.ColorMatrixFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.ConvolutionFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.DisplacementMapFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.DropShadowFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.GlowFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.GradientBevelFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.filters.GradientGlowFilter: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.geom.ColorTransform: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.geom.Matrix: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

flash.geom.Point: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.geom.Rectangle: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

flash.geom.Transform: Object

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

flash.net.FileReference: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.net.FileReferenceList: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

flash.text.TextRenderer: Object

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

Methods

ASSetPropFlags(object, properties, setFlags, clearFlags)

  • [X] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

clearInterval(id)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

clearTimeout(id)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

duplicateMovieClip(target, newName, depth)

(this compiles to Action::CloneSprite)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

escape(value)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

getURL(url, window, method)

(this compiles to Action::GetURL or Action::GetURL2)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

gotoAndPlay(sceneOrFrame, frame)

(this compiles to Action::GotoFrame or Action::GotoFrame2)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

gotoAndStop()

(this compiles to Action::GotoFrame or Action::GotoFrame2)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

isFinite(value)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

isNaN(value)

  • [X] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

loadMovie(url, target, method)

(this compiles to Action::GetURL2)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

loadVariables(url, target, method)

(this compiles to Action::GetURL2)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

nextFrame()

(this compiles to Action::NextFrame)

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

parseFloat(value)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

parseInt(value, radix)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

play()

(this compiles to Action::Play)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

prevFrame()

(this compiles to Action::PreviousFrame)

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

removeMovieClip(target)

(this compiles to Action::RemoveSprite)

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

setInterval()

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

setTimeout(functionReference, delay, args)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [ ] Completely Functional

showRedrawRegions(enable)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

startDrag(target, lockCenter, left, top, right, bottom)

(this compiles to Action::StartDrag)

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

stop()

(this compiles to Action::Stop)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

stopDrag()

(this compiles to Action::EndDrag)

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

trace(value)

  • [x] Property Exists

  • [x] Has Test Coverage

  • [x] Completely Functional

unescape(value)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

unloadMovie(target)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

updateAfterEvent()

  • [x] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

MMExecute(expr)

  • [ ] Property Exists

  • [ ] Has Test Coverage

  • [ ] Completely Functional

ROBERT-MCDOWELL commented 3 years ago

is there a page where new developers can see the current status of this tracking and eventually get involved easily by clicking on a link going to each method/propery/function sources?

kumaravel-ruf commented 3 years ago

How to load xml file in Ruffle

Toad06 commented 2 years ago

There is also a print function/method (and compiling to Action::GetURL2) currently missing in the main post. See #6154 for an example.

danielhjacobs commented 2 years ago

There's also [printAsBitmap](https://open-flash.github.io/mirrors/as2-language-reference/global_functions.html#printAsBitmap()), [printAsBitmapNum](https://open-flash.github.io/mirrors/as2-language-reference/global_functions.html#printAsBitmapNum()), and [printNum](https://open-flash.github.io/mirrors/as2-language-reference/global_functions.html#printNum()).

ChandelureF-5 commented 2 years ago

Will you update this-

ROBERT-MCDOWELL commented 2 years ago

is anyone can review and update this tracking?

obkduishinijf commented 1 year ago

is anyone can review and update this tracking?

been waiting for an update fr

ErdincBARUT commented 1 year ago

This project will be super if you complete successfully like original flash player. I'm following with excitement. If there is no performance problem in mobile, I think, that will pack a punch to 2D/UI game industry. I hope you will be more fast. good works.

ROBERT-MCDOWELL commented 1 year ago

@ErdincBARUT well, up to you and others to contribute to the project to go faster. The flash to rust conversion is huge and more we will be, faster it wil be...

minhngoc25a commented 1 year ago

@TurkPashaDede, it's astonishing how entitled you sound. You're using free software created by volunteers in their spare time, yet you have the audacity to demand instant service and berate them without an ounce of gratitude. It's about time someone called you out on your disrespectful behavior. Understand this clearly: your entitled attitude won't get you anywhere. These volunteers owe you nothing. If you want their help, start showing some basic decency and respect. Otherwise, be prepared to be ignored and left to your own devices. Respect is earned, and it's high time you learned that lesson.

ROBERT-MCDOWELL commented 1 year ago

@TurkPashaDede whey not learn rust code nd help the developers community? more we are more it will go fast.

Nameless-GitHubber commented 10 months ago

@TurkPashaDede, please be patient! Adobe Flash is home to thousands of classes, methods, and APIs created over the years. Thus, it'll take some time before everything is implemented. For now, just enjoy Ruffle for what it is or learn the Rust programming language to help the community finish the project more quickly. You can also play your favorite Flash games using the standalone Adobe Flash Player (preferably with the Flashpoint Archive).

MatejMagat305 commented 9 months ago

Can't you hurry up and finish it faster?

how you dare you ..., it is amazing project, which is made by people as "free time hobby", if you want to faster, you can sponzor them ...

ROBERT-MCDOWELL commented 9 months ago

btw I encourage the main developers to provide some rust coding easy example of how the implemented X function or else to help people coming here to achieve the last part of the roadmap... thanks

Dinnerbone commented 7 months ago

How much longer before Ruffle is ready?

Ready for what, exactly?

We're already compatible with more content than not.

Hexstream commented 7 months ago

Ready for what, exactly?

Ready for version 1.0, "normal" releases rather than nightlies, and around 100% compatibility, I assume...

Keep up the great work! 💪

christopher3242 commented 6 months ago

more keep!

milosPavic commented 4 months ago

Excellent Job, just keep going :)

ROBERT-MCDOWELL commented 4 months ago

A nice project from an ex adobe RTMP RTMFP expert https://github.com/zenomt/rtwebsocket