Aaron Hill
dfee80e981
avm2: Mention interfaces in globals.as ordering comment
2023-02-24 16:08:29 -06:00
Aaron Hill
82a3f473d9
avm2: Move some class definitions after playerglobal is loaded
2023-02-24 16:08:29 -06:00
Aaron Hill
62767213a6
avm2: Use 'flash.events' internal namespace for EventDispatcher
2023-02-24 16:08:29 -06:00
Aaron Hill
24e231ae06
avm2: Convert TextField to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
337149ff0e
avm2: Add TextFormat AS stub
2023-02-24 16:08:29 -06:00
Aaron Hill
bc240db517
avm2: Convert SimpleButton to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
d31c686360
avm2: Convert MovieClip to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
aa7dc52b82
avm2: Convert Sprite to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
d996aecb04
avm2: Convert Shape to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
39063a5a04
avm2: Add Graphics stub
2023-02-24 16:08:28 -06:00
Aaron Hill
8831042e8f
avm2: Convert LoaderInfo to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
be16286407
avm2: Convert several flash.display and flash.events classes to AS
...
These classes all reference each other, so it's difficult to convert
them individually.
2023-02-24 16:08:28 -06:00
Aaron Hill
6ce7bd3277
avm2: Convert EventDispatcher and IEventDispatcher to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
cd2770ce7e
avm2: Add SoundTransform stub
2023-02-24 14:48:51 -06:00
EmperorBale
5bc3c696b5
avm2: Ignore duplicate definitions
2023-02-24 11:55:58 -08:00
TÖRÖK Attila
5a7cd92bfe
avm2: Use a lookup table for cosine in SoundMixer.computeSpectrum()
...
This results in 128 times fewer calls to the builtin cosf function.
2023-02-23 23:51:55 +01:00
Aaron Hill
5f4bf7b5fa
avm2: Stub Capabilities.manufacturer and Capabilities.language
...
These are needed by Steambirds: Survival
2023-02-23 12:25:34 -06:00
Nathan Adams
3a29ebc600
avm2: Comment where our RangeErrors have different-to-flash text in DOC
2023-02-23 08:12:42 -06:00
Nathan Adams
5f7978cfa5
avm2: Use avm errors for RangeErrors inside DisplayObjectContainer
2023-02-23 08:12:42 -06:00
Nathan Adams
e17b154d47
avm2: Iterate the inheritance chain for class-symbol linkage
2023-02-22 22:27:13 +01:00
Aaron Hill
203d4cd3aa
avm2: Use Value::Undefined for out-of-range Vector enumerant index
...
This makes Vector consistenht with the other implementations
of `get_enumerant_name`. This also fixes a bug where AMF object
serialization would loop all te way to `u32::MAX` when serializing
a vector, because it would never see `Value::Undefined` and break.
2023-02-22 15:03:09 -06:00
Aaron Hill
f1b0247de7
avm2: Remove install_trait_late
2023-02-22 14:41:01 -06:00
Aaron Hill
c52f1082c4
avm2: Make `early_resolve_interface` take in a `domain` directly
2023-02-22 14:41:01 -06:00
Aaron Hill
c258423dc3
avm2: Allow resolving interfaces before ClassObjects are available
...
The Adobe Animate compiler can emit a 'newclass' opcode for
a concrete class before the 'newclass' opcodes for the interfaces
it implements. As a result, we cannot rely on looking up an interface
`ClassObject` when resolving a class's interfaces.
We now store a map of exported classes in `Domain`, and use this
to lookup interfaces before their `ClassObject`s have been created.
Additionally, `link_interfaces` was failing to consider superinterfaces,
which meant that methods from superinterfaces were not being copied
into the vtable. I've fixed this along with the other changes.
2023-02-22 14:41:01 -06:00
Bale
2cfa97e84d
avm2: ByteArray.readUTF/readUTFBytes should cut off after null byte ( #9673 )
...
* avm2: Fix #9668
* tests: Extend ByteArray test
2023-02-22 18:47:59 +00:00
Marty_SVK
fac7fc0666
Stub System.pauseForGCIfCollectionImminent
...
This progresses Papas Scooperia
2023-02-22 12:34:13 -06:00
Nathan Adams
aef466f8f3
avm2: Implemented BitmapData.drawWithQuality
2023-02-22 17:36:55 +01:00
Adrian Wielgosik
92e52f2d0a
avm2: Add missing imports
2023-02-19 19:06:54 +01:00
Lord-McSweeney
89792865d0
avm2: Stub Loader.close
2023-02-18 18:35:20 +00:00
EmperorBale
158de01c92
avm2: `goto_frame` should use the movieclips scene by default
2023-02-17 18:46:43 -08:00
Aaron Hill
071306f107
avm2: Also register EventDispatcher methods in ns "flash.events:IEventDispatcher"
...
This is needed by "Steambirds: Survival"
2023-02-17 20:32:27 -06:00
EmperorBale
bc165a81ff
chore: Add comment explaining why we skip the first scope
2023-02-18 01:37:12 +01:00
EmperorBale
7ef56c1d16
avm2: Search global scope after everything else
2023-02-18 01:37:12 +01:00
Aaron Hill
4149913967
core: Introduce dedicated avm2 mouse picking logic ( #9565 )
...
The mouse picking behavior in AVM2 interacts in complicated
ways with `mouseEnabled` and `mouseChildren.` It's sufficiently
different from AVM1 that I decided to split the logic into separate
`mouse_pick_avm1` and `mouse_pick_avm2` methods.
The `mouseChildren` property is now fully implemented.
Additionally, the `click_block` tests now work correctly
under Ruffle.
Combined with the orphan-movie PR, this is enough to make
SteamBirds fully playable (though performance greatly degrades
over a course of a level).
2023-02-17 19:04:52 +00:00
Lord-McSweeney
559ec8356d
Port Video to Actionscript
2023-02-16 22:46:11 +02:00
relrelb
a7235febea
core: Use unnamed field in `Character::Bitmap`
...
Since `initial_data` was removed from `Character::Bitmap` in #9143 ,
it now holds a single field. Move back to an unnamed field, which
aligns with the other `Character` enum variants.
2023-02-16 19:02:57 +02:00
EmperorBale
0ffdef48ab
avm2: Implement `finddef` opcode
2023-02-14 14:22:02 -08:00
Nathan Adams
94fdc8bdb5
avm2: Support older DoAbc tag (72)
2023-02-14 08:51:45 +01:00
Nathan Adams
69f93f926e
swf: Rename DoAbc to DoAbc2
2023-02-14 08:51:45 +01:00
Adrian Wielgosik
5eb887c628
avm2: Stub describeType to have .@name work
2023-02-13 23:55:00 +01:00
Nathan Adams
a4fc39efcd
avm2: Copy Regexp methods to the Regexp prototype
2023-02-13 21:31:46 +01:00
Nathan Adams
899635f658
avm2: Copy Array methods to the Array prototype
2023-02-13 21:31:46 +01:00
Aaron Hill
a52a41de97
core: Fix stageX and stageY getters for MouseEvent
...
These getters were previously calling `local_to_global`
with the unused localX/localY coordinate set to 0. Howver,
`local_to_global` does a matrix multiplication, which in general
will depend on both the x and y values. This was causing the getters
to return incorrect results when any of the `transform.matrix` values
included a non-diagonal matrix.
We now call `local_to_transform` with the real `localX` and `localY`
values.
2023-02-13 21:19:20 +01:00
Nathan Adams
081387e047
avm2: Stub TouchEvent
2023-02-13 05:35:18 +01:00
Aaron Hill
c597f9f996
core: Fix Clippy lints on nightly
2023-02-13 03:38:54 +01:00
Lord-McSweeney
b848ab6860
Fix stub in DisplayObjectContainer
...
In mouse_children
2023-02-13 00:42:28 +01:00
Lord-McSweeney
eb7a96f55b
Fix stub types in security.rs
...
Change from avm2_stub_getter to avm2_stub_method
2023-02-13 00:42:28 +01:00
Adrian Wielgosik
561e118ffe
avm2: Export private traits normally, remove private_trait_scripts hack
2023-02-12 17:49:14 +01:00
Adrian Wielgosik
f717b99599
avm2: Compare private namespaces by pointer. Refactor rust-avm field sharing.
2023-02-12 17:49:14 +01:00
Adrian Wielgosik
e0e653e463
avm2: make Namespace a GC type
2023-02-12 17:49:14 +01:00
Aaron Hill
9bce6b78d5
core: Queue up Sound and SoundChannel methods during loading
...
Flash supports calling `Sound.play`, `SoundChannel.stop`, and
`SoundChannel.soundTransform` while a sound load is in progress
(e.g. immediately after calling `Sound.load`).
To support this, we queue up information inside `SoundObject`
and `SoundChannelObject` when a load is in progress. When a load
completes, we trigger any queued `Sound.play` and `SoundChannel.stop`
calls, and apply the most recent `SoundChannel.soundTransform`
2023-02-11 11:53:56 -06:00
Aaron Hill
51fe1e9754
core: Handle `DirtyState::CpuModified` in `overwrite_cpu_pixels`
...
If we're going to overwrite the CPU pixels with the result of a
GPU operation, make sure the GPU texture is up to date with the
latest CPU pixels. I've also renamed the method to
`overwrite_cpu_pixels_from_gpu` to better reflect how it should
be used.
2023-02-11 11:37:00 -06:00
Bale
73e9fd55fb
avm2: Make sure scripts get initialized after all scripts have been loaded when lazy init is disabled ( #9478 )
...
* avm2: Initialize scripts **after** all scripts have been loaded
* tests: Add test for eager initialization
2023-02-11 00:38:38 +00:00
Aaron Hill
4b76d1b32a
core: Support using URLVariables as a POST request body ( #9489 )
...
This is needed by the Newgrounds API. We don't have the ability
to make fake requests to HTTP urls in our test frameworks,
so I haven't added any tests for this. However, I tested locally
that this allows the Newgrounds API to work (and got a medal
in Cloud Wars).
2023-02-11 00:18:10 +00:00
EmperorBale
e7612f571d
avm2: Implement ScopeChain caching
2023-02-09 10:51:12 -08:00
golfinq
37ec94f95b
Avm2: Implement Stage.invalidate
2023-02-08 17:47:21 -07:00
Aaron Hill
a818dd0918
core: Use colorTransform in DisplayObject.setTransform
2023-02-08 20:56:46 +01:00
Adrian Wielgosik
61a5161a20
avm2: Convert most errors in get/set/initproperty to AVM errors
2023-02-07 18:50:15 -06:00
Adrian Wielgosik
c844d2ab6f
avm2: Only store actually-passed arguments to 'arguments'
2023-02-07 18:35:30 -06:00
Nathan Adams
ac9b6e3ecb
avm2: Mark Dictionary(true) and TimerEvent.updateAfterEvent() as stubs
2023-02-07 20:34:59 +01:00
Nathan Adams
e5f44b0f05
avm2: Replaced stubs in actionscript with new stub system
2023-02-07 20:34:59 +01:00
Nathan Adams
bdbf54ecd4
core: Added ability to mark stubs inside actionscript
2023-02-07 20:34:59 +01:00
Nathan Adams
dff558170e
avm2: Implement BitmapData.getPixels()
2023-02-07 19:10:25 +01:00
Nathan Adams
43d9c3deed
avm2: Make sure SoundChannel.soundTransform always returns a value
2023-02-07 18:26:27 +01:00
Nathan Adams
bc7773596b
avm2: addFrameScript allows null to unset the script, and only allows one script per frame
2023-02-07 18:26:27 +01:00
Nathan Adams
d8e924affc
render: Add RenderBackend::set_quality method, and call it from core
2023-02-06 16:08:04 +01:00
Nathan Adams
b270d1bbd7
render: Move StageQuality from core to render
2023-02-06 16:08:04 +01:00
Nathan Adams
00c7e8f634
avm2: Fixed bytearray compress/decompress methods setting position of resulting bytearray
2023-02-05 19:22:01 +01:00
Nathan Adams
e798d69299
avm2: Convert ByteArray EOF to avm error
2023-02-05 19:22:01 +01:00
Nathan Adams
c14f022837
core: Use overwrite_cpu_pixels in apply_filter
2023-02-05 18:41:43 +01:00
Nathan Adams
7476b3b0e0
avm2: Added a bunch of missing filter classes
2023-02-05 18:41:43 +01:00
Nathan Adams
42f3ee923f
avm2: Mark unsupported filters as stubs
2023-02-05 18:41:43 +01:00
Nathan Adams
3411a04cef
render: Made render specific Filter enum & structs, as swf ones don't map 1:1 to potential filters
2023-02-05 18:41:43 +01:00
Nathan Adams
e73389aa71
wgpu: Implement blur filter
2023-02-05 18:41:43 +01:00
Nathan Adams
284a58c817
avm2: Implement BitmapData.apply_filter for ColorMatrixFilter
2023-02-05 18:41:43 +01:00
Lord-McSweeney
a369e71af6
Appease clippy again
2023-02-03 23:32:22 +01:00
Lord-McSweeney
83087f9f23
Change stubs to use new macro method
2023-02-03 23:32:22 +01:00
Lord-McSweeney
a6ea1ef4a7
Appease clippy
2023-02-03 23:32:22 +01:00
Lord-McSweeney
add115e97f
State "Stub" instead of "Implement"
...
...and fix a format issue.
2023-02-03 23:32:22 +01:00
Lord-McSweeney
963f3240f2
Stub DisplayObject.opaqueBackground
2023-02-03 23:32:22 +01:00
Nathan Adams
198e40fd2e
avm2: Changed return values of a bunch of stubs per PR feedbck
2023-02-01 21:45:12 +01:00
Nathan Adams
8e917c473e
avm2: Replaced stubs in Proxy with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
b28e921fb9
avm2: Replaced stubs in Keyboard with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
99e723a1cb
avm2: Replaced stubs in TextField with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
2a36f9b871
avm2: Replaced stubs in StaticText with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
ff768a1e73
avm2: Replaced stubs in Font with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
af73a1a292
avm2: Replaced stubs in Security with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
e48926799c
avm2: Replaced stubs in SharedObject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
408482cd21
avm2: Replaced stubs in ObjectEncoding with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
69101af66b
avm2: Replaced stubs in SoundMixer with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
834ac93350
avm2: Replaced stubs in Sound with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
cb1fa72d6f
avm2: Replaced stubs in Transform with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
a576903f0c
avm2: Replaced stubs in IndexBuffer3D with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
24169a3577
avm2: Replaced stubs in Stage with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
6a6e81ad6a
avm2: Replaced stubs in LoaderInfo with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
33dbe82b4f
avm2: Replaced stubs in InteractiveObject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
46ed595186
avm2: Replaced stubs in Graphics with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
0abfb79c62
avm2: Replaced stubs in DisplayObjectContainer with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
0e522fd58b
avm2: Replaced stubs in displayobject with new format
2023-02-01 21:45:12 +01:00
Nathan Adams
fb0578ee26
avm2: Replaced stubs in bitmapdata with new format
2023-02-01 21:45:12 +01:00