diff --git a/lib/libesp32/berry_animation/README.md b/lib/libesp32/berry_animation/README.md index 617719f74..a6c6dc3d8 100644 --- a/lib/libesp32/berry_animation/README.md +++ b/lib/libesp32/berry_animation/README.md @@ -10,7 +10,7 @@ Writing LED animations in pure Berry code requires understanding the animation e - **Declarative, not imperative** - Just specify *what* you want and *how long* it should take; the framework handles all intermediate states and timing - **No state machines** - Forget about tracking animation phases, transitions, and timing manually -- **Readable syntax** - Write `animation pulse = pulsating_animation(color=red, period=2s)` instead of dozens of lines of Berry code +- **Readable syntax** - Write `animation pulse = breathe(color=red, period=2s)` instead of dozens of lines of Berry code - **Automatic engine management** - No need to create engines, manage frame buffers, or handle timing - **Built-in effects** - Access to pulse, breathe, fire, comet, sparkle, wave, and many more effects - **Dynamic parameters** - Oscillating values (sine, triangle, smooth) without manual math @@ -49,22 +49,22 @@ Without `USE_BERRY_ANIMATION_DSL`, use the online emulator to create animations ### Simple Breathing Animation ```berry -animation pulse = breathe_animation(color=red, period=2s) +animation pulse = breathe(color=red, period=2s) run pulse ``` ### Rainbow Smooth Color Cycling ```berry -animation rainbow = rich_palette_animation(colors=PALETTE_RAINBOW) +animation rainbow = rich_palette(colors=PALETTE_RAINBOW) run rainbow ``` ### Animation Sequence ```berry -animation red_pulse = breathe_animation(color=red, period=2s) -animation blue_pulse = breathe_animation(color=blue, period=1.5s) +animation red_pulse = breathe(color=red, period=2s) +animation blue_pulse = breathe(color=blue, period=1.5s) sequence show repeat forever { play red_pulse for 4s @@ -136,7 +136,7 @@ template animation pulse_effect { param pulse_color type color param speed - animation pulse = pulsating_animation(color=pulse_color, period=speed) + animation pulse = breathe(color=pulse_color, period=speed) run pulse } @@ -155,19 +155,17 @@ run show Animation|Description :---|:--- `solid`|Solid color fill -`pulsating_animation`|Breathing/pulsing effect with smooth transitions -`breathe_animation`|Natural breathing effect with customizable curve -`beacon_animation`|Pulse/highlight at specific position with optional slew -`crenel_animation`|Crenel/square wave pattern -`comet_animation`|Moving comet with fading tail +`breathe`|Natural breathing effect with customizable curve +`beacon`|Pulse/highlight at specific position with optional slew +`crenel`|Crenel/square wave pattern +`comet`|Moving comet with fading tail `twinkle`|Twinkling stars effect -`fire_animation`|Realistic fire simulation +`fire`|Realistic fire simulation `rich_palette_color`|Smooth palette color transitions -`gradient_animation`|Linear or radial color gradients -`palette_gradient_animation`|Gradient patterns with palette colors -`palette_meter_animation`|Meter/bar patterns -`gradient_meter_animation`|VU meter with gradient and peak hold -`wave_animation`|Wave motion effects +`gradient`|Linear or radial color gradients +`palette_gradient`|Gradient patterns with palette colors +`palette_meter`|VU meter with gradient and peak hold +`wave`|Wave motion effects ## Documentation diff --git a/lib/libesp32/berry_animation/anim_examples/breathing_colors.anim b/lib/libesp32/berry_animation/anim_examples/breathing_colors.anim index 9d3835a31..a74ef1151 100644 --- a/lib/libesp32/berry_animation/anim_examples/breathing_colors.anim +++ b/lib/libesp32/berry_animation/anim_examples/breathing_colors.anim @@ -27,7 +27,7 @@ color palette_pattern = rich_palette_color( ) # Create breathing animation using the palette -animation breathing = breathe_animation( +animation breathing = breathe( color=palette_pattern # base animation min_brightness=100 # min brightness max_brightness=255 # max brightness diff --git a/lib/libesp32/berry_animation/anim_examples/candy_cane.anim b/lib/libesp32/berry_animation/anim_examples/candy_cane.anim index f80b9279c..a449652cc 100644 --- a/lib/libesp32/berry_animation/anim_examples/candy_cane.anim +++ b/lib/libesp32/berry_animation/anim_examples/candy_cane.anim @@ -9,16 +9,16 @@ color candy_white = 0xFFFFFF # Create alternating red and white animation # Using multiple pulse positions to create stripes -animation stripe1 = beacon_animation(color=candy_red, pos=3, beacon_size=4, slew_size=1) -animation stripe2 = beacon_animation(color=candy_white, pos=9, beacon_size=4, slew_size=1) -animation stripe3 = beacon_animation(color=candy_red, pos=15, beacon_size=4, slew_size=1) -animation stripe4 = beacon_animation(color=candy_white, pos=21, beacon_size=4, slew_size=1) -animation stripe5 = beacon_animation(color=candy_red, pos=27, beacon_size=4, slew_size=1) -animation stripe6 = beacon_animation(color=candy_white, pos=33, beacon_size=4, slew_size=1) -animation stripe7 = beacon_animation(color=candy_red, pos=39, beacon_size=4, slew_size=1) -animation stripe8 = beacon_animation(color=candy_white, pos=45, beacon_size=4, slew_size=1) -animation stripe9 = beacon_animation(color=candy_red, pos=51, beacon_size=4, slew_size=1) -animation stripe10 = beacon_animation(color=candy_white, pos=57, beacon_size=4, slew_size=1) +animation stripe1 = beacon(color=candy_red, pos=3, beacon_size=4, slew_size=1) +animation stripe2 = beacon(color=candy_white, pos=9, beacon_size=4, slew_size=1) +animation stripe3 = beacon(color=candy_red, pos=15, beacon_size=4, slew_size=1) +animation stripe4 = beacon(color=candy_white, pos=21, beacon_size=4, slew_size=1) +animation stripe5 = beacon(color=candy_red, pos=27, beacon_size=4, slew_size=1) +animation stripe6 = beacon(color=candy_white, pos=33, beacon_size=4, slew_size=1) +animation stripe7 = beacon(color=candy_red, pos=39, beacon_size=4, slew_size=1) +animation stripe8 = beacon(color=candy_white, pos=45, beacon_size=4, slew_size=1) +animation stripe9 = beacon(color=candy_red, pos=51, beacon_size=4, slew_size=1) +animation stripe10 = beacon(color=candy_white, pos=57, beacon_size=4, slew_size=1) # Add gentle movement to make it more dynamic set move_speed = 8s diff --git a/lib/libesp32/berry_animation/anim_examples/christmas_tree.anim b/lib/libesp32/berry_animation/anim_examples/christmas_tree.anim index 572cd35c2..469f11080 100644 --- a/lib/libesp32/berry_animation/anim_examples/christmas_tree.anim +++ b/lib/libesp32/berry_animation/anim_examples/christmas_tree.anim @@ -26,7 +26,7 @@ animation ornaments = twinkle( ornaments.priority = 10 # Star on top (bright yellow pulse) -animation tree_star = beacon_animation( +animation tree_star = beacon( color=0xFFFF00 # Bright yellow pos=58 # position (near the top) beacon_size=3 # star size @@ -45,7 +45,7 @@ snow_sparkles.priority = 15 # Garland effect - moving colored lights color garland_pattern = rich_palette_color(colors=ornament_colors, period=2s, transition_type=LINEAR, brightness=200) -animation garland = comet_animation( +animation garland = comet( color=garland_pattern # color source tail_length=6 # garland length (tail length) speed=4s # slow movement (speed) diff --git a/lib/libesp32/berry_animation/anim_examples/comet_chase.anim b/lib/libesp32/berry_animation/anim_examples/comet_chase.anim index 57bf6995f..84495adb4 100644 --- a/lib/libesp32/berry_animation/anim_examples/comet_chase.anim +++ b/lib/libesp32/berry_animation/anim_examples/comet_chase.anim @@ -8,7 +8,7 @@ color space_blue = 0x000066 # Note: opaque 0xFF alpha channel is implicitly a animation background = solid(color=space_blue) # Main comet with bright white head -animation comet_main = comet_animation( +animation comet_main = comet( color=0xFFFFFF # White head tail_length=10 # tail length speed=2s # speed @@ -16,7 +16,7 @@ animation comet_main = comet_animation( ) # Secondary comet in different color, opposite direction -animation comet_secondary = comet_animation( +animation comet_secondary = comet( color=0xFF4500 # Orange head tail_length=8 # shorter tail speed=3s # slower speed diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be index c245d57c7..0d6df1dbd 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be @@ -32,7 +32,7 @@ var palette_pattern_ = animation.rich_palette_color(engine) palette_pattern_.colors = breathe_palette_ # palette palette_pattern_.period = 15000 # cycle period (defaults: smooth transition, 255 brightness) # Create breathing animation using the palette -var breathing_ = animation.breathe_animation(engine) +var breathing_ = animation.breathe(engine) breathing_.color = palette_pattern_ # base animation breathing_.min_brightness = 100 # min brightness breathing_.max_brightness = 255 # max brightness @@ -80,7 +80,7 @@ color palette_pattern = rich_palette_color( ) # Create breathing animation using the palette -animation breathing = breathe_animation( +animation breathing = breathe( color=palette_pattern # base animation min_brightness=100 # min brightness max_brightness=255 # max brightness diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be b/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be index d5032dbb8..8278bc43e 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be @@ -17,52 +17,52 @@ var candy_red_ = 0xFFFF0000 var candy_white_ = 0xFFFFFFFF # Create alternating red and white animation # Using multiple pulse positions to create stripes -var stripe1_ = animation.beacon_animation(engine) +var stripe1_ = animation.beacon(engine) stripe1_.color = candy_red_ stripe1_.pos = 3 stripe1_.beacon_size = 4 stripe1_.slew_size = 1 -var stripe2_ = animation.beacon_animation(engine) +var stripe2_ = animation.beacon(engine) stripe2_.color = candy_white_ stripe2_.pos = 9 stripe2_.beacon_size = 4 stripe2_.slew_size = 1 -var stripe3_ = animation.beacon_animation(engine) +var stripe3_ = animation.beacon(engine) stripe3_.color = candy_red_ stripe3_.pos = 15 stripe3_.beacon_size = 4 stripe3_.slew_size = 1 -var stripe4_ = animation.beacon_animation(engine) +var stripe4_ = animation.beacon(engine) stripe4_.color = candy_white_ stripe4_.pos = 21 stripe4_.beacon_size = 4 stripe4_.slew_size = 1 -var stripe5_ = animation.beacon_animation(engine) +var stripe5_ = animation.beacon(engine) stripe5_.color = candy_red_ stripe5_.pos = 27 stripe5_.beacon_size = 4 stripe5_.slew_size = 1 -var stripe6_ = animation.beacon_animation(engine) +var stripe6_ = animation.beacon(engine) stripe6_.color = candy_white_ stripe6_.pos = 33 stripe6_.beacon_size = 4 stripe6_.slew_size = 1 -var stripe7_ = animation.beacon_animation(engine) +var stripe7_ = animation.beacon(engine) stripe7_.color = candy_red_ stripe7_.pos = 39 stripe7_.beacon_size = 4 stripe7_.slew_size = 1 -var stripe8_ = animation.beacon_animation(engine) +var stripe8_ = animation.beacon(engine) stripe8_.color = candy_white_ stripe8_.pos = 45 stripe8_.beacon_size = 4 stripe8_.slew_size = 1 -var stripe9_ = animation.beacon_animation(engine) +var stripe9_ = animation.beacon(engine) stripe9_.color = candy_red_ stripe9_.pos = 51 stripe9_.beacon_size = 4 stripe9_.slew_size = 1 -var stripe10_ = animation.beacon_animation(engine) +var stripe10_ = animation.beacon(engine) stripe10_.color = candy_white_ stripe10_.pos = 57 stripe10_.beacon_size = 4 @@ -165,16 +165,16 @@ color candy_white = 0xFFFFFF # Create alternating red and white animation # Using multiple pulse positions to create stripes -animation stripe1 = beacon_animation(color=candy_red, pos=3, beacon_size=4, slew_size=1) -animation stripe2 = beacon_animation(color=candy_white, pos=9, beacon_size=4, slew_size=1) -animation stripe3 = beacon_animation(color=candy_red, pos=15, beacon_size=4, slew_size=1) -animation stripe4 = beacon_animation(color=candy_white, pos=21, beacon_size=4, slew_size=1) -animation stripe5 = beacon_animation(color=candy_red, pos=27, beacon_size=4, slew_size=1) -animation stripe6 = beacon_animation(color=candy_white, pos=33, beacon_size=4, slew_size=1) -animation stripe7 = beacon_animation(color=candy_red, pos=39, beacon_size=4, slew_size=1) -animation stripe8 = beacon_animation(color=candy_white, pos=45, beacon_size=4, slew_size=1) -animation stripe9 = beacon_animation(color=candy_red, pos=51, beacon_size=4, slew_size=1) -animation stripe10 = beacon_animation(color=candy_white, pos=57, beacon_size=4, slew_size=1) +animation stripe1 = beacon(color=candy_red, pos=3, beacon_size=4, slew_size=1) +animation stripe2 = beacon(color=candy_white, pos=9, beacon_size=4, slew_size=1) +animation stripe3 = beacon(color=candy_red, pos=15, beacon_size=4, slew_size=1) +animation stripe4 = beacon(color=candy_white, pos=21, beacon_size=4, slew_size=1) +animation stripe5 = beacon(color=candy_red, pos=27, beacon_size=4, slew_size=1) +animation stripe6 = beacon(color=candy_white, pos=33, beacon_size=4, slew_size=1) +animation stripe7 = beacon(color=candy_red, pos=39, beacon_size=4, slew_size=1) +animation stripe8 = beacon(color=candy_white, pos=45, beacon_size=4, slew_size=1) +animation stripe9 = beacon(color=candy_red, pos=51, beacon_size=4, slew_size=1) +animation stripe10 = beacon(color=candy_white, pos=57, beacon_size=4, slew_size=1) # Add gentle movement to make it more dynamic set move_speed = 8s diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be index 1c1a08362..d69bb4535 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be @@ -36,7 +36,7 @@ ornaments_.density = 15 # density (many ornaments) ornaments_.twinkle_speed = 800 # twinkle speed (slow twinkle) ornaments_.priority = 10 # Star on top (bright yellow pulse) -var tree_star_ = animation.beacon_animation(engine) +var tree_star_ = animation.beacon(engine) tree_star_.color = 0xFFFFFF00 # Bright yellow tree_star_.pos = 58 # position (near the top) tree_star_.beacon_size = 3 # star size @@ -61,7 +61,7 @@ garland_pattern_.colors = ornament_colors_ garland_pattern_.period = 2000 garland_pattern_.transition_type = animation.LINEAR garland_pattern_.brightness = 200 -var garland_ = animation.comet_animation(engine) +var garland_ = animation.comet(engine) garland_.color = garland_pattern_ # color source garland_.tail_length = 6 # garland length (tail length) garland_.speed = 4000 # slow movement (speed) @@ -104,7 +104,7 @@ animation ornaments = twinkle( ornaments.priority = 10 # Star on top (bright yellow pulse) -animation tree_star = beacon_animation( +animation tree_star = beacon( color=0xFFFF00 # Bright yellow pos=58 # position (near the top) beacon_size=3 # star size @@ -123,7 +123,7 @@ snow_sparkles.priority = 15 # Garland effect - moving colored lights color garland_pattern = rich_palette_color(colors=ornament_colors, period=2s, transition_type=LINEAR, brightness=200) -animation garland = comet_animation( +animation garland = comet( color=garland_pattern # color source tail_length=6 # garland length (tail length) speed=4s # slow movement (speed) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be b/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be index cab815ba8..0aae47064 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be @@ -17,13 +17,13 @@ var space_blue_ = 0xFF000066 # Note: opaque 0xFF alpha channel is implicitly ad var background_ = animation.solid(engine) background_.color = space_blue_ # Main comet with bright white head -var comet_main_ = animation.comet_animation(engine) +var comet_main_ = animation.comet(engine) comet_main_.color = 0xFFFFFFFF # White head comet_main_.tail_length = 10 # tail length comet_main_.speed = 2000 # speed comet_main_.priority = 7 # Secondary comet in different color, opposite direction -var comet_secondary_ = animation.comet_animation(engine) +var comet_secondary_ = animation.comet(engine) comet_secondary_.color = 0xFFFF4500 # Orange head comet_secondary_.tail_length = 8 # shorter tail comet_secondary_.speed = 3000 # slower speed @@ -54,7 +54,7 @@ color space_blue = 0x000066 # Note: opaque 0xFF alpha channel is implicitly a animation background = solid(color=space_blue) # Main comet with bright white head -animation comet_main = comet_animation( +animation comet_main = comet( color=0xFFFFFF # White head tail_length=10 # tail length speed=2s # speed @@ -62,7 +62,7 @@ animation comet_main = comet_animation( ) # Secondary comet in different color, opposite direction -animation comet_secondary = comet_animation( +animation comet_secondary = comet( color=0xFF4500 # Orange head tail_length=8 # shorter tail speed=3s # slower speed diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md index 4b1c3fe4b..3771cc2bd 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md +++ b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md @@ -12,13 +12,13 @@ This document contains a summary of the DSL compilation process, including symbo | Symbol | Type | Builtin | Dangerous | Takes Args | |----------------------|----------------------------|---------|-----------|------------| -| `breathe_animation` | animation_constructor | ✓ | ⚠️ | ✓ | | `breathe_blue` | color | | | | | `breathe_green` | color | | | | | `breathe_orange` | color | | | | | `breathe_palette` | palette | | | | | `breathe_purple` | color | | | | | `breathe_red` | color | | | | +| `breathe` | animation_constructor | ✓ | ⚠️ | ✓ | | `breathing` | animation | | | | | `palette_pattern` | color | | | | | `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | @@ -36,24 +36,24 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `candy_red` | color | | | | -| `candy_white` | color | | | | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `move_speed` | variable | | | | -| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `stripe10` | animation | | | | -| `stripe1` | animation | | | | -| `stripe2` | animation | | | | -| `stripe3` | animation | | | | -| `stripe4` | animation | | | | -| `stripe5` | animation | | | | -| `stripe6` | animation | | | | -| `stripe7` | animation | | | | -| `stripe8` | animation | | | | -| `stripe9` | animation | | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `candy_red` | color | | | | +| `candy_white` | color | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `move_speed` | variable | | | | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `stripe10` | animation | | | | +| `stripe1` | animation | | | | +| `stripe2` | animation | | | | +| `stripe3` | animation | | | | +| `stripe4` | animation | | | | +| `stripe5` | animation | | | | +| `stripe6` | animation | | | | +| `stripe7` | animation | | | | +| `stripe8` | animation | | | | +| `stripe9` | animation | | | | ### Compilation Output @@ -70,8 +70,8 @@ SUCCESS | Symbol | Type | Builtin | Dangerous | Takes Args | |----------------------|----------------------------|---------|-----------|------------| | `LINEAR` | constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `comet` | animation_constructor | ✓ | ⚠️ | ✓ | | `garland_pattern` | color | | | | | `garland` | animation | | | | | `ornament_colors` | palette | | | | @@ -101,10 +101,10 @@ SUCCESS | Symbol | Type | Builtin | Dangerous | Takes Args | |-------------------|-----------------------|---------|-----------|------------| | `background` | animation | | | | -| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | | `comet_main` | animation | | | | | `comet_secondary` | animation | | | | | `comet_sparkles` | animation | | | | +| `comet` | animation_constructor | ✓ | ⚠️ | ✓ | | `solid` | animation_constructor | ✓ | ⚠️ | ✓ | | `space_blue` | color | | | | | `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | @@ -121,18 +121,18 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|-------------------|----------------------------|---------|-----------|------------| -| `abs` | math_function | ✓ | | ✓ | -| `base_speed` | variable | | | | -| `blue` | color | ✓ | | | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `red` | color | ✓ | | | -| `stream1` | animation | | | | -| `stream2` | animation | | | | -| `strip_len` | value_provider | | | | -| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `abs` | math_function | ✓ | | ✓ | +| `base_speed` | variable | | | | +| `blue` | color | ✓ | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `comet` | animation_constructor | ✓ | ⚠️ | ✓ | +| `red` | color | ✓ | | | +| `stream1` | animation | | | | +| `stream2` | animation | | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -165,26 +165,26 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | -| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `cosine_val` | value_provider | | | | -| `cylon_eye` | sequence | | | | -| `eye_color` | color | | | | -| `eye_duration` | variable | | | | -| `eye_palette` | palette | | | | -| `green` | color | ✓ | | | -| `red_eye` | animation | | | | -| `red` | color | ✓ | | | -| `strip_len` | value_provider | | | | -| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `triangle_val` | value_provider | | | | -| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `violet` | color | ✓ | | | -| `yellow` | color | ✓ | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_val` | value_provider | | | | +| `cylon_eye` | sequence | | | | +| `eye_color` | color | | | | +| `eye_duration` | variable | | | | +| `eye_palette` | palette | | | | +| `green` | color | ✓ | | | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `triangle_val` | value_provider | | | | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `violet` | color | ✓ | | | +| `yellow` | color | ✓ | | | ### Compilation Output @@ -198,15 +198,15 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `red_eye` | animation | | | | -| `red` | color | ✓ | | | -| `strip_len` | value_provider | | | | -| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -220,24 +220,24 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|------------------------------|----------------------------|---------|-----------|------------| -| `background` | animation | | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `eye_mask` | animation | | | | -| `eye_pos` | value_provider | | | | -| `fire_color` | color | | | | -| `fire_colors` | palette | | | | -| `fire_pattern` | animation | | | | -| `palette_gradient_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `strip_len` | value_provider | | | | -| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `transparent` | color | ✓ | | | -| `white` | color | ✓ | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `eye_mask` | animation | | | | +| `eye_pos` | value_provider | | | | +| `fire_color` | color | | | | +| `fire_colors` | palette | | | | +| `fire_pattern` | animation | | | | +| `palette_gradient` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `transparent` | color | ✓ | | | +| `white` | color | ✓ | | | ### Compilation Output @@ -322,7 +322,7 @@ SUCCESS | Symbol | Type | Builtin | Dangerous | Takes Args | |---------------------|----------------------------|---------|-----------|------------| | `PALETTE_RAINBOW` | palette_constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | | `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | | `col1` | color | | | | | `col2` | color | | | | @@ -347,13 +347,13 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|---------------------------|----------------------------|---------|-----------|------------| -| `back_pattern` | animation | | | | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `palette_meter_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rainbow_with_white` | palette | | | | -| `rand_meter` | user_function | | | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `back_pattern` | animation | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `palette_meter` | animation_constructor | ✓ | ⚠️ | ✓ | +| `rainbow_with_white` | palette | | | | +| `rand_meter` | user_function | | | ✓ | ### Compilation Output @@ -370,7 +370,7 @@ SUCCESS | Symbol | Type | Builtin | Dangerous | Takes Args | |----------------------|----------------------------|---------|-----------|------------| | `LINEAR` | constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | | `disco_base` | animation | | | | | `disco_colors` | palette | | | | | `disco_pulse` | animation | | | | @@ -466,18 +466,18 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `background` | animation | | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `center_pulse` | animation | | | | -| `heart_bg` | color | | | | -| `heart_glow` | animation | | | | -| `heartbeat1` | animation | | | | -| `heartbeat2` | animation | | | | -| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `center_pulse` | animation | | | | +| `heart_bg` | color | | | | +| `heart_glow` | animation | | | | +| `heartbeat1` | animation | | | | +| `heartbeat2` | animation | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -519,24 +519,24 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `SINE` | constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `blob1_pattern` | color | | | | -| `blob2_pattern` | color | | | | -| `blob3_pattern` | color | | | | -| `heat_shimmer` | animation | | | | -| `lava_base` | animation | | | | -| `lava_blob1` | animation | | | | -| `lava_blob2` | animation | | | | -| `lava_blob3` | animation | | | | -| `lava_colors` | palette | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `shimmer_pattern` | color | | | | -| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blob1_pattern` | color | | | | +| `blob2_pattern` | color | | | | +| `blob3_pattern` | color | | | | +| `heat_shimmer` | animation | | | | +| `lava_base` | animation | | | | +| `lava_blob1` | animation | | | | +| `lava_blob2` | animation | | | | +| `lava_blob3` | animation | | | | +| `lava_colors` | palette | | | | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `shimmer_pattern` | color | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -550,20 +550,20 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `SINE` | constant | ✓ | | | -| `afterglow` | animation | | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `distant_flash` | animation | | | | -| `lightning_main` | animation | | | | -| `lightning_partial` | animation | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `storm_bg` | animation | | | | -| `storm_colors` | palette | | | | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|---------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `afterglow` | animation | | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `distant_flash` | animation | | | | +| `lightning_main` | animation | | | | +| `lightning_partial` | animation | | | | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `storm_bg` | animation | | | | +| `storm_colors` | palette | | | | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -582,7 +582,7 @@ SUCCESS | `LINEAR` | constant | ✓ | | | | `background` | animation | | | | | `code_flash` | animation | | | | -| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| `comet` | animation_constructor | ✓ | ⚠️ | ✓ | | `matrix_bg` | color | | | | | `matrix_greens` | palette | | | | | `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | @@ -607,19 +607,19 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|-------------------|-----------------------|---------|-----------|------------| -| `background` | animation | | | | -| `comet_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `meteor1` | animation | | | | -| `meteor2` | animation | | | | -| `meteor3` | animation | | | | -| `meteor4` | animation | | | | -| `meteor_flash` | animation | | | | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `space_bg` | color | | | | -| `stars` | animation | | | | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|-----------------------|---------|-----------|------------| +| `background` | animation | | | | +| `comet` | animation_constructor | ✓ | ⚠️ | ✓ | +| `meteor1` | animation | | | | +| `meteor2` | animation | | | | +| `meteor3` | animation | | | | +| `meteor4` | animation | | | | +| `meteor_flash` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `space_bg` | color | | | | +| `stars` | animation | | | | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -633,24 +633,24 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `LINEAR` | constant | ✓ | | | -| `arc_sparkles` | animation | | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `neon_colors` | palette | | | | -| `neon_main` | animation | | | | -| `neon_surge` | animation | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `segment1` | animation | | | | -| `segment2` | animation | | | | -| `segment3` | animation | | | | -| `segment_pattern` | color | | | | -| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `LINEAR` | constant | ✓ | | | +| `arc_sparkles` | animation | | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `neon_colors` | palette | | | | +| `neon_main` | animation | | | | +| `neon_surge` | animation | | | | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `segment1` | animation | | | | +| `segment2` | animation | | | | +| `segment3` | animation | | | | +| `segment_pattern` | color | | | | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -664,21 +664,21 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `SINE` | constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `foam` | animation | | | | -| `ocean_base` | animation | | | | -| `ocean_colors` | palette | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | -| `wave1_pattern` | color | | | | -| `wave1` | animation | | | | -| `wave2_pattern` | color | | | | -| `wave2` | animation | | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `foam` | animation | | | | +| `ocean_base` | animation | | | | +| `ocean_colors` | palette | | | | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `sawtooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| `wave1_pattern` | color | | | | +| `wave1` | animation | | | | +| `wave2_pattern` | color | | | | +| `wave2` | animation | | | | ### Compilation Output @@ -692,14 +692,14 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|-----------------------|---------|-----------|------------| -| `fire_anim` | animation | | | | -| `fire_colors` | palette | | | | -| `ocean_anim` | animation | | | | -| `ocean_colors` | palette | | | | -| `palette_demo` | sequence | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|-----------------------|---------|-----------|------------| +| `fire_anim` | animation | | | | +| `fire_colors` | palette | | | | +| `ocean_anim` | animation | | | | +| `ocean_colors` | palette | | | | +| `palette_demo` | sequence | | | | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -713,29 +713,29 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|-----------------------|---------|-----------|------------| -| `SINE` | constant | ✓ | | | -| `aurora_borealis` | palette | | | | -| `aurora_lights` | animation | | | | -| `black` | color | ✓ | | | -| `blue` | color | ✓ | | | -| `cyan` | color | ✓ | | | -| `fire_effect` | animation | | | | -| `fire_gradient` | palette | | | | -| `navy` | color | ✓ | | | -| `ocean_depths` | palette | | | | -| `ocean_waves` | animation | | | | -| `orange` | color | ✓ | | | -| `palette_showcase` | sequence | | | | -| `purple` | color | ✓ | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `sunset_glow` | animation | | | | -| `sunset_sky` | palette | | | | -| `white` | color | ✓ | | | -| `yellow` | color | ✓ | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|-----------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `aurora_borealis` | palette | | | | +| `aurora_lights` | animation | | | | +| `black` | color | ✓ | | | +| `blue` | color | ✓ | | | +| `cyan` | color | ✓ | | | +| `fire_effect` | animation | | | | +| `fire_gradient` | palette | | | | +| `navy` | color | ✓ | | | +| `ocean_depths` | palette | | | | +| `ocean_waves` | animation | | | | +| `orange` | color | ✓ | | | +| `palette_showcase` | sequence | | | | +| `purple` | color | ✓ | | | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `sunset_glow` | animation | | | | +| `sunset_sky` | palette | | | | +| `white` | color | ✓ | | | +| `yellow` | color | ✓ | | | ### Compilation Output @@ -749,21 +749,21 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `SINE` | constant | ✓ | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `plasma_base` | animation | | | | -| `plasma_colors` | palette | | | | -| `plasma_wave1` | animation | | | | -| `plasma_wave2` | animation | | | | -| `plasma_wave3` | animation | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | -| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `wave1_pattern` | color | | | | -| `wave2_pattern` | color | | | | -| `wave3_pattern` | color | | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------------|----------------------------|---------|-----------|------------| +| `SINE` | constant | ✓ | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `plasma_base` | animation | | | | +| `plasma_colors` | palette | | | | +| `plasma_wave1` | animation | | | | +| `plasma_wave2` | animation | | | | +| `plasma_wave3` | animation | | | | +| `rich_palette_color` | color_constructor | ✓ | ⚠️ | ✓ | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `wave1_pattern` | color | | | | +| `wave2_pattern` | color | | | | +| `wave3_pattern` | color | | | | ### Compilation Output @@ -777,15 +777,15 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `half_length` | variable | | | | -| `left_red` | animation | | | | -| `right_blue` | animation | | | | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `white_strobe` | animation | | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `half_length` | variable | | | | +| `left_red` | animation | | | | +| `right_blue` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `square` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `white_strobe` | animation | | | | ### Compilation Output @@ -799,16 +799,16 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|-----------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `blue_custom` | color | | | | -| `center_pulse` | animation | | | | -| `demo` | sequence | | | | -| `green_custom` | color | | | | -| `left_pulse` | animation | | | | -| `red_custom` | color | | | | -| `right_pulse` | animation | | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|----------------|-----------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blue_custom` | color | | | | +| `center_pulse` | animation | | | | +| `demo` | sequence | | | | +| `green_custom` | color | | | | +| `left_pulse` | animation | | | | +| `red_custom` | color | | | | +| `right_pulse` | animation | | | | ### Compilation Output @@ -842,17 +842,17 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------|----------------------------|---------|-----------|------------| -| `background` | animation | | | | -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `pos_test` | value_provider | | | | -| `scanner_bg` | color | | | | -| `scanner_trail` | animation | | | | -| `scanner` | animation | | | | -| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | -| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|----------------------------|---------|-----------|------------| +| `background` | animation | | | | +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `pos_test` | value_provider | | | | +| `scanner_bg` | color | | | | +| `scanner_trail` | animation | | | | +| `scanner` | animation | | | | +| `solid` | animation_constructor | ✓ | ⚠️ | ✓ | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output @@ -866,34 +866,34 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|-----------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `blue` | color | ✓ | | | -| `brightness_demo` | sequence | | | | -| `brightness_high` | variable | | | | -| `brightness_low` | variable | | | | -| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | -| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `cosine_val` | value_provider | | | | -| `cylon_eye` | sequence | | | | -| `eye_color` | color | | | | -| `eye_palette` | palette | | | | -| `green` | color | ✓ | | | -| `main_demo` | sequence | | | | -| `multi_change` | sequence | | | | -| `pulsating_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `pulse_demo` | animation | | | | -| `red_eye` | animation | | | | -| `red` | color | ✓ | | | -| `repeat_demo` | sequence | | | | -| `strip_len` | value_provider | | | | -| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `triangle_val` | value_provider | | | | -| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `violet` | color | ✓ | | | -| `yellow` | color | ✓ | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-------------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `blue` | color | ✓ | | | +| `breathe` | animation_constructor | ✓ | ⚠️ | ✓ | +| `brightness_demo` | sequence | | | | +| `brightness_high` | variable | | | | +| `brightness_low` | variable | | | | +| `closure_value` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `color_cycle` | color_constructor | ✓ | ⚠️ | ✓ | +| `cosine_osc` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `cosine_val` | value_provider | | | | +| `cylon_eye` | sequence | | | | +| `eye_color` | color | | | | +| `eye_palette` | palette | | | | +| `green` | color | ✓ | | | +| `main_demo` | sequence | | | | +| `multi_change` | sequence | | | | +| `pulse_demo` | animation | | | | +| `red_eye` | animation | | | | +| `red` | color | ✓ | | | +| `repeat_demo` | sequence | | | | +| `strip_len` | value_provider | | | | +| `strip_length` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `triangle_val` | value_provider | | | | +| `triangle` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `violet` | color | ✓ | | | +| `yellow` | color | ✓ | | | ### Compilation Output @@ -907,17 +907,17 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|-----------------------|---------|-----------|------------| -| `blue` | color | ✓ | | | -| `demo` | sequence | | | | -| `green` | color | ✓ | | | -| `orange` | color | ✓ | | | -| `rainbow_cycle` | animation | | | | -| `rainbow` | palette | | | | -| `red` | color | ✓ | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `yellow` | color | ✓ | | | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-----------------|-----------------------|---------|-----------|------------| +| `blue` | color | ✓ | | | +| `demo` | sequence | | | | +| `green` | color | ✓ | | | +| `orange` | color | ✓ | | | +| `rainbow_cycle` | animation | | | | +| `rainbow` | palette | | | | +| `red` | color | ✓ | | | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `yellow` | color | ✓ | | | ### Compilation Output @@ -931,17 +931,17 @@ SUCCESS ## Symbol Table -| Symbol | Type | Builtin | Dangerous | Takes Args | -|--------------------------|----------------------------|---------|-----------|------------| -| `beacon_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `daylight_colors` | palette | | | | -| `daylight_cycle` | animation | | | | -| `rich_palette_animation` | animation_constructor | ✓ | ⚠️ | ✓ | -| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | -| `stars` | animation | | | | -| `sun_glow` | animation | | | | -| `sun_position` | animation | | | | -| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | +| Symbol | Type | Builtin | Dangerous | Takes Args | +|-------------------|----------------------------|---------|-----------|------------| +| `beacon` | animation_constructor | ✓ | ⚠️ | ✓ | +| `daylight_colors` | palette | | | | +| `daylight_cycle` | animation | | | | +| `rich_palette` | animation_constructor | ✓ | ⚠️ | ✓ | +| `smooth` | value_provider_constructor | ✓ | ⚠️ | ✓ | +| `stars` | animation | | | | +| `sun_glow` | animation | | | | +| `sun_position` | animation | | | | +| `twinkle` | animation_constructor | ✓ | ⚠️ | ✓ | ### Compilation Output diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/computed_values_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/computed_values_demo.be index 10b4d026c..4320e0fe0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/computed_values_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/computed_values_demo.be @@ -14,14 +14,14 @@ var engine = animation.init_strip() var strip_len_ = animation.strip_length(engine) # Create animation with computed values -var stream1_ = animation.comet_animation(engine) +var stream1_ = animation.comet(engine) stream1_.color = 0xFFFF0000 stream1_.tail_length = animation.create_closure_value(engine, def (engine) return animation._math.abs(animation.resolve(strip_len_) / 4) end) # computed value stream1_.speed = 1.5 stream1_.priority = 10 # More complex computed values var base_speed_ = 2.0 -var stream2_ = animation.comet_animation(engine) +var stream2_ = animation.comet(engine) stream2_.color = 0xFF0000FF stream2_.tail_length = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 8 + (2 * animation.resolve(strip_len_)) - 10 end) # computed with addition stream2_.speed = animation.create_closure_value(engine, def (engine) return animation.resolve(base_speed_) * 1.5 end) # computed with multiplication @@ -44,7 +44,7 @@ engine.run() set strip_len = strip_length() # Create animation with computed values -animation stream1 = comet_animation( +animation stream1 = comet( color=red tail_length=abs(strip_len / 4) # computed value speed=1.5 @@ -53,7 +53,7 @@ animation stream1 = comet_animation( # More complex computed values set base_speed = 2.0 -animation stream2 = comet_animation( +animation stream2 = comet( color=blue tail_length=strip_len / 8 + (2 * strip_len) -10 # computed with addition speed=base_speed * 1.5 # computed with multiplication diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be index 48939cd5a..6cde0cc0d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be @@ -21,7 +21,7 @@ class cylon_animation : animation.engine_proxy var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') var strip_len_ = animation.strip_length(engine) - var eye_animation_ = animation.beacon_animation(engine) + var eye_animation_ = animation.beacon(engine) eye_animation_.color = animation.create_closure_value(engine, def (engine) return self.eye_color end) eye_animation_.back_color = animation.create_closure_value(engine, def (engine) return self.back_color end) eye_animation_.pos = (def (engine) @@ -60,7 +60,7 @@ template animation cylon { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be index bd6b66c5e..0f7f58a2d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be @@ -31,7 +31,7 @@ var triangle_val_ = (def (engine) provider.duration = eye_duration_ return provider end)(engine) -var red_eye_ = animation.beacon_animation(engine) +var red_eye_ = animation.beacon(engine) red_eye_.color = eye_color_ # palette that will advance when we do `eye_color.next = 1` red_eye_.pos = cosine_val_ # oscillator for position red_eye_.beacon_size = 3 # small 3 pixels eye @@ -63,7 +63,7 @@ color eye_color = color_cycle(colors=eye_palette, period=0) set cosine_val = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = eye_duration) set triangle_val = triangle(min_value = 0, max_value = strip_len - 2, duration = eye_duration) -animation red_eye = beacon_animation( +animation red_eye = beacon( color = eye_color # palette that will advance when we do `eye_color.next = 1` pos = cosine_val # oscillator for position beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be index 8fb7b5e96..834741d50 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be @@ -13,7 +13,7 @@ var engine = animation.init_strip() var strip_len_ = animation.strip_length(engine) # Base aurora animation with slow flowing colors -var red_eye_ = animation.beacon_animation(engine) +var red_eye_ = animation.beacon(engine) red_eye_.color = 0xFFFF0000 red_eye_.pos = (def (engine) var provider = animation.cosine_osc(engine) @@ -35,7 +35,7 @@ engine.run() set strip_len = strip_length() # Base aurora animation with slow flowing colors -animation red_eye = beacon_animation( +animation red_eye = beacon( color = red pos = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be index 576a3fbdd..24eebda54 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be @@ -30,14 +30,14 @@ var eye_pos_ = (def (engine) provider.duration = 6000 return provider end)(engine) -var eye_mask_ = animation.beacon_animation(engine) +var eye_mask_ = animation.beacon(engine) eye_mask_.color = 0xFFFFFFFF eye_mask_.back_color = 0x00000000 eye_mask_.pos = eye_pos_ eye_mask_.beacon_size = 4 # small 3 pixels eye eye_mask_.slew_size = 2 # with 2 pixel shading around eye_mask_.priority = 5 -var fire_pattern_ = animation.palette_gradient_animation(engine) +var fire_pattern_ = animation.palette_gradient(engine) fire_pattern_.color_source = fire_color_ fire_pattern_.spatial_period = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 4 end) fire_pattern_.opacity = eye_mask_ @@ -64,7 +64,7 @@ animation background = solid(color=0x000088, priority=20) run background set eye_pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 6s) -animation eye_mask = beacon_animation( +animation eye_mask = beacon( color = white back_color = transparent pos = eye_pos @@ -73,7 +73,7 @@ animation eye_mask = beacon_animation( priority = 5 ) -animation fire_pattern = palette_gradient_animation( +animation fire_pattern = palette_gradient( color_source = fire_color spatial_period = strip_len / 4 opacity = eye_mask diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be index 1a8523dc2..93be970e1 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be @@ -28,7 +28,7 @@ var col2_ = animation.color_cycle(engine) col2_.colors = animation.PALETTE_RAINBOW col2_.period = 0 col2_.next = 1 -var shutter_animation_ = animation.beacon_animation(engine) +var shutter_animation_ = animation.beacon(engine) shutter_animation_.color = col1_ shutter_animation_.back_color = col2_ shutter_animation_.pos = 0 @@ -61,7 +61,7 @@ set duration = 3s color col2 = color_cycle(colors=PALETTE_RAINBOW, period=0) col2.next = 1 - animation shutter_animation = beacon_animation( + animation shutter_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be index 020c3fd62..b67813ee4 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be @@ -36,7 +36,7 @@ class shutter_bidir_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving from left to right - var shutter_lr_animation_ = animation.beacon_animation(engine) + var shutter_lr_animation_ = animation.beacon(engine) shutter_lr_animation_.color = col2_ shutter_lr_animation_.back_color = col1_ shutter_lr_animation_.pos = 0 @@ -44,7 +44,7 @@ class shutter_bidir_animation : animation.engine_proxy shutter_lr_animation_.slew_size = 0 shutter_lr_animation_.priority = 5 # shutter moving from right to left - var shutter_rl_animation_ = animation.beacon_animation(engine) + var shutter_rl_animation_ = animation.beacon(engine) shutter_rl_animation_.color = col1_ shutter_rl_animation_.back_color = col2_ shutter_rl_animation_.pos = 0 @@ -105,7 +105,7 @@ template animation shutter_bidir { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 @@ -115,7 +115,7 @@ template animation shutter_bidir { ) # shutter moving from right to left - animation shutter_rl_animation = beacon_animation( + animation shutter_rl_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be index b33f6c1a6..be2954533 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be @@ -37,7 +37,7 @@ class shutter_central_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving in to out - var shutter_inout_animation_ = animation.beacon_animation(engine) + var shutter_inout_animation_ = animation.beacon(engine) shutter_inout_animation_.color = col2_ shutter_inout_animation_.back_color = col1_ shutter_inout_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(shutter_size_) + 1) / 2 end) @@ -45,7 +45,7 @@ class shutter_central_animation : animation.engine_proxy shutter_inout_animation_.slew_size = 0 shutter_inout_animation_.priority = 5 # shutter moving out to in - var shutter_outin_animation_ = animation.beacon_animation(engine) + var shutter_outin_animation_ = animation.beacon(engine) shutter_outin_animation_.color = col1_ shutter_outin_animation_.back_color = col2_ shutter_outin_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(strip_len_) - animation.resolve(shutter_size_) + 1) / 2 end) @@ -106,7 +106,7 @@ template animation shutter_central { col2.next = 1 # shutter moving in to out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len2 - (shutter_size + 1) / 2 @@ -116,7 +116,7 @@ template animation shutter_central { ) # shutter moving out to in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be index 0d340aca9..91723aee1 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be @@ -36,7 +36,7 @@ class shutter_lr_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving from left to right - var shutter_lr_animation_ = animation.beacon_animation(engine) + var shutter_lr_animation_ = animation.beacon(engine) shutter_lr_animation_.color = col2_ shutter_lr_animation_.back_color = col1_ shutter_lr_animation_.pos = 0 @@ -88,7 +88,7 @@ template animation shutter_lr { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be index 8b51d8490..74b5d50eb 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be @@ -34,7 +34,7 @@ var rainbow_with_white_ = bytes( "FFFC0000" # Red - need to add the first color at last position to ensure roll-over ) # define a gradient across the whole strip -var back_pattern_ = animation.palette_meter_animation(engine) +var back_pattern_ = animation.palette_meter(engine) back_pattern_.level = animation.create_closure_value(engine, def (engine) return animation.get_user_function('rand_meter')(engine) end) engine.add(back_pattern_) engine.run() @@ -67,7 +67,7 @@ palette rainbow_with_white = [ ] # define a gradient across the whole strip -animation back_pattern = palette_meter_animation(level = rand_meter()) +animation back_pattern = palette_meter(level = rand_meter()) run back_pattern diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be index c1e6b9c4f..d1c27556d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be @@ -68,7 +68,7 @@ pulse_pattern_.colors = disco_colors_ pulse_pattern_.period = 800 pulse_pattern_.transition_type = animation.LINEAR pulse_pattern_.brightness = 255 -var disco_pulse_ = animation.beacon_animation(engine) +var disco_pulse_ = animation.beacon(engine) disco_pulse_.color = pulse_pattern_ # color source disco_pulse_.pos = 4 # initial position disco_pulse_.beacon_size = 8 # pulse width @@ -129,7 +129,7 @@ disco_sparkles.priority = 15 # Add moving pulse for extra effect color pulse_pattern = rich_palette_color(colors=disco_colors, period=800ms, transition_type=LINEAR, brightness=255) -animation disco_pulse = beacon_animation( +animation disco_pulse = beacon( color=pulse_pattern # color source pos=4 # initial position beacon_size=8 # pulse width diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be b/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be index cab6b44f8..e2cf5bf17 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be @@ -57,7 +57,7 @@ heart_glow_.opacity = (def (engine) end)(engine) # Gentle breathing glow heart_glow_.priority = 5 # Add center pulse for emphasis -var center_pulse_ = animation.beacon_animation(engine) +var center_pulse_ = animation.beacon(engine) center_pulse_.color = 0xFFFFFFFF # White center center_pulse_.pos = 30 # center of strip center_pulse_.beacon_size = 4 # small center @@ -108,7 +108,7 @@ heart_glow.opacity = smooth(min_value=30, max_value=100, duration=1s) # Gentle heart_glow.priority = 5 # Add center pulse for emphasis -animation center_pulse = beacon_animation( +animation center_pulse = beacon( color=0xFFFFFF # White center pos=30 # center of strip beacon_size=4 # small center diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be index 1c417b6bc..1bbfa550f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be @@ -21,7 +21,7 @@ var lava_colors_ = bytes( "FFFFAA00" # Yellow-orange ) # Base lava animation - very slow color changes -var lava_base_ = animation.rich_palette_animation(engine) +var lava_base_ = animation.rich_palette(engine) lava_base_.colors = lava_colors_ lava_base_.period = 15000 lava_base_.transition_type = animation.SINE @@ -32,7 +32,7 @@ blob1_pattern_.colors = lava_colors_ blob1_pattern_.period = 12000 blob1_pattern_.transition_type = animation.SINE blob1_pattern_.brightness = 255 -var lava_blob1_ = animation.beacon_animation(engine) +var lava_blob1_ = animation.beacon(engine) lava_blob1_.color = blob1_pattern_ # color source lava_blob1_.pos = 9 # initial position lava_blob1_.beacon_size = 18 # large blob @@ -50,7 +50,7 @@ blob2_pattern_.colors = lava_colors_ blob2_pattern_.period = 10000 blob2_pattern_.transition_type = animation.SINE blob2_pattern_.brightness = 220 -var lava_blob2_ = animation.beacon_animation(engine) +var lava_blob2_ = animation.beacon(engine) lava_blob2_.color = blob2_pattern_ # color source lava_blob2_.pos = 46 # initial position lava_blob2_.beacon_size = 14 # medium blob @@ -68,7 +68,7 @@ blob3_pattern_.colors = lava_colors_ blob3_pattern_.period = 8000 blob3_pattern_.transition_type = animation.SINE blob3_pattern_.brightness = 200 -var lava_blob3_ = animation.beacon_animation(engine) +var lava_blob3_ = animation.beacon(engine) lava_blob3_.color = blob3_pattern_ # color source lava_blob3_.pos = 25 # initial position lava_blob3_.beacon_size = 10 # smaller blob @@ -117,11 +117,11 @@ palette lava_colors = [ ] # Base lava animation - very slow color changes -animation lava_base = rich_palette_animation(colors=lava_colors, period=15s, transition_type=SINE, brightness=180) +animation lava_base = rich_palette(colors=lava_colors, period=15s, transition_type=SINE, brightness=180) # Add slow-moving lava blobs color blob1_pattern = rich_palette_color(colors=lava_colors, period=12s, transition_type=SINE, brightness=255) -animation lava_blob1 = beacon_animation( +animation lava_blob1 = beacon( color=blob1_pattern # color source pos=9 # initial position beacon_size=18 # large blob @@ -131,7 +131,7 @@ lava_blob1.priority = 10 lava_blob1.pos = smooth(min_value=9, max_value=51, duration=20s) # Very slow movement color blob2_pattern = rich_palette_color(colors=lava_colors, period=10s, transition_type=SINE, brightness=220) -animation lava_blob2 = beacon_animation( +animation lava_blob2 = beacon( color=blob2_pattern # color source pos=46 # initial position beacon_size=14 # medium blob @@ -141,7 +141,7 @@ lava_blob2.priority = 8 lava_blob2.pos = smooth(min_value=46, max_value=14, duration=25s) # Opposite direction, slower color blob3_pattern = rich_palette_color(colors=lava_colors, period=8s, transition_type=SINE, brightness=200) -animation lava_blob3 = beacon_animation( +animation lava_blob3 = beacon( color=blob3_pattern # color source pos=25 # initial position beacon_size=10 # smaller blob diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be index 864982d92..b0dd80482 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be @@ -18,7 +18,7 @@ var storm_colors_ = bytes( "80110022" # Dark purple "FF220033" # Slightly lighter purple ) -var storm_bg_ = animation.rich_palette_animation(engine) +var storm_bg_ = animation.rich_palette(engine) storm_bg_.colors = storm_colors_ storm_bg_.period = 12000 storm_bg_.transition_type = animation.SINE @@ -37,7 +37,7 @@ lightning_main_.opacity = (def (engine) end)(engine) # Quick bright flashes lightning_main_.priority = 20 # Secondary lightning - partial strip -var lightning_partial_ = animation.beacon_animation(engine) +var lightning_partial_ = animation.beacon(engine) lightning_partial_.color = 0xFFFFFFAA # Slightly yellow white lightning_partial_.pos = 30 # center position lightning_partial_.beacon_size = 20 # covers part of strip @@ -92,7 +92,7 @@ palette storm_colors = [ (255, 0x220033) # Slightly lighter purple ] -animation storm_bg = rich_palette_animation(colors=storm_colors, period=12s, transition_type=SINE, brightness=100) +animation storm_bg = rich_palette(colors=storm_colors, period=12s, transition_type=SINE, brightness=100) # Random lightning flashes - full strip animation lightning_main = solid(color=0xFFFFFF) # Bright white @@ -100,7 +100,7 @@ lightning_main.opacity = square(min_value=0, max_value=255, duration=80ms, duty_ lightning_main.priority = 20 # Secondary lightning - partial strip -animation lightning_partial = beacon_animation( +animation lightning_partial = beacon( color=0xFFFFAA # Slightly yellow white pos=30 # center position beacon_size=20 # covers part of strip diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be index f4b243dd4..5f244e6d5 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be @@ -31,7 +31,7 @@ stream1_pattern_.colors = matrix_greens_ stream1_pattern_.period = 2000 stream1_pattern_.transition_type = animation.LINEAR stream1_pattern_.brightness = 255 -var stream1_ = animation.comet_animation(engine) +var stream1_ = animation.comet(engine) stream1_.color = stream1_pattern_ # color source stream1_.tail_length = 15 # long tail stream1_.speed = 1500 # speed @@ -41,7 +41,7 @@ stream2_pattern_.colors = matrix_greens_ stream2_pattern_.period = 1800 stream2_pattern_.transition_type = animation.LINEAR stream2_pattern_.brightness = 200 -var stream2_ = animation.comet_animation(engine) +var stream2_ = animation.comet(engine) stream2_.color = stream2_pattern_ # color source stream2_.tail_length = 12 # medium tail stream2_.speed = 2200 # different speed @@ -51,7 +51,7 @@ stream3_pattern_.colors = matrix_greens_ stream3_pattern_.period = 2500 stream3_pattern_.transition_type = animation.LINEAR stream3_pattern_.brightness = 180 -var stream3_ = animation.comet_animation(engine) +var stream3_ = animation.comet(engine) stream3_.color = stream3_pattern_ # color source stream3_.tail_length = 10 # shorter tail stream3_.speed = 1800 # another speed @@ -92,7 +92,7 @@ palette matrix_greens = [ # Create multiple cascading streams color stream1_pattern = rich_palette_color(colors=matrix_greens, period=2s, transition_type=LINEAR, brightness=255) -animation stream1 = comet_animation( +animation stream1 = comet( color=stream1_pattern # color source tail_length=15 # long tail speed=1.5s # speed @@ -101,7 +101,7 @@ animation stream1 = comet_animation( color stream2_pattern = rich_palette_color(colors=matrix_greens, period=1.8s, transition_type=LINEAR, brightness=200) -animation stream2 = comet_animation( +animation stream2 = comet( color=stream2_pattern # color source tail_length=12 # medium tail speed=2.2s # different speed @@ -109,7 +109,7 @@ animation stream2 = comet_animation( ) color stream3_pattern = rich_palette_color(colors=matrix_greens, period=2.5s, transition_type=LINEAR, brightness=180) -animation stream3 = comet_animation( +animation stream3 = comet( color=stream3_pattern # color source tail_length=10 # shorter tail speed=1.8s # another speed diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be b/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be index b361fac3e..fd7ded584 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be @@ -17,22 +17,22 @@ var space_bg_ = 0xFF000011 var background_ = animation.solid(engine) background_.color = space_bg_ # Multiple meteors with different speeds and colors -var meteor1_ = animation.comet_animation(engine) +var meteor1_ = animation.comet(engine) meteor1_.color = 0xFFFFFFFF # Bright white meteor1_.tail_length = 12 # long trail meteor1_.speed = 1500 # fast speed meteor1_.priority = 15 -var meteor2_ = animation.comet_animation(engine) +var meteor2_ = animation.comet(engine) meteor2_.color = 0xFFFFAA00 # Orange meteor2_.tail_length = 10 # medium trail meteor2_.speed = 2000 # medium speed meteor2_.priority = 12 -var meteor3_ = animation.comet_animation(engine) +var meteor3_ = animation.comet(engine) meteor3_.color = 0xFFAAAAFF # Blue-white meteor3_.tail_length = 8 # shorter trail meteor3_.speed = 1800 # fast speed meteor3_.priority = 10 -var meteor4_ = animation.comet_animation(engine) +var meteor4_ = animation.comet(engine) meteor4_.color = 0xFFFFAAAA # Pink-white meteor4_.tail_length = 14 # long trail meteor4_.speed = 2500 # slower speed @@ -71,28 +71,28 @@ color space_bg = 0x000011 animation background = solid(color=space_bg) # Multiple meteors with different speeds and colors -animation meteor1 = comet_animation( +animation meteor1 = comet( color=0xFFFFFF # Bright white tail_length=12 # long trail speed=1.5s # fast speed ) meteor1.priority = 15 -animation meteor2 = comet_animation( +animation meteor2 = comet( color=0xFFAA00 # Orange tail_length=10 # medium trail speed=2s # medium speed ) meteor2.priority = 12 -animation meteor3 = comet_animation( +animation meteor3 = comet( color=0xAAAAFF # Blue-white tail_length=8 # shorter trail speed=1.8s # fast speed ) meteor3.priority = 10 -animation meteor4 = comet_animation( +animation meteor4 = comet( color=0xFFAAAA # Pink-white tail_length=14 # long trail speed=2.5s # slower speed diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be index b41918924..702d4b83a 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be @@ -20,7 +20,7 @@ var neon_colors_ = bytes( "FFFF8000" # Neon orange ) # Main neon glow with color cycling -var neon_main_ = animation.rich_palette_animation(engine) +var neon_main_ = animation.rich_palette(engine) neon_main_.colors = neon_colors_ neon_main_.period = 4000 neon_main_.transition_type = animation.LINEAR @@ -52,19 +52,19 @@ segment_pattern_.colors = neon_colors_ segment_pattern_.period = 4000 segment_pattern_.transition_type = animation.LINEAR segment_pattern_.brightness = 255 -var segment1_ = animation.beacon_animation(engine) +var segment1_ = animation.beacon(engine) segment1_.color = segment_pattern_ # color source segment1_.pos = 6 # position segment1_.beacon_size = 12 # segment length segment1_.slew_size = 1 # sharp edges segment1_.priority = 10 -var segment2_ = animation.beacon_animation(engine) +var segment2_ = animation.beacon(engine) segment2_.color = segment_pattern_ # color source segment2_.pos = 24 # position segment2_.beacon_size = 12 # segment length segment2_.slew_size = 1 # sharp edges segment2_.priority = 10 -var segment3_ = animation.beacon_animation(engine) +var segment3_ = animation.beacon(engine) segment3_.color = segment_pattern_ # color source segment3_.pos = 42 # position segment3_.beacon_size = 12 # segment length @@ -101,7 +101,7 @@ palette neon_colors = [ ] # Main neon glow with color cycling -animation neon_main = rich_palette_animation(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) +animation neon_main = rich_palette(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) # Add electrical flickering neon_main.opacity = smooth(min_value=220, max_value=255, duration=200ms) @@ -113,7 +113,7 @@ neon_surge.priority = 20 # Add neon tube segments with gaps color segment_pattern = rich_palette_color(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) -animation segment1 = beacon_animation( +animation segment1 = beacon( color=segment_pattern # color source pos=6 # position beacon_size=12 # segment length @@ -121,7 +121,7 @@ animation segment1 = beacon_animation( ) segment1.priority = 10 -animation segment2 = beacon_animation( +animation segment2 = beacon( color=segment_pattern # color source pos=24 # position beacon_size=12 # segment length @@ -129,7 +129,7 @@ animation segment2 = beacon_animation( ) segment2.priority = 10 -animation segment3 = beacon_animation( +animation segment3 = beacon( color=segment_pattern # color source pos=42 # position beacon_size=12 # segment length diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be index cdda8415e..28e343eef 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be @@ -21,7 +21,7 @@ var ocean_colors_ = bytes( "FF80FFFF" # Light cyan ) # Base ocean animation with slow color cycling -var ocean_base_ = animation.rich_palette_animation(engine) +var ocean_base_ = animation.rich_palette(engine) ocean_base_.colors = ocean_colors_ ocean_base_.period = 8000 ocean_base_.transition_type = animation.SINE @@ -32,7 +32,7 @@ wave1_pattern_.colors = ocean_colors_ wave1_pattern_.period = 6000 wave1_pattern_.transition_type = animation.SINE wave1_pattern_.brightness = 255 -var wave1_ = animation.beacon_animation(engine) +var wave1_ = animation.beacon(engine) wave1_.color = wave1_pattern_ # color source wave1_.pos = 0 # initial position wave1_.beacon_size = 12 # wave width @@ -50,7 +50,7 @@ wave2_pattern_.colors = ocean_colors_ wave2_pattern_.period = 4000 wave2_pattern_.transition_type = animation.SINE wave2_pattern_.brightness = 180 -var wave2_ = animation.beacon_animation(engine) +var wave2_ = animation.beacon(engine) wave2_.color = wave2_pattern_ # color source wave2_.pos = 52 # initial position wave2_.beacon_size = 8 # smaller wave @@ -93,11 +93,11 @@ palette ocean_colors = [ ] # Base ocean animation with slow color cycling -animation ocean_base = rich_palette_animation(colors=ocean_colors, period=8s, transition_type=SINE, brightness=200) +animation ocean_base = rich_palette(colors=ocean_colors, period=8s, transition_type=SINE, brightness=200) # Add wave motion with moving pulses color wave1_pattern = rich_palette_color(colors=ocean_colors, period=6s, transition_type=SINE, brightness=255) -animation wave1 = beacon_animation( +animation wave1 = beacon( color=wave1_pattern # color source pos=0 # initial position beacon_size=12 # wave width @@ -107,7 +107,7 @@ wave1.priority = 10 wave1.pos = sawtooth(min_value=0, max_value=48, duration=5s) # 60-12 = 48 color wave2_pattern = rich_palette_color(colors=ocean_colors, period=4s, transition_type=SINE, brightness=180) -animation wave2 = beacon_animation( +animation wave2 = beacon( color=wave2_pattern # color source pos=52 # initial position beacon_size=8 # smaller wave diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be index 3e604a47c..c32c6d716 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be @@ -23,10 +23,10 @@ var ocean_colors_ = bytes( "FF008000" # Green ) # Create animations using the palettes -var fire_anim_ = animation.rich_palette_animation(engine) +var fire_anim_ = animation.rich_palette(engine) fire_anim_.colors = fire_colors_ fire_anim_.period = 5000 -var ocean_anim_ = animation.rich_palette_animation(engine) +var ocean_anim_ = animation.rich_palette(engine) ocean_anim_.colors = ocean_colors_ ocean_anim_.period = 8000 # Sequence to show both palettes @@ -62,9 +62,9 @@ palette ocean_colors = [ ] # Create animations using the palettes -animation fire_anim = rich_palette_animation(colors=fire_colors, period=5s) +animation fire_anim = rich_palette(colors=fire_colors, period=5s) -animation ocean_anim = rich_palette_animation(colors=ocean_colors, period=8s) +animation ocean_anim = rich_palette(colors=ocean_colors, period=8s) # Sequence to show both palettes sequence palette_demo { diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be index 8b6decf21..1fad8b5a2 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be @@ -56,17 +56,17 @@ fire_effect_.color = (def (engine) provider.period = 3000 return provider end)(engine) -var ocean_waves_ = animation.rich_palette_animation(engine) +var ocean_waves_ = animation.rich_palette(engine) ocean_waves_.colors = ocean_depths_ ocean_waves_.period = 8000 ocean_waves_.transition_type = animation.SINE ocean_waves_.brightness = 200 -var aurora_lights_ = animation.rich_palette_animation(engine) +var aurora_lights_ = animation.rich_palette(engine) aurora_lights_.colors = aurora_borealis_ aurora_lights_.period = 12000 aurora_lights_.transition_type = animation.SINE aurora_lights_.brightness = 180 -var sunset_glow_ = animation.rich_palette_animation(engine) +var sunset_glow_ = animation.rich_palette(engine) sunset_glow_.colors = sunset_sky_ sunset_glow_.period = 6000 sunset_glow_.transition_type = animation.SINE @@ -145,11 +145,11 @@ palette sunset_sky = [ # Create animations using each palette animation fire_effect = solid(color=rich_palette_color(colors=fire_gradient, period=3s)) -animation ocean_waves = rich_palette_animation(colors=ocean_depths, period=8s, transition_type=SINE, brightness=200) +animation ocean_waves = rich_palette(colors=ocean_depths, period=8s, transition_type=SINE, brightness=200) -animation aurora_lights = rich_palette_animation(colors=aurora_borealis, period=12s, transition_type=SINE, brightness=180) +animation aurora_lights = rich_palette(colors=aurora_borealis, period=12s, transition_type=SINE, brightness=180) -animation sunset_glow = rich_palette_animation(colors=sunset_sky, period=6s, transition_type=SINE, brightness=220) +animation sunset_glow = rich_palette(colors=sunset_sky, period=6s, transition_type=SINE, brightness=220) # Sequence to showcase all palettes sequence palette_showcase { diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be index 525c51de7..02ce9062e 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be @@ -22,7 +22,7 @@ var plasma_colors_ = bytes( "FF0080FF" # Blue ) # Base plasma animation with medium speed -var plasma_base_ = animation.rich_palette_animation(engine) +var plasma_base_ = animation.rich_palette(engine) plasma_base_.colors = plasma_colors_ plasma_base_.period = 6000 plasma_base_.transition_type = animation.SINE @@ -33,7 +33,7 @@ wave1_pattern_.colors = plasma_colors_ wave1_pattern_.period = 4000 wave1_pattern_.transition_type = animation.SINE wave1_pattern_.brightness = 255 -var plasma_wave1_ = animation.beacon_animation(engine) +var plasma_wave1_ = animation.beacon(engine) plasma_wave1_.color = wave1_pattern_ # color source plasma_wave1_.pos = 0 # initial position plasma_wave1_.beacon_size = 20 # wide wave @@ -51,7 +51,7 @@ wave2_pattern_.colors = plasma_colors_ wave2_pattern_.period = 5000 wave2_pattern_.transition_type = animation.SINE wave2_pattern_.brightness = 180 -var plasma_wave2_ = animation.beacon_animation(engine) +var plasma_wave2_ = animation.beacon(engine) plasma_wave2_.color = wave2_pattern_ # color source plasma_wave2_.pos = 45 # initial position plasma_wave2_.beacon_size = 15 # medium wave @@ -69,7 +69,7 @@ wave3_pattern_.colors = plasma_colors_ wave3_pattern_.period = 3000 wave3_pattern_.transition_type = animation.SINE wave3_pattern_.brightness = 220 -var plasma_wave3_ = animation.beacon_animation(engine) +var plasma_wave3_ = animation.beacon(engine) plasma_wave3_.color = wave3_pattern_ # color source plasma_wave3_.pos = 20 # initial position plasma_wave3_.beacon_size = 12 # smaller wave @@ -115,11 +115,11 @@ palette plasma_colors = [ ] # Base plasma animation with medium speed -animation plasma_base = rich_palette_animation(colors=plasma_colors, period=6s, transition_type=SINE, brightness=200) +animation plasma_base = rich_palette(colors=plasma_colors, period=6s, transition_type=SINE, brightness=200) # Add multiple wave layers for complexity color wave1_pattern = rich_palette_color(colors=plasma_colors, period=4s, transition_type=SINE, brightness=255) -animation plasma_wave1 = beacon_animation( +animation plasma_wave1 = beacon( color=wave1_pattern # color source pos=0 # initial position beacon_size=20 # wide wave @@ -129,7 +129,7 @@ plasma_wave1.priority = 10 plasma_wave1.pos = smooth(min_value=0, max_value=40, duration=8s) color wave2_pattern = rich_palette_color(colors=plasma_colors, period=5s, transition_type=SINE, brightness=180) -animation plasma_wave2 = beacon_animation( +animation plasma_wave2 = beacon( color=wave2_pattern # color source pos=45 # initial position beacon_size=15 # medium wave @@ -139,7 +139,7 @@ plasma_wave2.priority = 8 plasma_wave2.pos = smooth(min_value=45, max_value=15, duration=10s) # Opposite direction color wave3_pattern = rich_palette_color(colors=plasma_colors, period=3s, transition_type=SINE, brightness=220) -animation plasma_wave3 = beacon_animation( +animation plasma_wave3 = beacon( color=wave3_pattern # color source pos=20 # initial position beacon_size=12 # smaller wave diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be b/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be index 8b69eaa45..af84cea68 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be @@ -15,7 +15,7 @@ var engine = animation.init_strip() var half_length_ = 30 # Left side red flashing -var left_red_ = animation.beacon_animation(engine) +var left_red_ = animation.beacon(engine) left_red_.color = 0xFFFF0000 # Bright red left_red_.pos = 15 # center of left half left_red_.beacon_size = 15 # half the strip @@ -30,7 +30,7 @@ left_red_.opacity = (def (engine) return provider end)(engine) # 50% duty cycle # Right side blue flashing (opposite phase) -var right_blue_ = animation.beacon_animation(engine) +var right_blue_ = animation.beacon(engine) right_blue_.color = 0xFF0000FF # Bright blue right_blue_.pos = 45 # center of right half right_blue_.beacon_size = 15 # half the strip @@ -73,7 +73,7 @@ engine.run() set half_length = 30 # Left side red flashing -animation left_red = beacon_animation( +animation left_red = beacon( color=0xFF0000 # Bright red pos=15 # center of left half beacon_size=15 # half the strip @@ -83,7 +83,7 @@ left_red.priority = 10 left_red.opacity = square(min_value=0, max_value=255, duration=400ms, duty_cycle=50) # 50% duty cycle # Right side blue flashing (opposite phase) -animation right_blue = beacon_animation( +animation right_blue = beacon( color=0x0000FF # Bright blue pos=45 # center of right half beacon_size=15 # half the strip diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/property_assignment_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/property_assignment_demo.be index acb8e9de0..92bacaba4 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/property_assignment_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/property_assignment_demo.be @@ -17,17 +17,17 @@ var red_custom_ = 0xFFFF0000 var blue_custom_ = 0xFF0000FF var green_custom_ = 0xFF00FF00 # Create animations -var left_pulse_ = animation.beacon_animation(engine) +var left_pulse_ = animation.beacon(engine) left_pulse_.color = red_custom_ left_pulse_.pos = 15 left_pulse_.beacon_size = 15 left_pulse_.slew_size = 3 -var center_pulse_ = animation.beacon_animation(engine) +var center_pulse_ = animation.beacon(engine) center_pulse_.color = blue_custom_ center_pulse_.pos = 30 center_pulse_.beacon_size = 15 center_pulse_.slew_size = 3 -var right_pulse_ = animation.beacon_animation(engine) +var right_pulse_ = animation.beacon(engine) right_pulse_.color = green_custom_ right_pulse_.pos = 45 right_pulse_.beacon_size = 15 @@ -71,9 +71,9 @@ color blue_custom = 0x0000FF color green_custom = 0x00FF00 # Create animations -animation left_pulse = beacon_animation(color=red_custom, pos=15, beacon_size=15, slew_size=3) -animation center_pulse = beacon_animation(color=blue_custom, pos=30, beacon_size=15, slew_size=3) -animation right_pulse = beacon_animation(color=green_custom, pos=45, beacon_size=15, slew_size=3) +animation left_pulse = beacon(color=red_custom, pos=15, beacon_size=15, slew_size=3) +animation center_pulse = beacon(color=blue_custom, pos=30, beacon_size=15, slew_size=3) +animation right_pulse = beacon(color=green_custom, pos=45, beacon_size=15, slew_size=3) # Set different opacities left_pulse.opacity = 255 # Full slew_size diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be b/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be index 5ae224df6..f37e89dff 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be @@ -17,7 +17,7 @@ var scanner_bg_ = 0xFF110000 var background_ = animation.solid(engine) background_.color = scanner_bg_ # Main scanner pulse that bounces -var scanner_ = animation.beacon_animation(engine) +var scanner_ = animation.beacon(engine) scanner_.color = 0xFFFF0000 # Bright red scanner_.pos = 2 # initial position scanner_.beacon_size = 3 # pulse width @@ -32,7 +32,7 @@ scanner_.pos = (def (engine) return provider end)(engine) # Add trailing glow effect -var scanner_trail_ = animation.beacon_animation(engine) +var scanner_trail_ = animation.beacon(engine) scanner_trail_.color = 0xFF660000 # Dim red trail scanner_trail_.pos = 2 # initial position scanner_trail_.beacon_size = 6 # wider trail @@ -65,7 +65,7 @@ color scanner_bg = 0x110000 animation background = solid(color=scanner_bg) # Main scanner pulse that bounces -animation scanner = beacon_animation( +animation scanner = beacon( color=0xFF0000 # Bright red pos=2 # initial position beacon_size=3 # pulse width @@ -77,7 +77,7 @@ scanner.priority = 10 scanner.pos = triangle(min_value=2, max_value=57, duration=2s) # Add trailing glow effect -animation scanner_trail = beacon_animation( +animation scanner_trail = beacon( color=0x660000 # Dim red trail pos=2 # initial position beacon_size=6 # wider trail diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be index 0a902bd1e..da21282ec 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be @@ -35,13 +35,13 @@ var eye_color_ = animation.color_cycle(engine) eye_color_.colors = eye_palette_ eye_color_.period = 0 # Create animations -var red_eye_ = animation.beacon_animation(engine) +var red_eye_ = animation.beacon(engine) red_eye_.color = eye_color_ red_eye_.pos = cosine_val_ red_eye_.beacon_size = 3 red_eye_.slew_size = 2 red_eye_.priority = 10 -var pulse_demo_ = animation.pulsating_animation(engine) +var pulse_demo_ = animation.breathe(engine) pulse_demo_.color = 0xFF0000FF pulse_demo_.period = 2000 pulse_demo_.priority = 5 @@ -129,7 +129,7 @@ palette eye_palette = [red, yellow, green, violet] color eye_color = color_cycle(colors=eye_palette, period=0) # Create animations -animation red_eye = beacon_animation( +animation red_eye = beacon( color=eye_color pos=cosine_val beacon_size=3 @@ -137,7 +137,7 @@ animation red_eye = beacon_animation( priority=10 ) -animation pulse_demo = pulsating_animation( +animation pulse_demo = breathe( color=blue period=2s priority=5 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be b/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be index 6997b4a79..e88bdf9e9 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be @@ -15,7 +15,7 @@ var engine = animation.init_strip() var rainbow_ = bytes("00FF0000" "40FFA500" "80FFFF00" "C0008000" "FF0000FF") # Create an animation using the palette -var rainbow_cycle_ = animation.rich_palette_animation(engine) +var rainbow_cycle_ = animation.rich_palette(engine) rainbow_cycle_.colors = rainbow_ rainbow_cycle_.period = 3000 # Simple sequence @@ -41,7 +41,7 @@ palette rainbow = [ ] # Create an animation using the palette -animation rainbow_cycle = rich_palette_animation(colors=rainbow, period=3s) +animation rainbow_cycle = rich_palette(colors=rainbow, period=3s) # Simple sequence sequence demo { diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be index 0c6fbb5f7..3bad94695 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be @@ -25,11 +25,11 @@ var daylight_colors_ = bytes( "FF220011" # Night - dark red ) # Main daylight cycle - very slow transition -var daylight_cycle_ = animation.rich_palette_animation(engine) +var daylight_cycle_ = animation.rich_palette(engine) daylight_cycle_.colors = daylight_colors_ daylight_cycle_.period = 60000 # Add sun position effect - bright spot that moves -var sun_position_ = animation.beacon_animation(engine) +var sun_position_ = animation.beacon(engine) sun_position_.color = 0xFFFFFFAA # Bright yellow sun sun_position_.pos = 5 # initial position sun_position_.beacon_size = 8 # sun size @@ -50,7 +50,7 @@ sun_position_.opacity = (def (engine) return provider end)(engine) # Fade in and out # Add atmospheric glow around sun -var sun_glow_ = animation.beacon_animation(engine) +var sun_glow_ = animation.beacon(engine) sun_glow_.color = 0xFFFFCC88 # Warm glow sun_glow_.pos = 5 # initial position sun_glow_.beacon_size = 16 # larger glow @@ -111,10 +111,10 @@ palette daylight_colors = [ ] # Main daylight cycle - very slow transition -animation daylight_cycle = rich_palette_animation(colors=daylight_colors, period=60s) +animation daylight_cycle = rich_palette(colors=daylight_colors, period=60s) # Add sun position effect - bright spot that moves -animation sun_position = beacon_animation( +animation sun_position = beacon( color=0xFFFFAA # Bright yellow sun pos=5 # initial position beacon_size=8 # sun size @@ -125,7 +125,7 @@ sun_position.pos = smooth(min_value=5, max_value=55, duration=30s) # Sun arc ac sun_position.opacity = smooth(min_value=0, max_value=255, duration=30s) # Fade in and out # Add atmospheric glow around sun -animation sun_glow = beacon_animation( +animation sun_glow = beacon( color=0xFFCC88 # Warm glow pos=5 # initial position beacon_size=16 # larger glow diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/template_cylon_generic.be b/lib/libesp32/berry_animation/anim_examples/compiled/template_cylon_generic.be index 3dd9a05cf..aa3438510 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/template_cylon_generic.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/template_cylon_generic.be @@ -21,7 +21,7 @@ class cylon_effect_animation : animation.engine_proxy var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') var strip_len_ = animation.strip_length(engine) - var eye_animation_ = animation.beacon_animation(engine) + var eye_animation_ = animation.beacon(engine) eye_animation_.color = animation.create_closure_value(engine, def (engine) return self.eye_color end) eye_animation_.back_color = animation.create_closure_value(engine, def (engine) return self.back_color end) eye_animation_.pos = (def (engine) @@ -51,7 +51,7 @@ template animation cylon_effect { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be index c996b8a4b..14c1fd1c6 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be @@ -24,7 +24,7 @@ class rainbow_pulse_animation : animation.engine_proxy cycle_color_.colors = animation.create_closure_value(engine, def (engine) return self.pal1 end) cycle_color_.period = animation.create_closure_value(engine, def (engine) return self.period end) # Create pulsing animation - var pulse_ = animation.pulsating_animation(engine) + var pulse_ = animation.breathe(engine) pulse_.color = cycle_color_ pulse_.period = animation.create_closure_value(engine, def (engine) return self.period end) # Create background @@ -71,7 +71,7 @@ template animation rainbow_pulse { color cycle_color = color_cycle(colors=pal1, period=period) # Create pulsing animation - animation pulse = pulsating_animation( + animation pulse = breathe( color=cycle_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be index 9fbb8b74d..61745de02 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be @@ -36,7 +36,7 @@ class shutter_bidir_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving from left to right - var shutter_lr_animation_ = animation.beacon_animation(engine) + var shutter_lr_animation_ = animation.beacon(engine) shutter_lr_animation_.color = col2_ shutter_lr_animation_.back_color = col1_ shutter_lr_animation_.pos = 0 @@ -44,7 +44,7 @@ class shutter_bidir_animation : animation.engine_proxy shutter_lr_animation_.slew_size = 0 shutter_lr_animation_.priority = 5 # shutter moving from right to left - var shutter_rl_animation_ = animation.beacon_animation(engine) + var shutter_rl_animation_ = animation.beacon(engine) shutter_rl_animation_.color = col1_ shutter_rl_animation_.back_color = col2_ shutter_rl_animation_.pos = 0 @@ -106,7 +106,7 @@ template animation shutter_bidir { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 @@ -116,7 +116,7 @@ template animation shutter_bidir { ) # shutter moving from right to left - animation shutter_rl_animation = beacon_animation( + animation shutter_rl_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be index 415cafa54..60049e29a 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_central.be @@ -36,7 +36,7 @@ class shutter_central_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving from left to right - var shutter_central_animation_ = animation.beacon_animation(engine) + var shutter_central_animation_ = animation.beacon(engine) shutter_central_animation_.color = col2_ shutter_central_animation_.back_color = col1_ shutter_central_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - animation.resolve(shutter_size_) / 2 end) @@ -88,7 +88,7 @@ template animation shutter_central { col2.next = 1 # shutter moving from left to right - animation shutter_central_animation = beacon_animation( + animation shutter_central_animation = beacon( color = col2 back_color = col1 pos = strip_len - shutter_size / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_animation.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_animation.be index 9d3f5c7b9..a850c0308 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_animation.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_animation.be @@ -36,7 +36,7 @@ class shutter_central_animation : animation.engine_proxy col2_.period = 0 col2_.next = 1 # shutter moving in to out - var shutter_inout_animation_ = animation.beacon_animation(engine) + var shutter_inout_animation_ = animation.beacon(engine) shutter_inout_animation_.color = col2_ shutter_inout_animation_.back_color = col1_ shutter_inout_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(shutter_size_) + 1) / 2 end) @@ -44,7 +44,7 @@ class shutter_central_animation : animation.engine_proxy shutter_inout_animation_.slew_size = 0 shutter_inout_animation_.priority = 5 # shutter moving out to in - var shutter_outin_animation_ = animation.beacon_animation(engine) + var shutter_outin_animation_ = animation.beacon(engine) shutter_outin_animation_.color = col1_ shutter_outin_animation_.back_color = col2_ shutter_outin_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - (animation.resolve(strip_len_) - animation.resolve(shutter_size_) + 1) / 2 end) @@ -96,7 +96,7 @@ template animation shutter_central { col2.next = 1 # shutter moving in to out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len2 - (shutter_size + 1) / 2 @@ -106,7 +106,7 @@ template animation shutter_central { ) # shutter moving out to in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be index 9f296363e..ddc0a1bc3 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be @@ -20,7 +20,7 @@ class pulse_effect_animation : animation.engine_proxy def setup_template() var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') - var pulse_ = animation.pulsating_animation(engine) + var pulse_ = animation.breathe(engine) pulse_.color = animation.create_closure_value(engine, def (engine) return self.base_color end) pulse_.period = animation.create_closure_value(engine, def (engine) return self.period end) pulse_.opacity = animation.create_closure_value(engine, def (engine) return self.brightness end) @@ -49,7 +49,7 @@ template animation pulse_effect { param period type time param brightness type percentage - animation pulse = pulsating_animation( + animation pulse = breathe( color=base_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be index 873a09ba6..006aa31e7 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be @@ -20,7 +20,7 @@ class pulse_effect_animation : animation.engine_proxy def setup_template() var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') - var pulse_ = animation.pulsating_animation(engine) + var pulse_ = animation.breathe(engine) pulse_.color = animation.create_closure_value(engine, def (engine) return self.base_color end) pulse_.period = animation.create_closure_value(engine, def (engine) return self.period end) pulse_.opacity = animation.create_closure_value(engine, def (engine) return self.brightness end) @@ -49,7 +49,7 @@ template animation pulse_effect { param period type time param brightness type percentage - animation pulse = pulsating_animation( + animation pulse = breathe( color=base_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_examples/computed_values_demo.anim b/lib/libesp32/berry_animation/anim_examples/computed_values_demo.anim index c1daedea9..1eb1f83fc 100644 --- a/lib/libesp32/berry_animation/anim_examples/computed_values_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/computed_values_demo.anim @@ -5,7 +5,7 @@ set strip_len = strip_length() # Create animation with computed values -animation stream1 = comet_animation( +animation stream1 = comet( color=red tail_length=abs(strip_len / 4) # computed value speed=1.5 @@ -14,7 +14,7 @@ animation stream1 = comet_animation( # More complex computed values set base_speed = 2.0 -animation stream2 = comet_animation( +animation stream2 = comet( color=blue tail_length=strip_len / 8 + (2 * strip_len) -10 # computed with addition speed=base_speed * 1.5 # computed with multiplication diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim b/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim index 83875c765..f072912ec 100644 --- a/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim +++ b/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim @@ -8,7 +8,7 @@ template animation cylon { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_rainbow.anim b/lib/libesp32/berry_animation/anim_examples/cylon_rainbow.anim index b7204ab32..0b97b17e6 100644 --- a/lib/libesp32/berry_animation/anim_examples/cylon_rainbow.anim +++ b/lib/libesp32/berry_animation/anim_examples/cylon_rainbow.anim @@ -12,7 +12,7 @@ color eye_color = color_cycle(colors=eye_palette, period=0) set cosine_val = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = eye_duration) set triangle_val = triangle(min_value = 0, max_value = strip_len - 2, duration = eye_duration) -animation red_eye = beacon_animation( +animation red_eye = beacon( color = eye_color # palette that will advance when we do `eye_color.next = 1` pos = cosine_val # oscillator for position beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim b/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim index 2c6c24063..0f2e86cf1 100644 --- a/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim +++ b/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim @@ -4,7 +4,7 @@ set strip_len = strip_length() # Base aurora animation with slow flowing colors -animation red_eye = beacon_animation( +animation red_eye = beacon( color = red pos = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_examples/demo_pattern_fire_opacity.anim b/lib/libesp32/berry_animation/anim_examples/demo_pattern_fire_opacity.anim index cad001bb6..345fa8c12 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_pattern_fire_opacity.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_pattern_fire_opacity.anim @@ -15,7 +15,7 @@ animation background = solid(color=0x000088, priority=20) run background set eye_pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 6s) -animation eye_mask = beacon_animation( +animation eye_mask = beacon( color = white back_color = transparent pos = eye_pos @@ -24,7 +24,7 @@ animation eye_mask = beacon_animation( priority = 5 ) -animation fire_pattern = palette_gradient_animation( +animation fire_pattern = palette_gradient( color_source = fire_color spatial_period = strip_len / 4 opacity = eye_mask diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow2.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow2.anim index fde841f26..ce650798c 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow2.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow2.anim @@ -11,7 +11,7 @@ set duration = 3s color col2 = color_cycle(colors=PALETTE_RAINBOW, period=0) col2.next = 1 - animation shutter_animation = beacon_animation( + animation shutter_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim index 6b4ae9fe9..eb2651674 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim @@ -14,7 +14,7 @@ template animation shutter_bidir { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 @@ -24,7 +24,7 @@ template animation shutter_bidir { ) # shutter moving from right to left - animation shutter_rl_animation = beacon_animation( + animation shutter_rl_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim index b77e93618..af20a5327 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim @@ -15,7 +15,7 @@ template animation shutter_central { col2.next = 1 # shutter moving in to out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len2 - (shutter_size + 1) / 2 @@ -25,7 +25,7 @@ template animation shutter_central { ) # shutter moving out to in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim index eba39e945..06e285e2e 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim @@ -14,7 +14,7 @@ template animation shutter_lr { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim b/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim index 200b8333d..289c3b28d 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim @@ -24,6 +24,6 @@ palette rainbow_with_white = [ ] # define a gradient across the whole strip -animation back_pattern = palette_meter_animation(level = rand_meter()) +animation back_pattern = palette_meter(level = rand_meter()) run back_pattern diff --git a/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim b/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim index 3f0a6b1e9..9ef905515 100644 --- a/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim +++ b/lib/libesp32/berry_animation/anim_examples/disco_strobe.anim @@ -37,7 +37,7 @@ disco_sparkles.priority = 15 # Add moving pulse for extra effect color pulse_pattern = rich_palette_color(colors=disco_colors, period=800ms, transition_type=LINEAR, brightness=255) -animation disco_pulse = beacon_animation( +animation disco_pulse = beacon( color=pulse_pattern # color source pos=4 # initial position beacon_size=8 # pulse width diff --git a/lib/libesp32/berry_animation/anim_examples/heartbeat_pulse.anim b/lib/libesp32/berry_animation/anim_examples/heartbeat_pulse.anim index fc2763b02..eb31a24bb 100644 --- a/lib/libesp32/berry_animation/anim_examples/heartbeat_pulse.anim +++ b/lib/libesp32/berry_animation/anim_examples/heartbeat_pulse.anim @@ -25,7 +25,7 @@ heart_glow.opacity = smooth(min_value=30, max_value=100, duration=1s) # Gentle heart_glow.priority = 5 # Add center pulse for emphasis -animation center_pulse = beacon_animation( +animation center_pulse = beacon( color=0xFFFFFF # White center pos=30 # center of strip beacon_size=4 # small center diff --git a/lib/libesp32/berry_animation/anim_examples/lava_lamp.anim b/lib/libesp32/berry_animation/anim_examples/lava_lamp.anim index 2326fd031..d7885de58 100644 --- a/lib/libesp32/berry_animation/anim_examples/lava_lamp.anim +++ b/lib/libesp32/berry_animation/anim_examples/lava_lamp.anim @@ -13,11 +13,11 @@ palette lava_colors = [ ] # Base lava animation - very slow color changes -animation lava_base = rich_palette_animation(colors=lava_colors, period=15s, transition_type=SINE, brightness=180) +animation lava_base = rich_palette(colors=lava_colors, period=15s, transition_type=SINE, brightness=180) # Add slow-moving lava blobs color blob1_pattern = rich_palette_color(colors=lava_colors, period=12s, transition_type=SINE, brightness=255) -animation lava_blob1 = beacon_animation( +animation lava_blob1 = beacon( color=blob1_pattern # color source pos=9 # initial position beacon_size=18 # large blob @@ -27,7 +27,7 @@ lava_blob1.priority = 10 lava_blob1.pos = smooth(min_value=9, max_value=51, duration=20s) # Very slow movement color blob2_pattern = rich_palette_color(colors=lava_colors, period=10s, transition_type=SINE, brightness=220) -animation lava_blob2 = beacon_animation( +animation lava_blob2 = beacon( color=blob2_pattern # color source pos=46 # initial position beacon_size=14 # medium blob @@ -37,7 +37,7 @@ lava_blob2.priority = 8 lava_blob2.pos = smooth(min_value=46, max_value=14, duration=25s) # Opposite direction, slower color blob3_pattern = rich_palette_color(colors=lava_colors, period=8s, transition_type=SINE, brightness=200) -animation lava_blob3 = beacon_animation( +animation lava_blob3 = beacon( color=blob3_pattern # color source pos=25 # initial position beacon_size=10 # smaller blob diff --git a/lib/libesp32/berry_animation/anim_examples/lightning_storm.anim b/lib/libesp32/berry_animation/anim_examples/lightning_storm.anim index a51607b86..2062de968 100644 --- a/lib/libesp32/berry_animation/anim_examples/lightning_storm.anim +++ b/lib/libesp32/berry_animation/anim_examples/lightning_storm.anim @@ -10,7 +10,7 @@ palette storm_colors = [ (255, 0x220033) # Slightly lighter purple ] -animation storm_bg = rich_palette_animation(colors=storm_colors, period=12s, transition_type=SINE, brightness=100) +animation storm_bg = rich_palette(colors=storm_colors, period=12s, transition_type=SINE, brightness=100) # Random lightning flashes - full strip animation lightning_main = solid(color=0xFFFFFF) # Bright white @@ -18,7 +18,7 @@ lightning_main.opacity = square(min_value=0, max_value=255, duration=80ms, duty_ lightning_main.priority = 20 # Secondary lightning - partial strip -animation lightning_partial = beacon_animation( +animation lightning_partial = beacon( color=0xFFFFAA # Slightly yellow white pos=30 # center position beacon_size=20 # covers part of strip diff --git a/lib/libesp32/berry_animation/anim_examples/matrix_rain.anim b/lib/libesp32/berry_animation/anim_examples/matrix_rain.anim index 8731d4ffb..097f3317e 100644 --- a/lib/libesp32/berry_animation/anim_examples/matrix_rain.anim +++ b/lib/libesp32/berry_animation/anim_examples/matrix_rain.anim @@ -18,7 +18,7 @@ palette matrix_greens = [ # Create multiple cascading streams color stream1_pattern = rich_palette_color(colors=matrix_greens, period=2s, transition_type=LINEAR, brightness=255) -animation stream1 = comet_animation( +animation stream1 = comet( color=stream1_pattern # color source tail_length=15 # long tail speed=1.5s # speed @@ -27,7 +27,7 @@ animation stream1 = comet_animation( color stream2_pattern = rich_palette_color(colors=matrix_greens, period=1.8s, transition_type=LINEAR, brightness=200) -animation stream2 = comet_animation( +animation stream2 = comet( color=stream2_pattern # color source tail_length=12 # medium tail speed=2.2s # different speed @@ -35,7 +35,7 @@ animation stream2 = comet_animation( ) color stream3_pattern = rich_palette_color(colors=matrix_greens, period=2.5s, transition_type=LINEAR, brightness=180) -animation stream3 = comet_animation( +animation stream3 = comet( color=stream3_pattern # color source tail_length=10 # shorter tail speed=1.8s # another speed diff --git a/lib/libesp32/berry_animation/anim_examples/meteor_shower.anim b/lib/libesp32/berry_animation/anim_examples/meteor_shower.anim index f68e58d3c..ba89e3908 100644 --- a/lib/libesp32/berry_animation/anim_examples/meteor_shower.anim +++ b/lib/libesp32/berry_animation/anim_examples/meteor_shower.anim @@ -8,28 +8,28 @@ color space_bg = 0x000011 animation background = solid(color=space_bg) # Multiple meteors with different speeds and colors -animation meteor1 = comet_animation( +animation meteor1 = comet( color=0xFFFFFF # Bright white tail_length=12 # long trail speed=1.5s # fast speed ) meteor1.priority = 15 -animation meteor2 = comet_animation( +animation meteor2 = comet( color=0xFFAA00 # Orange tail_length=10 # medium trail speed=2s # medium speed ) meteor2.priority = 12 -animation meteor3 = comet_animation( +animation meteor3 = comet( color=0xAAAAFF # Blue-white tail_length=8 # shorter trail speed=1.8s # fast speed ) meteor3.priority = 10 -animation meteor4 = comet_animation( +animation meteor4 = comet( color=0xFFAAAA # Pink-white tail_length=14 # long trail speed=2.5s # slower speed diff --git a/lib/libesp32/berry_animation/anim_examples/neon_glow.anim b/lib/libesp32/berry_animation/anim_examples/neon_glow.anim index 6780706e1..7694988e1 100644 --- a/lib/libesp32/berry_animation/anim_examples/neon_glow.anim +++ b/lib/libesp32/berry_animation/anim_examples/neon_glow.anim @@ -12,7 +12,7 @@ palette neon_colors = [ ] # Main neon glow with color cycling -animation neon_main = rich_palette_animation(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) +animation neon_main = rich_palette(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) # Add electrical flickering neon_main.opacity = smooth(min_value=220, max_value=255, duration=200ms) @@ -24,7 +24,7 @@ neon_surge.priority = 20 # Add neon tube segments with gaps color segment_pattern = rich_palette_color(colors=neon_colors, period=4s, transition_type=LINEAR, brightness=255) -animation segment1 = beacon_animation( +animation segment1 = beacon( color=segment_pattern # color source pos=6 # position beacon_size=12 # segment length @@ -32,7 +32,7 @@ animation segment1 = beacon_animation( ) segment1.priority = 10 -animation segment2 = beacon_animation( +animation segment2 = beacon( color=segment_pattern # color source pos=24 # position beacon_size=12 # segment length @@ -40,7 +40,7 @@ animation segment2 = beacon_animation( ) segment2.priority = 10 -animation segment3 = beacon_animation( +animation segment3 = beacon( color=segment_pattern # color source pos=42 # position beacon_size=12 # segment length diff --git a/lib/libesp32/berry_animation/anim_examples/ocean_waves.anim b/lib/libesp32/berry_animation/anim_examples/ocean_waves.anim index 9cf94ec1e..db3da76cf 100644 --- a/lib/libesp32/berry_animation/anim_examples/ocean_waves.anim +++ b/lib/libesp32/berry_animation/anim_examples/ocean_waves.anim @@ -13,11 +13,11 @@ palette ocean_colors = [ ] # Base ocean animation with slow color cycling -animation ocean_base = rich_palette_animation(colors=ocean_colors, period=8s, transition_type=SINE, brightness=200) +animation ocean_base = rich_palette(colors=ocean_colors, period=8s, transition_type=SINE, brightness=200) # Add wave motion with moving pulses color wave1_pattern = rich_palette_color(colors=ocean_colors, period=6s, transition_type=SINE, brightness=255) -animation wave1 = beacon_animation( +animation wave1 = beacon( color=wave1_pattern # color source pos=0 # initial position beacon_size=12 # wave width @@ -27,7 +27,7 @@ wave1.priority = 10 wave1.pos = sawtooth(min_value=0, max_value=48, duration=5s) # 60-12 = 48 color wave2_pattern = rich_palette_color(colors=ocean_colors, period=4s, transition_type=SINE, brightness=180) -animation wave2 = beacon_animation( +animation wave2 = beacon( color=wave2_pattern # color source pos=52 # initial position beacon_size=8 # smaller wave diff --git a/lib/libesp32/berry_animation/anim_examples/palette_demo.anim b/lib/libesp32/berry_animation/anim_examples/palette_demo.anim index e0f29af69..87e1b54d2 100644 --- a/lib/libesp32/berry_animation/anim_examples/palette_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/palette_demo.anim @@ -16,9 +16,9 @@ palette ocean_colors = [ ] # Create animations using the palettes -animation fire_anim = rich_palette_animation(colors=fire_colors, period=5s) +animation fire_anim = rich_palette(colors=fire_colors, period=5s) -animation ocean_anim = rich_palette_animation(colors=ocean_colors, period=8s) +animation ocean_anim = rich_palette(colors=ocean_colors, period=8s) # Sequence to show both palettes sequence palette_demo { diff --git a/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim b/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim index 1f8e6d4b5..765be80b9 100644 --- a/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim +++ b/lib/libesp32/berry_animation/anim_examples/palette_showcase.anim @@ -46,11 +46,11 @@ palette sunset_sky = [ # Create animations using each palette animation fire_effect = solid(color=rich_palette_color(colors=fire_gradient, period=3s)) -animation ocean_waves = rich_palette_animation(colors=ocean_depths, period=8s, transition_type=SINE, brightness=200) +animation ocean_waves = rich_palette(colors=ocean_depths, period=8s, transition_type=SINE, brightness=200) -animation aurora_lights = rich_palette_animation(colors=aurora_borealis, period=12s, transition_type=SINE, brightness=180) +animation aurora_lights = rich_palette(colors=aurora_borealis, period=12s, transition_type=SINE, brightness=180) -animation sunset_glow = rich_palette_animation(colors=sunset_sky, period=6s, transition_type=SINE, brightness=220) +animation sunset_glow = rich_palette(colors=sunset_sky, period=6s, transition_type=SINE, brightness=220) # Sequence to showcase all palettes sequence palette_showcase { diff --git a/lib/libesp32/berry_animation/anim_examples/plasma_wave.anim b/lib/libesp32/berry_animation/anim_examples/plasma_wave.anim index 6880457a6..944e1cd44 100644 --- a/lib/libesp32/berry_animation/anim_examples/plasma_wave.anim +++ b/lib/libesp32/berry_animation/anim_examples/plasma_wave.anim @@ -14,11 +14,11 @@ palette plasma_colors = [ ] # Base plasma animation with medium speed -animation plasma_base = rich_palette_animation(colors=plasma_colors, period=6s, transition_type=SINE, brightness=200) +animation plasma_base = rich_palette(colors=plasma_colors, period=6s, transition_type=SINE, brightness=200) # Add multiple wave layers for complexity color wave1_pattern = rich_palette_color(colors=plasma_colors, period=4s, transition_type=SINE, brightness=255) -animation plasma_wave1 = beacon_animation( +animation plasma_wave1 = beacon( color=wave1_pattern # color source pos=0 # initial position beacon_size=20 # wide wave @@ -28,7 +28,7 @@ plasma_wave1.priority = 10 plasma_wave1.pos = smooth(min_value=0, max_value=40, duration=8s) color wave2_pattern = rich_palette_color(colors=plasma_colors, period=5s, transition_type=SINE, brightness=180) -animation plasma_wave2 = beacon_animation( +animation plasma_wave2 = beacon( color=wave2_pattern # color source pos=45 # initial position beacon_size=15 # medium wave @@ -38,7 +38,7 @@ plasma_wave2.priority = 8 plasma_wave2.pos = smooth(min_value=45, max_value=15, duration=10s) # Opposite direction color wave3_pattern = rich_palette_color(colors=plasma_colors, period=3s, transition_type=SINE, brightness=220) -animation plasma_wave3 = beacon_animation( +animation plasma_wave3 = beacon( color=wave3_pattern # color source pos=20 # initial position beacon_size=12 # smaller wave diff --git a/lib/libesp32/berry_animation/anim_examples/police_lights.anim b/lib/libesp32/berry_animation/anim_examples/police_lights.anim index 420a6d1dc..481bc3680 100644 --- a/lib/libesp32/berry_animation/anim_examples/police_lights.anim +++ b/lib/libesp32/berry_animation/anim_examples/police_lights.anim @@ -7,7 +7,7 @@ set half_length = 30 # Left side red flashing -animation left_red = beacon_animation( +animation left_red = beacon( color=0xFF0000 # Bright red pos=15 # center of left half beacon_size=15 # half the strip @@ -17,7 +17,7 @@ left_red.priority = 10 left_red.opacity = square(min_value=0, max_value=255, duration=400ms, duty_cycle=50) # 50% duty cycle # Right side blue flashing (opposite phase) -animation right_blue = beacon_animation( +animation right_blue = beacon( color=0x0000FF # Bright blue pos=45 # center of right half beacon_size=15 # half the strip diff --git a/lib/libesp32/berry_animation/anim_examples/property_assignment_demo.anim b/lib/libesp32/berry_animation/anim_examples/property_assignment_demo.anim index b7e312292..ab7cbadfd 100644 --- a/lib/libesp32/berry_animation/anim_examples/property_assignment_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/property_assignment_demo.anim @@ -9,9 +9,9 @@ color blue_custom = 0x0000FF color green_custom = 0x00FF00 # Create animations -animation left_pulse = beacon_animation(color=red_custom, pos=15, beacon_size=15, slew_size=3) -animation center_pulse = beacon_animation(color=blue_custom, pos=30, beacon_size=15, slew_size=3) -animation right_pulse = beacon_animation(color=green_custom, pos=45, beacon_size=15, slew_size=3) +animation left_pulse = beacon(color=red_custom, pos=15, beacon_size=15, slew_size=3) +animation center_pulse = beacon(color=blue_custom, pos=30, beacon_size=15, slew_size=3) +animation right_pulse = beacon(color=green_custom, pos=45, beacon_size=15, slew_size=3) # Set different opacities left_pulse.opacity = 255 # Full slew_size diff --git a/lib/libesp32/berry_animation/anim_examples/scanner_larson.anim b/lib/libesp32/berry_animation/anim_examples/scanner_larson.anim index c024bf6b3..13144faec 100644 --- a/lib/libesp32/berry_animation/anim_examples/scanner_larson.anim +++ b/lib/libesp32/berry_animation/anim_examples/scanner_larson.anim @@ -8,7 +8,7 @@ color scanner_bg = 0x110000 animation background = solid(color=scanner_bg) # Main scanner pulse that bounces -animation scanner = beacon_animation( +animation scanner = beacon( color=0xFF0000 # Bright red pos=2 # initial position beacon_size=3 # pulse width @@ -20,7 +20,7 @@ scanner.priority = 10 scanner.pos = triangle(min_value=2, max_value=57, duration=2s) # Add trailing glow effect -animation scanner_trail = beacon_animation( +animation scanner_trail = beacon( color=0x660000 # Dim red trail pos=2 # initial position beacon_size=6 # wider trail diff --git a/lib/libesp32/berry_animation/anim_examples/sequence_assignments_demo.anim b/lib/libesp32/berry_animation/anim_examples/sequence_assignments_demo.anim index dc0c0f5d6..5502483f6 100644 --- a/lib/libesp32/berry_animation/anim_examples/sequence_assignments_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/sequence_assignments_demo.anim @@ -13,7 +13,7 @@ palette eye_palette = [red, yellow, green, violet] color eye_color = color_cycle(colors=eye_palette, period=0) # Create animations -animation red_eye = beacon_animation( +animation red_eye = beacon( color=eye_color pos=cosine_val beacon_size=3 @@ -21,7 +21,7 @@ animation red_eye = beacon_animation( priority=10 ) -animation pulse_demo = pulsating_animation( +animation pulse_demo = breathe( color=blue period=2s priority=5 diff --git a/lib/libesp32/berry_animation/anim_examples/simple_palette.anim b/lib/libesp32/berry_animation/anim_examples/simple_palette.anim index a299dfb39..77d508465 100644 --- a/lib/libesp32/berry_animation/anim_examples/simple_palette.anim +++ b/lib/libesp32/berry_animation/anim_examples/simple_palette.anim @@ -13,7 +13,7 @@ palette rainbow = [ ] # Create an animation using the palette -animation rainbow_cycle = rich_palette_animation(colors=rainbow, period=3s) +animation rainbow_cycle = rich_palette(colors=rainbow, period=3s) # Simple sequence sequence demo { diff --git a/lib/libesp32/berry_animation/anim_examples/sunrise_sunset.anim b/lib/libesp32/berry_animation/anim_examples/sunrise_sunset.anim index db3e4b59a..7ded1473a 100644 --- a/lib/libesp32/berry_animation/anim_examples/sunrise_sunset.anim +++ b/lib/libesp32/berry_animation/anim_examples/sunrise_sunset.anim @@ -17,10 +17,10 @@ palette daylight_colors = [ ] # Main daylight cycle - very slow transition -animation daylight_cycle = rich_palette_animation(colors=daylight_colors, period=60s) +animation daylight_cycle = rich_palette(colors=daylight_colors, period=60s) # Add sun position effect - bright spot that moves -animation sun_position = beacon_animation( +animation sun_position = beacon( color=0xFFFFAA # Bright yellow sun pos=5 # initial position beacon_size=8 # sun size @@ -31,7 +31,7 @@ sun_position.pos = smooth(min_value=5, max_value=55, duration=30s) # Sun arc ac sun_position.opacity = smooth(min_value=0, max_value=255, duration=30s) # Fade in and out # Add atmospheric glow around sun -animation sun_glow = beacon_animation( +animation sun_glow = beacon( color=0xFFCC88 # Warm glow pos=5 # initial position beacon_size=16 # larger glow diff --git a/lib/libesp32/berry_animation/anim_examples/template_cylon_generic.anim b/lib/libesp32/berry_animation/anim_examples/template_cylon_generic.anim index 1356a7aa2..e5c9fd3db 100644 --- a/lib/libesp32/berry_animation/anim_examples/template_cylon_generic.anim +++ b/lib/libesp32/berry_animation/anim_examples/template_cylon_generic.anim @@ -8,7 +8,7 @@ template animation cylon_effect { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) diff --git a/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim b/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim index 5da5d8ad9..f4d7280b8 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim @@ -10,7 +10,7 @@ template animation rainbow_pulse { color cycle_color = color_cycle(colors=pal1, period=period) # Create pulsing animation - animation pulse = pulsating_animation( + animation pulse = breathe( color=cycle_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim index cb369d662..6365ca0a0 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim @@ -14,7 +14,7 @@ template animation shutter_bidir { col2.next = 1 # shutter moving from left to right - animation shutter_lr_animation = beacon_animation( + animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 @@ -24,7 +24,7 @@ template animation shutter_bidir { ) # shutter moving from right to left - animation shutter_rl_animation = beacon_animation( + animation shutter_rl_animation = beacon( color = col1 back_color = col2 pos = 0 diff --git a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim index b17487698..c9fba43ac 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_central.anim @@ -14,7 +14,7 @@ template animation shutter_central { col2.next = 1 # shutter moving from left to right - animation shutter_central_animation = beacon_animation( + animation shutter_central_animation = beacon( color = col2 back_color = col1 pos = strip_len - shutter_size / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/test_template_animation.anim b/lib/libesp32/berry_animation/anim_examples/test_template_animation.anim index a0b20e828..ce636c41b 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_template_animation.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_template_animation.anim @@ -14,7 +14,7 @@ template animation shutter_central { col2.next = 1 # shutter moving in to out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len2 - (shutter_size + 1) / 2 @@ -24,7 +24,7 @@ template animation shutter_central { ) # shutter moving out to in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim b/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim index a84bbda26..c47c216bb 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim @@ -6,7 +6,7 @@ template animation pulse_effect { param period type time param brightness type percentage - animation pulse = pulsating_animation( + animation pulse = breathe( color=base_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim b/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim index a84bbda26..c47c216bb 100644 --- a/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim +++ b/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim @@ -6,7 +6,7 @@ template animation pulse_effect { param period type time param brightness type percentage - animation pulse = pulsating_animation( + animation pulse = breathe( color=base_color period=period ) diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_3_10_color_transition.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_3_10_color_transition.anim index 99ddffe40..30d6ab462 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_3_10_color_transition.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_3_10_color_transition.anim @@ -1,7 +1,7 @@ # @desc Smooth cycling through rainbow colors with custom palette -animation back = rich_palette_animation() +animation back = rich_palette() # Equivalent to -# animation back = rich_palette_animation(colors=PALETTE_PALETTE_RAINBOW, period=5s, +# animation back = rich_palette(colors=PALETTE_PALETTE_RAINBOW, period=5s, # transition_type=SINE, brightness=100%) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_10_color_pattern.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_10_color_pattern.anim index e563292e6..3428fdf0a 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_10_color_pattern.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_10_color_pattern.anim @@ -5,5 +5,5 @@ color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) # Define a gradient across the whole strip -animation back_pattern = palette_gradient_animation(color_source = rainbow_rich_color) +animation back_pattern = palette_gradient(color_source = rainbow_rich_color) run back_pattern \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_12_color_pattern_spatial_2.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_12_color_pattern_spatial_2.anim index 0c2627ca1..0796d776c 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_12_color_pattern_spatial_2.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_12_color_pattern_spatial_2.anim @@ -9,6 +9,6 @@ color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0 set strip_len = strip_length() # define a gradient across the whole strip -animation back_pattern = palette_gradient_animation(color_source = rainbow_rich_color, +animation back_pattern = palette_gradient(color_source = rainbow_rich_color, spatial_period = strip_len / 2) run back_pattern \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_15_color_pattern_spatial_osc.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_15_color_pattern_spatial_osc.anim index 60b41f874..c0be5e781 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_15_color_pattern_spatial_osc.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_15_color_pattern_spatial_osc.anim @@ -11,5 +11,5 @@ set strip_len = strip_length() set period = sine_osc(min_value = (strip_len - 1) / 2, max_value = (3 * strip_len) / 2, duration = 5s) # Define a gradient across the whole strip with variable spatial_period -animation back = palette_gradient_animation(color_source = rainbow_rich_color, spatial_period = period) +animation back = palette_gradient(color_source = rainbow_rich_color, spatial_period = period) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_18_color_pattern_spatial_rotate.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_18_color_pattern_spatial_rotate.anim index a0374065e..dde0a53c5 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_18_color_pattern_spatial_rotate.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_18_color_pattern_spatial_rotate.anim @@ -5,5 +5,5 @@ color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) # define a gradient across the whole strip -animation back = palette_gradient_animation(color_source = rainbow_rich_color, shift_period = 5s) +animation back = palette_gradient(color_source = rainbow_rich_color, shift_period = 5s) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_30_color_pattern_meter.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_30_color_pattern_meter.anim index 9f901beea..597c9a9f5 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_30_color_pattern_meter.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_30_color_pattern_meter.anim @@ -19,5 +19,5 @@ color rainbow_rich_color = rich_palette_color(colors=vue_meter_palette, period=0 set level = sawtooth(min_value = 0%, max_value=100%, duration = 2s) # Define a vue-meter based on all elements above -animation back = palette_meter_animation(color_source = rainbow_rich_color, level = level) +animation back = palette_meter(color_source = rainbow_rich_color, level = level) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_4_35_color_pattern_meter_random.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_4_35_color_pattern_meter_random.anim index 36f93546d..674c24ed6 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_4_35_color_pattern_meter_random.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_4_35_color_pattern_meter_random.anim @@ -27,5 +27,5 @@ palette vue_meter_palette = [ color rainbow_rich_color = rich_palette_color(colors=vue_meter_palette, period=0, transition_type=LINEAR) # Define a vue-meter based on all elements above -animation back = palette_meter_animation(color_source = rainbow_rich_color, level = rand_meter()) +animation back = palette_meter(color_source = rainbow_rich_color, level = rand_meter()) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_10_beacon.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_10_beacon.anim index 8076f6a09..dad531731 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_10_beacon.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_10_beacon.anim @@ -1,6 +1,6 @@ # @desc Static beacon # Simple beacon starting at pixel 6 with size of 7 pixels, no border -animation back = beacon_animation(back_color = blue, color = red, +animation back = beacon(back_color = blue, color = red, pos = 5, beacon_size = 7) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_15_beacon_slew.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_15_beacon_slew.anim index 0f093cd24..69ece68e3 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_15_beacon_slew.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_15_beacon_slew.anim @@ -1,6 +1,6 @@ # @desc Static beacon with slew # Simple beacon starting at pixel 6 with size of 7 pixels, no border -animation back = beacon_animation(back_color = blue, color = red, +animation back = beacon(back_color = blue, color = red, pos = 5, beacon_size = 7, slew_size = 3) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_20_beacon_slew_osc.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_20_beacon_slew_osc.anim index 42d23c930..d46382eb5 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_20_beacon_slew_osc.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_20_beacon_slew_osc.anim @@ -4,6 +4,6 @@ set slew = cosine_osc(min_value = 0, max_value = 4, duration = 2s) # Simple beacon starting at pixel 6 with size of 7 pixels, no border -animation back = beacon_animation(back_color = blue, color = red, +animation back = beacon(back_color = blue, color = red, pos = 5, beacon_size = 7, slew_size = slew) run back \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_30_cylon.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_30_cylon.anim index bf074707f..ca21e96e4 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_30_cylon.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_30_cylon.anim @@ -4,7 +4,7 @@ set strip_len = strip_length() # In this example, the 'cosine_osc' is created within the call -animation back = beacon_animation( +animation back = beacon( color = red pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_40_cylon_rainbow.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_40_cylon_rainbow.anim index f445a8d32..83b8e92fe 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_40_cylon_rainbow.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_40_cylon_rainbow.anim @@ -15,7 +15,7 @@ animation stars = twinkle( run stars # We can combine a dynamic 'pos' value with a dynamic 'color' -animation back = beacon_animation( +animation back = beacon( color = rich_palette_color(colors=PALETTE_RAINBOW_W2, period=5s) pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_5_50_cylon_as_opacity.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_5_50_cylon_as_opacity.anim index 5b2fdb896..c93a39e8c 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_5_50_cylon_as_opacity.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_5_50_cylon_as_opacity.anim @@ -11,7 +11,7 @@ palette red_blue_red_palette = [ red, 0x3333FF, red ] color red_blue_red_color = rich_palette_color(colors=red_blue_red_palette) # Define a moving beacon to be used as an opacity mask -animation moving_eye = beacon_animation( +animation moving_eye = beacon( color = white # the color is not important, only the opacity counts here pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye @@ -19,7 +19,7 @@ animation moving_eye = beacon_animation( ) # The palette gradient animation is used with an animation as opacity -animation eye_pattern = palette_gradient_animation( +animation eye_pattern = palette_gradient( color_source = red_blue_red_color # the beacon animation used as opacity # spatial_period = strip_len # implicit opacity = moving_eye diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_6_10_shutter.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_6_10_shutter.anim index a1f0cef25..51e7d2b1a 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_6_10_shutter.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_6_10_shutter.anim @@ -7,8 +7,8 @@ set strip_len = strip_length() set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = 1.5s) -# Using beacon_animation to move a shutter from left to right - animation shutter_lr_animation = beacon_animation( +# Using beacon to move a shutter from left to right + animation shutter_lr_animation = beacon( color = red back_color = blue pos = 0 # Start from position 0 (left) diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_6_20_shutter_rotating_colors.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_6_20_shutter_rotating_colors.anim index d51e87ca9..6edd4274b 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_6_20_shutter_rotating_colors.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_6_20_shutter_rotating_colors.anim @@ -16,8 +16,8 @@ color col1 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # Writing 1 to 'next' actually advances the color -# Using beacon_animation to move a shutter from left to right -animation shutter_lr_animation = beacon_animation( +# Using beacon to move a shutter from left to right +animation shutter_lr_animation = beacon( color = col2 # Use two rotating colors back_color = col1 # Use two rotating colors pos = 0 # Start from position 0 (left) diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_6_30_shutter_central_rotating_colors.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_6_30_shutter_central_rotating_colors.anim index 9f23ca636..587142ac3 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_6_30_shutter_central_rotating_colors.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_6_30_shutter_central_rotating_colors.anim @@ -17,8 +17,8 @@ color col1 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # Writing 1 to 'next' actually advances the color -# Using beacon_animation to move a shutter from in to out -animation shutter_inout_animation = beacon_animation( +# Using beacon to move a shutter from in to out +animation shutter_inout_animation = beacon( color = col2 # Use two rotating colors back_color = col1 # Use two rotating colors pos = strip_len_2 - (shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_6_40_shutter_central_inoutin.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_6_40_shutter_central_inoutin.anim index 99a487c37..29201d043 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_6_40_shutter_central_inoutin.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_6_40_shutter_central_inoutin.anim @@ -17,8 +17,8 @@ color col1 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # Writing 1 to 'next' actually advances the color -# Using beacon_animation to move a shutter from in to out -animation shutter_inout_animation = beacon_animation( +# Using beacon to move a shutter from in to out +animation shutter_inout_animation = beacon( color = col2 # Use two rotating colors back_color = col1 # Use two rotating colors pos = strip_len_2 - (shutter_size + 1) / 2 @@ -26,7 +26,7 @@ animation shutter_inout_animation = beacon_animation( ) # Similar but out to in -animation shutter_outin_animation = beacon_animation( +animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len_2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_7_10_crenel.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_7_10_crenel.anim index fde8e3741..5eb78caec 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_7_10_crenel.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_7_10_crenel.anim @@ -1,7 +1,7 @@ # @desc Crenel static # Define a simple crenel 2+2 red/blue -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = 2 diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_7_20_crenel_nb_pulses.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_7_20_crenel_nb_pulses.anim index 7fbffced7..5aaae9a61 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_7_20_crenel_nb_pulses.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_7_20_crenel_nb_pulses.anim @@ -6,7 +6,7 @@ set max_pulses = (strip_len + period - 1) / period set nb_pulse = triangle(min_value = 0, max_value = max_pulses, duration = 2s) -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = 2 diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_7_30_crenel_size.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_7_30_crenel_size.anim index f0d141c3a..118ded913 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_7_30_crenel_size.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_7_30_crenel_size.anim @@ -4,7 +4,7 @@ set pulse_size = triangle(min_value = 0, max_value = 4, duration = 2s) # Define a simple crenel 2+2 red/blue -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = pulse_size diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_7_40_crenel_colors.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_7_40_crenel_colors.anim index 9a17afa34..bb6374c23 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_7_40_crenel_colors.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_7_40_crenel_colors.anim @@ -4,7 +4,7 @@ color rainbow_color = rich_palette_color(colors=PALETTE_RAINBOW_W2, period=5s) # Define a simple crenel 2+2 -animation back = crenel_animation( +animation back = crenel( color = rainbow_color back_color = blue pulse_size = 2 diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_7_50_crenel_opacity.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_7_50_crenel_opacity.anim index 78c7bf4fd..af9f34fa6 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_7_50_crenel_opacity.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_7_50_crenel_opacity.anim @@ -5,7 +5,7 @@ animation back = solid(color = blue, priority = 20) run back # Define a simple crenel 2+2 opaque/transparent -animation mask = crenel_animation( +animation mask = crenel( color = white # plain color since it's used as opacity mask back_color = transparent # background is transparent pulse_size = 2 @@ -15,7 +15,7 @@ animation mask = crenel_animation( # Define a smooth palette using PALETTE_RAINBOW_W (7 colors + white) color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) # Define a gradient across the whole strip and use crenel as opacity mask -animation pattern = palette_gradient_animation( +animation pattern = palette_gradient( color_source = rainbow_rich_color # use the rainow pattern shift_period = 2s # shifting over 2s opacity = mask # mask it with crenel pattern diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_8_10_template_cylon_simple.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_8_10_template_cylon_simple.anim index e7c6e68e8..ba6499b5d 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_8_10_template_cylon_simple.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_8_10_template_cylon_simple.anim @@ -9,7 +9,7 @@ template animation cylon_eye { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_8_30_template_shutter_bidir_flags.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_8_30_template_shutter_bidir_flags.anim index b4055be91..dff3a4dd3 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_8_30_template_shutter_bidir_flags.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_8_30_template_shutter_bidir_flags.anim @@ -21,7 +21,7 @@ template animation shutter_bidir { col2.next = 1 # move 'col2' to the next color so it's shifte by one compared to 'col1' # Shutter moving in in-out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 # Use two rotating colors back_color = col1 # Use two rotating colors pos = strip_len_2 - (shutter_size + 1) / 2 @@ -29,7 +29,7 @@ template animation shutter_bidir { ) # shutter moving in out-in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len_2 - (strip_len - shutter_size + 1) / 2 diff --git a/lib/libesp32/berry_animation/animation_docs/Animation_Class_Hierarchy.md b/lib/libesp32/berry_animation/animation_docs/Animation_Class_Hierarchy.md index 7e82b4541..3a308ee31 100644 --- a/lib/libesp32/berry_animation/animation_docs/Animation_Class_Hierarchy.md +++ b/lib/libesp32/berry_animation/animation_docs/Animation_Class_Hierarchy.md @@ -18,20 +18,18 @@ parameterized_object (base class with parameter management and playable interfac ├── Animation (unified base class for all visual elements) │ ├── engine_proxy (combines rendering and orchestration) │ │ └── (user-defined template animations) -│ ├── SolidAnimation (solid color fill) -│ ├── BeaconAnimation (pulse at specific position) -│ ├── CrenelPositionAnimation (crenel/square wave pattern) -│ ├── BreatheAnimation (breathing effect) -│ ├── BeaconAnimation (pulse at specific position) -│ │ └── GradientAnimation (linear/radial color gradients) -│ ├── PaletteGradientAnimation (gradient patterns with palette colors) -│ │ ├── PaletteMeterAnimation (meter/bar patterns) -│ │ └── GradientMeterAnimation (VU meter with gradient colors and peak hold) -│ ├── CometAnimation (moving comet with tail) -│ ├── FireAnimation (realistic fire effect) +│ ├── solid (solid color fill) +│ ├── crenel (crenel/square wave pattern) +│ ├── breathe (breathing effect) +│ ├── beacon (pulse at specific position) +│ │ └── gradient (linear/radial color gradients) +│ ├── palette_gradient (gradient patterns with palette colors) +│ │ └── palette_meter (VU meter with gradient colors and peak hold) +│ ├── comet (moving comet with tail) +│ ├── fire (realistic fire effect) │ ├── twinkle (twinkling stars effect) -│ ├── WaveAnimation (wave motion effects) -│ └── RichPaletteAnimation (smooth palette transitions) +│ ├── wave (wave motion effects) +│ └── rich_palette (smooth palette transitions) ├── sequence_manager (orchestrates animation sequences) └── value_provider (dynamic value generation) ├── static_value (wraps static values) @@ -41,7 +39,7 @@ parameterized_object (base class with parameter management and playable interfac ├── closure_value (computed values, internal use only) └── color_provider (dynamic color generation) ├── static_color (solid color) - ├── ColorCycleColorProvider (cycles through palette) + ├── color_cycle (cycles through palette) ├── rich_palette_color (smooth palette transitions) └── breathe_color (breathing color effect) ``` @@ -323,7 +321,7 @@ These methods are automatically available in DSL computed expressions: ```berry # Example: Dynamic brightness based on strip position set strip_len = strip_length() -animation pulse = pulsating_animation( +animation pulse = breathe( color=red brightness=strip_len / 4 + 50 # Uses built-in arithmetic ) @@ -379,7 +377,7 @@ color static_accent = solid(color=accent) **Note**: The `solid()` function is the recommended shorthand for `static_color()`. -### ColorCycleColorProvider +### color_cycle Cycles through a palette of colors with brutal switching. Inherits from `color_provider`. @@ -524,7 +522,7 @@ color breathing_rainbow = breathe_color( All animation classes extend the base `Animation` class and inherit its parameters. -### BreatheAnimation +### breathe Creates a smooth breathing effect with natural breathing curves. Inherits from `Animation`. @@ -537,9 +535,9 @@ Creates a smooth breathing effect with natural breathing curves. Inherits from ` | `curve_factor` | int | 2 | 1-5 | Breathing curve shape (higher = sharper) | | *(inherits all Animation parameters)* | | | | | -**Factory**: `animation.breathe_animation(engine)` +**Factory**: `animation.breathe(engine)` -### CometAnimation +### comet Creates a comet effect with a bright head and fading tail. Inherits from `Animation`. @@ -553,12 +551,12 @@ Creates a comet effect with a bright head and fading tail. Inherits from `Animat | `fade_factor` | int | 179 | 0-255 | How quickly the tail fades | | *(inherits all Animation parameters)* | | | | | -**Factory**: `animation.comet_animation(engine)` +**Factory**: `animation.comet(engine)` -### FireAnimation +### fire Creates a realistic fire effect with flickering flames. Inherits from `Animation`. @@ -572,11 +570,11 @@ Creates a realistic fire effect with flickering flames. Inherits from `Animation | `sparking_rate` | int | 120 | 0-255 | Rate of new spark generation | | *(inherits all Animation parameters)* | | | | | -**Factory**: `animation.fire_animation(engine)` +**Factory**: `animation.fire(engine)` -### GradientAnimation +### gradient -Creates smooth two-color gradients. Subclass of `BeaconAnimation` that uses beacon slew regions to create gradient effects. +Creates smooth two-color gradients. Subclass of `beacon` that uses beacon slew regions to create gradient effects. | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| @@ -584,7 +582,7 @@ Creates smooth two-color gradients. Subclass of `BeaconAnimation` that uses beac | `color2` | int | 0xFF0000FF | - | Second color (default blue) | | `direction` | int | 0 | enum: [0, 1] | 0=forward (color1→color2), 1=reverse (color2→color1) | | `gradient_type` | int | 0 | enum: [0, 1] | 0=linear, 1=radial | -| *(inherits all BeaconAnimation parameters)* | | | | | +| *(inherits all beacon parameters)* | | | | | **Gradient Types:** - **Linear (0)**: Creates a 2-color gradient from `color1` to `color2` (or reversed if `direction=1`). Implemented as the left slew of a large beacon positioned at the right edge. @@ -594,17 +592,17 @@ Creates smooth two-color gradients. Subclass of `BeaconAnimation` that uses beac - Linear gradient uses a beacon with `beacon_size=1000` (off-screen) and `slew_size=strip_length` - Radial gradient uses a centered beacon with `beacon_size=1` and `slew_size=strip_length/2` -**Factory**: `animation.gradient_animation(engine)` +**Factory**: `animation.gradient(engine)` -### GradientMeterAnimation +### palette_meter -VU meter style animation that displays a gradient-colored bar from the start of the strip up to a configurable level. Includes optional peak hold indicator. Inherits from `PaletteGradientAnimation`. +VU meter style animation that displays a gradient-colored bar from the start of the strip up to a configurable level. Includes optional peak hold indicator. Inherits from `palette_gradient`. | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| | `level` | int | 255 | 0-255 | Current meter level (0=empty, 255=full) | | `peak_hold` | int | 1000 | min: 0 | Peak hold time in ms (0=disabled) | -| *(inherits all PaletteGradientAnimation parameters)* | | | | | +| *(inherits all palette_gradient parameters)* | | | | | #### Visual Representation @@ -651,9 +649,9 @@ Creates a pulsing effect oscillating between min and max brightness. Inherits fr | `period` | int | 1000 | min: 100 | Pulse period in milliseconds | | *(inherits all Animation parameters)* | | | | | -**Factory**: `animation.pulsating_animation(engine)` +**Factory**: `animation.breathe(engine)` -### BeaconAnimation +### beacon Creates a pulse effect at a specific position with optional fade regions. Inherits from `Animation`. @@ -726,7 +724,7 @@ The effective left position is calculated as: ```berry # Sharp pulse at left edge (right_edge=0, default) -animation left_pulse = beacon_animation( +animation left_pulse = beacon( color=red, pos=0, beacon_size=3, @@ -736,7 +734,7 @@ animation left_pulse = beacon_animation( # Shows 3 red pixels at positions 0, 1, 2 # Pulse from right edge -animation right_pulse = beacon_animation( +animation right_pulse = beacon( color=blue, pos=0, beacon_size=3, @@ -747,7 +745,7 @@ animation right_pulse = beacon_animation( # (positions strip_length-3, strip_length-2, strip_length-1) # Soft pulse with fade regions -animation soft_pulse = beacon_animation( +animation soft_pulse = beacon( color=green, pos=5, beacon_size=2, @@ -757,7 +755,7 @@ animation soft_pulse = beacon_animation( # Spotlight effect color dark_blue = 0xFF000040 -animation spotlight = beacon_animation( +animation spotlight = beacon( color=white, back_color=dark_blue, pos=15, @@ -773,7 +771,7 @@ run spotlight **Spotlight Effects:** ```berry # Moving spotlight with soft edges -animation moving_spotlight = beacon_animation( +animation moving_spotlight = beacon( color=white, back_color=0xFF000040, beacon_size=1, @@ -785,7 +783,7 @@ moving_spotlight.pos = triangle(min_value=0, max_value=29, period=3s) **Position Markers:** ```berry # Sharp position marker -animation position_marker = beacon_animation( +animation position_marker = beacon( color=red, pos=15, beacon_size=1, @@ -796,7 +794,7 @@ animation position_marker = beacon_animation( **Breathing Spots:** ```berry # Breathing effect at specific position -animation breathing_spot = beacon_animation( +animation breathing_spot = beacon( color=blue, pos=10, beacon_size=3, @@ -811,14 +809,14 @@ breathing_spot.opacity = smooth(min_value=50, max_value=255, period=2s) set strip_len = strip_length() set sweep = triangle(min_value=0, max_value=strip_len/2, period=2s) -animation left_beacon = beacon_animation( +animation left_beacon = beacon( color=red, beacon_size=2, right_edge=0 ) left_beacon.pos = sweep -animation right_beacon = beacon_animation( +animation right_beacon = beacon( color=blue, beacon_size=2, right_edge=1 @@ -829,9 +827,9 @@ run left_beacon run right_beacon ``` -**Factory**: `animation.beacon_animation(engine)` +**Factory**: `animation.beacon(engine)` -### CrenelPositionAnimation +### crenel Creates a crenel (square wave) pattern with repeating rectangular pulses. Inherits from `Animation`. @@ -888,7 +886,7 @@ The full period of the pattern is `pulse_size + low_size` pixels. **Status Indicators:** ```berry # Slow blinking pattern for status indication -animation status_indicator = crenel_animation( +animation status_indicator = crenel( color=green, pulse_size=1, low_size=9 @@ -898,7 +896,7 @@ animation status_indicator = crenel_animation( **Rhythmic Effects:** ```berry # Fast rhythmic pattern -animation rhythm_pattern = crenel_animation( +animation rhythm_pattern = crenel( color=red, pulse_size=2, low_size=2 @@ -909,7 +907,7 @@ animation rhythm_pattern = crenel_animation( ```berry # Decorative border pattern color gold = 0xFFFFD700 -animation border_pattern = crenel_animation( +animation border_pattern = crenel( color=gold, pulse_size=3, low_size=1, @@ -920,7 +918,7 @@ animation border_pattern = crenel_animation( **Progress Indicators:** ```berry # Progress bar with limited pulses -animation progress_bar = crenel_animation( +animation progress_bar = crenel( color=0xFF0080FF, pulse_size=2, low_size=1, @@ -936,9 +934,9 @@ animation progress_bar = crenel_animation( - **Framework Integration**: Seamless integration with animation engine - **Testing**: Comprehensive test suite covering edge cases and performance -**Factory**: `animation.crenel_animation(engine)` +**Factory**: `animation.crenel(engine)` -### RichPaletteAnimation +### rich_palette Creates smooth color transitions using rich palette data with direct parameter access. Inherits from `Animation`. @@ -955,7 +953,7 @@ Creates smooth color transitions using rich palette data with direct parameter a - Parameters are automatically forwarded to internal `rich_palette_color` - Access to specialized methods via `anim.color_provider.method_name()` -**Factory**: `animation.rich_palette_animation(engine)` +**Factory**: `animation.rich_palette(engine)` ### twinkle @@ -973,7 +971,7 @@ Creates a twinkling stars effect with random lights appearing and fading. Inheri **Factories**: `animation.twinkle(engine)` -### WaveAnimation +### wave Creates mathematical waveforms that can move along the LED strip. Perfect for rhythmic patterns, breathing effects, or mathematical visualizations. Inherits from `Animation`. @@ -1023,7 +1021,7 @@ Creates mathematical waveforms that can move along the LED strip. Perfect for rh ```berry # Rainbow sine wave -animation rainbow_wave = wave_animation( +animation rainbow_wave = wave( wave_type=0, frequency=40, wave_speed=80, @@ -1031,7 +1029,7 @@ animation rainbow_wave = wave_animation( ) # Green breathing effect -animation breathing = wave_animation( +animation breathing = wave( color=green, wave_type=0, amplitude=150, @@ -1040,7 +1038,7 @@ animation breathing = wave_animation( ) # Fast square wave strobe -animation strobe = wave_animation( +animation strobe = wave( color=white, wave_type=2, frequency=80, @@ -1058,7 +1056,7 @@ animation strobe = wave_animation( -### PaletteGradientAnimation +### palette_gradient Creates shifting gradient patterns with palette colors. Inherits from `Animation`. @@ -1087,16 +1085,16 @@ Creates shifting gradient patterns with palette colors. Inherits from `Animation - **phase_shift**: Shifts the gradient pattern spatially by a percentage of the spatial period - Each pixel's value calculated using optimized fixed-point arithmetic -**Factory**: `animation.palette_gradient_animation(engine)` +**Factory**: `animation.palette_gradient(engine)` ### PaletteMeterAnimation -Creates meter/bar patterns based on a value function. Inherits from `PaletteGradientAnimation`. +Creates meter/bar patterns based on a value function. Inherits from `palette_gradient`. | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| | `value_func` | function | nil | - | Function that provides meter values (0-255 range) | -| *(inherits all PaletteGradientAnimation parameters)* | | | | | +| *(inherits all palette_gradient parameters)* | | | | | **Pattern Generation:** - Value function signature: `value_func(engine, time_ms, self)` where: @@ -1107,7 +1105,7 @@ Creates meter/bar patterns based on a value function. Inherits from `PaletteGrad - Pixels within meter range get value 255, others get value 0 - Meter position calculated as: `position = tasmota.scale_uint(value, 0, 255, 0, strip_length)` -**Factory**: `animation.palette_meter_animation(engine)` +**Factory**: `animation.palette_meter(engine)` ## Motion Effects @@ -1119,16 +1117,16 @@ Motion effects can be chained to create sophisticated transformations: ```berry # Base animation -animation base_pulse = pulsating_animation(color=blue, period=3s) +animation base_pulse = breathe(color=blue, period=3s) # Simple animation composition -animation fire_effect = fire_animation( +animation fire_effect = fire( color=fire_colors, intensity=180, flicker_speed=8 ) -animation gradient_wave = gradient_animation( +animation gradient_wave = gradient( color=rainbow_cycle, gradient_type=0, movement_speed=50 diff --git a/lib/libesp32/berry_animation/animation_docs/Animation_Development.md b/lib/libesp32/berry_animation/animation_docs/Animation_Development.md index 9603e35a8..eda425e51 100644 --- a/lib/libesp32/berry_animation/animation_docs/Animation_Development.md +++ b/lib/libesp32/berry_animation/animation_docs/Animation_Development.md @@ -445,13 +445,13 @@ for i: 0..(frame.width-1) end ``` -## Complete Example: BeaconAnimation +## Complete Example: beacon Here's a complete example showing all concepts: ```berry -#@ solidify:BeaconAnimation,weak -class BeaconAnimation : animation.animation +#@ solidify:beacon,weak +class beacon : animation.animation # NO instance variables for parameters - they are handled by the virtual parameter system # Parameter definitions following the new specification @@ -575,12 +575,12 @@ class BeaconAnimation : animation.animation # String representation of the animation def tostring() - return f"BeaconAnimation(color=0x{self.color :08x}, pos={self.pos}, beacon_size={self.beacon_size}, slew_size={self.slew_size})" + return f"beacon(color=0x{self.color :08x}, pos={self.pos}, beacon_size={self.beacon_size}, slew_size={self.slew_size})" end end # Export class directly - no redundant factory function needed -return {'beacon_animation': BeaconAnimation} +return {'beacon': beacon} ``` ## Testing Your Animation diff --git a/lib/libesp32/berry_animation/animation_docs/Animation_Tutorial.md b/lib/libesp32/berry_animation/animation_docs/Animation_Tutorial.md index b2aa75579..6348ba77a 100644 --- a/lib/libesp32/berry_animation/animation_docs/Animation_Tutorial.md +++ b/lib/libesp32/berry_animation/animation_docs/Animation_Tutorial.md @@ -31,7 +31,7 @@ Traditional LED programming requires managing frame buffers, timing loops, and c - **No timing code** - Just specify durations like `period=2s` and the framework handles the rest - **No state machines** - Animations automatically manage their internal state - **Composable** - Layer multiple animations, use one as an opacity mask for another -- **Readable** - Code reads almost like English: "animation pulse = breathe_animation(color=red, period=2s)" +- **Readable** - Code reads almost like English: "animation pulse = breathe(color=red, period=2s)" ### Key Concepts @@ -39,7 +39,7 @@ Before diving into code, let's understand the building blocks: | Concept | What It Does | Example | |---------|--------------|---------| -| **Animation** | A visual effect on the LED strip | `solid`, `twinkle`, `beacon_animation` | +| **Animation** | A visual effect on the LED strip | `solid`, `twinkle`, `beacon` | | **Color** | Either a static value or a dynamic provider that changes over time | `red`, `0xFF0000`, `color_cycle(...)` | | **Palette** | A collection of colors for gradients or cycling | `PALETTE_RAINBOW`, custom arrays | | **Value Provider** | A number that changes over time (oscillates) | `sine_osc`, `triangle`, `sawtooth` | @@ -265,14 +265,14 @@ Chapter 2 showed `color_cycle`, which steps discretely between colors. This chap Rich Palette -The `rich_palette_animation` is a complete animation that handles both the color transitions and rendering. It's the easiest way to get smooth rainbow effects. +The `rich_palette` is a complete animation that handles both the color transitions and rendering. It's the easiest way to get smooth rainbow effects. ```berry # Smooth cycling through rainbow colors -animation back = rich_palette_animation() +animation back = rich_palette() # Equivalent to: -# animation back = rich_palette_animation(colors=PALETTE_RAINBOW, period=5s, +# animation back = rich_palette(colors=PALETTE_RAINBOW, period=5s, # transition_type=SINE, brightness=100%) run back ``` @@ -327,7 +327,7 @@ The key insight is that color providers can work in two dimensions: Color Pattern -A gradient maps colors to positions along the strip. The `palette_gradient_animation` does exactly this. +A gradient maps colors to positions along the strip. The `palette_gradient` does exactly this. ```berry # Rainbow pattern across the strip @@ -336,7 +336,7 @@ A gradient maps colors to positions along the strip. The `palette_gradient_anima color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) # Create a gradient across the whole strip -animation back_pattern = palette_gradient_animation(color_source = rainbow_rich_color) +animation back_pattern = palette_gradient(color_source = rainbow_rich_color) run back_pattern ``` @@ -357,7 +357,7 @@ color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0 set strip_len = strip_length() # Create gradient with half the strip length as spatial period -animation back_pattern = palette_gradient_animation( +animation back_pattern = palette_gradient( color_source = rainbow_rich_color spatial_period = strip_len / 2 ) @@ -385,7 +385,7 @@ set strip_len = strip_length() # Oscillate spatial period between 1/2 and 3/2 of strip length set period = sine_osc(min_value = (strip_len - 1) / 2, max_value = (3 * strip_len) / 2, duration = 5s) -animation back = palette_gradient_animation(color_source = rainbow_rich_color, spatial_period = period) +animation back = palette_gradient(color_source = rainbow_rich_color, spatial_period = period) run back ``` @@ -413,7 +413,7 @@ Make the gradient rotate along the strip: color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) -animation back = palette_gradient_animation( +animation back = palette_gradient( color_source = rainbow_rich_color shift_period = 5s # Complete rotation in 5 seconds ) @@ -449,7 +449,7 @@ color rainbow_rich_color = rich_palette_color(colors=vue_meter_palette, period=0 set level = sawtooth(min_value = 0%, max_value=100%, duration = 2s) # Create the meter animation -animation back = palette_meter_animation(color_source = rainbow_rich_color, level = level) +animation back = palette_meter(color_source = rainbow_rich_color, level = level) run back ``` @@ -499,7 +499,7 @@ color rainbow_rich_color = rich_palette_color(colors=vue_meter_palette, period=0 # Step 3: Use the custom function as a parameter # Call it with () - the engine parameter is passed automatically -animation back = palette_meter_animation(color_source = rainbow_rich_color, level = rand_meter()) +animation back = palette_meter(color_source = rainbow_rich_color, level = rand_meter()) run back ``` @@ -530,7 +530,7 @@ Let's start with a stationary beacon - a red highlight on a blue background. ```berry # Static beacon -animation back = beacon_animation( +animation back = beacon( back_color = blue color = red pos = 5 # Start at pixel 5 @@ -557,7 +557,7 @@ Hard edges can look harsh. The `slew_size` parameter adds a gradual fade on each ```berry # Static beacon with slew -animation back = beacon_animation( +animation back = beacon( back_color = blue color = red pos = 5 @@ -578,7 +578,7 @@ Remember: any numeric parameter can be replaced with a value provider. Here we m set slew = cosine_osc(min_value = 0, max_value = 4, duration = 2s) -animation back = beacon_animation( +animation back = beacon( back_color = blue color = red pos = 5 @@ -599,7 +599,7 @@ Now for the classic effect: a beacon that moves back and forth across the strip. set strip_len = strip_length() -animation back = beacon_animation( +animation back = beacon( color = red pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 # small 3 pixels eye @@ -647,7 +647,7 @@ run stars # Moving beacon with dynamic color # back_color defaults to transparent, so stars show through -animation back = beacon_animation( +animation back = beacon( color = rich_palette_color(colors=PALETTE_RAINBOW_W2, period=5s) pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 @@ -690,7 +690,7 @@ color red_blue_red_color = rich_palette_color(colors=red_blue_red_palette) # Moving beacon as opacity mask # The color is white but it doesn't matter - only brightness counts -animation moving_eye = beacon_animation( +animation moving_eye = beacon( color = white # Color doesn't matter, only brightness/alpha pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = 5s) beacon_size = 3 @@ -699,7 +699,7 @@ animation moving_eye = beacon_animation( # Apply the mask to a gradient # The gradient exists everywhere, but only shows where the beacon is -animation eye_pattern = palette_gradient_animation( +animation eye_pattern = palette_gradient( color_source = red_blue_red_color opacity = moving_eye # Use beacon as opacity mask ) @@ -734,7 +734,7 @@ set strip_len = strip_length() # Sawtooth from 0 to strip_len - grows linearly, then resets set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = 1.5s) -animation shutter_lr_animation = beacon_animation( +animation shutter_lr_animation = beacon( color = red back_color = blue pos = 0 # Start from left @@ -770,7 +770,7 @@ color col1 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # Shift col2 by one color at startup -animation shutter_lr_animation = beacon_animation( +animation shutter_lr_animation = beacon( color = col2 back_color = col1 pos = 0 @@ -840,7 +840,7 @@ color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # Position calculated to center the beacon as it grows -animation shutter_inout_animation = beacon_animation( +animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len_2 - (shutter_size + 1) / 2 @@ -893,7 +893,7 @@ color col2 = color_cycle(colors=PALETTE_RAINBOW_W, period=0) col2.next = 1 # In-out animation: beacon grows from center outward -animation shutter_inout_animation = beacon_animation( +animation shutter_inout_animation = beacon( color = col2 back_color = col1 pos = strip_len_2 - (shutter_size + 1) / 2 @@ -902,7 +902,7 @@ animation shutter_inout_animation = beacon_animation( # Out-in animation: beacon shrinks from edges toward center # Uses inverted size (strip_len - shutter_size) and swapped colors -animation shutter_outin_animation = beacon_animation( +animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len_2 - (strip_len - shutter_size + 1) / 2 @@ -960,7 +960,7 @@ The pattern repeats with a period of `pulse_size + low_size` pixels. ```berry # Static crenel pattern -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = 2 # 2 pixels of 'color' @@ -988,7 +988,7 @@ set max_pulses = (strip_len + period - 1) / period set nb_pulse = triangle(min_value = 0, max_value = max_pulses, duration = 2s) -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = 2 @@ -1009,7 +1009,7 @@ Instead of a fixed `pulse_size`, you can use a value provider to animate the pul set pulse_size = triangle(min_value = 0, max_value = 4, duration = 2s) -animation back = crenel_animation( +animation back = crenel( color = red back_color = blue pulse_size = pulse_size @@ -1029,7 +1029,7 @@ The `color` parameter also accepts a color provider instead of a static color. T color rainbow_color = rich_palette_color(colors=PALETTE_RAINBOW_W2, period=5s) -animation back = crenel_animation( +animation back = crenel( color = rainbow_color back_color = blue pulse_size = 2 @@ -1066,7 +1066,7 @@ animation back = solid(color = blue, priority = 20) run back # Crenel mask (white = visible, transparent = hidden) -animation mask = crenel_animation( +animation mask = crenel( color = white back_color = transparent pulse_size = 2 @@ -1075,7 +1075,7 @@ animation mask = crenel_animation( # Rainbow gradient masked by crenel color rainbow_rich_color = rich_palette_color(colors=PALETTE_RAINBOW_W, period=0) -animation pattern = palette_gradient_animation( +animation pattern = palette_gradient( color_source = rainbow_rich_color shift_period = 2s # Rotating gradient opacity = mask # Apply crenel mask @@ -1096,7 +1096,7 @@ Think of templates like functions in programming: define once, use many times wi Template Cylon -The `template animation` keyword creates a new animation type that can be instantiated just like built-in animations (`solid`, `beacon_animation`, etc.). Once defined, you use it by calling `animation my_anim = template_name(param1=value1, ...)` - exactly like native animations. +The `template animation` keyword creates a new animation type that can be instantiated just like built-in animations (`solid`, `beacon`, etc.). Once defined, you use it by calling `animation my_anim = template_name(param1=value1, ...)` - exactly like native animations. **Defining parameters:** @@ -1137,7 +1137,7 @@ template animation cylon_eye { set strip_len = strip_length() - animation eye_animation = beacon_animation( + animation eye_animation = beacon( color = eye_color back_color = back_color pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = period) @@ -1218,7 +1218,7 @@ template animation shutter_bidir { col2.next = 1 # move 'col2' to the next color so it's shifte by one compared to 'col1' # Shutter moving in in-out - animation shutter_inout_animation = beacon_animation( + animation shutter_inout_animation = beacon( color = col2 # Use two rotating colors back_color = col1 # Use two rotating colors pos = strip_len_2 - (shutter_size + 1) / 2 @@ -1226,7 +1226,7 @@ template animation shutter_bidir { ) # shutter moving in out-in - animation shutter_outin_animation = beacon_animation( + animation shutter_outin_animation = beacon( color = col1 back_color = col2 pos = strip_len_2 - (strip_len - shutter_size + 1) / 2 @@ -1280,13 +1280,13 @@ run main |-----------|-------------|----------------| | `solid` | Solid color fill | `color` | | `twinkle` | Twinkling stars effect | `color`, `density`, `twinkle_speed`, `fade_speed` | -| `beacon_animation` | Positioned pulse/highlight | `color`, `pos`, `beacon_size`, `slew_size` | -| `crenel_animation` | Square wave pattern | `color`, `back_color`, `pulse_size`, `low_size` | -| `rich_palette_animation` | Smooth palette cycling | `colors`, `period`, `transition_type` | -| `palette_gradient_animation` | Gradient across strip | `color_source`, `spatial_period`, `shift_period` | -| `palette_meter_animation` | VU-meter style bar | `color_source`, `level` | -| `breathe_animation` | Breathing/pulsing effect | `color`, `period` | -| `comet_animation` | Moving comet with tail | `color`, `tail_length`, `speed` | +| `beacon` | Positioned pulse/highlight | `color`, `pos`, `beacon_size`, `slew_size` | +| `crenel` | Square wave pattern | `color`, `back_color`, `pulse_size`, `low_size` | +| `rich_palette` | Smooth palette cycling | `colors`, `period`, `transition_type` | +| `palette_gradient` | Gradient across strip | `color_source`, `spatial_period`, `shift_period` | +| `palette_meter` | VU-meter style bar | `color_source`, `level` | +| `breathe` | Breathing/pulsing effect | `color`, `period` | +| `comet` | Moving comet with tail | `color`, `tail_length`, `speed` | ### Colors diff --git a/lib/libesp32/berry_animation/animation_docs/Dsl_Reference.md b/lib/libesp32/berry_animation/animation_docs/Dsl_Reference.md index f753f26ac..3029ef018 100644 --- a/lib/libesp32/berry_animation/animation_docs/Dsl_Reference.md +++ b/lib/libesp32/berry_animation/animation_docs/Dsl_Reference.md @@ -33,7 +33,7 @@ color bordeaux = 0x6F2C4F color majorelle = 0x6050DC # Animation definitions -animation pulse_bordeaux = pulsating_animation(color=bordeaux, period=2s) +animation pulse_bordeaux = breathe(color=bordeaux, period=2s) # Property assignments pulse_red.priority = 10 @@ -284,7 +284,7 @@ end **Example with DSL Integration:** ```berry -animation pulse = pulsating_animation(color=red, period=2s) +animation pulse = breathe(color=red, period=2s) berry """ # Modify animation using Berry code @@ -322,7 +322,7 @@ extern function rand_meter extern function breathing_effect # Now they can be used in DSL expressions -animation back_pattern = palette_meter_animation(value_func = rand_meter) +animation back_pattern = palette_meter(value_func = rand_meter) animation breathing_light = solid(color=blue) breathing_light.opacity = breathing_effect @@ -498,12 +498,12 @@ The `animation` keyword defines instances of animation classes (subclasses of An ```berry animation red_solid = solid(color=red) -animation pulse_effect = pulsating_animation( +animation pulse_effect = breathe( color=blue period=2s ) -animation comet_trail = comet_animation( +animation comet_trail = comet( color=white tail_length=10 speed=1500 @@ -521,7 +521,7 @@ animation comet_trail = comet_animation( Animation properties can be modified after creation: ```berry -animation pulse_red = pulsating_animation(color=red, period=2s) +animation pulse_red = breathe(color=red, period=2s) # Set properties pulse_red.priority = 10 @@ -538,7 +538,7 @@ pulse_red.position = strip_len / 2 # Center position pulse_red.opacity = strip_len * 4 # Scale with strip size # Animation opacity (using another animation as opacity mask) -animation opacity_mask = pulsating_animation(period=2s) +animation opacity_mask = breathe(period=2s) pulse_red.opacity = opacity_mask # Dynamic opacity from animation ``` @@ -563,7 +563,7 @@ set strip_len = strip_length() set strip_len2 = (strip_len + 1) / 2 # Use computed values in animation parameters -animation stream1 = comet_animation( +animation stream1 = comet( color=red tail_length=strip_len / 4 # Computed: quarter of strip length speed=1.5 @@ -608,7 +608,7 @@ set strip_len3 = (strip_len + 1) / 2 # Computation with existing value ```berry # Complex expressions with multiple operations set base_speed = 2.0 -animation stream2 = comet_animation( +animation stream2 = comet( color=blue tail_length=strip_len / 8 + 2 # Computed: eighth of strip + 2 speed=base_speed * 1.5 # Computed: base speed × 1.5 @@ -619,7 +619,7 @@ stream1.position = strip_len / 2 # Center of strip stream2.opacity = strip_len * 4 # Scale opacity with strip size # Using mathematical functions in computed values -animation pulse = pulsating_animation( +animation pulse = breathe( color=red period=2s ) @@ -652,7 +652,7 @@ The following mathematical functions are available in computed parameters and ar ```berry # Basic math functions set strip_len = strip_length() -animation test = pulsating_animation(color=red, period=2s) +animation test = breathe(color=red, period=2s) # Absolute value for ensuring positive results test.opacity = abs(strip_len - 200) @@ -1067,7 +1067,7 @@ template animation shutter_effect { color col = color_cycle(colors=colors, period=0) - animation shutter = beacon_animation( + animation shutter = beacon( color = col pos = strip_len / 2 beacon_size = shutter_size @@ -1319,17 +1319,17 @@ function_name( ```berry # Traditional single-line syntax solid(color=red) -pulsating_animation(color=blue, period=2s) +breathe(color=blue, period=2s) # New multi-line syntax (no commas needed) -pulsating_animation( +breathe( color=blue period=2s brightness=255 ) # Mixed syntax -comet_animation( +comet( color=stream_pattern, tail_length=15 speed=1.5s priority=10 @@ -1338,7 +1338,7 @@ comet_animation( **Nested Function Calls:** ```berry -pulsating_animation( +breathe( color=solid(color=red) period=smooth( min_value=1000 @@ -1352,7 +1352,7 @@ pulsating_animation( Mathematical functions can be used in computed parameter expressions and are automatically detected by the transpiler: ```berry -animation wave = pulsating_animation( +animation wave = breathe( color=blue period=2s ) @@ -1432,19 +1432,18 @@ Animation classes create visual effects on LED strips: | Function | Description | |----------|-------------| | `solid` | Solid color fill | -| `pulsating_animation` | Pulsing brightness effect | -| `beacon_animation` | Positioned pulse effect | -| `crenel_animation` | Square wave pulse at specific position | -| `breathe_animation` | Breathing/fading effect | -| `comet_animation` | Moving comet with trailing tail | -| `fire_animation` | Realistic fire simulation | +| `breathe` | Pulsing brightness effect | +| `gradient` | Gradient patterns using palettes | +| `beacon` | Positioned pulse effect | +| `crenel` | Square wave pulse at specific position | +| `breathe` | Breathing/fading effect | +| `comet` | Moving comet with trailing tail | +| `fire` | Realistic fire simulation | | `twinkle` | Twinkling stars effect | -| `gradient_animation` | Color gradient effects | -| `wave_animation` | Wave propagation effects | -| `rich_palette_animation` | Palette-based color cycling | -| `palette_wave_animation` | Wave patterns using palettes | -| `palette_gradient_animation` | Gradient patterns using palettes | -| `palette_meter_animation` | Meter/bar patterns using palettes | +| `gradient` | Color gradient effects | +| `wave` | Wave propagation effects | +| `rich_palette` | Palette-based color cycling | +| `meter` | Meter/bar patterns using palettes | ## Error Handling @@ -1476,10 +1475,10 @@ The DSL validates class and parameter existence during compilation, catching err color red = 0x800000 # Error: Cannot redefine 'red' # Invalid: Unknown parameter in constructor -animation bad = pulsating_animation(invalid_param=123) # Error: Unknown parameter +animation bad = breathe(invalid_param=123) # Error: Unknown parameter # Invalid: Unknown parameter in property assignment -animation pulse = pulsating_animation(color=red, period=2s) +animation pulse = breathe(color=red, period=2s) pulse.wrong_arg = 15 # Error: Parameter 'wrong_arg' not valid for PulseAnimation # Invalid: Undefined reference in color definition @@ -1495,7 +1494,7 @@ sequence demo { # Valid alternatives color my_red = 0x800000 # OK: Different name -animation good = pulsating_animation(color=red, period=2s) # OK: Valid parameters +animation good = breathe(color=red, period=2s) # OK: Valid parameters good.priority = 10 # OK: Valid parameter assignment ``` @@ -1621,12 +1620,12 @@ The DSL supports flexible parameter syntax that makes multi-line function calls ### Traditional Syntax (Commas Required) ```berry -animation stream = comet_animation(color=red, tail_length=15, speed=1.5s, priority=10) +animation stream = comet(color=red, tail_length=15, speed=1.5s, priority=10) ``` ### New Multi-Line Syntax (Commas Optional) ```berry -animation stream = comet_animation( +animation stream = comet( color=red tail_length=15 speed=1.5s @@ -1636,7 +1635,7 @@ animation stream = comet_animation( ### Mixed Syntax (Both Supported) ```berry -animation stream = comet_animation( +animation stream = comet( color=red, tail_length=15 speed=1.5s priority=10 diff --git a/lib/libesp32/berry_animation/animation_docs/Dsl_Transpilation.md b/lib/libesp32/berry_animation/animation_docs/Dsl_Transpilation.md index 9b6a7d9fa..01a69c0ae 100644 --- a/lib/libesp32/berry_animation/animation_docs/Dsl_Transpilation.md +++ b/lib/libesp32/berry_animation/animation_docs/Dsl_Transpilation.md @@ -72,7 +72,7 @@ Loads DSL source from a file and executes it. # Create a DSL file var f = open("my_animation.dsl", "w") f.write("color green = 0x00FF00\n" - "animation pulse_green = pulsating_animation(color=green, period=2s)\n" + "animation pulse_green = breathe(color=green, period=2s)\n" "run pulse_green") f.close() @@ -109,8 +109,8 @@ color red = 0xFF0000 color blue = 0x0000FF # Animation definitions with named parameters -animation pulse_red = pulsating_animation(color=red, period=2s) -animation comet_blue = comet_animation(color=blue, tail_length=10, speed=1500) +animation pulse_red = breathe(color=red, period=2s) +animation comet_blue = comet(color=blue, tail_length=10, speed=1500) # Property assignments with user functions pulse_red.priority = 10 @@ -134,7 +134,7 @@ When the DSL encounters an identifier (like `SINE` or `red`), it checks at trans ```berry # If SINE exists in animation module -animation wave = wave_animation(waveform=SINE) +animation wave = wave(waveform=SINE) # Transpiles to: animation.SINE (direct access) # If custom_color doesn't exist in animation module @@ -153,7 +153,7 @@ animation solid_red = solid(color=custom_color) ### Symbol Categories **Built-in Symbols** (resolved to `animation.`): -- Animation factory functions: `solid`, `pulsating_animation`, `comet_animation` +- Animation factory functions: `solid`, `breathe`, `comet` - Value providers: `triangle`, `smooth`, `sine`, `static_value` - Color providers: `color_cycle`, `breathe_color`, `rich_palette_color` - Constants: `PALETTE_RAINBOW`, `SINE`, `TRIANGLE`, etc. @@ -288,14 +288,14 @@ Berry code can interact with DSL-generated objects by using the underscore suffi ```berry # DSL Code -animation pulse = pulsating_animation(color=red, period=2s) +animation pulse = breathe(color=red, period=2s) berry """ pulse_.opacity = 200 pulse_.priority = 10 """ # Transpiles to Berry Code -var pulse_ = animation.pulsating_animation(engine) +var pulse_ = animation.breathe(engine) pulse_.color = animation.red pulse_.period = 2000 # Berry code block @@ -323,7 +323,7 @@ template animation shutter_effect { set strip_len = strip_length() color col = color_cycle(colors=colors, period=0) - animation shutter = beacon_animation( + animation shutter = beacon( color = col beacon_size = strip_len / 2 ) @@ -354,7 +354,7 @@ class shutter_effect_animation : animation.engine_proxy col_.colors = animation.create_closure_value(engine, def (engine) return self.colors end) col_.period = 0 - var shutter_ = animation.beacon_animation(engine) + var shutter_ = animation.beacon(engine) shutter_.color = col_ shutter_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 2 end) @@ -383,7 +383,7 @@ template pulse_effect { param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } ``` @@ -392,7 +392,7 @@ template pulse_effect { ```berry def pulse_effect_template(engine, color_, speed_) - var pulse_ = animation.pulsating_animation(engine) + var pulse_ = animation.breathe(engine) pulse_.color = color_ pulse_.period = speed_ engine.add(pulse_) @@ -456,7 +456,7 @@ color normal = 0x000080 color alert = 0xFF0000 animation normal_state = solid(color=normal) -animation alert_state = pulsating_animation(color=alert, period=500ms) +animation alert_state = breathe(color=alert, period=500ms) # Event handlers on button_press { @@ -480,14 +480,14 @@ DSL supports nested function calls for complex compositions: ```berry # Nested calls in animation definitions (now supported) -animation complex = pulsating_animation( +animation complex = breathe( color=red, period=2s ) # Nested calls in run statements sequence demo { - play pulsating_animation(color=blue, period=1s) for 10s + play breathe(color=blue, period=1s) for 10s } ``` @@ -498,7 +498,7 @@ The DSL compiler validates classes and parameters at transpilation time, catchin ```berry var invalid_dsl = "color red = #INVALID_COLOR\n" "animation bad = unknown_function(red)\n" - "animation pulse = pulsating_animation(invalid_param=123)" + "animation pulse = breathe(invalid_param=123)" try animation_dsl.execute(invalid_dsl) @@ -525,16 +525,16 @@ animation bad2 = math_function(value=10) **Parameter Validation:** ```berry # Error: Invalid parameter name in constructor -animation pulse = pulsating_animation(invalid_param=123) -# Transpiler error: "Parameter 'invalid_param' is not valid for pulsating_animation" +animation pulse = breathe(invalid_param=123) +# Transpiler error: "Parameter 'invalid_param' is not valid for breathe" # Error: Invalid parameter name in property assignment -animation pulse = pulsating_animation(color=red, period=2s) +animation pulse = breathe(color=red, period=2s) pulse.wrong_arg = 15 # Transpiler error: "Animation 'PulseAnimation' does not have parameter 'wrong_arg'" # Error: Parameter constraint violation -animation comet = comet_animation(tail_length=-5) +animation comet = comet(tail_length=-5) # Transpiler error: "Parameter 'tail_length' value -5 violates constraint: min=1" ``` @@ -545,14 +545,14 @@ color bad = nonexistent_color_provider(period=2s) # Transpiler error: "Color provider factory 'nonexistent_color_provider' does not exist" # Error: Function exists but doesn't create color provider -color bad2 = pulsating_animation(color=red) -# Transpiler error: "Function 'pulsating_animation' does not create a color provider instance" +color bad2 = breathe(color=red) +# Transpiler error: "Function 'breathe' does not create a color provider instance" ``` **Reference Validation:** ```berry # Error: Undefined color reference -animation pulse = pulsating_animation(color=undefined_color) +animation pulse = breathe(color=undefined_color) # Transpiler error: "Undefined reference: 'undefined_color'" # Error: Undefined animation reference in run statement @@ -697,11 +697,11 @@ import animation_dsl def handle_rule_trigger(event) if event == "motion" animation_dsl.execute("color alert = 0xFF0000\n" - "animation alert_anim = pulsating_animation(color=alert, period=500ms)\n" + "animation alert_anim = breathe(color=alert, period=500ms)\n" "run alert_anim for 5s") elif event == "door" animation_dsl.execute("color welcome = 0x00FF00\n" - "animation welcome_anim = breathe_animation(color=welcome, period=2s)\n" + "animation welcome_anim = breathe(color=welcome, period=2s)\n" "run welcome_anim for 8s") end end @@ -746,7 +746,7 @@ webserver.on("/execute_dsl", web_execute_dsl) # Animations with named parameters animation red_solid = solid(color=red) - animation pulse_red = pulsating_animation(color=red, period=2s) + animation pulse_red = breathe(color=red, period=2s) # Property assignments pulse_red.priority = 10 @@ -764,11 +764,11 @@ webserver.on("/execute_dsl", web_execute_dsl) ```berry # Good color warning_red = 0xFF0000 - animation door_alert = pulsating_animation(color=warning_red, period=500ms) + animation door_alert = breathe(color=warning_red, period=500ms) # Avoid color c1 = 0xFF0000 - animation a1 = pulsating_animation(color=c1, period=500ms) + animation a1 = breathe(color=c1, period=500ms) ``` 3. **Comment your DSL**: @@ -781,8 +781,8 @@ webserver.on("/execute_dsl", web_execute_dsl) # Main security animation sequence sequence security_demo { play solid(color=normal_blue) for 10s # Normal operation - play pulsating_animation(color=alert_red, period=500ms) for 3s # Alert - play breathe_animation(color=success_green, period=2s) for 5s # Success confirmation + play breathe(color=alert_red, period=500ms) for 3s # Alert + play breathe(color=success_green, period=2s) for 5s # Success confirmation } ``` diff --git a/lib/libesp32/berry_animation/animation_docs/Examples.md b/lib/libesp32/berry_animation/animation_docs/Examples.md index 43968443b..600f528dd 100644 --- a/lib/libesp32/berry_animation/animation_docs/Examples.md +++ b/lib/libesp32/berry_animation/animation_docs/Examples.md @@ -14,14 +14,14 @@ run red_solid ### 2. Pulsing Effect ```berry color blue = 0x0000FF -animation blue_pulse = pulsating_animation(color=blue, period=2s) +animation blue_pulse = breathe(color=blue, period=2s) run blue_pulse ``` ### 3. Moving Comet ```berry color cyan = 0x00FFFF -animation comet_trail = comet_animation(color=cyan, tail_length=8, speed=100ms, direction=1) +animation comet_trail = comet(color=cyan, tail_length=8, speed=100ms, direction=1) run comet_trail ``` @@ -85,7 +85,7 @@ color orange = 0xFFA500 color yellow = 0xFFFF00 animation night = solid(color=deep_blue) -animation sunrise = pulsating_animation(color=orange, period=3s) +animation sunrise = breathe(color=orange, period=3s) animation day = solid(color=yellow) sequence sunrise_show { @@ -134,7 +134,7 @@ palette eye_palette = [red, yellow, green, violet] color eye_color = color_cycle(colors=eye_palette, period=0) # Create beacon animation -animation red_eye = beacon_animation( +animation red_eye = beacon( color=eye_color pos=cosine_val beacon_size=3 @@ -177,7 +177,7 @@ run demo ```berry # Create oscillator and animation set wave_osc = triangle(min_value=0, max_value=29, period=4s) -animation wave = beacon_animation(color=blue, pos=wave_osc, beacon_size=5) +animation wave = beacon(color=blue, pos=wave_osc, beacon_size=5) sequence sync_demo { play wave for 3s @@ -192,7 +192,7 @@ run sync_demo ### 12. Assignments in Repeat Blocks ```berry set brightness = smooth(min_value=50, max_value=255, period=2s) -animation pulse = pulsating_animation(color=white, period=1s) +animation pulse = breathe(color=white, period=1s) sequence breathing_cycle { repeat 3 times { @@ -291,7 +291,7 @@ set triangle_pos = triangle(min_value=0, max_value=29, period=3s) set cosine_pos = cosine_osc(min_value=0, max_value=29, period=3s) color eye_color = color_cycle(colors=[red, yellow, green, blue], period=0) -animation moving_eye = beacon_animation( +animation moving_eye = beacon( color=eye_color pos=triangle_pos beacon_size=2 @@ -319,7 +319,7 @@ strip length 60 set moving_position = smooth(min_value=5, max_value=55, period=4s) color purple = 0x8000FF -animation moving_pulse = beacon_animation( +animation moving_pulse = beacon( color=purple, position=moving_position, beacon_size=3, @@ -362,11 +362,11 @@ run simple ```berry # Good - descriptive names color sunset_orange = 0xFF8C00 -animation evening_glow = pulsating_animation(color=sunset_orange, period=4s) +animation evening_glow = breathe(color=sunset_orange, period=4s) # Avoid - unclear names color c1 = 0xFF8C00 -animation a1 = pulsating_animation(color=c1, period=4s) +animation a1 = breathe(color=c1, period=4s) ``` ### Test Incrementally @@ -393,7 +393,7 @@ template blink_effect { param speed param intensity - animation blink = pulsating_animation( + animation blink = breathe( color=color period=speed ) @@ -421,7 +421,7 @@ template comet_chase { background.priority = 1 # Comet effect layer - animation comet = comet_animation( + animation comet = comet( color=trail_color tail_length=tail_size speed=chase_speed @@ -457,7 +457,7 @@ template breathing_rainbow { ) # Create breathing animation with rainbow colors - animation breath = pulsating_animation( + animation breath = breathe( color=rainbow_cycle period=breath_time ) diff --git a/lib/libesp32/berry_animation/animation_docs/Oscillation_Patterns.md b/lib/libesp32/berry_animation/animation_docs/Oscillation_Patterns.md index 3b4a64e08..0dc9ee01c 100644 --- a/lib/libesp32/berry_animation/animation_docs/Oscillation_Patterns.md +++ b/lib/libesp32/berry_animation/animation_docs/Oscillation_Patterns.md @@ -195,7 +195,7 @@ strip length 60 color red = 0xFF0000 set sweeping_position = linear(min_value=0, max_value=59, duration=3000) -animation position_sweep = beacon_animation( +animation position_sweep = beacon( color=red, position=sweeping_position, beacon_size=3, @@ -219,7 +219,7 @@ run wave_effect color green = 0x00FF00 set bounce_size = triangle(min_value=1, max_value=8, duration=1000) -animation bouncing_pulse = beacon_animation( +animation bouncing_pulse = beacon( color=green, position=30, beacon_size=bounce_size, diff --git a/lib/libesp32/berry_animation/animation_docs/Quick_Start.md b/lib/libesp32/berry_animation/animation_docs/Quick_Start.md index a8e61d9bd..9e9da2c52 100644 --- a/lib/libesp32/berry_animation/animation_docs/Quick_Start.md +++ b/lib/libesp32/berry_animation/animation_docs/Quick_Start.md @@ -16,7 +16,7 @@ Create a simple pulsing red light: color bordeaux = 0x6F2C4F # Create pulsing animation -animation pulse_bordeaux = pulsating_animation(color=bordeaux, period=3s) +animation pulse_bordeaux = breathe(color=bordeaux, period=3s) # Run it run pulse_bordeaux @@ -66,9 +66,9 @@ run sunset_glow Create complex shows with sequences: ```berry -animation red_pulse = pulsating_animation(color=red, period=2s) -animation green_pulse = pulsating_animation(color=green, period=2s) -animation blue_pulse = pulsating_animation(color=blue, period=2s) +animation red_pulse = breathe(color=red, period=2s) +animation green_pulse = breathe(color=green, period=2s) +animation blue_pulse = breathe(color=blue, period=2s) sequence rgb_show { play red_pulse for 3s @@ -109,7 +109,7 @@ Add movement and variation to your animations: ```berry # Breathing effect with smooth oscillation -animation breathing = pulsating_animation( +animation breathing = breathe( color=blue min_brightness=20% max_brightness=100% @@ -117,7 +117,7 @@ animation breathing = pulsating_animation( ) # Moving comet effect -animation comet = comet_animation( +animation comet = comet( color=white tail_length=8 speed=2000 @@ -172,7 +172,7 @@ template animation shutter_effect { set strip_len = strip_length() color col = color_cycle(colors=colors, period=0) - animation shutter = beacon_animation( + animation shutter = beacon( color = col beacon_size = strip_len / 2 ) @@ -210,7 +210,7 @@ template pulse_effect { param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } diff --git a/lib/libesp32/berry_animation/animation_docs/Transpiler_Architecture.md b/lib/libesp32/berry_animation/animation_docs/Transpiler_Architecture.md index 2d6b427d4..20e12ead0 100644 --- a/lib/libesp32/berry_animation/animation_docs/Transpiler_Architecture.md +++ b/lib/libesp32/berry_animation/animation_docs/Transpiler_Architecture.md @@ -346,7 +346,7 @@ _detect_and_cache_symbol(name) **Palette Detection:** ```berry -# DSL: animation rainbow = rich_palette_animation(colors=PALETTE_RAINBOW) +# DSL: animation rainbow = rich_palette(colors=PALETTE_RAINBOW) # Detection: PALETTE_RAINBOW exists in animation module, isinstance(obj, bytes) # Result: SymbolEntry("PALETTE_RAINBOW", "palette", bytes_instance, true) # Reference: "animation.PALETTE_RAINBOW" @@ -354,7 +354,7 @@ _detect_and_cache_symbol(name) **Constant Detection:** ```berry -# DSL: animation wave = wave_animation(waveform=LINEAR) +# DSL: animation wave = wave(waveform=LINEAR) # Detection: LINEAR exists in animation module, type(LINEAR) == "int" # Result: SymbolEntry("LINEAR", "constant", 1, true) # Reference: "animation.LINEAR" @@ -532,12 +532,12 @@ _validate_value_provider_reference(object_name, context) ### Engine-First Pattern (Consistent) All factory functions use the engine-first pattern with **automatic strip initialization**: ```berry -# DSL: animation pulse = pulsating_animation(color=red, period=2s) +# DSL: animation pulse = breathe(color=red, period=2s) # Generated: # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var pulse_ = animation.pulsating_animation(engine) +var pulse_ = animation.breathe(engine) pulse_.color = animation.red pulse_.period = 2000 ``` @@ -585,13 +585,13 @@ template pulse_effect { param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } # Generated: def pulse_effect_template(engine, color_, speed_) - var pulse_ = animation.pulsating_animation(engine) + var pulse_ = animation.breathe(engine) pulse_.color = color_ pulse_.period = speed_ engine.add(pulse_) @@ -820,7 +820,7 @@ The transpiler has been significantly refactored to leverage the `symbol_table.b - **Integer Constants**: `LINEAR`, `SINE`, `COSINE` → `animation.LINEAR`, `animation.SINE`, `animation.COSINE` - **Math Functions**: `max`, `min` → `animation.max`, `animation.min` (transformed to `animation._math.*` in closures) - **Value Providers**: `triangle`, `smooth` → `animation.triangle`, `animation.smooth` -- **Animation Constructors**: `solid`, `pulsating_animation` → `animation.solid`, `animation.pulsating_animation` +- **Animation Constructors**: `solid`, `breathe` → `animation.solid`, `animation.breathe` - **User-defined Symbols**: `my_color`, `my_animation` → `my_color_`, `my_animation_` **Validation Improvements:** diff --git a/lib/libesp32/berry_animation/animation_docs/Troubleshooting.md b/lib/libesp32/berry_animation/animation_docs/Troubleshooting.md index 21efae3c3..017452b09 100644 --- a/lib/libesp32/berry_animation/animation_docs/Troubleshooting.md +++ b/lib/libesp32/berry_animation/animation_docs/Troubleshooting.md @@ -144,7 +144,7 @@ The framework has updated timing behavior where: animation red_anim = solid(color=red, opacity=255) # Full brightness # Or assign after creation - animation pulse_red = pulsating_animation(color=red, period=2s) + animation pulse_red = breathe(color=red, period=2s) pulse_red.opacity = 200 # Adjust brightness # Use value providers for dynamic brightness @@ -162,17 +162,17 @@ The framework has updated timing behavior where: 1. **Check Time Units:** ```berry # DSL uses time units (converted to milliseconds) - animation pulse_anim = pulsating_animation(color=red, period=2s) # 2 seconds - animation fast_pulse = pulsating_animation(color=blue, period=500ms) # 0.5 seconds + animation pulse_anim = breathe(color=red, period=2s) # 2 seconds + animation fast_pulse = breathe(color=blue, period=500ms) # 0.5 seconds ``` 2. **Adjust Periods:** ```berry # Too fast - increase period - animation slow_pulse = pulsating_animation(color=red, period=5s) # 5 seconds + animation slow_pulse = breathe(color=red, period=5s) # 5 seconds # Too slow - decrease period - animation fast_pulse = pulsating_animation(color=red, period=500ms) # 0.5 seconds + animation fast_pulse = breathe(color=red, period=500ms) # 0.5 seconds ``` 3. **Performance Limitations:** @@ -231,10 +231,10 @@ end 3. **Missing Time Units:** ```berry # Wrong - no time unit - animation pulse_anim = pulsating_animation(color=red, period=2000) + animation pulse_anim = breathe(color=red, period=2000) # Correct - with time unit - animation pulse_anim = pulsating_animation(color=red, period=2s) + animation pulse_anim = breathe(color=red, period=2s) ``` 4. **Reserved Name Conflicts:** @@ -249,11 +249,11 @@ end 5. **Invalid Parameter Names:** ```berry # Wrong - invalid parameter name - animation pulse_anim = pulsating_animation(color=red, invalid_param=123) - # Error: "Parameter 'invalid_param' is not valid for pulsating_animation" + animation pulse_anim = breathe(color=red, invalid_param=123) + # Error: "Parameter 'invalid_param' is not valid for breathe" # Correct - use valid parameters (see Dsl_Reference.md for complete list) - animation pulse_anim = pulsating_animation(color=red, period=2s) + animation pulse_anim = breathe(color=red, period=2s) ``` 6. **Variable Duration Support:** @@ -299,7 +299,7 @@ end param color type color param speed - animation pulse = pulsating_animation( + animation pulse = breathe( color=color period=speed ) @@ -328,7 +328,7 @@ end param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } @@ -338,16 +338,16 @@ end 6. **Parameter Constraint Violations:** ```berry # Wrong - negative period not allowed - animation bad_pulse = pulsating_animation(color=red, period=-2s) + animation bad_pulse = breathe(color=red, period=-2s) # Error: "Parameter 'period' value -2000 violates constraint: min=1" # Wrong - invalid enum value - animation bad_comet = comet_animation(color=red, direction=5) + animation bad_comet = comet(color=red, direction=5) # Error: "Parameter 'direction' value 5 not in allowed values: [-1, 1]" # Correct - valid parameters within constraints - animation good_pulse = pulsating_animation(color=red, period=2s) - animation good_comet = comet_animation(color=red, direction=1) + animation good_pulse = breathe(color=red, period=2s) + animation good_comet = comet(color=red, direction=1) ``` 7. **Repeat Syntax Errors:** @@ -406,7 +406,7 @@ end param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } ``` @@ -507,13 +507,13 @@ template pulse_effect { param color type color param speed - animation pulse = pulsating_animation(color=color, period=speed) + animation pulse = breathe(color=color, period=speed) run pulse } # User Function (Berry-native) - For complex logic def create_pulse_effect(engine, color, speed) - var pulse = animation.pulsating_animation(engine) + var pulse = animation.breathe(engine) pulse.color = color pulse.period = speed return pulse @@ -765,10 +765,10 @@ complex_anim.period = 2000 # 2 seconds instead of 100ms 2. **Increase Animation Periods:** ```berry # Smooth - longer periods - animation smooth_pulse = pulsating_animation(color=red, period=3s) + animation smooth_pulse = breathe(color=red, period=3s) # Choppy - very short periods - animation choppy_pulse = pulsating_animation(color=red, period=50ms) + animation choppy_pulse = breathe(color=red, period=50ms) ``` 3. **Optimize Value Providers:** @@ -779,10 +779,10 @@ complex_anim.period = 2000 # 2 seconds instead of 100ms color red = 0xFF0000 color blue = 0x0000FF - animation anim1 = pulsating_animation(color=red, period=2s) + animation anim1 = breathe(color=red, period=2s) anim1.opacity = breathing - animation anim2 = pulsating_animation(color=blue, period=2s) + animation anim2 = breathe(color=blue, period=2s) anim2.opacity = breathing # Reuse same provider ``` @@ -1160,7 +1160,7 @@ template pulse_effect { param base_color type color # Use descriptive names param speed type time # Add type annotations for clarity - animation pulse = pulsating_animation(color=base_color, period=speed) + animation pulse = breathe(color=base_color, period=speed) run pulse } @@ -1197,7 +1197,7 @@ template unused_param_example { ### Animation with Parameters ```berry color blue = 0x0000FF -animation blue_pulse = pulsating_animation(color=blue, period=2s, opacity=200) +animation blue_pulse = breathe(color=blue, period=2s, opacity=200) run blue_pulse ``` diff --git a/lib/libesp32/berry_animation/animation_docs/User_Functions.md b/lib/libesp32/berry_animation/animation_docs/User_Functions.md index 8b9f06e70..6653f81a4 100644 --- a/lib/libesp32/berry_animation/animation_docs/User_Functions.md +++ b/lib/libesp32/berry_animation/animation_docs/User_Functions.md @@ -11,7 +11,7 @@ Write a Berry function that creates and returns an animation: ```berry # Define a custom breathing effect def my_breathing(engine, color, speed) - var anim = animation.pulsating_animation(engine) + var anim = animation.breathe(engine) anim.color = color anim.min_brightness = 50 anim.max_brightness = 255 @@ -210,7 +210,7 @@ fairy_dust.opacity = twinkles(8, 600ms) ```berry def pulse_at(engine, color, position, width, speed) - var anim = animation.beacon_animation(engine) + var anim = animation.beacon(engine) anim.color = color anim.position = position anim.width = width @@ -302,7 +302,7 @@ run gradient_effect ```berry def police_lights(engine, flash_speed) - var anim = animation.pulsating_animation(engine) + var anim = animation.breathe(engine) anim.color = 0xFFFF0000 # Red anim.min_brightness = 0 anim.max_brightness = 255 @@ -406,7 +406,7 @@ def flexible_pulse(engine, color, period, min_brightness, max_brightness) if min_brightness == nil min_brightness = 50 end if max_brightness == nil max_brightness = 255 end - var anim = animation.pulsating_animation(engine) + var anim = animation.breathe(engine) anim.color = color anim.period = period anim.min_brightness = min_brightness @@ -424,7 +424,7 @@ def safe_comet(engine, color, tail_length, speed) if tail_length > 20 tail_length = 20 end if speed < 100 speed = 100 end - var anim = animation.comet_animation(engine) + var anim = animation.comet(engine) anim.color = color anim.tail_length = tail_length anim.speed = speed diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index 9d7c8c9ff..135ac516c 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -127,30 +127,30 @@ register_to_animation(breathe_color_provider) # Import animations import "animations/solid" as solid_impl register_to_animation(solid_impl) -import "animations/beacon" as beacon_animation -register_to_animation(beacon_animation) -import "animations/crenel_position" as crenel_animation -register_to_animation(crenel_animation) -import "animations/breathe" as breathe_animation -register_to_animation(breathe_animation) -import "animations/palette_pattern" as palette_pattern_animation +import "animations/beacon" as beacon +register_to_animation(beacon) +import "animations/crenel" as crenel +register_to_animation(crenel) +import "animations/breathe" as breathe +register_to_animation(breathe) +import "animations/palette_gradient" as palette_pattern_animation register_to_animation(palette_pattern_animation) -import "animations/comet" as comet_animation -register_to_animation(comet_animation) -import "animations/fire" as fire_animation -register_to_animation(fire_animation) +import "animations/comet" as comet +register_to_animation(comet) +import "animations/fire" as fire +register_to_animation(fire) import "animations/twinkle" as twinkle register_to_animation(twinkle) -import "animations/gradient" as gradient_animation -register_to_animation(gradient_animation) -import "animations/palette_meter" as palette_meter_animation -register_to_animation(palette_meter_animation) +import "animations/gradient" as gradient +register_to_animation(gradient) +import "animations/palette_meter" as palette_meter +register_to_animation(palette_meter) # import "animations/plasma" as plasma_animation # register_to_animation(plasma_animation) # import "animations/sparkle" as sparkle_animation # register_to_animation(sparkle_animation) -import "animations/wave" as wave_animation -register_to_animation(wave_animation) +import "animations/wave" as wave +register_to_animation(wave) # import "animations/shift" as shift_animation # register_to_animation(shift_animation) # import "animations/bounce" as bounce_animation @@ -165,8 +165,8 @@ import "animations/palettes" as palettes register_to_animation(palettes) # Import specialized animation classes -import "animations/rich_palette_animation" as rich_palette_animation -register_to_animation(rich_palette_animation) +import "animations/rich_palette" as rich_palette +register_to_animation(rich_palette) # DSL components are now in separate animation_dsl module diff --git a/lib/libesp32/berry_animation/src/animations/beacon.be b/lib/libesp32/berry_animation/src/animations/beacon.be index ed532c7e4..5e2396a9f 100644 --- a/lib/libesp32/berry_animation/src/animations/beacon.be +++ b/lib/libesp32/berry_animation/src/animations/beacon.be @@ -30,8 +30,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:BeaconAnimation,weak -class BeaconAnimation : animation.animation +#@ solidify:beacon,weak +class beacon : animation.animation # NO instance variables for parameters - they are handled by the virtual parameter system # Parameter definitions following the new specification @@ -139,4 +139,4 @@ class BeaconAnimation : animation.animation end # Export class directly - no redundant factory function needed -return {'beacon_animation': BeaconAnimation} +return {'beacon': beacon} diff --git a/lib/libesp32/berry_animation/src/animations/breathe.be b/lib/libesp32/berry_animation/src/animations/breathe.be index abf39ab27..e40ca9b54 100644 --- a/lib/libesp32/berry_animation/src/animations/breathe.be +++ b/lib/libesp32/berry_animation/src/animations/breathe.be @@ -10,8 +10,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:BreatheAnimation,weak -class BreatheAnimation : animation.animation +#@ solidify:breathe,weak +class breathe : animation.animation # Non-parameter instance variables only var breathe_provider # Internal breathe color provider @@ -82,12 +82,4 @@ class BreatheAnimation : animation.animation # The breathe_provider produces the breathing color effect end -# Factory method to create a pulsating animation (sine wave, equivalent to old pulse.be) -def pulsating_animation(engine) - var anim = animation.breathe_animation(engine) - anim.curve_factor = 1 # Pure sine wave for pulsing effect - anim.period = 1000 # Faster default period for pulsing - return anim -end - -return {'breathe_animation': BreatheAnimation, 'pulsating_animation': pulsating_animation} +return {'breathe': breathe } \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animations/comet.be b/lib/libesp32/berry_animation/src/animations/comet.be index f8ff05698..4d310f0eb 100644 --- a/lib/libesp32/berry_animation/src/animations/comet.be +++ b/lib/libesp32/berry_animation/src/animations/comet.be @@ -8,8 +8,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:CometAnimation,weak -class CometAnimation : animation.animation +#@ solidify:comet,weak +class comet : animation.animation # Non-parameter instance variables only var head_position # Current position of the comet head (in 1/256th pixels for smooth movement) @@ -170,4 +170,4 @@ class CometAnimation : animation.animation end end -return {'comet_animation': CometAnimation} +return {'comet': comet} diff --git a/lib/libesp32/berry_animation/src/animations/crenel_position.be b/lib/libesp32/berry_animation/src/animations/crenel.be similarity index 96% rename from lib/libesp32/berry_animation/src/animations/crenel_position.be rename to lib/libesp32/berry_animation/src/animations/crenel.be index 4023dea00..22d918031 100644 --- a/lib/libesp32/berry_animation/src/animations/crenel_position.be +++ b/lib/libesp32/berry_animation/src/animations/crenel.be @@ -20,8 +20,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:CrenelPositionAnimation,weak -class CrenelPositionAnimation : animation.animation +#@ solidify:crenel,weak +class crenel : animation.animation # NO instance variables for parameters - they are handled by the virtual parameter system # Parameter definitions with constraints @@ -109,4 +109,4 @@ class CrenelPositionAnimation : animation.animation # obj.nb_pulse = value end -return {'crenel_animation': CrenelPositionAnimation} +return {'crenel': crenel} diff --git a/lib/libesp32/berry_animation/src/animations/fire.be b/lib/libesp32/berry_animation/src/animations/fire.be index c0ff25048..7a23fcf58 100644 --- a/lib/libesp32/berry_animation/src/animations/fire.be +++ b/lib/libesp32/berry_animation/src/animations/fire.be @@ -5,8 +5,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:FireAnimation,weak -class FireAnimation : animation.animation +#@ solidify:fire,weak +class fire : animation.animation # Non-parameter instance variables only var heat_map # bytes() buffer storing heat values for each pixel (0-255) var current_colors # bytes() buffer storing ARGB colors (4 bytes per pixel) @@ -27,6 +27,7 @@ class FireAnimation : animation.animation # # @param engine: AnimationEngine - The animation engine (required) def init(engine) + log("ANI: `fire` animation is still in alpha and will be refactored") # Call parent constructor with engine super(self).init(engine) @@ -252,4 +253,4 @@ class FireAnimation : animation.animation end end -return {'fire_animation': FireAnimation} \ No newline at end of file +return {'fire': fire} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animations/gradient.be b/lib/libesp32/berry_animation/src/animations/gradient.be index dbe7aab9f..c6e995fa6 100644 --- a/lib/libesp32/berry_animation/src/animations/gradient.be +++ b/lib/libesp32/berry_animation/src/animations/gradient.be @@ -1,7 +1,7 @@ # Gradient animation effect for Berry Animation Framework # # Creates smooth color gradients between two colors. -# Reimplemented as a subclass of BeaconAnimation for simplicity. +# Reimplemented as a subclass of beacon for simplicity. # # Parameters: # - color1: First color (default: red 0xFFFF0000) @@ -15,8 +15,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:GradientAnimation,weak -class GradientAnimation : animation.beacon_animation +#@ solidify:gradient,weak +class gradient : animation.beacon # Parameter definitions - gradient-specific parameters static var PARAMS = animation.enc_params({ "color1": {"default": 0xFFFF0000}, # First color (default red) @@ -58,6 +58,4 @@ class GradientAnimation : animation.beacon_animation end end -return { - 'gradient_animation': GradientAnimation -} +return { 'gradient': gradient } \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animations/palette_pattern.be b/lib/libesp32/berry_animation/src/animations/palette_gradient.be similarity index 97% rename from lib/libesp32/berry_animation/src/animations/palette_pattern.be rename to lib/libesp32/berry_animation/src/animations/palette_gradient.be index 82da653bd..6f52081d0 100644 --- a/lib/libesp32/berry_animation/src/animations/palette_pattern.be +++ b/lib/libesp32/berry_animation/src/animations/palette_gradient.be @@ -6,8 +6,8 @@ import "./core/param_encoder" as encode_constraints # Gradient pattern animation - creates shifting gradient patterns -#@ solidify:PaletteGradientAnimation,weak -class PaletteGradientAnimation : animation.animation +#@ solidify:palette_gradient +class palette_gradient : animation.animation var value_buffer # Buffer to store values for each pixel (bytes object) var _spatial_period # Cached spatial_period for static pattern optimization var _phase_shift # Cached phase_shift for static pattern optimization @@ -192,6 +192,4 @@ class PaletteGradientAnimation : animation.animation end end -return { - 'palette_gradient_animation': PaletteGradientAnimation -} \ No newline at end of file +return { 'palette_gradient': palette_gradient } \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animations/palette_meter.be b/lib/libesp32/berry_animation/src/animations/palette_meter.be index d406e1444..6d7af28ab 100644 --- a/lib/libesp32/berry_animation/src/animations/palette_meter.be +++ b/lib/libesp32/berry_animation/src/animations/palette_meter.be @@ -1,4 +1,4 @@ -# GradientMeterAnimation - VU meter style animation with palette gradient colors +# palette_meter - VU meter style animation with palette gradient colors # # Displays a gradient-colored bar from the start of the strip up to a level (0-255). # Includes optional peak hold indicator that shows the maximum level for a configurable time. @@ -12,22 +12,22 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:GradientMeterAnimation,weak -class GradientMeterAnimation : animation.palette_gradient_animation +#@ solidify:palette_meter,weak +class palette_meter : animation.palette_gradient # Instance variables for peak tracking var peak_level # Current peak level (0-255) var peak_time # Time when peak was set (ms) var _level # Cached value for 'self.level' - # Parameter definitions - extends PaletteGradientAnimation params + # Parameter definitions - extends palette_gradient params static var PARAMS = animation.enc_params({ - # Inherited from PaletteGradientAnimation: color_source, shift_period, spatial_period, phase_shift + # Inherited from palette_gradient: color_source, shift_period, spatial_period, phase_shift # New meter-specific parameters "level": {"min": 0, "max": 255, "default": 255}, "peak_hold": {"min": 0, "default": 1000} # 0 = disabled, >0 = hold time in ms }) - # Initialize a new GradientMeterAnimation + # Initialize a new palette_meter def init(engine) super(self).init(engine) @@ -138,4 +138,4 @@ class GradientMeterAnimation : animation.palette_gradient_animation end end -return {'palette_meter_animation': GradientMeterAnimation} +return {'palette_meter': palette_meter} diff --git a/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be b/lib/libesp32/berry_animation/src/animations/rich_palette.be similarity index 90% rename from lib/libesp32/berry_animation/src/animations/rich_palette_animation.be rename to lib/libesp32/berry_animation/src/animations/rich_palette.be index 463957648..6efc3f4c9 100644 --- a/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be +++ b/lib/libesp32/berry_animation/src/animations/rich_palette.be @@ -1,4 +1,4 @@ -# RichPaletteAnimation - Animation with integrated rich palette color provider +# rich_palette - Animation with integrated rich palette color provider # # This animation class provides direct access to rich palette parameters, # forwarding them to an internal rich_palette_colornce. @@ -9,8 +9,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:RichPaletteAnimation,weak -class RichPaletteAnimation : animation.animation +#@ solidify:rich_palette,weak +class rich_palette : animation.animation # Non-parameter instance variables only var color_provider # Internal rich_palette_color instance @@ -23,7 +23,7 @@ class RichPaletteAnimation : animation.animation "brightness": {"min": 0, "max": 255, "default": 255} }) - # Initialize a new RichPaletteAnimation + # Initialize a new rich_palette # # @param engine: AnimationEngine - Reference to the animation engine (required) def init(engine) @@ -66,4 +66,4 @@ class RichPaletteAnimation : animation.animation end end -return {'rich_palette_animation': RichPaletteAnimation} \ No newline at end of file +return {'rich_palette': rich_palette} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animations/wave.be b/lib/libesp32/berry_animation/src/animations/wave.be index c5482d122..b63dec400 100644 --- a/lib/libesp32/berry_animation/src/animations/wave.be +++ b/lib/libesp32/berry_animation/src/animations/wave.be @@ -5,14 +5,14 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:WaveAnimation,weak -class WaveAnimation : animation.animation +#@ solidify:wave,weak +class wave : animation.animation # Non-parameter instance variables only var current_colors # Array of current colors for each pixel var time_offset # Current time offset for movement var wave_table # Pre-computed wave table for performance - # Parameter definitions for WaveAnimation + # Parameter definitions for wave static var PARAMS = animation.enc_params({ "color": {"default": 0xFFFF0000}, "back_color": {"default": 0xFF000000}, @@ -28,6 +28,7 @@ class WaveAnimation : animation.animation # # @param engine: AnimationEngine - The animation engine (required) def init(engine) + log("ANI: `wave` animation is still in alpha and will be refactored") # Call parent constructor super(self).init(engine) @@ -206,51 +207,4 @@ class WaveAnimation : animation.animation end end -# Factory functions - -# Create a rainbow sine wave animation -# -# @param engine: AnimationEngine - The animation engine -# @return WaveAnimation - A new wave animation instance -def wave_rainbow_sine(engine) - var anim = animation.wave_animation(engine) - # Set up rainbow color provider - var rainbow_provider = animation.rich_palette_color(engine) - rainbow_provider.colors = animation.PALETTE_RAINBOW - rainbow_provider.period = 5000 - rainbow_provider.transition_type = 1 # sine transition - rainbow_provider.brightness = 255 - anim.color = rainbow_provider - anim.wave_type = 0 # sine wave - anim.frequency = 32 - anim.wave_speed = 50 - return anim -end - -# Create a single color sine wave animation -# -# @param engine: AnimationEngine - The animation engine -# @return WaveAnimation - A new wave animation instance -def wave_single_sine(engine) - var anim = animation.wave_animation(engine) - anim.color = 0xFFFF0000 # Default red color - anim.wave_type = 0 # sine wave - anim.frequency = 32 - anim.wave_speed = 50 - return anim -end - -# Create a custom wave animation -# -# @param engine: AnimationEngine - The animation engine -# @return WaveAnimation - A new wave animation instance -def wave_custom(engine) - var anim = animation.wave_animation(engine) - anim.color = 0xFFFFFF00 # Default yellow color - anim.wave_type = 2 # square wave - anim.frequency = 40 - anim.wave_speed = 30 - return anim -end - -return {'wave_animation': WaveAnimation, 'wave_rainbow_sine': wave_rainbow_sine, 'wave_single_sine': wave_single_sine, 'wave_custom': wave_custom} \ No newline at end of file +return {'wave': wave} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/dsl/symbol_table.be b/lib/libesp32/berry_animation/src/dsl/symbol_table.be index 91b6aff6f..cd11ff2fe 100644 --- a/lib/libesp32/berry_animation/src/dsl/symbol_table.be +++ b/lib/libesp32/berry_animation/src/dsl/symbol_table.be @@ -262,7 +262,7 @@ class SymbolEntry return _class(name, _class.TYPE_VALUE_PROVIDER, instance, is_builtin) end - # Create a symbol entry for an animation constructor (built-in like solid, pulsating_animation) + # Create a symbol entry for an animation constructor (built-in like solid, breathe) static def create_animation_constructor(name, instance, is_builtin) return _class(name, _class.TYPE_ANIMATION_CONSTRUCTOR, instance, is_builtin) end diff --git a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be index 60627e2a6..ce1e4a3a9 100644 --- a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be @@ -1,4 +1,4 @@ -# ColorCycleColorProvider for Berry Animation Framework +# color_cycle for Berry Animation Framework # # This color provider cycles through a list of colors with brutal switching. # No transitions or interpolation - just instant color changes. @@ -13,8 +13,8 @@ import "./core/param_encoder" as encode_constraints -#@ solidify:ColorCycleColorProvider,weak -class ColorCycleColorProvider : animation.color_provider +#@ solidify:color_cycle,weak +class color_cycle : animation.color_provider # Non-parameter instance variables only var current_index # Current color index for next functionality @@ -26,7 +26,7 @@ class ColorCycleColorProvider : animation.color_provider "palette_size": {"type": "int", "default": 3} # Read-only: number of colors in palette }) - # Initialize a new ColorCycleColorProvider + # Initialize a new color_cycle # # @param engine: AnimationEngine - Reference to the animation engine (required) def init(engine) @@ -216,4 +216,4 @@ class ColorCycleColorProvider : animation.color_provider end end -return {'color_cycle': ColorCycleColorProvider} +return {'color_cycle': color_cycle} diff --git a/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be b/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be index 06f71e51d..f94e13151 100644 --- a/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be +++ b/lib/libesp32/berry_animation/src/providers/iteration_number_provider.be @@ -8,7 +8,7 @@ # # Usage: # set iteration = iteration_number() -# animation pulse = pulsating_animation(color=red, period=2s) +# animation pulse = breathe(color=red, period=2s) # pulse.opacity = iteration * 50 + 100 # Brightness increases with each iteration # # In sequences: diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index 297bf6329..ff82db53f 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'BreatheAnimation' ktab size: 17, total: 21 (saved 32 bytes) -static const bvalue be_ktab_class_BreatheAnimation[17] = { +// compact class 'breathe' ktab size: 17, total: 21 (saved 32 bytes) +static const bvalue be_ktab_class_breathe[17] = { /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(breathe_provider), /* K2 */ be_nested_str_weak(animation), @@ -25,12 +25,12 @@ static const bvalue be_ktab_class_BreatheAnimation[17] = { }; -extern const bclass be_class_BreatheAnimation; +extern const bclass be_class_breathe; /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_BreatheAnimation_init, /* name */ +be_local_closure(class_breathe_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -40,7 +40,7 @@ be_local_closure(class_BreatheAnimation_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheAnimation, /* shared constants */ + &be_ktab_class_breathe, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ @@ -68,7 +68,7 @@ be_local_closure(class_BreatheAnimation_init, /* name */ /******************************************************************** ** Solidified function: start ********************************************************************/ -be_local_closure(class_BreatheAnimation_start, /* name */ +be_local_closure(class_breathe_start, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -78,7 +78,7 @@ be_local_closure(class_BreatheAnimation_start, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheAnimation, /* shared constants */ + &be_ktab_class_breathe, /* shared constants */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -109,7 +109,7 @@ be_local_closure(class_BreatheAnimation_start, /* name */ /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_BreatheAnimation_on_param_changed, /* name */ +be_local_closure(class_breathe_on_param_changed, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ @@ -119,7 +119,7 @@ be_local_closure(class_BreatheAnimation_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheAnimation, /* shared constants */ + &be_ktab_class_breathe, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, ( &(const binstruction[40]) { /* code */ @@ -170,17 +170,17 @@ be_local_closure(class_BreatheAnimation_on_param_changed, /* name */ /******************************************************************** -** Solidified class: BreatheAnimation +** Solidified class: breathe ********************************************************************/ extern const bclass be_class_Animation; -be_local_class(BreatheAnimation, +be_local_class(breathe, 1, &be_class_Animation, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_BreatheAnimation_init_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_BreatheAnimation_start_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_BreatheAnimation_on_param_changed_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_breathe_init_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_breathe_start_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_breathe_on_param_changed_closure) }, { be_const_key_weak(PARAMS, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { @@ -191,317 +191,7 @@ be_local_class(BreatheAnimation, })) ) } )) }, { be_const_key_weak(breathe_provider, -1), be_const_var(0) }, })), - be_str_weak(BreatheAnimation) -); - -/******************************************************************** -** Solidified function: square -********************************************************************/ -be_local_closure(square, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_const_int(3), - }), - be_str_weak(square), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'GradientMeterAnimation' ktab size: 26, total: 34 (saved 64 bytes) -static const bvalue be_ktab_class_GradientMeterAnimation[26] = { - /* K0 */ be_nested_str_weak(peak_hold), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(level), - /* K3 */ be_nested_str_weak(_level), - /* K4 */ be_nested_str_weak(peak_level), - /* K5 */ be_nested_str_weak(peak_time), - /* K6 */ be_nested_str_weak(update), - /* K7 */ be_nested_str_weak(get_param), - /* K8 */ be_nested_str_weak(color_source), - /* K9 */ be_nested_str_weak(start_time), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(scale_uint), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(animation), - /* K14 */ be_nested_str_weak(color_provider), - /* K15 */ be_nested_str_weak(get_lut), - /* K16 */ be_nested_str_weak(LUT_FACTOR), - /* K17 */ be_nested_str_weak(pixels), - /* K18 */ be_nested_str_weak(_buffer), - /* K19 */ be_nested_str_weak(value_buffer), - /* K20 */ be_const_int(2), - /* K21 */ be_const_int(3), - /* K22 */ be_nested_str_weak(get_color_for_value), - /* K23 */ be_nested_str_weak(set_pixel_color), - /* K24 */ be_nested_str_weak(init), - /* K25 */ be_nested_str_weak(shift_period), -}; - - -extern const bclass be_class_GradientMeterAnimation; - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_GradientMeterAnimation_update, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_GradientMeterAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x240C0501, // 0001 GT R3 R2 K1 - 0x780E000F, // 0002 JMPF R3 #0013 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x90020603, // 0004 SETMBR R0 K3 R3 - 0x88100104, // 0005 GETMBR R4 R0 K4 - 0x28140604, // 0006 GE R5 R3 R4 - 0x78160002, // 0007 JMPF R5 #000B - 0x90020803, // 0008 SETMBR R0 K4 R3 - 0x90020A01, // 0009 SETMBR R0 K5 R1 - 0x70020007, // 000A JMP #0013 - 0x24140901, // 000B GT R5 R4 K1 - 0x78160005, // 000C JMPF R5 #0013 - 0x88140105, // 000D GETMBR R5 R0 K5 - 0x04140205, // 000E SUB R5 R1 R5 - 0x24180A02, // 000F GT R6 R5 R2 - 0x781A0001, // 0010 JMPF R6 #0013 - 0x90020803, // 0011 SETMBR R0 K4 R3 - 0x90020A01, // 0012 SETMBR R0 K5 R1 - 0x600C0003, // 0013 GETGBL R3 G3 - 0x5C100000, // 0014 MOVE R4 R0 - 0x7C0C0200, // 0015 CALL R3 1 - 0x8C0C0706, // 0016 GETMET R3 R3 K6 - 0x5C140200, // 0017 MOVE R5 R1 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_GradientMeterAnimation_render, /* name */ - be_nested_proto( - 21, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_GradientMeterAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[113]) { /* code */ - 0x8C100107, // 0000 GETMET R4 R0 K7 - 0x58180008, // 0001 LDCONST R6 K8 - 0x7C100400, // 0002 CALL R4 2 - 0x4C140000, // 0003 LDNIL R5 - 0x1C140805, // 0004 EQ R5 R4 R5 - 0x78160001, // 0005 JMPF R5 #0008 - 0x50140000, // 0006 LDBOOL R5 0 0 - 0x80040A00, // 0007 RET 1 R5 - 0x88140109, // 0008 GETMBR R5 R0 K9 - 0x04140405, // 0009 SUB R5 R2 R5 - 0x88180103, // 000A GETMBR R6 R0 K3 - 0x881C0100, // 000B GETMBR R7 R0 K0 - 0xB8221400, // 000C GETNGBL R8 K10 - 0x8C20110B, // 000D GETMET R8 R8 K11 - 0x5C280C00, // 000E MOVE R10 R6 - 0x582C0001, // 000F LDCONST R11 K1 - 0x543200FE, // 0010 LDINT R12 255 - 0x58340001, // 0011 LDCONST R13 K1 - 0x5C380600, // 0012 MOVE R14 R3 - 0x7C200C00, // 0013 CALL R8 6 - 0x5425FFFE, // 0014 LDINT R9 -1 - 0x24280F01, // 0015 GT R10 R7 K1 - 0x782A000C, // 0016 JMPF R10 #0024 - 0x88280104, // 0017 GETMBR R10 R0 K4 - 0x24281406, // 0018 GT R10 R10 R6 - 0x782A0009, // 0019 JMPF R10 #0024 - 0xB82A1400, // 001A GETNGBL R10 K10 - 0x8C28150B, // 001B GETMET R10 R10 K11 - 0x88300104, // 001C GETMBR R12 R0 K4 - 0x58340001, // 001D LDCONST R13 K1 - 0x543A00FE, // 001E LDINT R14 255 - 0x583C0001, // 001F LDCONST R15 K1 - 0x5C400600, // 0020 MOVE R16 R3 - 0x7C280C00, // 0021 CALL R10 6 - 0x0428150C, // 0022 SUB R10 R10 K12 - 0x5C241400, // 0023 MOVE R9 R10 - 0x4C280000, // 0024 LDNIL R10 - 0x602C000F, // 0025 GETGBL R11 G15 - 0x5C300800, // 0026 MOVE R12 R4 - 0xB8361A00, // 0027 GETNGBL R13 K13 - 0x88341B0E, // 0028 GETMBR R13 R13 K14 - 0x7C2C0400, // 0029 CALL R11 2 - 0x782E0028, // 002A JMPF R11 #0054 - 0x8C2C090F, // 002B GETMET R11 R4 K15 - 0x7C2C0200, // 002C CALL R11 1 - 0x5C281600, // 002D MOVE R10 R11 - 0x4C300000, // 002E LDNIL R12 - 0x202C160C, // 002F NE R11 R11 R12 - 0x782E0022, // 0030 JMPF R11 #0054 - 0x882C0910, // 0031 GETMBR R11 R4 K16 - 0x543200FF, // 0032 LDINT R12 256 - 0x3C30180B, // 0033 SHR R12 R12 R11 - 0x58340001, // 0034 LDCONST R13 K1 - 0x88380311, // 0035 GETMBR R14 R1 K17 - 0x8C381D12, // 0036 GETMET R14 R14 K18 - 0x7C380200, // 0037 CALL R14 1 - 0x8C3C1512, // 0038 GETMET R15 R10 K18 - 0x7C3C0200, // 0039 CALL R15 1 - 0x88400113, // 003A GETMBR R16 R0 K19 - 0x8C402112, // 003B GETMET R16 R16 K18 - 0x7C400200, // 003C CALL R16 1 - 0x14441A08, // 003D LT R17 R13 R8 - 0x78460013, // 003E JMPF R17 #0053 - 0x9444200D, // 003F GETIDX R17 R16 R13 - 0x3C48220B, // 0040 SHR R18 R17 R11 - 0x544E00FE, // 0041 LDINT R19 255 - 0x1C4C2213, // 0042 EQ R19 R17 R19 - 0x784E0000, // 0043 JMPF R19 #0045 - 0x5C481800, // 0044 MOVE R18 R12 - 0x384C2514, // 0045 SHL R19 R18 K20 - 0x004C1E13, // 0046 ADD R19 R15 R19 - 0x94502701, // 0047 GETIDX R20 R19 K1 - 0x983A0214, // 0048 SETIDX R14 K1 R20 - 0x9450270C, // 0049 GETIDX R20 R19 K12 - 0x983A1814, // 004A SETIDX R14 K12 R20 - 0x94502714, // 004B GETIDX R20 R19 K20 - 0x983A2814, // 004C SETIDX R14 K20 R20 - 0x94502715, // 004D GETIDX R20 R19 K21 - 0x983A2A14, // 004E SETIDX R14 K21 R20 - 0x00341B0C, // 004F ADD R13 R13 K12 - 0x54520003, // 0050 LDINT R20 4 - 0x00381C14, // 0051 ADD R14 R14 R20 - 0x7001FFE9, // 0052 JMP #003D - 0x7002000E, // 0053 JMP #0063 - 0x582C0001, // 0054 LDCONST R11 K1 - 0x14301608, // 0055 LT R12 R11 R8 - 0x7832000B, // 0056 JMPF R12 #0063 - 0x88300113, // 0057 GETMBR R12 R0 K19 - 0x9430180B, // 0058 GETIDX R12 R12 R11 - 0x8C340916, // 0059 GETMET R13 R4 K22 - 0x5C3C1800, // 005A MOVE R15 R12 - 0x5C400A00, // 005B MOVE R16 R5 - 0x7C340600, // 005C CALL R13 3 - 0x8C380317, // 005D GETMET R14 R1 K23 - 0x5C401600, // 005E MOVE R16 R11 - 0x5C441A00, // 005F MOVE R17 R13 - 0x7C380600, // 0060 CALL R14 3 - 0x002C170C, // 0061 ADD R11 R11 K12 - 0x7001FFF1, // 0062 JMP #0055 - 0x282C1208, // 0063 GE R11 R9 R8 - 0x782E0009, // 0064 JMPF R11 #006F - 0x882C0113, // 0065 GETMBR R11 R0 K19 - 0x942C1609, // 0066 GETIDX R11 R11 R9 - 0x8C300916, // 0067 GETMET R12 R4 K22 - 0x5C381600, // 0068 MOVE R14 R11 - 0x5C3C0A00, // 0069 MOVE R15 R5 - 0x7C300600, // 006A CALL R12 3 - 0x8C340317, // 006B GETMET R13 R1 K23 - 0x5C3C1200, // 006C MOVE R15 R9 - 0x5C401800, // 006D MOVE R16 R12 - 0x7C340600, // 006E CALL R13 3 - 0x502C0200, // 006F LDBOOL R11 1 0 - 0x80041600, // 0070 RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_GradientMeterAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_GradientMeterAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080518, // 0003 GETMET R2 R2 K24 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020901, // 0006 SETMBR R0 K4 K1 - 0x90020B01, // 0007 SETMBR R0 K5 K1 - 0x90020701, // 0008 SETMBR R0 K3 K1 - 0x90023301, // 0009 SETMBR R0 K25 K1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: GradientMeterAnimation -********************************************************************/ -extern const bclass be_class_PaletteGradientAnimation; -be_local_class(GradientMeterAnimation, - 3, - &be_class_PaletteGradientAnimation, - be_nested_map(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(peak_time, -1), be_const_var(1) }, - { be_const_key_weak(_level, 6), be_const_var(2) }, - { be_const_key_weak(init, 3), be_const_closure(class_GradientMeterAnimation_init_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(peak_hold, -1), be_const_bytes_instance(05000001E803) }, - { be_const_key_weak(level, -1), be_const_bytes_instance(07000001FF0001FF00) }, - })) ) } )) }, - { be_const_key_weak(peak_level, -1), be_const_var(0) }, - { be_const_key_weak(render, 2), be_const_closure(class_GradientMeterAnimation_render_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_GradientMeterAnimation_update_closure) }, - })), - be_str_weak(GradientMeterAnimation) + be_str_weak(breathe) ); /******************************************************************** @@ -1052,8 +742,8 @@ be_local_closure(unregister_event_handler, /* name */ ); /*******************************************************************/ -// compact class 'ColorCycleColorProvider' ktab size: 24, total: 48 (saved 192 bytes) -static const bvalue be_ktab_class_ColorCycleColorProvider[24] = { +// compact class 'color_cycle' ktab size: 24, total: 48 (saved 192 bytes) +static const bvalue be_ktab_class_color_cycle[24] = { /* K0 */ be_nested_str_weak(colors), /* K1 */ be_const_int(0), /* K2 */ be_nested_str_weak(get), @@ -1081,12 +771,12 @@ static const bvalue be_ktab_class_ColorCycleColorProvider[24] = { }; -extern const bclass be_class_ColorCycleColorProvider; +extern const bclass be_class_color_cycle; /******************************************************************** ** Solidified function: _get_color_at_index ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ +be_local_closure(class_color_cycle__get_color_at_index, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -1096,7 +786,7 @@ be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(_get_color_at_index), &be_const_str_solidified, ( &(const binstruction[20]) { /* code */ @@ -1129,7 +819,7 @@ be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ /******************************************************************** ** Solidified function: member ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_member, /* name */ +be_local_closure(class_color_cycle_member, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -1139,7 +829,7 @@ be_local_closure(class_ColorCycleColorProvider_member, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(member), &be_const_str_solidified, ( &(const binstruction[21]) { /* code */ @@ -1173,7 +863,7 @@ be_local_closure(class_ColorCycleColorProvider_member, /* name */ /******************************************************************** ** Solidified function: produce_value ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ +be_local_closure(class_color_cycle_produce_value, /* name */ be_nested_proto( 13, /* nstack */ 3, /* argc */ @@ -1183,7 +873,7 @@ be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(produce_value), &be_const_str_solidified, ( &(const binstruction[56]) { /* code */ @@ -1252,7 +942,7 @@ be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ /******************************************************************** ** Solidified function: _adjust_index ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__adjust_index, /* name */ +be_local_closure(class_color_cycle__adjust_index, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -1262,7 +952,7 @@ be_local_closure(class_ColorCycleColorProvider__adjust_index, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(_adjust_index), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ @@ -1291,7 +981,7 @@ be_local_closure(class_ColorCycleColorProvider__adjust_index, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_init, /* name */ +be_local_closure(class_color_cycle_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -1301,7 +991,7 @@ be_local_closure(class_ColorCycleColorProvider_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -1326,7 +1016,7 @@ be_local_closure(class_ColorCycleColorProvider_init, /* name */ /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_on_param_changed, /* name */ +be_local_closure(class_color_cycle_on_param_changed, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ @@ -1336,7 +1026,7 @@ be_local_closure(class_ColorCycleColorProvider_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ @@ -1376,7 +1066,7 @@ be_local_closure(class_ColorCycleColorProvider_on_param_changed, /* name */ /******************************************************************** ** Solidified function: _get_palette_size ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ +be_local_closure(class_color_cycle__get_palette_size, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -1386,7 +1076,7 @@ be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(_get_palette_size), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ @@ -1405,7 +1095,7 @@ be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ /******************************************************************** ** Solidified function: get_color_for_value ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ +be_local_closure(class_color_cycle_get_color_for_value, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ @@ -1415,7 +1105,7 @@ be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_color_cycle, /* shared constants */ be_str_weak(get_color_for_value), &be_const_str_solidified, ( &(const binstruction[53]) { /* code */ @@ -1479,21 +1169,21 @@ be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ /******************************************************************** -** Solidified class: ColorCycleColorProvider +** Solidified class: color_cycle ********************************************************************/ extern const bclass be_class_color_provider; -be_local_class(ColorCycleColorProvider, +be_local_class(color_cycle, 1, &be_class_color_provider, be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(produce_value, -1), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, - { be_const_key_weak(member, -1), be_const_closure(class_ColorCycleColorProvider_member_closure) }, - { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_ColorCycleColorProvider__get_palette_size_closure) }, - { be_const_key_weak(_get_color_at_index, 8), be_const_closure(class_ColorCycleColorProvider__get_color_at_index_closure) }, - { be_const_key_weak(_adjust_index, 2), be_const_closure(class_ColorCycleColorProvider__adjust_index_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_ColorCycleColorProvider_init_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_color_cycle_produce_value_closure) }, + { be_const_key_weak(member, -1), be_const_closure(class_color_cycle_member_closure) }, + { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_color_cycle__get_palette_size_closure) }, + { be_const_key_weak(_get_color_at_index, 8), be_const_closure(class_color_cycle__get_color_at_index_closure) }, + { be_const_key_weak(_adjust_index, 2), be_const_closure(class_color_cycle__adjust_index_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_color_cycle_init_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_color_cycle_on_param_changed_closure) }, { be_const_key_weak(current_index, 6), be_const_var(0) }, { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(4, @@ -1503,9 +1193,9 @@ be_local_class(ColorCycleColorProvider, { be_const_key_weak(palette_size, 3), be_const_bytes_instance(0C000300) }, { be_const_key_weak(next, -1), be_const_bytes_instance(040000) }, })) ) } )) }, - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorCycleColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_color_cycle_get_color_for_value_closure) }, })), - be_str_weak(ColorCycleColorProvider) + be_str_weak(color_cycle) ); extern const bclass be_class_AnimationMath; // compact class 'AnimationMath' ktab size: 13, total: 31 (saved 144 bytes) @@ -2372,264 +2062,6 @@ be_local_class(color_provider, })), be_str_weak(color_provider) ); - -extern const bclass be_class_GradientAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_GradientAnimation_render, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(color1), - /* K1 */ be_nested_str_weak(color2), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_nested_str_weak(gradient_type), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(back_color), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(pos), - /* K9 */ be_nested_str_weak(beacon_size), - /* K10 */ be_nested_str_weak(slew_size), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(right_edge), - /* K13 */ be_nested_str_weak(render), - }), - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x88140101, // 0001 GETMBR R5 R0 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x881C0103, // 0003 GETMBR R7 R0 K3 - 0x781A0002, // 0004 JMPF R6 #0008 - 0x90020805, // 0005 SETMBR R0 K4 R5 - 0x90020A04, // 0006 SETMBR R0 K5 R4 - 0x70020001, // 0007 JMP #000A - 0x90020804, // 0008 SETMBR R0 K4 R4 - 0x90020A05, // 0009 SETMBR R0 K5 R5 - 0x781E000E, // 000A JMPF R7 #001A - 0x04200706, // 000B SUB R8 R3 K6 - 0x0C201107, // 000C DIV R8 R8 K7 - 0x90021008, // 000D SETMBR R0 K8 R8 - 0x04260C03, // 000E SUB R9 K6 R3 - 0x2C241306, // 000F AND R9 R9 K6 - 0x00260C09, // 0010 ADD R9 K6 R9 - 0x90021209, // 0011 SETMBR R0 K9 R9 - 0x2424110B, // 0012 GT R9 R8 K11 - 0x78260001, // 0013 JMPF R9 #0016 - 0x04241106, // 0014 SUB R9 R8 K6 - 0x70020000, // 0015 JMP #0017 - 0x5824000B, // 0016 LDCONST R9 K11 - 0x90021409, // 0017 SETMBR R0 K10 R9 - 0x9002190B, // 0018 SETMBR R0 K12 K11 - 0x70020009, // 0019 JMP #0024 - 0x9002110B, // 001A SETMBR R0 K8 K11 - 0x542203E7, // 001B LDINT R8 1000 - 0x90021208, // 001C SETMBR R0 K9 R8 - 0x24200706, // 001D GT R8 R3 K6 - 0x78220001, // 001E JMPF R8 #0021 - 0x04200707, // 001F SUB R8 R3 K7 - 0x70020000, // 0020 JMP #0022 - 0x5820000B, // 0021 LDCONST R8 K11 - 0x90021408, // 0022 SETMBR R0 K10 R8 - 0x90021906, // 0023 SETMBR R0 K12 K6 - 0x60200003, // 0024 GETGBL R8 G3 - 0x5C240000, // 0025 MOVE R9 R0 - 0x7C200200, // 0026 CALL R8 1 - 0x8C20110D, // 0027 GETMET R8 R8 K13 - 0x5C280200, // 0028 MOVE R10 R1 - 0x5C2C0400, // 0029 MOVE R11 R2 - 0x5C300600, // 002A MOVE R12 R3 - 0x7C200800, // 002B CALL R8 4 - 0x80041000, // 002C RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: GradientAnimation -********************************************************************/ -extern const bclass be_class_BeaconAnimation; -be_local_class(GradientAnimation, - 0, - &be_class_BeaconAnimation, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(render, -1), be_const_closure(class_GradientAnimation_render_closure) }, - { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(color2, -1), be_const_bytes_instance(0402FF0000FF) }, - { be_const_key_weak(gradient_type, 0), be_const_bytes_instance(1400000200000001) }, - { be_const_key_weak(direction, 1), be_const_bytes_instance(1400000200000001) }, - { be_const_key_weak(color1, -1), be_const_bytes_instance(04020000FFFF) }, - })) ) } )) }, - })), - be_str_weak(GradientAnimation) -); -// compact class 'EventHandler' ktab size: 7, total: 11 (saved 32 bytes) -static const bvalue be_ktab_class_EventHandler[7] = { - /* K0 */ be_nested_str_weak(is_active), - /* K1 */ be_nested_str_weak(condition), - /* K2 */ be_nested_str_weak(callback_func), - /* K3 */ be_nested_str_weak(event_name), - /* K4 */ be_nested_str_weak(priority), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(metadata), -}; - - -extern const bclass be_class_EventHandler; - -/******************************************************************** -** Solidified function: set_active -********************************************************************/ -be_local_closure(class_EventHandler_set_active, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventHandler, /* shared constants */ - be_str_weak(set_active), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: execute -********************************************************************/ -be_local_closure(class_EventHandler_execute, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventHandler, /* shared constants */ - be_str_weak(execute), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x88080101, // 0004 GETMBR R2 R0 K1 - 0x4C0C0000, // 0005 LDNIL R3 - 0x20080403, // 0006 NE R2 R2 R3 - 0x780A0005, // 0007 JMPF R2 #000E - 0x8C080101, // 0008 GETMET R2 R0 K1 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x740A0001, // 000B JMPT R2 #000E - 0x50080000, // 000C LDBOOL R2 0 0 - 0x80040400, // 000D RET 1 R2 - 0x88080102, // 000E GETMBR R2 R0 K2 - 0x4C0C0000, // 000F LDNIL R3 - 0x20080403, // 0010 NE R2 R2 R3 - 0x780A0004, // 0011 JMPF R2 #0017 - 0x8C080102, // 0012 GETMET R2 R0 K2 - 0x5C100200, // 0013 MOVE R4 R1 - 0x7C080400, // 0014 CALL R2 2 - 0x50080200, // 0015 LDBOOL R2 1 0 - 0x80040400, // 0016 RET 1 R2 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x80040400, // 0018 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_EventHandler_init, /* name */ - be_nested_proto( - 7, /* nstack */ - 6, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventHandler, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x90020601, // 0000 SETMBR R0 K3 R1 - 0x90020402, // 0001 SETMBR R0 K2 R2 - 0x4C180000, // 0002 LDNIL R6 - 0x20180606, // 0003 NE R6 R3 R6 - 0x781A0001, // 0004 JMPF R6 #0007 - 0x5C180600, // 0005 MOVE R6 R3 - 0x70020000, // 0006 JMP #0008 - 0x58180005, // 0007 LDCONST R6 K5 - 0x90020806, // 0008 SETMBR R0 K4 R6 - 0x90020204, // 0009 SETMBR R0 K1 R4 - 0x50180200, // 000A LDBOOL R6 1 0 - 0x90020006, // 000B SETMBR R0 K0 R6 - 0x4C180000, // 000C LDNIL R6 - 0x20180A06, // 000D NE R6 R5 R6 - 0x781A0001, // 000E JMPF R6 #0011 - 0x5C180A00, // 000F MOVE R6 R5 - 0x70020001, // 0010 JMP #0013 - 0x60180013, // 0011 GETGBL R6 G19 - 0x7C180000, // 0012 CALL R6 0 - 0x90020C06, // 0013 SETMBR R0 K6 R6 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: EventHandler -********************************************************************/ -be_local_class(EventHandler, - 6, - NULL, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_active, -1), be_const_closure(class_EventHandler_set_active_closure) }, - { be_const_key_weak(execute, 2), be_const_closure(class_EventHandler_execute_closure) }, - { be_const_key_weak(callback_func, -1), be_const_var(1) }, - { be_const_key_weak(init, -1), be_const_closure(class_EventHandler_init_closure) }, - { be_const_key_weak(event_name, -1), be_const_var(0) }, - { be_const_key_weak(condition, -1), be_const_var(2) }, - { be_const_key_weak(priority, 3), be_const_var(3) }, - { be_const_key_weak(metadata, -1), be_const_var(5) }, - { be_const_key_weak(is_active, -1), be_const_var(4) }, - })), - be_str_weak(EventHandler) -); // compact class 'rich_palette_color' ktab size: 55, total: 123 (saved 544 bytes) static const bvalue be_ktab_class_rich_palette_color[55] = { /* K0 */ be_nested_str_weak(_value_arr), @@ -3821,148 +3253,129 @@ be_local_class(rich_palette_color, })), be_str_weak(rich_palette_color) ); +// compact class 'twinkle' ktab size: 33, total: 54 (saved 168 bytes) +static const bvalue be_ktab_class_twinkle[33] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(_random), + /* K2 */ be_nested_str_weak(current_colors), + /* K3 */ be_nested_str_weak(size), + /* K4 */ be_nested_str_weak(_initialize_arrays), + /* K5 */ be_nested_str_weak(width), + /* K6 */ be_nested_str_weak(get), + /* K7 */ be_nested_str_weak(set_pixel_color), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(twinkle_speed), + /* K10 */ be_nested_str_weak(last_update), + /* K11 */ be_nested_str_weak(_update_twinkle_simulation), + /* K12 */ be_nested_str_weak(random_seed), + /* K13 */ be_const_int(1103515245), + /* K14 */ be_const_int(2147483647), + /* K15 */ be_nested_str_weak(engine), + /* K16 */ be_nested_str_weak(strip_length), + /* K17 */ be_nested_str_weak(clear), + /* K18 */ be_nested_str_weak(resize), + /* K19 */ be_nested_str_weak(set), + /* K20 */ be_nested_str_weak(on_param_changed), + /* K21 */ be_nested_str_weak(set_param), + /* K22 */ be_nested_str_weak(init), + /* K23 */ be_nested_str_weak(time_ms), + /* K24 */ be_nested_str_weak(fade_speed), + /* K25 */ be_nested_str_weak(density), + /* K26 */ be_nested_str_weak(min_brightness), + /* K27 */ be_nested_str_weak(max_brightness), + /* K28 */ be_nested_str_weak(color), + /* K29 */ be_nested_str_weak(tasmota), + /* K30 */ be_nested_str_weak(scale_uint), + /* K31 */ be_const_int(16777215), + /* K32 */ be_nested_str_weak(_random_range), +}; + + +extern const bclass be_class_twinkle; + +/******************************************************************** +** Solidified function: _random_range +********************************************************************/ +be_local_closure(class_twinkle__random_range, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(_random_range), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80060000, // 0002 RET 1 K0 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x7C080200, // 0004 CALL R2 1 + 0x10080401, // 0005 MOD R2 R2 R1 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ -extern const bclass be_class_BeaconAnimation; /******************************************************************** ** Solidified function: render ********************************************************************/ -be_local_closure(class_BeaconAnimation_render, /* name */ +be_local_closure(class_twinkle_render, /* name */ be_nested_proto( - 25, /* nstack */ + 11, /* nstack */ 4, /* argc */ - 2, /* varg */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(back_color), - /* K1 */ be_nested_str_weak(pos), - /* K2 */ be_nested_str_weak(slew_size), - /* K3 */ be_nested_str_weak(beacon_size), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(right_edge), - /* K6 */ be_const_int(-16777216), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(fill_pixels), - /* K9 */ be_nested_str_weak(pixels), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_int), - /* K13 */ be_nested_str_weak(blend_linear), - /* K14 */ be_nested_str_weak(set_pixel_color), - }), + &be_ktab_class_twinkle, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[106]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x88140101, // 0001 GETMBR R5 R0 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x881C0103, // 0003 GETMBR R7 R0 K3 - 0x88200104, // 0004 GETMBR R8 R0 K4 - 0x88240105, // 0005 GETMBR R9 R0 K5 - 0x20280906, // 0006 NE R10 R4 K6 - 0x782A0006, // 0007 JMPF R10 #000F - 0x2C280906, // 0008 AND R10 R4 K6 - 0x20281507, // 0009 NE R10 R10 K7 - 0x782A0003, // 000A JMPF R10 #000F - 0x8C280308, // 000B GETMET R10 R1 K8 - 0x88300309, // 000C GETMBR R12 R1 K9 - 0x5C340800, // 000D MOVE R13 R4 - 0x7C280600, // 000E CALL R10 3 - 0x4C280000, // 000F LDNIL R10 - 0x1C2C130A, // 0010 EQ R11 R9 K10 - 0x782E0003, // 0011 JMPF R11 #0016 - 0x042C0A07, // 0012 SUB R11 R5 R7 - 0x002C170A, // 0013 ADD R11 R11 K10 - 0x5C281600, // 0014 MOVE R10 R11 - 0x70020000, // 0015 JMP #0017 - 0x5C280A00, // 0016 MOVE R10 R5 - 0x5C2C1400, // 0017 MOVE R11 R10 - 0x00301407, // 0018 ADD R12 R10 R7 - 0x14341707, // 0019 LT R13 R11 K7 - 0x78360000, // 001A JMPF R13 #001C - 0x582C0007, // 001B LDCONST R11 K7 - 0x28341803, // 001C GE R13 R12 R3 - 0x78360000, // 001D JMPF R13 #001F - 0x5C300600, // 001E MOVE R12 R3 - 0x8C340308, // 001F GETMET R13 R1 K8 - 0x883C0309, // 0020 GETMBR R15 R1 K9 - 0x5C401000, // 0021 MOVE R16 R8 - 0x5C441600, // 0022 MOVE R17 R11 - 0x5C481800, // 0023 MOVE R18 R12 - 0x7C340A00, // 0024 CALL R13 5 - 0x4C340000, // 0025 LDNIL R13 - 0x24380D07, // 0026 GT R14 R6 K7 - 0x783A003F, // 0027 JMPF R14 #0068 - 0x04381406, // 0028 SUB R14 R10 R6 - 0x5C3C1400, // 0029 MOVE R15 R10 - 0x14401D07, // 002A LT R16 R14 K7 - 0x78420000, // 002B JMPF R16 #002D - 0x58380007, // 002C LDCONST R14 K7 - 0x28401E03, // 002D GE R16 R15 R3 - 0x78420000, // 002E JMPF R16 #0030 - 0x5C3C0600, // 002F MOVE R15 R3 - 0x5C341C00, // 0030 MOVE R13 R14 - 0x14401A0F, // 0031 LT R16 R13 R15 - 0x78420013, // 0032 JMPF R16 #0047 - 0xB8421600, // 0033 GETNGBL R16 K11 - 0x8C40210C, // 0034 GETMET R16 R16 K12 - 0x5C481A00, // 0035 MOVE R18 R13 - 0x044C1406, // 0036 SUB R19 R10 R6 - 0x044C270A, // 0037 SUB R19 R19 K10 - 0x5C501400, // 0038 MOVE R20 R10 - 0x545600FE, // 0039 LDINT R21 255 - 0x58580007, // 003A LDCONST R22 K7 - 0x7C400C00, // 003B CALL R16 6 - 0x8C44030D, // 003C GETMET R17 R1 K13 - 0x5C4C0800, // 003D MOVE R19 R4 - 0x5C501000, // 003E MOVE R20 R8 - 0x5C542000, // 003F MOVE R21 R16 - 0x7C440800, // 0040 CALL R17 4 - 0x8C48030E, // 0041 GETMET R18 R1 K14 - 0x5C501A00, // 0042 MOVE R20 R13 - 0x5C542200, // 0043 MOVE R21 R17 - 0x7C480600, // 0044 CALL R18 3 - 0x00341B0A, // 0045 ADD R13 R13 K10 - 0x7001FFE9, // 0046 JMP #0031 - 0x00401407, // 0047 ADD R16 R10 R7 - 0x00441407, // 0048 ADD R17 R10 R7 - 0x00442206, // 0049 ADD R17 R17 R6 - 0x14482107, // 004A LT R18 R16 K7 - 0x784A0000, // 004B JMPF R18 #004D - 0x58400007, // 004C LDCONST R16 K7 - 0x28482203, // 004D GE R18 R17 R3 - 0x784A0000, // 004E JMPF R18 #0050 - 0x5C440600, // 004F MOVE R17 R3 - 0x5C342000, // 0050 MOVE R13 R16 - 0x14481A11, // 0051 LT R18 R13 R17 - 0x784A0014, // 0052 JMPF R18 #0068 - 0xB84A1600, // 0053 GETNGBL R18 K11 - 0x8C48250C, // 0054 GETMET R18 R18 K12 - 0x5C501A00, // 0055 MOVE R20 R13 - 0x00541407, // 0056 ADD R21 R10 R7 - 0x04542B0A, // 0057 SUB R21 R21 K10 - 0x00581407, // 0058 ADD R22 R10 R7 - 0x00582C06, // 0059 ADD R22 R22 R6 - 0x585C0007, // 005A LDCONST R23 K7 - 0x546200FE, // 005B LDINT R24 255 - 0x7C480C00, // 005C CALL R18 6 - 0x8C4C030D, // 005D GETMET R19 R1 K13 - 0x5C540800, // 005E MOVE R21 R4 - 0x5C581000, // 005F MOVE R22 R8 - 0x5C5C2400, // 0060 MOVE R23 R18 - 0x7C4C0800, // 0061 CALL R19 4 - 0x8C50030E, // 0062 GETMET R20 R1 K14 - 0x5C581A00, // 0063 MOVE R22 R13 - 0x5C5C2600, // 0064 MOVE R23 R19 - 0x7C500600, // 0065 CALL R20 3 - 0x00341B0A, // 0066 ADD R13 R13 K10 - 0x7001FFE8, // 0067 JMP #0051 - 0x50380200, // 0068 LDBOOL R14 1 0 - 0x80041C00, // 0069 RET 1 R14 + ( &(const binstruction[36]) { /* code */ + 0x88100102, // 0000 GETMBR R4 R0 K2 + 0x8C100903, // 0001 GETMET R4 R4 K3 + 0x7C100200, // 0002 CALL R4 1 + 0x54160003, // 0003 LDINT R5 4 + 0x08140605, // 0004 MUL R5 R3 R5 + 0x20100805, // 0005 NE R4 R4 R5 + 0x78120001, // 0006 JMPF R4 #0009 + 0x8C100104, // 0007 GETMET R4 R0 K4 + 0x7C100200, // 0008 CALL R4 1 + 0x50100000, // 0009 LDBOOL R4 0 0 + 0x58140000, // 000A LDCONST R5 K0 + 0x14180A03, // 000B LT R6 R5 R3 + 0x781A0015, // 000C JMPF R6 #0023 + 0x88180305, // 000D GETMBR R6 R1 K5 + 0x14180A06, // 000E LT R6 R5 R6 + 0x781A0010, // 000F JMPF R6 #0021 + 0x88180102, // 0010 GETMBR R6 R0 K2 + 0x8C180D06, // 0011 GETMET R6 R6 K6 + 0x54220003, // 0012 LDINT R8 4 + 0x08200A08, // 0013 MUL R8 R5 R8 + 0x5425FFFB, // 0014 LDINT R9 -4 + 0x7C180600, // 0015 CALL R6 3 + 0x541E0017, // 0016 LDINT R7 24 + 0x3C1C0C07, // 0017 SHR R7 R6 R7 + 0x542200FE, // 0018 LDINT R8 255 + 0x2C1C0E08, // 0019 AND R7 R7 R8 + 0x241C0F00, // 001A GT R7 R7 K0 + 0x781E0004, // 001B JMPF R7 #0021 + 0x8C1C0307, // 001C GETMET R7 R1 K7 + 0x5C240A00, // 001D MOVE R9 R5 + 0x5C280C00, // 001E MOVE R10 R6 + 0x7C1C0600, // 001F CALL R7 3 + 0x50100200, // 0020 LDBOOL R4 1 0 + 0x00140B08, // 0021 ADD R5 R5 K8 + 0x7001FFE7, // 0022 JMP #000B + 0x80040800, // 0023 RET 1 R4 }) ) ); @@ -3970,53 +3383,11 @@ be_local_closure(class_BeaconAnimation_render, /* name */ /******************************************************************** -** Solidified class: BeaconAnimation +** Solidified function: update ********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(BeaconAnimation, - 0, - &be_class_Animation, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(render, -1), be_const_closure(class_BeaconAnimation_render_closure) }, - { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(pos, 1), be_const_bytes_instance(040000) }, - { be_const_key_weak(slew_size, 4), be_const_bytes_instance(0500000000) }, - { be_const_key_weak(back_color, 0), be_const_bytes_instance(0402000000FF) }, - { be_const_key_weak(beacon_size, -1), be_const_bytes_instance(0500000001) }, - { be_const_key_weak(right_edge, -1), be_const_bytes_instance(1400000200000001) }, - })) ) } )) }, - })), - be_str_weak(BeaconAnimation) -); -// compact class 'RichPaletteAnimation' ktab size: 13, total: 15 (saved 16 bytes) -static const bvalue be_ktab_class_RichPaletteAnimation[13] = { - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(color_provider), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(rich_palette_color), - /* K4 */ be_nested_str_weak(values), - /* K5 */ be_nested_str_weak(color), - /* K6 */ be_nested_str_weak(start), - /* K7 */ be_nested_str_weak(on_param_changed), - /* K8 */ be_nested_str_weak(colors), - /* K9 */ be_nested_str_weak(period), - /* K10 */ be_nested_str_weak(transition_type), - /* K11 */ be_nested_str_weak(brightness), - /* K12 */ be_nested_str_weak(set_param), -}; - - -extern const bclass be_class_RichPaletteAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_RichPaletteAnimation_init, /* name */ +be_local_closure(class_twinkle_update, /* name */ be_nested_proto( - 5, /* nstack */ + 7, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -4024,25 +3395,22 @@ be_local_closure(class_RichPaletteAnimation_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(init), + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0xB80A0400, // 0006 GETNGBL R2 K2 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x90020202, // 000A SETMBR R0 K1 R2 - 0x88080104, // 000B GETMBR R2 R0 K4 - 0x880C0101, // 000C GETMBR R3 R0 K1 - 0x980A0A03, // 000D SETIDX R2 K5 R3 - 0x80000000, // 000E RET 0 + ( &(const binstruction[12]) { /* code */ + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x540E03E7, // 0001 LDINT R3 1000 + 0x0C0C0602, // 0002 DIV R3 R3 R2 + 0x8810010A, // 0003 GETMBR R4 R0 K10 + 0x04100204, // 0004 SUB R4 R1 R4 + 0x28100803, // 0005 GE R4 R4 R3 + 0x78120003, // 0006 JMPF R4 #000B + 0x90021401, // 0007 SETMBR R0 K10 R1 + 0x8C10010B, // 0008 GETMET R4 R0 K11 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -4050,33 +3418,76 @@ be_local_closure(class_RichPaletteAnimation_init, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: _random ********************************************************************/ -be_local_closure(class_RichPaletteAnimation_start, /* name */ +be_local_closure(class_twinkle__random, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 3, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ - be_str_weak(start), + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(_random), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080506, // 0003 GETMET R2 R2 K6 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x8C080506, // 0007 GETMET R2 R2 K6 - 0x5C100200, // 0008 MOVE R4 R1 + ( &(const binstruction[ 8]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x0804030D, // 0001 MUL R1 R1 K13 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C04030E, // 0004 AND R1 R1 K14 + 0x90021801, // 0005 SETMBR R0 K12 R1 + 0x8804010C, // 0006 GETMBR R1 R0 K12 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_arrays +********************************************************************/ +be_local_closure(class_twinkle__initialize_arrays, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(_initialize_arrays), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x88040310, // 0001 GETMBR R1 R1 K16 + 0x88080102, // 0002 GETMBR R2 R0 K2 + 0x8C080511, // 0003 GETMET R2 R2 K17 + 0x7C080200, // 0004 CALL R2 1 + 0x88080102, // 0005 GETMBR R2 R0 K2 + 0x8C080512, // 0006 GETMET R2 R2 K18 + 0x54120003, // 0007 LDINT R4 4 + 0x08100204, // 0008 MUL R4 R1 R4 0x7C080400, // 0009 CALL R2 2 - 0x80040000, // 000A RET 1 R0 + 0x58080000, // 000A LDCONST R2 K0 + 0x140C0401, // 000B LT R3 R2 R1 + 0x780E0008, // 000C JMPF R3 #0016 + 0x880C0102, // 000D GETMBR R3 R0 K2 + 0x8C0C0713, // 000E GETMET R3 R3 K19 + 0x54160003, // 000F LDINT R5 4 + 0x08140405, // 0010 MUL R5 R2 R5 + 0x58180000, // 0011 LDCONST R6 K0 + 0x541DFFFB, // 0012 LDINT R7 -4 + 0x7C0C0800, // 0013 CALL R3 4 + 0x00080508, // 0014 ADD R2 R2 K8 + 0x7001FFF4, // 0015 JMP #000B + 0x80000000, // 0016 RET 0 }) ) ); @@ -4086,9 +3497,9 @@ be_local_closure(class_RichPaletteAnimation_start, /* name */ /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ +be_local_closure(class_twinkle_on_param_changed, /* name */ be_nested_proto( - 7, /* nstack */ + 8, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -4096,39 +3507,37 @@ be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_RichPaletteAnimation, /* shared constants */ + &be_ktab_class_twinkle, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ + ( &(const binstruction[27]) { /* code */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0707, // 0003 GETMET R3 R3 K7 + 0x8C0C0714, // 0003 GETMET R3 R3 K20 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0308, // 0007 EQ R3 R1 K8 - 0x740E0005, // 0008 JMPT R3 #000F - 0x1C0C0309, // 0009 EQ R3 R1 K9 - 0x740E0003, // 000A JMPT R3 #000F - 0x1C0C030A, // 000B EQ R3 R1 K10 - 0x740E0001, // 000C JMPT R3 #000F - 0x1C0C030B, // 000D EQ R3 R1 K11 - 0x780E0005, // 000E JMPF R3 #0015 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x8C0C070C, // 0010 GETMET R3 R3 K12 - 0x5C140200, // 0011 MOVE R5 R1 - 0x5C180400, // 0012 MOVE R6 R2 - 0x7C0C0600, // 0013 CALL R3 3 - 0x70020006, // 0014 JMP #001C - 0x600C0003, // 0015 GETGBL R3 G3 - 0x5C100000, // 0016 MOVE R4 R0 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C0707, // 0018 GETMET R3 R3 K7 - 0x5C140200, // 0019 MOVE R5 R1 - 0x5C180400, // 001A MOVE R6 R2 - 0x7C0C0600, // 001B CALL R3 3 - 0x80000000, // 001C RET 0 + 0x1C0C0309, // 0007 EQ R3 R1 K9 + 0x780E0010, // 0008 JMPF R3 #001A + 0x540E0031, // 0009 LDINT R3 50 + 0x280C0403, // 000A GE R3 R2 R3 + 0x780E000D, // 000B JMPF R3 #001A + 0x540E03E7, // 000C LDINT R3 1000 + 0x0C0C0602, // 000D DIV R3 R3 R2 + 0x14100708, // 000E LT R4 R3 K8 + 0x78120001, // 000F JMPF R4 #0012 + 0x580C0008, // 0010 LDCONST R3 K8 + 0x70020003, // 0011 JMP #0016 + 0x54120013, // 0012 LDINT R4 20 + 0x24100604, // 0013 GT R4 R3 R4 + 0x78120000, // 0014 JMPF R4 #0016 + 0x540E0013, // 0015 LDINT R3 20 + 0x8C100115, // 0016 GETMET R4 R0 K21 + 0x58180009, // 0017 LDCONST R6 K9 + 0x5C1C0600, // 0018 MOVE R7 R3 + 0x7C100600, // 0019 CALL R4 3 + 0x80000000, // 001A RET 0 }) ) ); @@ -4136,30 +3545,290 @@ be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ /******************************************************************** -** Solidified class: RichPaletteAnimation +** Solidified function: init +********************************************************************/ +be_local_closure(class_twinkle_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080516, // 0003 GETMET R2 R2 K22 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080015, // 0006 GETGBL R2 G21 + 0x7C080000, // 0007 CALL R2 0 + 0x90020402, // 0008 SETMBR R0 K2 R2 + 0x90021500, // 0009 SETMBR R0 K10 K0 + 0x8808010F, // 000A GETMBR R2 R0 K15 + 0x88080517, // 000B GETMBR R2 R2 K23 + 0x540EFFFF, // 000C LDINT R3 65536 + 0x10080403, // 000D MOD R2 R2 R3 + 0x90021802, // 000E SETMBR R0 K12 R2 + 0x8C080104, // 000F GETMET R2 R0 K4 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_twinkle_simulation +********************************************************************/ +be_local_closure(class_twinkle__update_twinkle_simulation, /* name */ + be_nested_proto( + 22, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_twinkle, /* shared constants */ + be_str_weak(_update_twinkle_simulation), + &be_const_str_solidified, + ( &(const binstruction[116]) { /* code */ + 0x88080118, // 0000 GETMBR R2 R0 K24 + 0x880C0119, // 0001 GETMBR R3 R0 K25 + 0x8810011A, // 0002 GETMBR R4 R0 K26 + 0x8814011B, // 0003 GETMBR R5 R0 K27 + 0x8818011C, // 0004 GETMBR R6 R0 K28 + 0x881C010F, // 0005 GETMBR R7 R0 K15 + 0x881C0F10, // 0006 GETMBR R7 R7 K16 + 0x88200102, // 0007 GETMBR R8 R0 K2 + 0x8C201103, // 0008 GETMET R8 R8 K3 + 0x7C200200, // 0009 CALL R8 1 + 0x54260003, // 000A LDINT R9 4 + 0x08240E09, // 000B MUL R9 R7 R9 + 0x20201009, // 000C NE R8 R8 R9 + 0x78220001, // 000D JMPF R8 #0010 + 0x8C200104, // 000E GETMET R8 R0 K4 + 0x7C200200, // 000F CALL R8 1 + 0x58200000, // 0010 LDCONST R8 K0 + 0x14241007, // 0011 LT R9 R8 R7 + 0x7826002A, // 0012 JMPF R9 #003E + 0x88240102, // 0013 GETMBR R9 R0 K2 + 0x8C241306, // 0014 GETMET R9 R9 K6 + 0x542E0003, // 0015 LDINT R11 4 + 0x082C100B, // 0016 MUL R11 R8 R11 + 0x5431FFFB, // 0017 LDINT R12 -4 + 0x7C240600, // 0018 CALL R9 3 + 0x542A0017, // 0019 LDINT R10 24 + 0x3C28120A, // 001A SHR R10 R9 R10 + 0x542E00FE, // 001B LDINT R11 255 + 0x2C28140B, // 001C AND R10 R10 R11 + 0x242C1500, // 001D GT R11 R10 K0 + 0x782E001C, // 001E JMPF R11 #003C + 0xB82E3A00, // 001F GETNGBL R11 K29 + 0x8C2C171E, // 0020 GETMET R11 R11 K30 + 0x5C340400, // 0021 MOVE R13 R2 + 0x58380000, // 0022 LDCONST R14 K0 + 0x543E00FE, // 0023 LDINT R15 255 + 0x58400008, // 0024 LDCONST R16 K8 + 0x54460013, // 0025 LDINT R17 20 + 0x7C2C0C00, // 0026 CALL R11 6 + 0x1830140B, // 0027 LE R12 R10 R11 + 0x78320007, // 0028 JMPF R12 #0031 + 0x88300102, // 0029 GETMBR R12 R0 K2 + 0x8C301913, // 002A GETMET R12 R12 K19 + 0x543A0003, // 002B LDINT R14 4 + 0x0838100E, // 002C MUL R14 R8 R14 + 0x583C0000, // 002D LDCONST R15 K0 + 0x5441FFFB, // 002E LDINT R16 -4 + 0x7C300800, // 002F CALL R12 4 + 0x7002000A, // 0030 JMP #003C + 0x0430140B, // 0031 SUB R12 R10 R11 + 0x2C34131F, // 0032 AND R13 R9 K31 + 0x88380102, // 0033 GETMBR R14 R0 K2 + 0x8C381D13, // 0034 GETMET R14 R14 K19 + 0x54420003, // 0035 LDINT R16 4 + 0x08401010, // 0036 MUL R16 R8 R16 + 0x54460017, // 0037 LDINT R17 24 + 0x38441811, // 0038 SHL R17 R12 R17 + 0x3044220D, // 0039 OR R17 R17 R13 + 0x5449FFFB, // 003A LDINT R18 -4 + 0x7C380800, // 003B CALL R14 4 + 0x00201108, // 003C ADD R8 R8 K8 + 0x7001FFD2, // 003D JMP #0011 + 0x58240000, // 003E LDCONST R9 K0 + 0x14281207, // 003F LT R10 R9 R7 + 0x782A0031, // 0040 JMPF R10 #0073 + 0x88280102, // 0041 GETMBR R10 R0 K2 + 0x8C281506, // 0042 GETMET R10 R10 K6 + 0x54320003, // 0043 LDINT R12 4 + 0x0830120C, // 0044 MUL R12 R9 R12 + 0x5435FFFB, // 0045 LDINT R13 -4 + 0x7C280600, // 0046 CALL R10 3 + 0x542E0017, // 0047 LDINT R11 24 + 0x3C2C140B, // 0048 SHR R11 R10 R11 + 0x543200FE, // 0049 LDINT R12 255 + 0x2C2C160C, // 004A AND R11 R11 R12 + 0x1C301700, // 004B EQ R12 R11 K0 + 0x78320023, // 004C JMPF R12 #0071 + 0x8C300120, // 004D GETMET R12 R0 K32 + 0x543A00FE, // 004E LDINT R14 255 + 0x7C300400, // 004F CALL R12 2 + 0x14301803, // 0050 LT R12 R12 R3 + 0x7832001E, // 0051 JMPF R12 #0071 + 0x8C300120, // 0052 GETMET R12 R0 K32 + 0x04380A04, // 0053 SUB R14 R5 R4 + 0x00381D08, // 0054 ADD R14 R14 K8 + 0x7C300400, // 0055 CALL R12 2 + 0x0030080C, // 0056 ADD R12 R4 R12 + 0x5C340C00, // 0057 MOVE R13 R6 + 0x543A000F, // 0058 LDINT R14 16 + 0x3C381A0E, // 0059 SHR R14 R13 R14 + 0x543E00FE, // 005A LDINT R15 255 + 0x2C381C0F, // 005B AND R14 R14 R15 + 0x543E0007, // 005C LDINT R15 8 + 0x3C3C1A0F, // 005D SHR R15 R13 R15 + 0x544200FE, // 005E LDINT R16 255 + 0x2C3C1E10, // 005F AND R15 R15 R16 + 0x544200FE, // 0060 LDINT R16 255 + 0x2C401A10, // 0061 AND R16 R13 R16 + 0x88440102, // 0062 GETMBR R17 R0 K2 + 0x8C442313, // 0063 GETMET R17 R17 K19 + 0x544E0003, // 0064 LDINT R19 4 + 0x084C1213, // 0065 MUL R19 R9 R19 + 0x54520017, // 0066 LDINT R20 24 + 0x38501814, // 0067 SHL R20 R12 R20 + 0x5456000F, // 0068 LDINT R21 16 + 0x38541C15, // 0069 SHL R21 R14 R21 + 0x30502815, // 006A OR R20 R20 R21 + 0x54560007, // 006B LDINT R21 8 + 0x38541E15, // 006C SHL R21 R15 R21 + 0x30502815, // 006D OR R20 R20 R21 + 0x30502810, // 006E OR R20 R20 R16 + 0x5455FFFB, // 006F LDINT R21 -4 + 0x7C440800, // 0070 CALL R17 4 + 0x00241308, // 0071 ADD R9 R9 K8 + 0x7001FFCB, // 0072 JMP #003F + 0x80000000, // 0073 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: twinkle ********************************************************************/ extern const bclass be_class_Animation; -be_local_class(RichPaletteAnimation, - 1, +be_local_class(twinkle, + 3, &be_class_Animation, - be_nested_map(5, + be_nested_map(12, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_RichPaletteAnimation_init_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteAnimation_start_closure) }, - { be_const_key_weak(on_param_changed, 4), be_const_closure(class_RichPaletteAnimation_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(4, + { be_const_key_weak(last_update, -1), be_const_var(1) }, + { be_const_key_weak(render, 8), be_const_closure(class_twinkle_render_closure) }, + { be_const_key_weak(_update_twinkle_simulation, -1), be_const_closure(class_twinkle__update_twinkle_simulation_closure) }, + { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(period, -1), be_const_bytes_instance(050000018813) }, - { be_const_key_weak(colors, -1), be_const_bytes_instance(0C0605) }, - { be_const_key_weak(brightness, -1), be_const_bytes_instance(07000001FF0001FF00) }, - { be_const_key_weak(transition_type, -1), be_const_bytes_instance(1400050200010005) }, + { be_const_key_weak(twinkle_speed, 1), be_const_bytes_instance(0700010188130064) }, + { be_const_key_weak(min_brightness, -1), be_const_bytes_instance(07000001FF000020) }, + { be_const_key_weak(density, -1), be_const_bytes_instance(07000001FF000040) }, + { be_const_key_weak(max_brightness, 2), be_const_bytes_instance(07000001FF0001FF00) }, + { be_const_key_weak(color, -1), be_const_bytes_instance(0400BB) }, + { be_const_key_weak(fade_speed, 0), be_const_bytes_instance(07000001FF0001B400) }, })) ) } )) }, - { be_const_key_weak(color_provider, -1), be_const_var(0) }, + { be_const_key_weak(update, -1), be_const_closure(class_twinkle_update_closure) }, + { be_const_key_weak(_random, -1), be_const_closure(class_twinkle__random_closure) }, + { be_const_key_weak(init, 9), be_const_closure(class_twinkle_init_closure) }, + { be_const_key_weak(_initialize_arrays, -1), be_const_closure(class_twinkle__initialize_arrays_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_twinkle_on_param_changed_closure) }, + { be_const_key_weak(current_colors, -1), be_const_var(0) }, + { be_const_key_weak(random_seed, 2), be_const_var(2) }, + { be_const_key_weak(_random_range, 0), be_const_closure(class_twinkle__random_range_closure) }, })), - be_str_weak(RichPaletteAnimation) + be_str_weak(twinkle) ); +/******************************************************************** +** Solidified function: animation_init_strip +********************************************************************/ +be_local_closure(animation_init_strip, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 1, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(introspect), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(_engines), + /* K5 */ be_nested_str_weak(find), + /* K6 */ be_nested_str_weak(stop), + /* K7 */ be_nested_str_weak(clear), + /* K8 */ be_nested_str_weak(Leds), + /* K9 */ be_nested_str_weak(create_engine), + }), + be_str_weak(animation_init_strip), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0xA40E0400, // 0002 IMPORT R3 K2 + 0x8C100703, // 0003 GETMET R4 R3 K3 + 0x5C180400, // 0004 MOVE R6 R2 + 0x581C0004, // 0005 LDCONST R7 K4 + 0x7C100600, // 0006 CALL R4 3 + 0x74120002, // 0007 JMPT R4 #000B + 0x60100013, // 0008 GETGBL R4 G19 + 0x7C100000, // 0009 CALL R4 0 + 0x900A0804, // 000A SETMBR R2 K4 R4 + 0x60100008, // 000B GETGBL R4 G8 + 0x5C140000, // 000C MOVE R5 R0 + 0x7C100200, // 000D CALL R4 1 + 0x88140504, // 000E GETMBR R5 R2 K4 + 0x8C140B05, // 000F GETMET R5 R5 K5 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x7C140400, // 0011 CALL R5 2 + 0x4C180000, // 0012 LDNIL R6 + 0x20180A06, // 0013 NE R6 R5 R6 + 0x781A0004, // 0014 JMPF R6 #001A + 0x8C180B06, // 0015 GETMET R6 R5 K6 + 0x7C180200, // 0016 CALL R6 1 + 0x8C180B07, // 0017 GETMET R6 R5 K7 + 0x7C180200, // 0018 CALL R6 1 + 0x70020009, // 0019 JMP #0024 + 0x60180016, // 001A GETGBL R6 G22 + 0x881C0308, // 001B GETMBR R7 R1 K8 + 0x5C200000, // 001C MOVE R8 R0 + 0x7C180400, // 001D CALL R6 2 + 0x8C1C0509, // 001E GETMET R7 R2 K9 + 0x5C240C00, // 001F MOVE R9 R6 + 0x7C1C0400, // 0020 CALL R7 2 + 0x5C140E00, // 0021 MOVE R5 R7 + 0x881C0504, // 0022 GETMBR R7 R2 K4 + 0x981C0805, // 0023 SETIDX R7 R4 R5 + 0x80040A00, // 0024 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: register_event_handler ********************************************************************/ @@ -4244,6 +3913,4084 @@ be_local_class(static_value, })), be_str_weak(static_value) ); +// compact class 'rich_palette' ktab size: 13, total: 15 (saved 16 bytes) +static const bvalue be_ktab_class_rich_palette[13] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(color_provider), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(rich_palette_color), + /* K4 */ be_nested_str_weak(values), + /* K5 */ be_nested_str_weak(color), + /* K6 */ be_nested_str_weak(start), + /* K7 */ be_nested_str_weak(on_param_changed), + /* K8 */ be_nested_str_weak(colors), + /* K9 */ be_nested_str_weak(period), + /* K10 */ be_nested_str_weak(transition_type), + /* K11 */ be_nested_str_weak(brightness), + /* K12 */ be_nested_str_weak(set_param), +}; + + +extern const bclass be_class_rich_palette; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_rich_palette_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_rich_palette, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0xB80A0400, // 0006 GETNGBL R2 K2 + 0x8C080503, // 0007 GETMET R2 R2 K3 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x90020202, // 000A SETMBR R0 K1 R2 + 0x88080104, // 000B GETMBR R2 R0 K4 + 0x880C0101, // 000C GETMBR R3 R0 K1 + 0x980A0A03, // 000D SETIDX R2 K5 R3 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_rich_palette_start, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_rich_palette, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080506, // 0003 GETMET R2 R2 K6 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x8C080506, // 0007 GETMET R2 R2 K6 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x80040000, // 000A RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_rich_palette_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_rich_palette, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0707, // 0003 GETMET R3 R3 K7 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0308, // 0007 EQ R3 R1 K8 + 0x740E0005, // 0008 JMPT R3 #000F + 0x1C0C0309, // 0009 EQ R3 R1 K9 + 0x740E0003, // 000A JMPT R3 #000F + 0x1C0C030A, // 000B EQ R3 R1 K10 + 0x740E0001, // 000C JMPT R3 #000F + 0x1C0C030B, // 000D EQ R3 R1 K11 + 0x780E0005, // 000E JMPF R3 #0015 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C070C, // 0010 GETMET R3 R3 K12 + 0x5C140200, // 0011 MOVE R5 R1 + 0x5C180400, // 0012 MOVE R6 R2 + 0x7C0C0600, // 0013 CALL R3 3 + 0x70020006, // 0014 JMP #001C + 0x600C0003, // 0015 GETGBL R3 G3 + 0x5C100000, // 0016 MOVE R4 R0 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C0707, // 0018 GETMET R3 R3 K7 + 0x5C140200, // 0019 MOVE R5 R1 + 0x5C180400, // 001A MOVE R6 R2 + 0x7C0C0600, // 001B CALL R3 3 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: rich_palette +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(rich_palette, + 1, + &be_class_Animation, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(init, -1), be_const_closure(class_rich_palette_init_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_rich_palette_start_closure) }, + { be_const_key_weak(on_param_changed, 4), be_const_closure(class_rich_palette_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(period, -1), be_const_bytes_instance(050000018813) }, + { be_const_key_weak(colors, -1), be_const_bytes_instance(0C0605) }, + { be_const_key_weak(brightness, -1), be_const_bytes_instance(07000001FF0001FF00) }, + { be_const_key_weak(transition_type, -1), be_const_bytes_instance(1400050200010005) }, + })) ) } )) }, + { be_const_key_weak(color_provider, -1), be_const_var(0) }, + })), + be_str_weak(rich_palette) +); + +/******************************************************************** +** Solidified function: ramp +********************************************************************/ +be_local_closure(ramp, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_const_int(1), + }), + be_str_weak(ramp), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060503, // 0004 SETMBR R1 K2 K3 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: list_user_functions +********************************************************************/ +be_local_closure(list_user_functions, /* name */ + be_nested_proto( + 6, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(user_functions), + /* K2 */ be_nested_str_weak(keys), + /* K3 */ be_nested_str_weak(push), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(list_user_functions), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x60000012, // 0000 GETGBL R0 G18 + 0x7C000000, // 0001 CALL R0 0 + 0x60040010, // 0002 GETGBL R1 G16 + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x88080501, // 0004 GETMBR R2 R2 K1 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x7C040200, // 0007 CALL R1 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C080200, // 0009 MOVE R2 R1 + 0x7C080000, // 000A CALL R2 0 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 + 0x7001FFF9, // 000E JMP #0009 + 0x58040004, // 000F LDCONST R1 K4 + 0xAC040200, // 0010 CATCH R1 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040000, // 0012 RET 1 R0 + }) + ) +); +/*******************************************************************/ + +// compact class 'engine_proxy' ktab size: 40, total: 109 (saved 552 bytes) +static const bvalue be_ktab_class_engine_proxy[40] = { + /* K0 */ be_nested_str_weak(engine), + /* K1 */ be_nested_str_weak(strip_length), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(sequence_manager), + /* K4 */ be_nested_str_weak(_remove_sequence_manager), + /* K5 */ be_nested_str_weak(value_provider), + /* K6 */ be_nested_str_weak(_remove_value_provider), + /* K7 */ be_nested_str_weak(_remove_animation), + /* K8 */ be_nested_str_weak(animations), + /* K9 */ be_nested_str_weak(find), + /* K10 */ be_nested_str_weak(push), + /* K11 */ be_nested_str_weak(_sort_animations_by_priority), + /* K12 */ be_nested_str_weak(is_running), + /* K13 */ be_nested_str_weak(start), + /* K14 */ be_nested_str_weak(time_ms), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(sequences), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(value_providers), + /* K19 */ be_nested_str_weak(remove), + /* K20 */ be_nested_str_weak(iteration_stack), + /* K21 */ be_nested_str_weak(stop), + /* K22 */ be_nested_str_weak(_add_sequence_manager), + /* K23 */ be_nested_str_weak(_add_value_provider), + /* K24 */ be_nested_str_weak(_add_animation), + /* K25 */ be_nested_str_weak(type_error), + /* K26 */ be_nested_str_weak(only_X20Animation_X2C_X20sequence_manager_X2C_X20or_X20value_provider), + /* K27 */ be_nested_str_weak(update), + /* K28 */ be_nested_str_weak(start_time), + /* K29 */ be_nested_str_weak(pop), + /* K30 */ be_nested_str_weak(priority), + /* K31 */ be_nested_str_weak(temp_buffer), + /* K32 */ be_nested_str_weak(clear), + /* K33 */ be_nested_str_weak(render), + /* K34 */ be_nested_str_weak(post_render), + /* K35 */ be_nested_str_weak(blend_pixels), + /* K36 */ be_nested_str_weak(pixels), + /* K37 */ be_nested_str_weak(stop_iteration), + /* K38 */ be_nested_str_weak(init), + /* K39 */ be_nested_str_weak(setup_template), +}; + + +extern const bclass be_class_engine_proxy; + +/******************************************************************** +** Solidified function: get_strip_length +********************************************************************/ +be_local_closure(class_engine_proxy_get_strip_length, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(get_strip_length), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove +********************************************************************/ +be_local_closure(class_engine_proxy_remove, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(remove), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x88100903, // 0003 GETMBR R4 R4 K3 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080104, // 0006 GETMET R2 R0 K4 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020015, // 000A JMP #0021 + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8120400, // 000D GETNGBL R4 K2 + 0x88100905, // 000E GETMBR R4 R4 K5 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C080106, // 0011 GETMET R2 R0 K6 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x7002000A, // 0015 JMP #0021 + 0x6008000F, // 0016 GETGBL R2 G15 + 0x5C0C0200, // 0017 MOVE R3 R1 + 0xB8120400, // 0018 GETNGBL R4 K2 + 0x88100902, // 0019 GETMBR R4 R4 K2 + 0x7C080400, // 001A CALL R2 2 + 0x780A0004, // 001B JMPF R2 #0021 + 0x8C080107, // 001C GETMET R2 R0 K7 + 0x5C100200, // 001D MOVE R4 R1 + 0x7C080400, // 001E CALL R2 2 + 0x80040400, // 001F RET 1 R2 + 0x7001FFFF, // 0020 JMP #0021 + 0x80000000, // 0021 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: size_animations +********************************************************************/ +be_local_closure(class_engine_proxy_size_animations, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(size_animations), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_animation +********************************************************************/ +be_local_closure(class_engine_proxy__add_animation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_add_animation), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A000E, // 0006 JMPF R2 #0016 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x8C08050A, // 0008 GETMET R2 R2 K10 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x8C08010B, // 000B GETMET R2 R0 K11 + 0x7C080200, // 000C CALL R2 1 + 0x8808010C, // 000D GETMBR R2 R0 K12 + 0x780A0003, // 000E JMPF R2 #0013 + 0x8C08030D, // 000F GETMET R2 R1 K13 + 0x88100100, // 0010 GETMBR R4 R0 K0 + 0x8810090E, // 0011 GETMBR R4 R4 K14 + 0x7C080400, // 0012 CALL R2 2 + 0x50080200, // 0013 LDBOOL R2 1 0 + 0x80040400, // 0014 RET 1 R2 + 0x70020001, // 0015 JMP #0018 + 0x50080000, // 0016 LDBOOL R2 0 0 + 0x80040400, // 0017 RET 1 R2 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_engine_proxy_start, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050D, // 0003 GETMET R2 R2 K13 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x5808000F, // 0006 LDCONST R2 K15 + 0x600C000C, // 0007 GETGBL R3 G12 + 0x88100110, // 0008 GETMBR R4 R0 K16 + 0x7C0C0200, // 0009 CALL R3 1 + 0x140C0403, // 000A LT R3 R2 R3 + 0x780E0006, // 000B JMPF R3 #0013 + 0x880C0110, // 000C GETMBR R3 R0 K16 + 0x940C0602, // 000D GETIDX R3 R3 R2 + 0x8C0C070D, // 000E GETMET R3 R3 K13 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C0C0400, // 0010 CALL R3 2 + 0x00080511, // 0011 ADD R2 R2 K17 + 0x7001FFF3, // 0012 JMP #0007 + 0x5808000F, // 0013 LDCONST R2 K15 + 0x600C000C, // 0014 GETGBL R3 G12 + 0x88100112, // 0015 GETMBR R4 R0 K18 + 0x7C0C0200, // 0016 CALL R3 1 + 0x140C0403, // 0017 LT R3 R2 R3 + 0x780E0006, // 0018 JMPF R3 #0020 + 0x880C0112, // 0019 GETMBR R3 R0 K18 + 0x940C0602, // 001A GETIDX R3 R3 R2 + 0x8C0C070D, // 001B GETMET R3 R3 K13 + 0x5C140200, // 001C MOVE R5 R1 + 0x7C0C0400, // 001D CALL R3 2 + 0x00080511, // 001E ADD R2 R2 K17 + 0x7001FFF3, // 001F JMP #0014 + 0x5808000F, // 0020 LDCONST R2 K15 + 0x600C000C, // 0021 GETGBL R3 G12 + 0x88100108, // 0022 GETMBR R4 R0 K8 + 0x7C0C0200, // 0023 CALL R3 1 + 0x140C0403, // 0024 LT R3 R2 R3 + 0x780E0006, // 0025 JMPF R3 #002D + 0x880C0108, // 0026 GETMBR R3 R0 K8 + 0x940C0602, // 0027 GETIDX R3 R3 R2 + 0x8C0C070D, // 0028 GETMET R3 R3 K13 + 0x5C140200, // 0029 MOVE R5 R1 + 0x7C0C0400, // 002A CALL R3 2 + 0x00080511, // 002B ADD R2 R2 K17 + 0x7001FFF3, // 002C JMP #0021 + 0x80040000, // 002D RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _remove_value_provider +********************************************************************/ +be_local_closure(class_engine_proxy__remove_value_provider, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_remove_value_provider), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080112, // 0000 GETMBR R2 R0 K18 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0006, // 0006 JMPF R3 #000E + 0x880C0112, // 0007 GETMBR R3 R0 K18 + 0x8C0C0713, // 0008 GETMET R3 R3 K19 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x80040600, // 000C RET 1 R3 + 0x70020001, // 000D JMP #0010 + 0x500C0000, // 000E LDBOOL R3 0 0 + 0x80040600, // 000F RET 1 R3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _remove_animation +********************************************************************/ +be_local_closure(class_engine_proxy__remove_animation, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_remove_animation), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0006, // 0006 JMPF R3 #000E + 0x880C0108, // 0007 GETMBR R3 R0 K8 + 0x8C0C0713, // 0008 GETMET R3 R3 K19 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x80040600, // 000C RET 1 R3 + 0x70020001, // 000D JMP #0010 + 0x500C0000, // 000E LDBOOL R3 0 0 + 0x80040600, // 000F RET 1 R3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setup_template +********************************************************************/ +be_local_closure(class_engine_proxy_setup_template, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(setup_template), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update_current_iteration +********************************************************************/ +be_local_closure(class_engine_proxy_update_current_iteration, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(update_current_iteration), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x880C0114, // 0001 GETMBR R3 R0 K20 + 0x7C080200, // 0002 CALL R2 1 + 0x2408050F, // 0003 GT R2 R2 K15 + 0x780A0002, // 0004 JMPF R2 #0008 + 0x88080114, // 0005 GETMBR R2 R0 K20 + 0x540DFFFE, // 0006 LDINT R3 -1 + 0x98080601, // 0007 SETIDX R2 R3 R1 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear +********************************************************************/ +be_local_closure(class_engine_proxy_clear, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(clear), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8C040115, // 0000 GETMET R1 R0 K21 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x90021001, // 0004 SETMBR R0 K8 R1 + 0x60040012, // 0005 GETGBL R1 G18 + 0x7C040000, // 0006 CALL R1 0 + 0x90022001, // 0007 SETMBR R0 K16 R1 + 0x60040012, // 0008 GETGBL R1 G18 + 0x7C040000, // 0009 CALL R1 0 + 0x90022401, // 000A SETMBR R0 K18 R1 + 0x80040000, // 000B RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_value_provider +********************************************************************/ +be_local_closure(class_engine_proxy__add_value_provider, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_add_value_provider), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080112, // 0000 GETMBR R2 R0 K18 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A0006, // 0006 JMPF R2 #000E + 0x88080112, // 0007 GETMBR R2 R0 K18 + 0x8C08050A, // 0008 GETMET R2 R2 K10 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x50080200, // 000B LDBOOL R2 1 0 + 0x80040400, // 000C RET 1 R2 + 0x70020001, // 000D JMP #0010 + 0x50080000, // 000E LDBOOL R2 0 0 + 0x80040400, // 000F RET 1 R2 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_sequence_manager +********************************************************************/ +be_local_closure(class_engine_proxy__add_sequence_manager, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_add_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080110, // 0000 GETMBR R2 R0 K16 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A0006, // 0006 JMPF R2 #000E + 0x88080110, // 0007 GETMBR R2 R0 K16 + 0x8C08050A, // 0008 GETMET R2 R2 K10 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x50080200, // 000B LDBOOL R2 1 0 + 0x80040400, // 000C RET 1 R2 + 0x70020001, // 000D JMP #0010 + 0x50080000, // 000E LDBOOL R2 0 0 + 0x80040400, // 000F RET 1 R2 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_engine_proxy_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x5804000F, // 0000 LDCONST R1 K15 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0108, // 0002 GETMBR R3 R0 K8 + 0x7C080200, // 0003 CALL R2 1 + 0x14080202, // 0004 LT R2 R1 R2 + 0x780A0005, // 0005 JMPF R2 #000C + 0x88080108, // 0006 GETMBR R2 R0 K8 + 0x94080401, // 0007 GETIDX R2 R2 R1 + 0x8C080515, // 0008 GETMET R2 R2 K21 + 0x7C080200, // 0009 CALL R2 1 + 0x00040311, // 000A ADD R1 R1 K17 + 0x7001FFF4, // 000B JMP #0001 + 0x5804000F, // 000C LDCONST R1 K15 + 0x6008000C, // 000D GETGBL R2 G12 + 0x880C0110, // 000E GETMBR R3 R0 K16 + 0x7C080200, // 000F CALL R2 1 + 0x14080202, // 0010 LT R2 R1 R2 + 0x780A0005, // 0011 JMPF R2 #0018 + 0x88080110, // 0012 GETMBR R2 R0 K16 + 0x94080401, // 0013 GETIDX R2 R2 R1 + 0x8C080515, // 0014 GETMET R2 R2 K21 + 0x7C080200, // 0015 CALL R2 1 + 0x00040311, // 0016 ADD R1 R1 K17 + 0x7001FFF4, // 0017 JMP #000D + 0x60080003, // 0018 GETGBL R2 G3 + 0x5C0C0000, // 0019 MOVE R3 R0 + 0x7C080200, // 001A CALL R2 1 + 0x8C080515, // 001B GETMET R2 R2 K21 + 0x7C080200, // 001C CALL R2 1 + 0x80040000, // 001D RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_engine_proxy_add, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8120400, // 0002 GETNGBL R4 K2 + 0x88100903, // 0003 GETMBR R4 R4 K3 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080116, // 0006 GETMET R2 R0 K22 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020016, // 000A JMP #0022 + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8120400, // 000D GETNGBL R4 K2 + 0x88100905, // 000E GETMBR R4 R4 K5 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C080117, // 0011 GETMET R2 R0 K23 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x7002000B, // 0015 JMP #0022 + 0x6008000F, // 0016 GETGBL R2 G15 + 0x5C0C0200, // 0017 MOVE R3 R1 + 0xB8120400, // 0018 GETNGBL R4 K2 + 0x88100902, // 0019 GETMBR R4 R4 K2 + 0x7C080400, // 001A CALL R2 2 + 0x780A0004, // 001B JMPF R2 #0021 + 0x8C080118, // 001C GETMET R2 R0 K24 + 0x5C100200, // 001D MOVE R4 R1 + 0x7C080400, // 001E CALL R2 2 + 0x80040400, // 001F RET 1 R2 + 0x70020000, // 0020 JMP #0022 + 0xB006331A, // 0021 RAISE 1 K25 K26 + 0x80000000, // 0022 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_engine_proxy_update, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[73]) { /* code */ + 0x90021C01, // 0000 SETMBR R0 K14 R1 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080501, // 0002 GETMBR R2 R2 K1 + 0x90020202, // 0003 SETMBR R0 K1 R2 + 0x60080003, // 0004 GETGBL R2 G3 + 0x5C0C0000, // 0005 MOVE R3 R0 + 0x7C080200, // 0006 CALL R2 1 + 0x8C08051B, // 0007 GETMET R2 R2 K27 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x5808000F, // 000A LDCONST R2 K15 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100112, // 000C GETMBR R4 R0 K18 + 0x7C0C0200, // 000D CALL R3 1 + 0x14100403, // 000E LT R4 R2 R3 + 0x7812000D, // 000F JMPF R4 #001E + 0x88100112, // 0010 GETMBR R4 R0 K18 + 0x94100802, // 0011 GETIDX R4 R4 R2 + 0x8814090C, // 0012 GETMBR R5 R4 K12 + 0x78160007, // 0013 JMPF R5 #001C + 0x8814091C, // 0014 GETMBR R5 R4 K28 + 0x4C180000, // 0015 LDNIL R6 + 0x1C140A06, // 0016 EQ R5 R5 R6 + 0x78160000, // 0017 JMPF R5 #0019 + 0x90123801, // 0018 SETMBR R4 K28 R1 + 0x8C14091B, // 0019 GETMET R5 R4 K27 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x7C140400, // 001B CALL R5 2 + 0x00080511, // 001C ADD R2 R2 K17 + 0x7001FFEF, // 001D JMP #000E + 0x5808000F, // 001E LDCONST R2 K15 + 0x6010000C, // 001F GETGBL R4 G12 + 0x88140110, // 0020 GETMBR R5 R0 K16 + 0x7C100200, // 0021 CALL R4 1 + 0x5C0C0800, // 0022 MOVE R3 R4 + 0x14100403, // 0023 LT R4 R2 R3 + 0x7812000D, // 0024 JMPF R4 #0033 + 0x88100110, // 0025 GETMBR R4 R0 K16 + 0x94100802, // 0026 GETIDX R4 R4 R2 + 0x8814090C, // 0027 GETMBR R5 R4 K12 + 0x78160007, // 0028 JMPF R5 #0031 + 0x8814091C, // 0029 GETMBR R5 R4 K28 + 0x4C180000, // 002A LDNIL R6 + 0x1C140A06, // 002B EQ R5 R5 R6 + 0x78160000, // 002C JMPF R5 #002E + 0x90123801, // 002D SETMBR R4 K28 R1 + 0x8C14091B, // 002E GETMET R5 R4 K27 + 0x5C1C0200, // 002F MOVE R7 R1 + 0x7C140400, // 0030 CALL R5 2 + 0x00080511, // 0031 ADD R2 R2 K17 + 0x7001FFEF, // 0032 JMP #0023 + 0x5808000F, // 0033 LDCONST R2 K15 + 0x6010000C, // 0034 GETGBL R4 G12 + 0x88140108, // 0035 GETMBR R5 R0 K8 + 0x7C100200, // 0036 CALL R4 1 + 0x5C0C0800, // 0037 MOVE R3 R4 + 0x14100403, // 0038 LT R4 R2 R3 + 0x7812000D, // 0039 JMPF R4 #0048 + 0x88100108, // 003A GETMBR R4 R0 K8 + 0x94100802, // 003B GETIDX R4 R4 R2 + 0x8814090C, // 003C GETMBR R5 R4 K12 + 0x78160007, // 003D JMPF R5 #0046 + 0x8814091C, // 003E GETMBR R5 R4 K28 + 0x4C180000, // 003F LDNIL R6 + 0x1C140A06, // 0040 EQ R5 R5 R6 + 0x78160000, // 0041 JMPF R5 #0043 + 0x90123801, // 0042 SETMBR R4 K28 R1 + 0x8C14091B, // 0043 GETMET R5 R4 K27 + 0x5C1C0200, // 0044 MOVE R7 R1 + 0x7C140400, // 0045 CALL R5 2 + 0x00080511, // 0046 ADD R2 R2 K17 + 0x7001FFEF, // 0047 JMP #0038 + 0x80000000, // 0048 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: pop_iteration_context +********************************************************************/ +be_local_closure(class_engine_proxy_pop_iteration_context, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(pop_iteration_context), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080114, // 0001 GETMBR R2 R0 K20 + 0x7C040200, // 0002 CALL R1 1 + 0x2404030F, // 0003 GT R1 R1 K15 + 0x78060003, // 0004 JMPF R1 #0009 + 0x88040114, // 0005 GETMBR R1 R0 K20 + 0x8C04031D, // 0006 GETMET R1 R1 K29 + 0x7C040200, // 0007 CALL R1 1 + 0x80040200, // 0008 RET 1 R1 + 0x4C040000, // 0009 LDNIL R1 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _remove_sequence_manager +********************************************************************/ +be_local_closure(class_engine_proxy__remove_sequence_manager, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_remove_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080110, // 0000 GETMBR R2 R0 K16 + 0x8C080509, // 0001 GETMET R2 R2 K9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0006, // 0006 JMPF R3 #000E + 0x880C0110, // 0007 GETMBR R3 R0 K16 + 0x8C0C0713, // 0008 GETMET R3 R3 K19 + 0x5C140400, // 0009 MOVE R5 R2 + 0x7C0C0400, // 000A CALL R3 2 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0x80040600, // 000C RET 1 R3 + 0x70020001, // 000D JMP #0010 + 0x500C0000, // 000E LDBOOL R3 0 0 + 0x80040600, // 000F RET 1 R3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_empty +********************************************************************/ +be_local_closure(class_engine_proxy_is_empty, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(is_empty), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x1C04030F, // 0003 EQ R1 R1 K15 + 0x78060009, // 0004 JMPF R1 #000F + 0x6004000C, // 0005 GETGBL R1 G12 + 0x88080110, // 0006 GETMBR R2 R0 K16 + 0x7C040200, // 0007 CALL R1 1 + 0x1C04030F, // 0008 EQ R1 R1 K15 + 0x78060004, // 0009 JMPF R1 #000F + 0x6004000C, // 000A GETGBL R1 G12 + 0x88080112, // 000B GETMBR R2 R0 K18 + 0x7C040200, // 000C CALL R1 1 + 0x1C04030F, // 000D EQ R1 R1 K15 + 0x74060000, // 000E JMPT R1 #0010 + 0x50040001, // 000F LDBOOL R1 0 1 + 0x50040200, // 0010 LDBOOL R1 1 0 + 0x80040200, // 0011 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _sort_animations_by_priority +********************************************************************/ +be_local_closure(class_engine_proxy__sort_animations_by_priority, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(_sort_animations_by_priority), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x18080311, // 0003 LE R2 R1 K17 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x58080011, // 0006 LDCONST R2 K17 + 0x140C0401, // 0007 LT R3 R2 R1 + 0x780E0025, // 0008 JMPF R3 #002F + 0x880C0108, // 0009 GETMBR R3 R0 K8 + 0x940C0602, // 000A GETIDX R3 R3 R2 + 0x6010000F, // 000B GETGBL R4 G15 + 0x5C140600, // 000C MOVE R5 R3 + 0xB81A0400, // 000D GETNGBL R6 K2 + 0x88180D02, // 000E GETMBR R6 R6 K2 + 0x7C100400, // 000F CALL R4 2 + 0x74120001, // 0010 JMPT R4 #0013 + 0x00080511, // 0011 ADD R2 R2 K17 + 0x7001FFF3, // 0012 JMP #0007 + 0x5C100400, // 0013 MOVE R4 R2 + 0x2414090F, // 0014 GT R5 R4 K15 + 0x78160014, // 0015 JMPF R5 #002B + 0x04140911, // 0016 SUB R5 R4 K17 + 0x88180108, // 0017 GETMBR R6 R0 K8 + 0x94140C05, // 0018 GETIDX R5 R6 R5 + 0x6018000F, // 0019 GETGBL R6 G15 + 0x5C1C0A00, // 001A MOVE R7 R5 + 0xB8220400, // 001B GETNGBL R8 K2 + 0x88201102, // 001C GETMBR R8 R8 K2 + 0x7C180400, // 001D CALL R6 2 + 0x781A0003, // 001E JMPF R6 #0023 + 0x88180B1E, // 001F GETMBR R6 R5 K30 + 0x881C071E, // 0020 GETMBR R7 R3 K30 + 0x28180C07, // 0021 GE R6 R6 R7 + 0x781A0000, // 0022 JMPF R6 #0024 + 0x70020006, // 0023 JMP #002B + 0x88180108, // 0024 GETMBR R6 R0 K8 + 0x041C0911, // 0025 SUB R7 R4 K17 + 0x88200108, // 0026 GETMBR R8 R0 K8 + 0x941C1007, // 0027 GETIDX R7 R8 R7 + 0x98180807, // 0028 SETIDX R6 R4 R7 + 0x04100911, // 0029 SUB R4 R4 K17 + 0x7001FFE8, // 002A JMP #0014 + 0x88140108, // 002B GETMBR R5 R0 K8 + 0x98140803, // 002C SETIDX R5 R4 R3 + 0x00080511, // 002D ADD R2 R2 K17 + 0x7001FFD7, // 002E JMP #0007 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_engine_proxy_render, /* name */ + be_nested_proto( + 14, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x8810010C, // 0000 GETMBR R4 R0 K12 + 0x78120002, // 0001 JMPF R4 #0005 + 0x4C100000, // 0002 LDNIL R4 + 0x1C100204, // 0003 EQ R4 R1 R4 + 0x78120001, // 0004 JMPF R4 #0007 + 0x50100000, // 0005 LDBOOL R4 0 0 + 0x80040800, // 0006 RET 1 R4 + 0x4C100000, // 0007 LDNIL R4 + 0x1C100604, // 0008 EQ R4 R3 R4 + 0x78120000, // 0009 JMPF R4 #000B + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x50100000, // 000B LDBOOL R4 0 0 + 0x5814000F, // 000C LDCONST R5 K15 + 0x6018000C, // 000D GETGBL R6 G12 + 0x881C0108, // 000E GETMBR R7 R0 K8 + 0x7C180200, // 000F CALL R6 1 + 0x141C0A06, // 0010 LT R7 R5 R6 + 0x781E0019, // 0011 JMPF R7 #002C + 0x881C0108, // 0012 GETMBR R7 R0 K8 + 0x941C0E05, // 0013 GETIDX R7 R7 R5 + 0x88200F0C, // 0014 GETMBR R8 R7 K12 + 0x78220013, // 0015 JMPF R8 #002A + 0x8820011F, // 0016 GETMBR R8 R0 K31 + 0x8C201120, // 0017 GETMET R8 R8 K32 + 0x7C200200, // 0018 CALL R8 1 + 0x8C200F21, // 0019 GETMET R8 R7 K33 + 0x8828011F, // 001A GETMBR R10 R0 K31 + 0x5C2C0400, // 001B MOVE R11 R2 + 0x5C300600, // 001C MOVE R12 R3 + 0x7C200800, // 001D CALL R8 4 + 0x7822000A, // 001E JMPF R8 #002A + 0x8C240F22, // 001F GETMET R9 R7 K34 + 0x882C011F, // 0020 GETMBR R11 R0 K31 + 0x5C300400, // 0021 MOVE R12 R2 + 0x5C340600, // 0022 MOVE R13 R3 + 0x7C240800, // 0023 CALL R9 4 + 0x8C240323, // 0024 GETMET R9 R1 K35 + 0x882C0324, // 0025 GETMBR R11 R1 K36 + 0x8830011F, // 0026 GETMBR R12 R0 K31 + 0x88301924, // 0027 GETMBR R12 R12 K36 + 0x7C240600, // 0028 CALL R9 3 + 0x50100200, // 0029 LDBOOL R4 1 0 + 0x00140B11, // 002A ADD R5 R5 K17 + 0x7001FFE3, // 002B JMP #0010 + 0x80040800, // 002C RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_current_iteration_number +********************************************************************/ +be_local_closure(class_engine_proxy_get_current_iteration_number, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(get_current_iteration_number), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080114, // 0001 GETMBR R2 R0 K20 + 0x7C040200, // 0002 CALL R1 1 + 0x2404030F, // 0003 GT R1 R1 K15 + 0x78060003, // 0004 JMPF R1 #0009 + 0x88040114, // 0005 GETMBR R1 R0 K20 + 0x5409FFFE, // 0006 LDINT R2 -1 + 0x94040202, // 0007 GETIDX R1 R1 R2 + 0x80040200, // 0008 RET 1 R1 + 0x4C040000, // 0009 LDNIL R1 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: push_iteration_context +********************************************************************/ +be_local_closure(class_engine_proxy_push_iteration_context, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(push_iteration_context), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080114, // 0000 GETMBR R2 R0 K20 + 0x8C08050A, // 0001 GETMET R2 R2 K10 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_animations +********************************************************************/ +be_local_closure(class_engine_proxy_get_animations, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(get_animations), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x60080010, // 0002 GETGBL R2 G16 + 0x880C0108, // 0003 GETMBR R3 R0 K8 + 0x7C080200, // 0004 CALL R2 1 + 0xA802000B, // 0005 EXBLK 0 #0012 + 0x5C0C0400, // 0006 MOVE R3 R2 + 0x7C0C0000, // 0007 CALL R3 0 + 0x6010000F, // 0008 GETGBL R4 G15 + 0x5C140600, // 0009 MOVE R5 R3 + 0xB81A0400, // 000A GETNGBL R6 K2 + 0x88180D02, // 000B GETMBR R6 R6 K2 + 0x7C100400, // 000C CALL R4 2 + 0x78120002, // 000D JMPF R4 #0011 + 0x8C10030A, // 000E GETMET R4 R1 K10 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x7001FFF3, // 0011 JMP #0006 + 0x58080025, // 0012 LDCONST R2 K37 + 0xAC080200, // 0013 CATCH R2 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_engine_proxy_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_engine_proxy, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080526, // 0003 GETMET R2 R2 K38 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x8808051F, // 0007 GETMBR R2 R2 K31 + 0x90023E02, // 0008 SETMBR R0 K31 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90021002, // 000B SETMBR R0 K8 R2 + 0x60080012, // 000C GETGBL R2 G18 + 0x7C080000, // 000D CALL R2 0 + 0x90022002, // 000E SETMBR R0 K16 R2 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90022402, // 0011 SETMBR R0 K18 R2 + 0x60080012, // 0012 GETGBL R2 G18 + 0x7C080000, // 0013 CALL R2 0 + 0x90022802, // 0014 SETMBR R0 K20 R2 + 0x90021D0F, // 0015 SETMBR R0 K14 K15 + 0x8C080127, // 0016 GETMET R2 R0 K39 + 0x7C080200, // 0017 CALL R2 1 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: engine_proxy +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(engine_proxy, + 7, + &be_class_Animation, + be_nested_map(31, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(get_strip_length, -1), be_const_closure(class_engine_proxy_get_strip_length_closure) }, + { be_const_key_weak(remove, -1), be_const_closure(class_engine_proxy_remove_closure) }, + { be_const_key_weak(size_animations, 23), be_const_closure(class_engine_proxy_size_animations_closure) }, + { be_const_key_weak(_add_animation, 24), be_const_closure(class_engine_proxy__add_animation_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_engine_proxy_start_closure) }, + { be_const_key_weak(value_providers, 19), be_const_var(2) }, + { be_const_key_weak(setup_template, -1), be_const_closure(class_engine_proxy_setup_template_closure) }, + { be_const_key_weak(_remove_animation, -1), be_const_closure(class_engine_proxy__remove_animation_closure) }, + { be_const_key_weak(animations, 6), be_const_var(0) }, + { be_const_key_weak(update_current_iteration, -1), be_const_closure(class_engine_proxy_update_current_iteration_closure) }, + { be_const_key_weak(clear, -1), be_const_closure(class_engine_proxy_clear_closure) }, + { be_const_key_weak(_add_value_provider, 12), be_const_closure(class_engine_proxy__add_value_provider_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(class_engine_proxy_stop_closure) }, + { be_const_key_weak(strip_length, -1), be_const_var(3) }, + { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_engine_proxy__add_sequence_manager_closure) }, + { be_const_key_weak(push_iteration_context, 22), be_const_closure(class_engine_proxy_push_iteration_context_closure) }, + { be_const_key_weak(add, -1), be_const_closure(class_engine_proxy_add_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_engine_proxy_update_closure) }, + { be_const_key_weak(_remove_value_provider, 27), be_const_closure(class_engine_proxy__remove_value_provider_closure) }, + { be_const_key_weak(pop_iteration_context, -1), be_const_closure(class_engine_proxy_pop_iteration_context_closure) }, + { be_const_key_weak(_remove_sequence_manager, -1), be_const_closure(class_engine_proxy__remove_sequence_manager_closure) }, + { be_const_key_weak(is_empty, -1), be_const_closure(class_engine_proxy_is_empty_closure) }, + { be_const_key_weak(sequences, -1), be_const_var(1) }, + { be_const_key_weak(time_ms, 8), be_const_var(6) }, + { be_const_key_weak(_sort_animations_by_priority, -1), be_const_closure(class_engine_proxy__sort_animations_by_priority_closure) }, + { be_const_key_weak(render, 15), be_const_closure(class_engine_proxy_render_closure) }, + { be_const_key_weak(get_current_iteration_number, -1), be_const_closure(class_engine_proxy_get_current_iteration_number_closure) }, + { be_const_key_weak(iteration_stack, -1), be_const_var(5) }, + { be_const_key_weak(get_animations, -1), be_const_closure(class_engine_proxy_get_animations_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_engine_proxy_init_closure) }, + { be_const_key_weak(temp_buffer, -1), be_const_var(4) }, + })), + be_str_weak(engine_proxy) +); +// compact class 'wave' ktab size: 34, total: 54 (saved 160 bytes) +static const bvalue be_ktab_class_wave[34] = { + /* K0 */ be_nested_str_weak(update), + /* K1 */ be_nested_str_weak(wave_speed), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_time), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(scale_uint), + /* K6 */ be_nested_str_weak(time_offset), + /* K7 */ be_nested_str_weak(_calculate_wave), + /* K8 */ be_nested_str_weak(log), + /* K9 */ be_nested_str_weak(ANI_X3A_X20_X60wave_X60_X20animation_X20is_X20still_X20in_X20alpha_X20and_X20will_X20be_X20refactored), + /* K10 */ be_nested_str_weak(init), + /* K11 */ be_nested_str_weak(current_colors), + /* K12 */ be_nested_str_weak(wave_table), + /* K13 */ be_nested_str_weak(_init_wave_table), + /* K14 */ be_nested_str_weak(engine), + /* K15 */ be_nested_str_weak(strip_length), + /* K16 */ be_nested_str_weak(frequency), + /* K17 */ be_nested_str_weak(phase), + /* K18 */ be_nested_str_weak(amplitude), + /* K19 */ be_nested_str_weak(center_level), + /* K20 */ be_nested_str_weak(back_color), + /* K21 */ be_nested_str_weak(color), + /* K22 */ be_nested_str_weak(size), + /* K23 */ be_nested_str_weak(resize), + /* K24 */ be_const_int(1), + /* K25 */ be_nested_str_weak(animation), + /* K26 */ be_nested_str_weak(is_color_provider), + /* K27 */ be_nested_str_weak(get_color_for_value), + /* K28 */ be_nested_str_weak(resolve_value), + /* K29 */ be_nested_str_weak(width), + /* K30 */ be_nested_str_weak(set_pixel_color), + /* K31 */ be_nested_str_weak(on_param_changed), + /* K32 */ be_nested_str_weak(wave_type), + /* K33 */ be_const_int(2), +}; + + +extern const bclass be_class_wave; + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_wave_update, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x240C0502, // 0007 GT R3 R2 K2 + 0x780E0011, // 0008 JMPF R3 #001B + 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x040C0203, // 000A SUB R3 R1 R3 + 0xB8120800, // 000B GETNGBL R4 K4 + 0x8C100905, // 000C GETMET R4 R4 K5 + 0x5C180400, // 000D MOVE R6 R2 + 0x581C0002, // 000E LDCONST R7 K2 + 0x542200FE, // 000F LDINT R8 255 + 0x58240002, // 0010 LDCONST R9 K2 + 0x542A0009, // 0011 LDINT R10 10 + 0x7C100C00, // 0012 CALL R4 6 + 0x24140902, // 0013 GT R5 R4 K2 + 0x78160005, // 0014 JMPF R5 #001B + 0x08140604, // 0015 MUL R5 R3 R4 + 0x541A03E7, // 0016 LDINT R6 1000 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x541A00FF, // 0018 LDINT R6 256 + 0x10140A06, // 0019 MOD R5 R5 R6 + 0x90020C05, // 001A SETMBR R0 K6 R5 + 0x8C0C0107, // 001B GETMET R3 R0 K7 + 0x5C140200, // 001C MOVE R5 R1 + 0x7C0C0400, // 001D CALL R3 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_wave_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0xB80A1000, // 0000 GETNGBL R2 K8 + 0x580C0009, // 0001 LDCONST R3 K9 + 0x7C080200, // 0002 CALL R2 1 + 0x60080003, // 0003 GETGBL R2 G3 + 0x5C0C0000, // 0004 MOVE R3 R0 + 0x7C080200, // 0005 CALL R2 1 + 0x8C08050A, // 0006 GETMET R2 R2 K10 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90021602, // 000B SETMBR R0 K11 R2 + 0x90020D02, // 000C SETMBR R0 K6 K2 + 0x60080012, // 000D GETGBL R2 G18 + 0x7C080000, // 000E CALL R2 0 + 0x90021802, // 000F SETMBR R0 K12 R2 + 0x8C08010D, // 0010 GETMET R2 R0 K13 + 0x7C080200, // 0011 CALL R2 1 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_wave +********************************************************************/ +be_local_closure(class_wave__calculate_wave, /* name */ + be_nested_proto( + 27, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(_calculate_wave), + &be_const_str_solidified, + ( &(const binstruction[168]) { /* code */ + 0x8808010E, // 0000 GETMBR R2 R0 K14 + 0x8808050F, // 0001 GETMBR R2 R2 K15 + 0x880C0110, // 0002 GETMBR R3 R0 K16 + 0x88100111, // 0003 GETMBR R4 R0 K17 + 0x88140112, // 0004 GETMBR R5 R0 K18 + 0x88180113, // 0005 GETMBR R6 R0 K19 + 0x881C0114, // 0006 GETMBR R7 R0 K20 + 0x88200115, // 0007 GETMBR R8 R0 K21 + 0x8824010B, // 0008 GETMBR R9 R0 K11 + 0x8C241316, // 0009 GETMET R9 R9 K22 + 0x7C240200, // 000A CALL R9 1 + 0x20241202, // 000B NE R9 R9 R2 + 0x78260003, // 000C JMPF R9 #0011 + 0x8824010B, // 000D GETMBR R9 R0 K11 + 0x8C241317, // 000E GETMET R9 R9 K23 + 0x5C2C0400, // 000F MOVE R11 R2 + 0x7C240400, // 0010 CALL R9 2 + 0x58240002, // 0011 LDCONST R9 K2 + 0x14281202, // 0012 LT R10 R9 R2 + 0x782A0092, // 0013 JMPF R10 #00A7 + 0xB82A0800, // 0014 GETNGBL R10 K4 + 0x8C281505, // 0015 GETMET R10 R10 K5 + 0x5C301200, // 0016 MOVE R12 R9 + 0x58340002, // 0017 LDCONST R13 K2 + 0x04380518, // 0018 SUB R14 R2 K24 + 0x583C0002, // 0019 LDCONST R15 K2 + 0x544200FE, // 001A LDINT R16 255 + 0x7C280C00, // 001B CALL R10 6 + 0x082C1403, // 001C MUL R11 R10 R3 + 0x5432001F, // 001D LDINT R12 32 + 0x0C2C160C, // 001E DIV R11 R11 R12 + 0x002C1604, // 001F ADD R11 R11 R4 + 0x88300106, // 0020 GETMBR R12 R0 K6 + 0x002C160C, // 0021 ADD R11 R11 R12 + 0x543200FE, // 0022 LDINT R12 255 + 0x2C2C160C, // 0023 AND R11 R11 R12 + 0x8830010C, // 0024 GETMBR R12 R0 K12 + 0x9430180B, // 0025 GETIDX R12 R12 R11 + 0xB8360800, // 0026 GETNGBL R13 K4 + 0x8C341B05, // 0027 GETMET R13 R13 K5 + 0x5C3C0A00, // 0028 MOVE R15 R5 + 0x58400002, // 0029 LDCONST R16 K2 + 0x544600FE, // 002A LDINT R17 255 + 0x58480002, // 002B LDCONST R18 K2 + 0x544E007F, // 002C LDINT R19 128 + 0x7C340C00, // 002D CALL R13 6 + 0x58380002, // 002E LDCONST R14 K2 + 0x543E007F, // 002F LDINT R15 128 + 0x283C180F, // 0030 GE R15 R12 R15 + 0x783E000D, // 0031 JMPF R15 #0040 + 0x543E007F, // 0032 LDINT R15 128 + 0x043C180F, // 0033 SUB R15 R12 R15 + 0xB8420800, // 0034 GETNGBL R16 K4 + 0x8C402105, // 0035 GETMET R16 R16 K5 + 0x5C481E00, // 0036 MOVE R18 R15 + 0x584C0002, // 0037 LDCONST R19 K2 + 0x5452007E, // 0038 LDINT R20 127 + 0x58540002, // 0039 LDCONST R21 K2 + 0x5C581A00, // 003A MOVE R22 R13 + 0x7C400C00, // 003B CALL R16 6 + 0x5C3C2000, // 003C MOVE R15 R16 + 0x00400C0F, // 003D ADD R16 R6 R15 + 0x5C382000, // 003E MOVE R14 R16 + 0x7002000C, // 003F JMP #004D + 0x543E007F, // 0040 LDINT R15 128 + 0x043C1E0C, // 0041 SUB R15 R15 R12 + 0xB8420800, // 0042 GETNGBL R16 K4 + 0x8C402105, // 0043 GETMET R16 R16 K5 + 0x5C481E00, // 0044 MOVE R18 R15 + 0x584C0002, // 0045 LDCONST R19 K2 + 0x5452007F, // 0046 LDINT R20 128 + 0x58540002, // 0047 LDCONST R21 K2 + 0x5C581A00, // 0048 MOVE R22 R13 + 0x7C400C00, // 0049 CALL R16 6 + 0x5C3C2000, // 004A MOVE R15 R16 + 0x04400C0F, // 004B SUB R16 R6 R15 + 0x5C382000, // 004C MOVE R14 R16 + 0x543E00FE, // 004D LDINT R15 255 + 0x243C1C0F, // 004E GT R15 R14 R15 + 0x783E0001, // 004F JMPF R15 #0052 + 0x543A00FE, // 0050 LDINT R14 255 + 0x70020002, // 0051 JMP #0055 + 0x143C1D02, // 0052 LT R15 R14 K2 + 0x783E0000, // 0053 JMPF R15 #0055 + 0x58380002, // 0054 LDCONST R14 K2 + 0x5C3C0E00, // 0055 MOVE R15 R7 + 0x54420009, // 0056 LDINT R16 10 + 0x24401C10, // 0057 GT R16 R14 R16 + 0x78420049, // 0058 JMPF R16 #00A3 + 0xB8423200, // 0059 GETNGBL R16 K25 + 0x8C40211A, // 005A GETMET R16 R16 K26 + 0x5C481000, // 005B MOVE R18 R8 + 0x7C400400, // 005C CALL R16 2 + 0x78420009, // 005D JMPF R16 #0068 + 0x8840111B, // 005E GETMBR R16 R8 K27 + 0x4C440000, // 005F LDNIL R17 + 0x20402011, // 0060 NE R16 R16 R17 + 0x78420005, // 0061 JMPF R16 #0068 + 0x8C40111B, // 0062 GETMET R16 R8 K27 + 0x5C481C00, // 0063 MOVE R18 R14 + 0x584C0002, // 0064 LDCONST R19 K2 + 0x7C400600, // 0065 CALL R16 3 + 0x5C3C2000, // 0066 MOVE R15 R16 + 0x7002003A, // 0067 JMP #00A3 + 0x8C40011C, // 0068 GETMET R16 R0 K28 + 0x5C481000, // 0069 MOVE R18 R8 + 0x584C0015, // 006A LDCONST R19 K21 + 0x54520009, // 006B LDINT R20 10 + 0x08501C14, // 006C MUL R20 R14 R20 + 0x00500214, // 006D ADD R20 R1 R20 + 0x7C400800, // 006E CALL R16 4 + 0x5C3C2000, // 006F MOVE R15 R16 + 0x54420017, // 0070 LDINT R16 24 + 0x3C401E10, // 0071 SHR R16 R15 R16 + 0x544600FE, // 0072 LDINT R17 255 + 0x2C402011, // 0073 AND R16 R16 R17 + 0x5446000F, // 0074 LDINT R17 16 + 0x3C441E11, // 0075 SHR R17 R15 R17 + 0x544A00FE, // 0076 LDINT R18 255 + 0x2C442212, // 0077 AND R17 R17 R18 + 0x544A0007, // 0078 LDINT R18 8 + 0x3C481E12, // 0079 SHR R18 R15 R18 + 0x544E00FE, // 007A LDINT R19 255 + 0x2C482413, // 007B AND R18 R18 R19 + 0x544E00FE, // 007C LDINT R19 255 + 0x2C4C1E13, // 007D AND R19 R15 R19 + 0xB8520800, // 007E GETNGBL R20 K4 + 0x8C502905, // 007F GETMET R20 R20 K5 + 0x5C581C00, // 0080 MOVE R22 R14 + 0x585C0002, // 0081 LDCONST R23 K2 + 0x546200FE, // 0082 LDINT R24 255 + 0x58640002, // 0083 LDCONST R25 K2 + 0x5C682200, // 0084 MOVE R26 R17 + 0x7C500C00, // 0085 CALL R20 6 + 0x5C442800, // 0086 MOVE R17 R20 + 0xB8520800, // 0087 GETNGBL R20 K4 + 0x8C502905, // 0088 GETMET R20 R20 K5 + 0x5C581C00, // 0089 MOVE R22 R14 + 0x585C0002, // 008A LDCONST R23 K2 + 0x546200FE, // 008B LDINT R24 255 + 0x58640002, // 008C LDCONST R25 K2 + 0x5C682400, // 008D MOVE R26 R18 + 0x7C500C00, // 008E CALL R20 6 + 0x5C482800, // 008F MOVE R18 R20 + 0xB8520800, // 0090 GETNGBL R20 K4 + 0x8C502905, // 0091 GETMET R20 R20 K5 + 0x5C581C00, // 0092 MOVE R22 R14 + 0x585C0002, // 0093 LDCONST R23 K2 + 0x546200FE, // 0094 LDINT R24 255 + 0x58640002, // 0095 LDCONST R25 K2 + 0x5C682600, // 0096 MOVE R26 R19 + 0x7C500C00, // 0097 CALL R20 6 + 0x5C4C2800, // 0098 MOVE R19 R20 + 0x54520017, // 0099 LDINT R20 24 + 0x38502014, // 009A SHL R20 R16 R20 + 0x5456000F, // 009B LDINT R21 16 + 0x38542215, // 009C SHL R21 R17 R21 + 0x30502815, // 009D OR R20 R20 R21 + 0x54560007, // 009E LDINT R21 8 + 0x38542415, // 009F SHL R21 R18 R21 + 0x30502815, // 00A0 OR R20 R20 R21 + 0x30502813, // 00A1 OR R20 R20 R19 + 0x5C3C2800, // 00A2 MOVE R15 R20 + 0x8840010B, // 00A3 GETMBR R16 R0 K11 + 0x9840120F, // 00A4 SETIDX R16 R9 R15 + 0x00241318, // 00A5 ADD R9 R9 K24 + 0x7001FF6A, // 00A6 JMP #0012 + 0x80000000, // 00A7 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_wave_render, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x58100002, // 0000 LDCONST R4 K2 + 0x14140803, // 0001 LT R5 R4 R3 + 0x7816000E, // 0002 JMPF R5 #0012 + 0x8814031D, // 0003 GETMBR R5 R1 K29 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160009, // 0005 JMPF R5 #0010 + 0x8814010B, // 0006 GETMBR R5 R0 K11 + 0x8C140B16, // 0007 GETMET R5 R5 K22 + 0x7C140200, // 0008 CALL R5 1 + 0x14140805, // 0009 LT R5 R4 R5 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C14031E, // 000B GETMET R5 R1 K30 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x8820010B, // 000D GETMBR R8 R0 K11 + 0x94201004, // 000E GETIDX R8 R8 R4 + 0x7C140600, // 000F CALL R5 3 + 0x00100918, // 0010 ADD R4 R4 K24 + 0x7001FFEE, // 0011 JMP #0001 + 0x50140200, // 0012 LDBOOL R5 1 0 + 0x80040A00, // 0013 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_wave_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C071F, // 0003 GETMET R3 R3 K31 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0320, // 0007 EQ R3 R1 K32 + 0x780E0001, // 0008 JMPF R3 #000B + 0x8C0C010D, // 0009 GETMET R3 R0 K13 + 0x7C0C0200, // 000A CALL R3 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_wave_table +********************************************************************/ +be_local_closure(class_wave__init_wave_table, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_wave, /* shared constants */ + be_str_weak(_init_wave_table), + &be_const_str_solidified, + ( &(const binstruction[108]) { /* code */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x8C040317, // 0001 GETMET R1 R1 K23 + 0x540E00FF, // 0002 LDINT R3 256 + 0x7C040400, // 0003 CALL R1 2 + 0x88040120, // 0004 GETMBR R1 R0 K32 + 0x58080002, // 0005 LDCONST R2 K2 + 0x540E00FF, // 0006 LDINT R3 256 + 0x140C0403, // 0007 LT R3 R2 R3 + 0x780E0061, // 0008 JMPF R3 #006B + 0x580C0002, // 0009 LDCONST R3 K2 + 0x1C100302, // 000A EQ R4 R1 K2 + 0x78120035, // 000B JMPF R4 #0042 + 0x5412003F, // 000C LDINT R4 64 + 0x10100404, // 000D MOD R4 R2 R4 + 0x5416003F, // 000E LDINT R5 64 + 0x14140405, // 000F LT R5 R2 R5 + 0x78160009, // 0010 JMPF R5 #001B + 0xB8160800, // 0011 GETNGBL R5 K4 + 0x8C140B05, // 0012 GETMET R5 R5 K5 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x58200002, // 0014 LDCONST R8 K2 + 0x5426003F, // 0015 LDINT R9 64 + 0x542A007F, // 0016 LDINT R10 128 + 0x542E00FE, // 0017 LDINT R11 255 + 0x7C140C00, // 0018 CALL R5 6 + 0x5C0C0A00, // 0019 MOVE R3 R5 + 0x70020025, // 001A JMP #0041 + 0x5416007F, // 001B LDINT R5 128 + 0x14140405, // 001C LT R5 R2 R5 + 0x7816000A, // 001D JMPF R5 #0029 + 0xB8160800, // 001E GETNGBL R5 K4 + 0x8C140B05, // 001F GETMET R5 R5 K5 + 0x541E007F, // 0020 LDINT R7 128 + 0x041C0E02, // 0021 SUB R7 R7 R2 + 0x58200002, // 0022 LDCONST R8 K2 + 0x5426003F, // 0023 LDINT R9 64 + 0x542A007F, // 0024 LDINT R10 128 + 0x542E00FE, // 0025 LDINT R11 255 + 0x7C140C00, // 0026 CALL R5 6 + 0x5C0C0A00, // 0027 MOVE R3 R5 + 0x70020017, // 0028 JMP #0041 + 0x541600BF, // 0029 LDINT R5 192 + 0x14140405, // 002A LT R5 R2 R5 + 0x7816000A, // 002B JMPF R5 #0037 + 0xB8160800, // 002C GETNGBL R5 K4 + 0x8C140B05, // 002D GETMET R5 R5 K5 + 0x541E007F, // 002E LDINT R7 128 + 0x041C0407, // 002F SUB R7 R2 R7 + 0x58200002, // 0030 LDCONST R8 K2 + 0x5426003F, // 0031 LDINT R9 64 + 0x542A007F, // 0032 LDINT R10 128 + 0x582C0002, // 0033 LDCONST R11 K2 + 0x7C140C00, // 0034 CALL R5 6 + 0x5C0C0A00, // 0035 MOVE R3 R5 + 0x70020009, // 0036 JMP #0041 + 0xB8160800, // 0037 GETNGBL R5 K4 + 0x8C140B05, // 0038 GETMET R5 R5 K5 + 0x541E00FF, // 0039 LDINT R7 256 + 0x041C0E02, // 003A SUB R7 R7 R2 + 0x58200002, // 003B LDCONST R8 K2 + 0x5426003F, // 003C LDINT R9 64 + 0x542A007F, // 003D LDINT R10 128 + 0x582C0002, // 003E LDCONST R11 K2 + 0x7C140C00, // 003F CALL R5 6 + 0x5C0C0A00, // 0040 MOVE R3 R5 + 0x70020024, // 0041 JMP #0067 + 0x1C100318, // 0042 EQ R4 R1 K24 + 0x78120017, // 0043 JMPF R4 #005C + 0x5412007F, // 0044 LDINT R4 128 + 0x14100404, // 0045 LT R4 R2 R4 + 0x78120009, // 0046 JMPF R4 #0051 + 0xB8120800, // 0047 GETNGBL R4 K4 + 0x8C100905, // 0048 GETMET R4 R4 K5 + 0x5C180400, // 0049 MOVE R6 R2 + 0x581C0002, // 004A LDCONST R7 K2 + 0x5422007F, // 004B LDINT R8 128 + 0x58240002, // 004C LDCONST R9 K2 + 0x542A00FE, // 004D LDINT R10 255 + 0x7C100C00, // 004E CALL R4 6 + 0x5C0C0800, // 004F MOVE R3 R4 + 0x70020009, // 0050 JMP #005B + 0xB8120800, // 0051 GETNGBL R4 K4 + 0x8C100905, // 0052 GETMET R4 R4 K5 + 0x541A00FF, // 0053 LDINT R6 256 + 0x04180C02, // 0054 SUB R6 R6 R2 + 0x581C0002, // 0055 LDCONST R7 K2 + 0x5422007F, // 0056 LDINT R8 128 + 0x58240002, // 0057 LDCONST R9 K2 + 0x542A00FE, // 0058 LDINT R10 255 + 0x7C100C00, // 0059 CALL R4 6 + 0x5C0C0800, // 005A MOVE R3 R4 + 0x7002000A, // 005B JMP #0067 + 0x1C100321, // 005C EQ R4 R1 K33 + 0x78120007, // 005D JMPF R4 #0066 + 0x5412007F, // 005E LDINT R4 128 + 0x14100404, // 005F LT R4 R2 R4 + 0x78120001, // 0060 JMPF R4 #0063 + 0x541200FE, // 0061 LDINT R4 255 + 0x70020000, // 0062 JMP #0064 + 0x58100002, // 0063 LDCONST R4 K2 + 0x5C0C0800, // 0064 MOVE R3 R4 + 0x70020000, // 0065 JMP #0067 + 0x5C0C0400, // 0066 MOVE R3 R2 + 0x8810010C, // 0067 GETMBR R4 R0 K12 + 0x98100403, // 0068 SETIDX R4 R2 R3 + 0x00080518, // 0069 ADD R2 R2 K24 + 0x7001FF9A, // 006A JMP #0006 + 0x80000000, // 006B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: wave +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(wave, + 3, + &be_class_Animation, + be_nested_map(10, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(time_offset, -1), be_const_var(1) }, + { be_const_key_weak(current_colors, -1), be_const_var(0) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_wave_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(phase, 7), be_const_bytes_instance(07000001FF000000) }, + { be_const_key_weak(center_level, 3), be_const_bytes_instance(07000001FF00018000) }, + { be_const_key_weak(amplitude, -1), be_const_bytes_instance(07000001FF00018000) }, + { be_const_key_weak(frequency, 5), be_const_bytes_instance(07000001FF000020) }, + { be_const_key_weak(wave_speed, -1), be_const_bytes_instance(07000001FF000032) }, + { be_const_key_weak(wave_type, -1), be_const_bytes_instance(07000000030000) }, + { be_const_key_weak(back_color, -1), be_const_bytes_instance(0402000000FF) }, + { be_const_key_weak(color, -1), be_const_bytes_instance(04020000FFFF) }, + })) ) } )) }, + { be_const_key_weak(update, -1), be_const_closure(class_wave_update_closure) }, + { be_const_key_weak(wave_table, 8), be_const_var(2) }, + { be_const_key_weak(_calculate_wave, -1), be_const_closure(class_wave__calculate_wave_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_wave_render_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_wave_init_closure) }, + { be_const_key_weak(_init_wave_table, -1), be_const_closure(class_wave__init_wave_table_closure) }, + })), + be_str_weak(wave) +); +// compact class 'palette_meter' ktab size: 26, total: 34 (saved 64 bytes) +static const bvalue be_ktab_class_palette_meter[26] = { + /* K0 */ be_nested_str_weak(peak_hold), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(level), + /* K3 */ be_nested_str_weak(_level), + /* K4 */ be_nested_str_weak(peak_level), + /* K5 */ be_nested_str_weak(peak_time), + /* K6 */ be_nested_str_weak(update), + /* K7 */ be_nested_str_weak(get_param), + /* K8 */ be_nested_str_weak(color_source), + /* K9 */ be_nested_str_weak(start_time), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(scale_uint), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(animation), + /* K14 */ be_nested_str_weak(color_provider), + /* K15 */ be_nested_str_weak(get_lut), + /* K16 */ be_nested_str_weak(LUT_FACTOR), + /* K17 */ be_nested_str_weak(pixels), + /* K18 */ be_nested_str_weak(_buffer), + /* K19 */ be_nested_str_weak(value_buffer), + /* K20 */ be_const_int(2), + /* K21 */ be_const_int(3), + /* K22 */ be_nested_str_weak(get_color_for_value), + /* K23 */ be_nested_str_weak(set_pixel_color), + /* K24 */ be_nested_str_weak(init), + /* K25 */ be_nested_str_weak(shift_period), +}; + + +extern const bclass be_class_palette_meter; + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_palette_meter_update, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_palette_meter, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x240C0501, // 0001 GT R3 R2 K1 + 0x780E000F, // 0002 JMPF R3 #0013 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x90020603, // 0004 SETMBR R0 K3 R3 + 0x88100104, // 0005 GETMBR R4 R0 K4 + 0x28140604, // 0006 GE R5 R3 R4 + 0x78160002, // 0007 JMPF R5 #000B + 0x90020803, // 0008 SETMBR R0 K4 R3 + 0x90020A01, // 0009 SETMBR R0 K5 R1 + 0x70020007, // 000A JMP #0013 + 0x24140901, // 000B GT R5 R4 K1 + 0x78160005, // 000C JMPF R5 #0013 + 0x88140105, // 000D GETMBR R5 R0 K5 + 0x04140205, // 000E SUB R5 R1 R5 + 0x24180A02, // 000F GT R6 R5 R2 + 0x781A0001, // 0010 JMPF R6 #0013 + 0x90020803, // 0011 SETMBR R0 K4 R3 + 0x90020A01, // 0012 SETMBR R0 K5 R1 + 0x600C0003, // 0013 GETGBL R3 G3 + 0x5C100000, // 0014 MOVE R4 R0 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C0C0706, // 0016 GETMET R3 R3 K6 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_palette_meter_render, /* name */ + be_nested_proto( + 21, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_palette_meter, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[113]) { /* code */ + 0x8C100107, // 0000 GETMET R4 R0 K7 + 0x58180008, // 0001 LDCONST R6 K8 + 0x7C100400, // 0002 CALL R4 2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140805, // 0004 EQ R5 R4 R5 + 0x78160001, // 0005 JMPF R5 #0008 + 0x50140000, // 0006 LDBOOL R5 0 0 + 0x80040A00, // 0007 RET 1 R5 + 0x88140109, // 0008 GETMBR R5 R0 K9 + 0x04140405, // 0009 SUB R5 R2 R5 + 0x88180103, // 000A GETMBR R6 R0 K3 + 0x881C0100, // 000B GETMBR R7 R0 K0 + 0xB8221400, // 000C GETNGBL R8 K10 + 0x8C20110B, // 000D GETMET R8 R8 K11 + 0x5C280C00, // 000E MOVE R10 R6 + 0x582C0001, // 000F LDCONST R11 K1 + 0x543200FE, // 0010 LDINT R12 255 + 0x58340001, // 0011 LDCONST R13 K1 + 0x5C380600, // 0012 MOVE R14 R3 + 0x7C200C00, // 0013 CALL R8 6 + 0x5425FFFE, // 0014 LDINT R9 -1 + 0x24280F01, // 0015 GT R10 R7 K1 + 0x782A000C, // 0016 JMPF R10 #0024 + 0x88280104, // 0017 GETMBR R10 R0 K4 + 0x24281406, // 0018 GT R10 R10 R6 + 0x782A0009, // 0019 JMPF R10 #0024 + 0xB82A1400, // 001A GETNGBL R10 K10 + 0x8C28150B, // 001B GETMET R10 R10 K11 + 0x88300104, // 001C GETMBR R12 R0 K4 + 0x58340001, // 001D LDCONST R13 K1 + 0x543A00FE, // 001E LDINT R14 255 + 0x583C0001, // 001F LDCONST R15 K1 + 0x5C400600, // 0020 MOVE R16 R3 + 0x7C280C00, // 0021 CALL R10 6 + 0x0428150C, // 0022 SUB R10 R10 K12 + 0x5C241400, // 0023 MOVE R9 R10 + 0x4C280000, // 0024 LDNIL R10 + 0x602C000F, // 0025 GETGBL R11 G15 + 0x5C300800, // 0026 MOVE R12 R4 + 0xB8361A00, // 0027 GETNGBL R13 K13 + 0x88341B0E, // 0028 GETMBR R13 R13 K14 + 0x7C2C0400, // 0029 CALL R11 2 + 0x782E0028, // 002A JMPF R11 #0054 + 0x8C2C090F, // 002B GETMET R11 R4 K15 + 0x7C2C0200, // 002C CALL R11 1 + 0x5C281600, // 002D MOVE R10 R11 + 0x4C300000, // 002E LDNIL R12 + 0x202C160C, // 002F NE R11 R11 R12 + 0x782E0022, // 0030 JMPF R11 #0054 + 0x882C0910, // 0031 GETMBR R11 R4 K16 + 0x543200FF, // 0032 LDINT R12 256 + 0x3C30180B, // 0033 SHR R12 R12 R11 + 0x58340001, // 0034 LDCONST R13 K1 + 0x88380311, // 0035 GETMBR R14 R1 K17 + 0x8C381D12, // 0036 GETMET R14 R14 K18 + 0x7C380200, // 0037 CALL R14 1 + 0x8C3C1512, // 0038 GETMET R15 R10 K18 + 0x7C3C0200, // 0039 CALL R15 1 + 0x88400113, // 003A GETMBR R16 R0 K19 + 0x8C402112, // 003B GETMET R16 R16 K18 + 0x7C400200, // 003C CALL R16 1 + 0x14441A08, // 003D LT R17 R13 R8 + 0x78460013, // 003E JMPF R17 #0053 + 0x9444200D, // 003F GETIDX R17 R16 R13 + 0x3C48220B, // 0040 SHR R18 R17 R11 + 0x544E00FE, // 0041 LDINT R19 255 + 0x1C4C2213, // 0042 EQ R19 R17 R19 + 0x784E0000, // 0043 JMPF R19 #0045 + 0x5C481800, // 0044 MOVE R18 R12 + 0x384C2514, // 0045 SHL R19 R18 K20 + 0x004C1E13, // 0046 ADD R19 R15 R19 + 0x94502701, // 0047 GETIDX R20 R19 K1 + 0x983A0214, // 0048 SETIDX R14 K1 R20 + 0x9450270C, // 0049 GETIDX R20 R19 K12 + 0x983A1814, // 004A SETIDX R14 K12 R20 + 0x94502714, // 004B GETIDX R20 R19 K20 + 0x983A2814, // 004C SETIDX R14 K20 R20 + 0x94502715, // 004D GETIDX R20 R19 K21 + 0x983A2A14, // 004E SETIDX R14 K21 R20 + 0x00341B0C, // 004F ADD R13 R13 K12 + 0x54520003, // 0050 LDINT R20 4 + 0x00381C14, // 0051 ADD R14 R14 R20 + 0x7001FFE9, // 0052 JMP #003D + 0x7002000E, // 0053 JMP #0063 + 0x582C0001, // 0054 LDCONST R11 K1 + 0x14301608, // 0055 LT R12 R11 R8 + 0x7832000B, // 0056 JMPF R12 #0063 + 0x88300113, // 0057 GETMBR R12 R0 K19 + 0x9430180B, // 0058 GETIDX R12 R12 R11 + 0x8C340916, // 0059 GETMET R13 R4 K22 + 0x5C3C1800, // 005A MOVE R15 R12 + 0x5C400A00, // 005B MOVE R16 R5 + 0x7C340600, // 005C CALL R13 3 + 0x8C380317, // 005D GETMET R14 R1 K23 + 0x5C401600, // 005E MOVE R16 R11 + 0x5C441A00, // 005F MOVE R17 R13 + 0x7C380600, // 0060 CALL R14 3 + 0x002C170C, // 0061 ADD R11 R11 K12 + 0x7001FFF1, // 0062 JMP #0055 + 0x282C1208, // 0063 GE R11 R9 R8 + 0x782E0009, // 0064 JMPF R11 #006F + 0x882C0113, // 0065 GETMBR R11 R0 K19 + 0x942C1609, // 0066 GETIDX R11 R11 R9 + 0x8C300916, // 0067 GETMET R12 R4 K22 + 0x5C381600, // 0068 MOVE R14 R11 + 0x5C3C0A00, // 0069 MOVE R15 R5 + 0x7C300600, // 006A CALL R12 3 + 0x8C340317, // 006B GETMET R13 R1 K23 + 0x5C3C1200, // 006C MOVE R15 R9 + 0x5C401800, // 006D MOVE R16 R12 + 0x7C340600, // 006E CALL R13 3 + 0x502C0200, // 006F LDBOOL R11 1 0 + 0x80041600, // 0070 RET 1 R11 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_palette_meter_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_palette_meter, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080518, // 0003 GETMET R2 R2 K24 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020901, // 0006 SETMBR R0 K4 K1 + 0x90020B01, // 0007 SETMBR R0 K5 K1 + 0x90020701, // 0008 SETMBR R0 K3 K1 + 0x90023301, // 0009 SETMBR R0 K25 K1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: palette_meter +********************************************************************/ +extern const bclass be_class_palette_gradient; +be_local_class(palette_meter, + 3, + &be_class_palette_gradient, + be_nested_map(7, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(peak_time, -1), be_const_var(1) }, + { be_const_key_weak(_level, 6), be_const_var(2) }, + { be_const_key_weak(init, 3), be_const_closure(class_palette_meter_init_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(peak_hold, -1), be_const_bytes_instance(05000001E803) }, + { be_const_key_weak(level, -1), be_const_bytes_instance(07000001FF0001FF00) }, + })) ) } )) }, + { be_const_key_weak(peak_level, -1), be_const_var(0) }, + { be_const_key_weak(render, 2), be_const_closure(class_palette_meter_render_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_palette_meter_update_closure) }, + })), + be_str_weak(palette_meter) +); + +/******************************************************************** +** Solidified function: create_closure_value +********************************************************************/ +be_local_closure(create_closure_value, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(closure_value), + /* K2 */ be_nested_str_weak(closure), + }), + be_str_weak(create_closure_value), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C080400, // 0003 CALL R2 2 + 0x900A0401, // 0004 SETMBR R2 K2 R1 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +extern const bclass be_class_gradient; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_gradient_render, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(color1), + /* K1 */ be_nested_str_weak(color2), + /* K2 */ be_nested_str_weak(direction), + /* K3 */ be_nested_str_weak(gradient_type), + /* K4 */ be_nested_str_weak(color), + /* K5 */ be_nested_str_weak(back_color), + /* K6 */ be_const_int(1), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(pos), + /* K9 */ be_nested_str_weak(beacon_size), + /* K10 */ be_nested_str_weak(slew_size), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(right_edge), + /* K13 */ be_nested_str_weak(render), + }), + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x881C0103, // 0003 GETMBR R7 R0 K3 + 0x781A0002, // 0004 JMPF R6 #0008 + 0x90020805, // 0005 SETMBR R0 K4 R5 + 0x90020A04, // 0006 SETMBR R0 K5 R4 + 0x70020001, // 0007 JMP #000A + 0x90020804, // 0008 SETMBR R0 K4 R4 + 0x90020A05, // 0009 SETMBR R0 K5 R5 + 0x781E000E, // 000A JMPF R7 #001A + 0x04200706, // 000B SUB R8 R3 K6 + 0x0C201107, // 000C DIV R8 R8 K7 + 0x90021008, // 000D SETMBR R0 K8 R8 + 0x04260C03, // 000E SUB R9 K6 R3 + 0x2C241306, // 000F AND R9 R9 K6 + 0x00260C09, // 0010 ADD R9 K6 R9 + 0x90021209, // 0011 SETMBR R0 K9 R9 + 0x2424110B, // 0012 GT R9 R8 K11 + 0x78260001, // 0013 JMPF R9 #0016 + 0x04241106, // 0014 SUB R9 R8 K6 + 0x70020000, // 0015 JMP #0017 + 0x5824000B, // 0016 LDCONST R9 K11 + 0x90021409, // 0017 SETMBR R0 K10 R9 + 0x9002190B, // 0018 SETMBR R0 K12 K11 + 0x70020009, // 0019 JMP #0024 + 0x9002110B, // 001A SETMBR R0 K8 K11 + 0x542203E7, // 001B LDINT R8 1000 + 0x90021208, // 001C SETMBR R0 K9 R8 + 0x24200706, // 001D GT R8 R3 K6 + 0x78220001, // 001E JMPF R8 #0021 + 0x04200707, // 001F SUB R8 R3 K7 + 0x70020000, // 0020 JMP #0022 + 0x5820000B, // 0021 LDCONST R8 K11 + 0x90021408, // 0022 SETMBR R0 K10 R8 + 0x90021906, // 0023 SETMBR R0 K12 K6 + 0x60200003, // 0024 GETGBL R8 G3 + 0x5C240000, // 0025 MOVE R9 R0 + 0x7C200200, // 0026 CALL R8 1 + 0x8C20110D, // 0027 GETMET R8 R8 K13 + 0x5C280200, // 0028 MOVE R10 R1 + 0x5C2C0400, // 0029 MOVE R11 R2 + 0x5C300600, // 002A MOVE R12 R3 + 0x7C200800, // 002B CALL R8 4 + 0x80041000, // 002C RET 1 R8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: gradient +********************************************************************/ +extern const bclass be_class_beacon; +be_local_class(gradient, + 0, + &be_class_beacon, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(render, -1), be_const_closure(class_gradient_render_closure) }, + { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(color2, -1), be_const_bytes_instance(0402FF0000FF) }, + { be_const_key_weak(gradient_type, 0), be_const_bytes_instance(1400000200000001) }, + { be_const_key_weak(direction, 1), be_const_bytes_instance(1400000200000001) }, + { be_const_key_weak(color1, -1), be_const_bytes_instance(04020000FFFF) }, + })) ) } )) }, + })), + be_str_weak(gradient) +); + +/******************************************************************** +** Solidified function: animation_init +********************************************************************/ +be_local_closure(animation_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(introspect), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(_ntv), + /* K4 */ be_nested_str_weak(undefined), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x8C0C0502, // 0002 GETMET R3 R2 K2 + 0x88140303, // 0003 GETMBR R5 R1 K3 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C0C0600, // 0005 CALL R3 3 + 0x780E0003, // 0006 JMPF R3 #000B + 0x880C0303, // 0007 GETMBR R3 R1 K3 + 0x880C0600, // 0008 GETMBR R3 R3 R0 + 0x80040600, // 0009 RET 1 R3 + 0x70020003, // 000A JMP #000F + 0x600C000B, // 000B GETGBL R3 G11 + 0x58100004, // 000C LDCONST R4 K4 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040600, // 000E RET 1 R3 + 0x80000000, // 000F RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_ntv), + /* K2 */ be_nested_str_weak(event_manager), + /* K3 */ be_nested_str_weak(EventManager), + /* K4 */ be_nested_str_weak(member), + /* K5 */ be_nested_str_weak(_user_functions), + }), + be_str_weak(animation_init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x6004000B, // 0000 GETGBL R1 G11 + 0x58080000, // 0001 LDCONST R2 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x90060200, // 0003 SETMBR R1 K1 R0 + 0x8C080103, // 0004 GETMET R2 R0 K3 + 0x7C080200, // 0005 CALL R2 1 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x84080000, // 0007 CLOSURE R2 P0 + 0x90060802, // 0008 SETMBR R1 K4 R2 + 0x60080013, // 0009 GETGBL R2 G19 + 0x7C080000, // 000A CALL R2 0 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x80040200, // 000C RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: solid +********************************************************************/ +be_local_closure(solid, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + }), + be_str_weak(solid), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040300, // 0001 GETMET R1 R1 K0 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'fire' ktab size: 46, total: 70 (saved 192 bytes) +static const bvalue be_ktab_class_fire[46] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(_random), + /* K2 */ be_nested_str_weak(width), + /* K3 */ be_nested_str_weak(set_pixel_color), + /* K4 */ be_nested_str_weak(current_colors), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(random_seed), + /* K8 */ be_const_int(1103515245), + /* K9 */ be_const_int(2147483647), + /* K10 */ be_nested_str_weak(log), + /* K11 */ be_nested_str_weak(ANI_X3A_X20_X60fire_X60_X20animation_X20is_X20still_X20in_X20alpha_X20and_X20will_X20be_X20refactored), + /* K12 */ be_nested_str_weak(init), + /* K13 */ be_nested_str_weak(heat_map), + /* K14 */ be_nested_str_weak(last_update), + /* K15 */ be_nested_str_weak(engine), + /* K16 */ be_nested_str_weak(time_ms), + /* K17 */ be_nested_str_weak(cooling_rate), + /* K18 */ be_nested_str_weak(sparking_rate), + /* K19 */ be_nested_str_weak(intensity), + /* K20 */ be_nested_str_weak(flicker_amount), + /* K21 */ be_nested_str_weak(color), + /* K22 */ be_nested_str_weak(strip_length), + /* K23 */ be_nested_str_weak(size), + /* K24 */ be_nested_str_weak(_initialize_buffers), + /* K25 */ be_nested_str_weak(_random_range), + /* K26 */ be_nested_str_weak(tasmota), + /* K27 */ be_nested_str_weak(scale_uint), + /* K28 */ be_const_int(2), + /* K29 */ be_const_int(3), + /* K30 */ be_const_int(-16777216), + /* K31 */ be_nested_str_weak(animation), + /* K32 */ be_nested_str_weak(rich_palette_color), + /* K33 */ be_nested_str_weak(colors), + /* K34 */ be_nested_str_weak(PALETTE_FIRE), + /* K35 */ be_nested_str_weak(period), + /* K36 */ be_nested_str_weak(transition_type), + /* K37 */ be_nested_str_weak(brightness), + /* K38 */ be_nested_str_weak(is_color_provider), + /* K39 */ be_nested_str_weak(get_color_for_value), + /* K40 */ be_nested_str_weak(set), + /* K41 */ be_nested_str_weak(start), + /* K42 */ be_nested_str_weak(clear), + /* K43 */ be_nested_str_weak(resize), + /* K44 */ be_nested_str_weak(flicker_speed), + /* K45 */ be_nested_str_weak(_update_fire_simulation), +}; + + +extern const bclass be_class_fire; + +/******************************************************************** +** Solidified function: _random_range +********************************************************************/ +be_local_closure(class_fire__random_range, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(_random_range), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80060000, // 0002 RET 1 K0 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x7C080200, // 0004 CALL R2 1 + 0x10080401, // 0005 MOD R2 R2 R1 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_fire_render, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x14140803, // 0001 LT R5 R4 R3 + 0x7816000D, // 0002 JMPF R5 #0011 + 0x88140302, // 0003 GETMBR R5 R1 K2 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160008, // 0005 JMPF R5 #000F + 0x8C140303, // 0006 GETMET R5 R1 K3 + 0x5C1C0800, // 0007 MOVE R7 R4 + 0x88200104, // 0008 GETMBR R8 R0 K4 + 0x8C201105, // 0009 GETMET R8 R8 K5 + 0x542A0003, // 000A LDINT R10 4 + 0x0828080A, // 000B MUL R10 R4 R10 + 0x542DFFFB, // 000C LDINT R11 -4 + 0x7C200600, // 000D CALL R8 3 + 0x7C140600, // 000E CALL R5 3 + 0x00100906, // 000F ADD R4 R4 K6 + 0x7001FFEF, // 0010 JMP #0001 + 0x50140200, // 0011 LDBOOL R5 1 0 + 0x80040A00, // 0012 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _random +********************************************************************/ +be_local_closure(class_fire__random, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(_random), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040107, // 0000 GETMBR R1 R0 K7 + 0x08040308, // 0001 MUL R1 R1 K8 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040309, // 0004 AND R1 R1 K9 + 0x90020E01, // 0005 SETMBR R0 K7 R1 + 0x88040107, // 0006 GETMBR R1 R0 K7 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_fire_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xB80A1400, // 0000 GETNGBL R2 K10 + 0x580C000B, // 0001 LDCONST R3 K11 + 0x7C080200, // 0002 CALL R2 1 + 0x60080003, // 0003 GETGBL R2 G3 + 0x5C0C0000, // 0004 MOVE R3 R0 + 0x7C080200, // 0005 CALL R2 1 + 0x8C08050C, // 0006 GETMET R2 R2 K12 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x60080015, // 0009 GETGBL R2 G21 + 0x7C080000, // 000A CALL R2 0 + 0x90021A02, // 000B SETMBR R0 K13 R2 + 0x60080015, // 000C GETGBL R2 G21 + 0x7C080000, // 000D CALL R2 0 + 0x90020802, // 000E SETMBR R0 K4 R2 + 0x90021D00, // 000F SETMBR R0 K14 K0 + 0x8808010F, // 0010 GETMBR R2 R0 K15 + 0x88080510, // 0011 GETMBR R2 R2 K16 + 0x540EFFFF, // 0012 LDINT R3 65536 + 0x10080403, // 0013 MOD R2 R2 R3 + 0x90020E02, // 0014 SETMBR R0 K7 R2 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_fire_simulation +********************************************************************/ +be_local_closure(class_fire__update_fire_simulation, /* name */ + be_nested_proto( + 23, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(_update_fire_simulation), + &be_const_str_solidified, + ( &(const binstruction[232]) { /* code */ + 0x88080111, // 0000 GETMBR R2 R0 K17 + 0x880C0112, // 0001 GETMBR R3 R0 K18 + 0x88100113, // 0002 GETMBR R4 R0 K19 + 0x88140114, // 0003 GETMBR R5 R0 K20 + 0x88180115, // 0004 GETMBR R6 R0 K21 + 0x881C010F, // 0005 GETMBR R7 R0 K15 + 0x881C0F16, // 0006 GETMBR R7 R7 K22 + 0x8820010D, // 0007 GETMBR R8 R0 K13 + 0x8C201117, // 0008 GETMET R8 R8 K23 + 0x7C200200, // 0009 CALL R8 1 + 0x20201007, // 000A NE R8 R8 R7 + 0x74220006, // 000B JMPT R8 #0013 + 0x88200104, // 000C GETMBR R8 R0 K4 + 0x8C201117, // 000D GETMET R8 R8 K23 + 0x7C200200, // 000E CALL R8 1 + 0x54260003, // 000F LDINT R9 4 + 0x08240E09, // 0010 MUL R9 R7 R9 + 0x20201009, // 0011 NE R8 R8 R9 + 0x78220001, // 0012 JMPF R8 #0015 + 0x8C200118, // 0013 GETMET R8 R0 K24 + 0x7C200200, // 0014 CALL R8 1 + 0x58200000, // 0015 LDCONST R8 K0 + 0x14241007, // 0016 LT R9 R8 R7 + 0x78260017, // 0017 JMPF R9 #0030 + 0x8C240119, // 0018 GETMET R9 R0 K25 + 0xB82E3400, // 0019 GETNGBL R11 K26 + 0x8C2C171B, // 001A GETMET R11 R11 K27 + 0x5C340400, // 001B MOVE R13 R2 + 0x58380000, // 001C LDCONST R14 K0 + 0x543E00FE, // 001D LDINT R15 255 + 0x58400000, // 001E LDCONST R16 K0 + 0x54460009, // 001F LDINT R17 10 + 0x7C2C0C00, // 0020 CALL R11 6 + 0x002C171C, // 0021 ADD R11 R11 K28 + 0x7C240400, // 0022 CALL R9 2 + 0x8828010D, // 0023 GETMBR R10 R0 K13 + 0x94281408, // 0024 GETIDX R10 R10 R8 + 0x2828120A, // 0025 GE R10 R9 R10 + 0x782A0002, // 0026 JMPF R10 #002A + 0x8828010D, // 0027 GETMBR R10 R0 K13 + 0x98281100, // 0028 SETIDX R10 R8 K0 + 0x70020003, // 0029 JMP #002E + 0x8828010D, // 002A GETMBR R10 R0 K13 + 0x942C1408, // 002B GETIDX R11 R10 R8 + 0x042C1609, // 002C SUB R11 R11 R9 + 0x9828100B, // 002D SETIDX R10 R8 R11 + 0x00201106, // 002E ADD R8 R8 K6 + 0x7001FFE5, // 002F JMP #0016 + 0x28240F1D, // 0030 GE R9 R7 K29 + 0x7826001D, // 0031 JMPF R9 #0050 + 0x04240F06, // 0032 SUB R9 R7 K6 + 0x2828131C, // 0033 GE R10 R9 K28 + 0x782A001A, // 0034 JMPF R10 #0050 + 0x04281306, // 0035 SUB R10 R9 K6 + 0x882C010D, // 0036 GETMBR R11 R0 K13 + 0x9428160A, // 0037 GETIDX R10 R11 R10 + 0x042C131C, // 0038 SUB R11 R9 K28 + 0x8830010D, // 0039 GETMBR R12 R0 K13 + 0x942C180B, // 003A GETIDX R11 R12 R11 + 0x0028140B, // 003B ADD R10 R10 R11 + 0x042C131C, // 003C SUB R11 R9 K28 + 0x8830010D, // 003D GETMBR R12 R0 K13 + 0x942C180B, // 003E GETIDX R11 R12 R11 + 0x0028140B, // 003F ADD R10 R10 R11 + 0x0C28151D, // 0040 DIV R10 R10 K29 + 0x142C1500, // 0041 LT R11 R10 K0 + 0x782E0001, // 0042 JMPF R11 #0045 + 0x58280000, // 0043 LDCONST R10 K0 + 0x70020003, // 0044 JMP #0049 + 0x542E00FE, // 0045 LDINT R11 255 + 0x242C140B, // 0046 GT R11 R10 R11 + 0x782E0000, // 0047 JMPF R11 #0049 + 0x542A00FE, // 0048 LDINT R10 255 + 0x882C010D, // 0049 GETMBR R11 R0 K13 + 0x60300009, // 004A GETGBL R12 G9 + 0x5C341400, // 004B MOVE R13 R10 + 0x7C300200, // 004C CALL R12 1 + 0x982C120C, // 004D SETIDX R11 R9 R12 + 0x04241306, // 004E SUB R9 R9 K6 + 0x7001FFE2, // 004F JMP #0033 + 0x8C240119, // 0050 GETMET R9 R0 K25 + 0x542E00FE, // 0051 LDINT R11 255 + 0x7C240400, // 0052 CALL R9 2 + 0x14241203, // 0053 LT R9 R9 R3 + 0x7826000F, // 0054 JMPF R9 #0065 + 0x8C240119, // 0055 GETMET R9 R0 K25 + 0x542E0006, // 0056 LDINT R11 7 + 0x7C240400, // 0057 CALL R9 2 + 0x8C280119, // 0058 GETMET R10 R0 K25 + 0x5432005E, // 0059 LDINT R12 95 + 0x7C280400, // 005A CALL R10 2 + 0x542E009F, // 005B LDINT R11 160 + 0x0028140B, // 005C ADD R10 R10 R11 + 0x542E00FE, // 005D LDINT R11 255 + 0x242C140B, // 005E GT R11 R10 R11 + 0x782E0000, // 005F JMPF R11 #0061 + 0x542A00FE, // 0060 LDINT R10 255 + 0x142C1207, // 0061 LT R11 R9 R7 + 0x782E0001, // 0062 JMPF R11 #0065 + 0x882C010D, // 0063 GETMBR R11 R0 K13 + 0x982C120A, // 0064 SETIDX R11 R9 R10 + 0x58200000, // 0065 LDCONST R8 K0 + 0x14241007, // 0066 LT R9 R8 R7 + 0x7826007E, // 0067 JMPF R9 #00E7 + 0x8824010D, // 0068 GETMBR R9 R0 K13 + 0x94241208, // 0069 GETIDX R9 R9 R8 + 0xB82A3400, // 006A GETNGBL R10 K26 + 0x8C28151B, // 006B GETMET R10 R10 K27 + 0x5C301200, // 006C MOVE R12 R9 + 0x58340000, // 006D LDCONST R13 K0 + 0x543A00FE, // 006E LDINT R14 255 + 0x583C0000, // 006F LDCONST R15 K0 + 0x5C400800, // 0070 MOVE R16 R4 + 0x7C280C00, // 0071 CALL R10 6 + 0x5C241400, // 0072 MOVE R9 R10 + 0x24280B00, // 0073 GT R10 R5 K0 + 0x782A0012, // 0074 JMPF R10 #0088 + 0x8C280119, // 0075 GETMET R10 R0 K25 + 0x5C300A00, // 0076 MOVE R12 R5 + 0x7C280400, // 0077 CALL R10 2 + 0x8C2C0119, // 0078 GETMET R11 R0 K25 + 0x5834001C, // 0079 LDCONST R13 K28 + 0x7C2C0400, // 007A CALL R11 2 + 0x1C2C1700, // 007B EQ R11 R11 K0 + 0x782E0001, // 007C JMPF R11 #007F + 0x0024120A, // 007D ADD R9 R9 R10 + 0x70020004, // 007E JMP #0084 + 0x242C120A, // 007F GT R11 R9 R10 + 0x782E0001, // 0080 JMPF R11 #0083 + 0x0424120A, // 0081 SUB R9 R9 R10 + 0x70020000, // 0082 JMP #0084 + 0x58240000, // 0083 LDCONST R9 K0 + 0x542E00FE, // 0084 LDINT R11 255 + 0x242C120B, // 0085 GT R11 R9 R11 + 0x782E0000, // 0086 JMPF R11 #0088 + 0x542600FE, // 0087 LDINT R9 255 + 0x5828001E, // 0088 LDCONST R10 K30 + 0x242C1300, // 0089 GT R11 R9 K0 + 0x782E0052, // 008A JMPF R11 #00DE + 0x5C2C0C00, // 008B MOVE R11 R6 + 0x4C300000, // 008C LDNIL R12 + 0x1C30160C, // 008D EQ R12 R11 R12 + 0x7832000B, // 008E JMPF R12 #009B + 0xB8323E00, // 008F GETNGBL R12 K31 + 0x8C301920, // 0090 GETMET R12 R12 K32 + 0x8838010F, // 0091 GETMBR R14 R0 K15 + 0x7C300400, // 0092 CALL R12 2 + 0xB8363E00, // 0093 GETNGBL R13 K31 + 0x88341B22, // 0094 GETMBR R13 R13 K34 + 0x9032420D, // 0095 SETMBR R12 K33 R13 + 0x90324700, // 0096 SETMBR R12 K35 K0 + 0x90324906, // 0097 SETMBR R12 K36 K6 + 0x543600FE, // 0098 LDINT R13 255 + 0x90324A0D, // 0099 SETMBR R12 K37 R13 + 0x5C2C1800, // 009A MOVE R11 R12 + 0xB8323E00, // 009B GETNGBL R12 K31 + 0x8C301926, // 009C GETMET R12 R12 K38 + 0x5C381600, // 009D MOVE R14 R11 + 0x7C300400, // 009E CALL R12 2 + 0x78320009, // 009F JMPF R12 #00AA + 0x88301727, // 00A0 GETMBR R12 R11 K39 + 0x4C340000, // 00A1 LDNIL R13 + 0x2030180D, // 00A2 NE R12 R12 R13 + 0x78320005, // 00A3 JMPF R12 #00AA + 0x8C301727, // 00A4 GETMET R12 R11 K39 + 0x5C381200, // 00A5 MOVE R14 R9 + 0x583C0000, // 00A6 LDCONST R15 K0 + 0x7C300600, // 00A7 CALL R12 3 + 0x5C281800, // 00A8 MOVE R10 R12 + 0x70020033, // 00A9 JMP #00DE + 0x5C281600, // 00AA MOVE R10 R11 + 0x54320017, // 00AB LDINT R12 24 + 0x3C30140C, // 00AC SHR R12 R10 R12 + 0x543600FE, // 00AD LDINT R13 255 + 0x2C30180D, // 00AE AND R12 R12 R13 + 0x5436000F, // 00AF LDINT R13 16 + 0x3C34140D, // 00B0 SHR R13 R10 R13 + 0x543A00FE, // 00B1 LDINT R14 255 + 0x2C341A0E, // 00B2 AND R13 R13 R14 + 0x543A0007, // 00B3 LDINT R14 8 + 0x3C38140E, // 00B4 SHR R14 R10 R14 + 0x543E00FE, // 00B5 LDINT R15 255 + 0x2C381C0F, // 00B6 AND R14 R14 R15 + 0x543E00FE, // 00B7 LDINT R15 255 + 0x2C3C140F, // 00B8 AND R15 R10 R15 + 0xB8423400, // 00B9 GETNGBL R16 K26 + 0x8C40211B, // 00BA GETMET R16 R16 K27 + 0x5C481200, // 00BB MOVE R18 R9 + 0x584C0000, // 00BC LDCONST R19 K0 + 0x545200FE, // 00BD LDINT R20 255 + 0x58540000, // 00BE LDCONST R21 K0 + 0x5C581A00, // 00BF MOVE R22 R13 + 0x7C400C00, // 00C0 CALL R16 6 + 0x5C342000, // 00C1 MOVE R13 R16 + 0xB8423400, // 00C2 GETNGBL R16 K26 + 0x8C40211B, // 00C3 GETMET R16 R16 K27 + 0x5C481200, // 00C4 MOVE R18 R9 + 0x584C0000, // 00C5 LDCONST R19 K0 + 0x545200FE, // 00C6 LDINT R20 255 + 0x58540000, // 00C7 LDCONST R21 K0 + 0x5C581C00, // 00C8 MOVE R22 R14 + 0x7C400C00, // 00C9 CALL R16 6 + 0x5C382000, // 00CA MOVE R14 R16 + 0xB8423400, // 00CB GETNGBL R16 K26 + 0x8C40211B, // 00CC GETMET R16 R16 K27 + 0x5C481200, // 00CD MOVE R18 R9 + 0x584C0000, // 00CE LDCONST R19 K0 + 0x545200FE, // 00CF LDINT R20 255 + 0x58540000, // 00D0 LDCONST R21 K0 + 0x5C581E00, // 00D1 MOVE R22 R15 + 0x7C400C00, // 00D2 CALL R16 6 + 0x5C3C2000, // 00D3 MOVE R15 R16 + 0x54420017, // 00D4 LDINT R16 24 + 0x38401810, // 00D5 SHL R16 R12 R16 + 0x5446000F, // 00D6 LDINT R17 16 + 0x38441A11, // 00D7 SHL R17 R13 R17 + 0x30402011, // 00D8 OR R16 R16 R17 + 0x54460007, // 00D9 LDINT R17 8 + 0x38441C11, // 00DA SHL R17 R14 R17 + 0x30402011, // 00DB OR R16 R16 R17 + 0x3040200F, // 00DC OR R16 R16 R15 + 0x5C282000, // 00DD MOVE R10 R16 + 0x882C0104, // 00DE GETMBR R11 R0 K4 + 0x8C2C1728, // 00DF GETMET R11 R11 K40 + 0x54360003, // 00E0 LDINT R13 4 + 0x0834100D, // 00E1 MUL R13 R8 R13 + 0x5C381400, // 00E2 MOVE R14 R10 + 0x543DFFFB, // 00E3 LDINT R15 -4 + 0x7C2C0800, // 00E4 CALL R11 4 + 0x00201106, // 00E5 ADD R8 R8 K6 + 0x7001FF7E, // 00E6 JMP #0066 + 0x80000000, // 00E7 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_fire_start, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080529, // 0003 GETMET R2 R2 K41 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90021D00, // 0006 SETMBR R0 K14 K0 + 0x8C080118, // 0007 GETMET R2 R0 K24 + 0x7C080200, // 0008 CALL R2 1 + 0x8808010F, // 0009 GETMBR R2 R0 K15 + 0x88080510, // 000A GETMBR R2 R2 K16 + 0x540EFFFF, // 000B LDINT R3 65536 + 0x10080403, // 000C MOD R2 R2 R3 + 0x90020E02, // 000D SETMBR R0 K7 R2 + 0x80040000, // 000E RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_buffers +********************************************************************/ +be_local_closure(class_fire__initialize_buffers, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(_initialize_buffers), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x88040316, // 0001 GETMBR R1 R1 K22 + 0x8808010D, // 0002 GETMBR R2 R0 K13 + 0x8C08052A, // 0003 GETMET R2 R2 K42 + 0x7C080200, // 0004 CALL R2 1 + 0x8808010D, // 0005 GETMBR R2 R0 K13 + 0x8C08052B, // 0006 GETMET R2 R2 K43 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x88080104, // 0009 GETMBR R2 R0 K4 + 0x8C08052A, // 000A GETMET R2 R2 K42 + 0x7C080200, // 000B CALL R2 1 + 0x88080104, // 000C GETMBR R2 R0 K4 + 0x8C08052B, // 000D GETMET R2 R2 K43 + 0x54120003, // 000E LDINT R4 4 + 0x08100204, // 000F MUL R4 R1 R4 + 0x7C080400, // 0010 CALL R2 2 + 0x58080000, // 0011 LDCONST R2 K0 + 0x140C0401, // 0012 LT R3 R2 R1 + 0x780E0008, // 0013 JMPF R3 #001D + 0x880C0104, // 0014 GETMBR R3 R0 K4 + 0x8C0C0728, // 0015 GETMET R3 R3 K40 + 0x54160003, // 0016 LDINT R5 4 + 0x08140405, // 0017 MUL R5 R2 R5 + 0x5818001E, // 0018 LDCONST R6 K30 + 0x541DFFFB, // 0019 LDINT R7 -4 + 0x7C0C0800, // 001A CALL R3 4 + 0x00080506, // 001B ADD R2 R2 K6 + 0x7001FFF4, // 001C JMP #0012 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_fire_update, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_fire, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8808012C, // 0000 GETMBR R2 R0 K44 + 0x540E03E7, // 0001 LDINT R3 1000 + 0x0C0C0602, // 0002 DIV R3 R3 R2 + 0x8810010E, // 0003 GETMBR R4 R0 K14 + 0x04100204, // 0004 SUB R4 R1 R4 + 0x28100803, // 0005 GE R4 R4 R3 + 0x78120003, // 0006 JMPF R4 #000B + 0x90021C01, // 0007 SETMBR R0 K14 R1 + 0x8C10012D, // 0008 GETMET R4 R0 K45 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: fire +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(fire, + 4, + &be_class_Animation, + be_nested_map(13, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(current_colors, -1), be_const_var(1) }, + { be_const_key_weak(last_update, 4), be_const_var(2) }, + { be_const_key_weak(render, -1), be_const_closure(class_fire_render_closure) }, + { be_const_key_weak(_random_range, 9), be_const_closure(class_fire__random_range_closure) }, + { be_const_key_weak(_random, -1), be_const_closure(class_fire__random_closure) }, + { be_const_key_weak(random_seed, -1), be_const_var(3) }, + { be_const_key_weak(init, -1), be_const_closure(class_fire_init_closure) }, + { be_const_key_weak(_update_fire_simulation, -1), be_const_closure(class_fire__update_fire_simulation_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_fire_start_closure) }, + { be_const_key_weak(_initialize_buffers, 2), be_const_closure(class_fire__initialize_buffers_closure) }, + { be_const_key_weak(heat_map, -1), be_const_var(0) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(flicker_amount, 4), be_const_bytes_instance(07000001FF000064) }, + { be_const_key_weak(intensity, 0), be_const_bytes_instance(07000001FF0001B400) }, + { be_const_key_weak(flicker_speed, -1), be_const_bytes_instance(07000100140008) }, + { be_const_key_weak(sparking_rate, -1), be_const_bytes_instance(07000001FF000078) }, + { be_const_key_weak(cooling_rate, -1), be_const_bytes_instance(07000001FF000037) }, + })) ) } )) }, + { be_const_key_weak(update, -1), be_const_closure(class_fire_update_closure) }, + })), + be_str_weak(fire) +); +// compact class 'comet' ktab size: 18, total: 31 (saved 104 bytes) +static const bvalue be_ktab_class_comet[18] = { + /* K0 */ be_nested_str_weak(head_position), + /* K1 */ be_nested_str_weak(color), + /* K2 */ be_nested_str_weak(tail_length), + /* K3 */ be_nested_str_weak(direction), + /* K4 */ be_nested_str_weak(wrap_around), + /* K5 */ be_nested_str_weak(fade_factor), + /* K6 */ be_const_int(0), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(width), + /* K11 */ be_nested_str_weak(set_pixel_color), + /* K12 */ be_nested_str_weak(init), + /* K13 */ be_nested_str_weak(speed), + /* K14 */ be_nested_str_weak(engine), + /* K15 */ be_nested_str_weak(strip_length), + /* K16 */ be_nested_str_weak(start_time), + /* K17 */ be_nested_str_weak(on_param_changed), +}; + + +extern const bclass be_class_comet; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_comet_render, /* name */ + be_nested_proto( + 25, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_comet, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x541600FF, // 0001 LDINT R5 256 + 0x0C100805, // 0002 DIV R4 R4 R5 + 0x88140101, // 0003 GETMBR R5 R0 K1 + 0x88180102, // 0004 GETMBR R6 R0 K2 + 0x881C0103, // 0005 GETMBR R7 R0 K3 + 0x88200104, // 0006 GETMBR R8 R0 K4 + 0x88240105, // 0007 GETMBR R9 R0 K5 + 0x542A0017, // 0008 LDINT R10 24 + 0x3C280A0A, // 0009 SHR R10 R5 R10 + 0x542E00FE, // 000A LDINT R11 255 + 0x2C28140B, // 000B AND R10 R10 R11 + 0x542E000F, // 000C LDINT R11 16 + 0x3C2C0A0B, // 000D SHR R11 R5 R11 + 0x543200FE, // 000E LDINT R12 255 + 0x2C2C160C, // 000F AND R11 R11 R12 + 0x54320007, // 0010 LDINT R12 8 + 0x3C300A0C, // 0011 SHR R12 R5 R12 + 0x543600FE, // 0012 LDINT R13 255 + 0x2C30180D, // 0013 AND R12 R12 R13 + 0x543600FE, // 0014 LDINT R13 255 + 0x2C340A0D, // 0015 AND R13 R5 R13 + 0x58380006, // 0016 LDCONST R14 K6 + 0x143C1C06, // 0017 LT R15 R14 R6 + 0x783E0037, // 0018 JMPF R15 #0051 + 0x083C1C07, // 0019 MUL R15 R14 R7 + 0x043C080F, // 001A SUB R15 R4 R15 + 0x20401106, // 001B NE R16 R8 K6 + 0x78420008, // 001C JMPF R16 #0026 + 0x28401E03, // 001D GE R16 R15 R3 + 0x78420001, // 001E JMPF R16 #0021 + 0x043C1E03, // 001F SUB R15 R15 R3 + 0x7001FFFB, // 0020 JMP #001D + 0x14401F06, // 0021 LT R16 R15 K6 + 0x78420001, // 0022 JMPF R16 #0025 + 0x003C1E03, // 0023 ADD R15 R15 R3 + 0x7001FFFB, // 0024 JMP #0021 + 0x70020005, // 0025 JMP #002C + 0x14401F06, // 0026 LT R16 R15 K6 + 0x74420001, // 0027 JMPT R16 #002A + 0x28401E03, // 0028 GE R16 R15 R3 + 0x78420001, // 0029 JMPF R16 #002C + 0x00381D07, // 002A ADD R14 R14 K7 + 0x7001FFEA, // 002B JMP #0017 + 0x544200FE, // 002C LDINT R16 255 + 0x24441D06, // 002D GT R17 R14 K6 + 0x7846000D, // 002E JMPF R17 #003D + 0x58440006, // 002F LDCONST R17 K6 + 0x1448220E, // 0030 LT R18 R17 R14 + 0x784A000A, // 0031 JMPF R18 #003D + 0xB84A1000, // 0032 GETNGBL R18 K8 + 0x8C482509, // 0033 GETMET R18 R18 K9 + 0x5C502000, // 0034 MOVE R20 R16 + 0x58540006, // 0035 LDCONST R21 K6 + 0x545A00FE, // 0036 LDINT R22 255 + 0x585C0006, // 0037 LDCONST R23 K6 + 0x5C601200, // 0038 MOVE R24 R9 + 0x7C480C00, // 0039 CALL R18 6 + 0x5C402400, // 003A MOVE R16 R18 + 0x00442307, // 003B ADD R17 R17 K7 + 0x7001FFF2, // 003C JMP #0030 + 0x54460017, // 003D LDINT R17 24 + 0x38442011, // 003E SHL R17 R16 R17 + 0x544A000F, // 003F LDINT R18 16 + 0x38481612, // 0040 SHL R18 R11 R18 + 0x30442212, // 0041 OR R17 R17 R18 + 0x544A0007, // 0042 LDINT R18 8 + 0x38481812, // 0043 SHL R18 R12 R18 + 0x30442212, // 0044 OR R17 R17 R18 + 0x3044220D, // 0045 OR R17 R17 R13 + 0x28481F06, // 0046 GE R18 R15 K6 + 0x784A0006, // 0047 JMPF R18 #004F + 0x8848030A, // 0048 GETMBR R18 R1 K10 + 0x14481E12, // 0049 LT R18 R15 R18 + 0x784A0003, // 004A JMPF R18 #004F + 0x8C48030B, // 004B GETMET R18 R1 K11 + 0x5C501E00, // 004C MOVE R20 R15 + 0x5C542200, // 004D MOVE R21 R17 + 0x7C480600, // 004E CALL R18 3 + 0x00381D07, // 004F ADD R14 R14 K7 + 0x7001FFC5, // 0050 JMP #0017 + 0x503C0200, // 0051 LDBOOL R15 1 0 + 0x80041E00, // 0052 RET 1 R15 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_comet_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_comet, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050C, // 0003 GETMET R2 R2 K12 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020106, // 0006 SETMBR R0 K0 K6 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_comet_update, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_comet, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x8808010D, // 0000 GETMBR R2 R0 K13 + 0x880C0103, // 0001 GETMBR R3 R0 K3 + 0x88100104, // 0002 GETMBR R4 R0 K4 + 0x8814010E, // 0003 GETMBR R5 R0 K14 + 0x88140B0F, // 0004 GETMBR R5 R5 K15 + 0x88180110, // 0005 GETMBR R6 R0 K16 + 0x04180206, // 0006 SUB R6 R1 R6 + 0x081C0406, // 0007 MUL R7 R2 R6 + 0x081C0E03, // 0008 MUL R7 R7 R3 + 0x542203E7, // 0009 LDINT R8 1000 + 0x0C1C0E08, // 000A DIV R7 R7 R8 + 0x24200706, // 000B GT R8 R3 K6 + 0x78220001, // 000C JMPF R8 #000F + 0x90020007, // 000D SETMBR R0 K0 R7 + 0x70020004, // 000E JMP #0014 + 0x04200B07, // 000F SUB R8 R5 K7 + 0x542600FF, // 0010 LDINT R9 256 + 0x08201009, // 0011 MUL R8 R8 R9 + 0x00201007, // 0012 ADD R8 R8 R7 + 0x90020008, // 0013 SETMBR R0 K0 R8 + 0x542200FF, // 0014 LDINT R8 256 + 0x08200A08, // 0015 MUL R8 R5 R8 + 0x20240906, // 0016 NE R9 R4 K6 + 0x7826000E, // 0017 JMPF R9 #0027 + 0x88240100, // 0018 GETMBR R9 R0 K0 + 0x28241208, // 0019 GE R9 R9 R8 + 0x78260003, // 001A JMPF R9 #001F + 0x88240100, // 001B GETMBR R9 R0 K0 + 0x04241208, // 001C SUB R9 R9 R8 + 0x90020009, // 001D SETMBR R0 K0 R9 + 0x7001FFF8, // 001E JMP #0018 + 0x88240100, // 001F GETMBR R9 R0 K0 + 0x14241306, // 0020 LT R9 R9 K6 + 0x78260003, // 0021 JMPF R9 #0026 + 0x88240100, // 0022 GETMBR R9 R0 K0 + 0x00241208, // 0023 ADD R9 R9 R8 + 0x90020009, // 0024 SETMBR R0 K0 R9 + 0x7001FFF8, // 0025 JMP #001F + 0x7002000F, // 0026 JMP #0037 + 0x88240100, // 0027 GETMBR R9 R0 K0 + 0x28241208, // 0028 GE R9 R9 R8 + 0x78260006, // 0029 JMPF R9 #0031 + 0x04240B07, // 002A SUB R9 R5 K7 + 0x542A00FF, // 002B LDINT R10 256 + 0x0824120A, // 002C MUL R9 R9 R10 + 0x90020009, // 002D SETMBR R0 K0 R9 + 0x44240600, // 002E NEG R9 R3 + 0x90020609, // 002F SETMBR R0 K3 R9 + 0x70020005, // 0030 JMP #0037 + 0x88240100, // 0031 GETMBR R9 R0 K0 + 0x14241306, // 0032 LT R9 R9 K6 + 0x78260002, // 0033 JMPF R9 #0037 + 0x90020106, // 0034 SETMBR R0 K0 K6 + 0x44240600, // 0035 NEG R9 R3 + 0x90020609, // 0036 SETMBR R0 K3 R9 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_comet_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_comet, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0711, // 0003 GETMET R3 R3 K17 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0303, // 0007 EQ R3 R1 K3 + 0x780E0009, // 0008 JMPF R3 #0013 + 0x880C010E, // 0009 GETMBR R3 R0 K14 + 0x880C070F, // 000A GETMBR R3 R3 K15 + 0x24100506, // 000B GT R4 R2 K6 + 0x78120001, // 000C JMPF R4 #000F + 0x90020106, // 000D SETMBR R0 K0 K6 + 0x70020003, // 000E JMP #0013 + 0x04100707, // 000F SUB R4 R3 K7 + 0x541600FF, // 0010 LDINT R5 256 + 0x08100805, // 0011 MUL R4 R4 R5 + 0x90020004, // 0012 SETMBR R0 K0 R4 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: comet +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(comet, + 1, + &be_class_Animation, + be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_comet_on_param_changed_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_comet_render_closure) }, + { be_const_key_weak(PARAMS, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(fade_factor, -1), be_const_bytes_instance(07000001FF0001B300) }, + { be_const_key_weak(wrap_around, -1), be_const_bytes_instance(07000000010001) }, + { be_const_key_weak(direction, -1), be_const_bytes_instance(1400010200FF0001) }, + { be_const_key_weak(speed, 0), be_const_bytes_instance(07000101006401000A) }, + { be_const_key_weak(tail_length, -1), be_const_bytes_instance(07000100320005) }, + })) ) } )) }, + { be_const_key_weak(head_position, 2), be_const_var(0) }, + { be_const_key_weak(update, -1), be_const_closure(class_comet_update_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_comet_init_closure) }, + })), + be_str_weak(comet) +); +// compact class 'oscillator_value' ktab size: 22, total: 24 (saved 16 bytes) +static const bvalue be_ktab_class_oscillator_value[22] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(value), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start), + /* K4 */ be_nested_str_weak(duration), + /* K5 */ be_nested_str_weak(min_value), + /* K6 */ be_nested_str_weak(max_value), + /* K7 */ be_nested_str_weak(form), + /* K8 */ be_nested_str_weak(phase), + /* K9 */ be_nested_str_weak(duty_cycle), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(scale_uint), + /* K12 */ be_nested_str_weak(scale_int), + /* K13 */ be_nested_str_weak(_fix_time_ms), + /* K14 */ be_nested_str_weak(start_time), + /* K15 */ be_const_int(3), + /* K16 */ be_const_int(2), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(sine_int), + /* K19 */ be_const_int(196602), + /* K20 */ be_const_int(-1044480), + /* K21 */ be_const_int(1044480), +}; + + +extern const bclass be_class_oscillator_value; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_oscillator_value_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_oscillator_value, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020302, // 0006 SETMBR R0 K1 K2 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_oscillator_value_start, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_oscillator_value, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080503, // 0003 GETMET R2 R2 K3 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80040000, // 0006 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_oscillator_value_produce_value, /* name */ + be_nested_proto( + 24, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_oscillator_value, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[349]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x88100105, // 0001 GETMBR R4 R0 K5 + 0x88140106, // 0002 GETMBR R5 R0 K6 + 0x88180107, // 0003 GETMBR R6 R0 K7 + 0x881C0108, // 0004 GETMBR R7 R0 K8 + 0x88200109, // 0005 GETMBR R8 R0 K9 + 0xB8261400, // 0006 GETNGBL R9 K10 + 0x8824130B, // 0007 GETMBR R9 R9 K11 + 0xB82A1400, // 0008 GETNGBL R10 K10 + 0x8828150C, // 0009 GETMBR R10 R10 K12 + 0x8C2C010D, // 000A GETMET R11 R0 K13 + 0x5C340400, // 000B MOVE R13 R2 + 0x7C2C0400, // 000C CALL R11 2 + 0x5C081600, // 000D MOVE R2 R11 + 0x4C2C0000, // 000E LDNIL R11 + 0x1C2C060B, // 000F EQ R11 R3 R11 + 0x742E0001, // 0010 JMPT R11 #0013 + 0x182C0702, // 0011 LE R11 R3 K2 + 0x782E0000, // 0012 JMPF R11 #0014 + 0x80040800, // 0013 RET 1 R4 + 0x882C010E, // 0014 GETMBR R11 R0 K14 + 0x042C040B, // 0015 SUB R11 R2 R11 + 0x14301702, // 0016 LT R12 R11 K2 + 0x78320000, // 0017 JMPF R12 #0019 + 0x582C0002, // 0018 LDCONST R11 K2 + 0x28301603, // 0019 GE R12 R11 R3 + 0x78320005, // 001A JMPF R12 #0021 + 0x0C341603, // 001B DIV R13 R11 R3 + 0x08341A03, // 001C MUL R13 R13 R3 + 0x8830010E, // 001D GETMBR R12 R0 K14 + 0x0030180D, // 001E ADD R12 R12 R13 + 0x90021C0C, // 001F SETMBR R0 K14 R12 + 0x102C1603, // 0020 MOD R11 R11 R3 + 0x24300F02, // 0021 GT R12 R7 K2 + 0x7832000A, // 0022 JMPF R12 #002E + 0x5C301200, // 0023 MOVE R12 R9 + 0x5C340E00, // 0024 MOVE R13 R7 + 0x58380002, // 0025 LDCONST R14 K2 + 0x543E00FE, // 0026 LDINT R15 255 + 0x58400002, // 0027 LDCONST R16 K2 + 0x5C440600, // 0028 MOVE R17 R3 + 0x7C300A00, // 0029 CALL R12 5 + 0x002C160C, // 002A ADD R11 R11 R12 + 0x28301603, // 002B GE R12 R11 R3 + 0x78320000, // 002C JMPF R12 #002E + 0x042C1603, // 002D SUB R11 R11 R3 + 0x4C300000, // 002E LDNIL R12 + 0x5C341200, // 002F MOVE R13 R9 + 0x5C381000, // 0030 MOVE R14 R8 + 0x583C0002, // 0031 LDCONST R15 K2 + 0x544200FE, // 0032 LDINT R16 255 + 0x58440002, // 0033 LDCONST R17 K2 + 0x5C480600, // 0034 MOVE R18 R3 + 0x7C340A00, // 0035 CALL R13 5 + 0x1C380D0F, // 0036 EQ R14 R6 K15 + 0x783A0008, // 0037 JMPF R14 #0041 + 0x1438160D, // 0038 LT R14 R11 R13 + 0x783A0001, // 0039 JMPF R14 #003C + 0x5C380800, // 003A MOVE R14 R4 + 0x70020000, // 003B JMP #003D + 0x5C380A00, // 003C MOVE R14 R5 + 0x9002020E, // 003D SETMBR R0 K1 R14 + 0x88380101, // 003E GETMBR R14 R0 K1 + 0x80041C00, // 003F RET 1 R14 + 0x70020111, // 0040 JMP #0153 + 0x1C380D10, // 0041 EQ R14 R6 K16 + 0x783A0013, // 0042 JMPF R14 #0057 + 0x1438160D, // 0043 LT R14 R11 R13 + 0x783A0008, // 0044 JMPF R14 #004E + 0x5C381200, // 0045 MOVE R14 R9 + 0x5C3C1600, // 0046 MOVE R15 R11 + 0x58400002, // 0047 LDCONST R16 K2 + 0x04441B11, // 0048 SUB R17 R13 K17 + 0x58480002, // 0049 LDCONST R18 K2 + 0x544E00FE, // 004A LDINT R19 255 + 0x7C380A00, // 004B CALL R14 5 + 0x5C301C00, // 004C MOVE R12 R14 + 0x70020007, // 004D JMP #0056 + 0x5C381200, // 004E MOVE R14 R9 + 0x5C3C1600, // 004F MOVE R15 R11 + 0x5C401A00, // 0050 MOVE R16 R13 + 0x04440711, // 0051 SUB R17 R3 K17 + 0x544A00FE, // 0052 LDINT R18 255 + 0x584C0002, // 0053 LDCONST R19 K2 + 0x7C380A00, // 0054 CALL R14 5 + 0x5C301C00, // 0055 MOVE R12 R14 + 0x700200FB, // 0056 JMP #0153 + 0x543A0003, // 0057 LDINT R14 4 + 0x1C380C0E, // 0058 EQ R14 R6 R14 + 0x743A0002, // 0059 JMPT R14 #005D + 0x543A0004, // 005A LDINT R14 5 + 0x1C380C0E, // 005B EQ R14 R6 R14 + 0x783A0017, // 005C JMPF R14 #0075 + 0x5C381200, // 005D MOVE R14 R9 + 0x5C3C1600, // 005E MOVE R15 R11 + 0x58400002, // 005F LDCONST R16 K2 + 0x04440711, // 0060 SUB R17 R3 K17 + 0x58480002, // 0061 LDCONST R18 K2 + 0x544E7FFE, // 0062 LDINT R19 32767 + 0x7C380A00, // 0063 CALL R14 5 + 0x543E0003, // 0064 LDINT R15 4 + 0x1C3C0C0F, // 0065 EQ R15 R6 R15 + 0x783E0001, // 0066 JMPF R15 #0069 + 0x543E1FFF, // 0067 LDINT R15 8192 + 0x04381C0F, // 0068 SUB R14 R14 R15 + 0x5C3C1400, // 0069 MOVE R15 R10 + 0xB8421400, // 006A GETNGBL R16 K10 + 0x8C402112, // 006B GETMET R16 R16 K18 + 0x5C481C00, // 006C MOVE R18 R14 + 0x7C400400, // 006D CALL R16 2 + 0x5445EFFF, // 006E LDINT R17 -4096 + 0x544A0FFF, // 006F LDINT R18 4096 + 0x584C0002, // 0070 LDCONST R19 K2 + 0x545200FE, // 0071 LDINT R20 255 + 0x7C3C0A00, // 0072 CALL R15 5 + 0x5C301E00, // 0073 MOVE R12 R15 + 0x700200DD, // 0074 JMP #0153 + 0x543A0005, // 0075 LDINT R14 6 + 0x1C380C0E, // 0076 EQ R14 R6 R14 + 0x743A0002, // 0077 JMPT R14 #007B + 0x543A0006, // 0078 LDINT R14 7 + 0x1C380C0E, // 0079 EQ R14 R6 R14 + 0x783A001F, // 007A JMPF R14 #009B + 0x5C381200, // 007B MOVE R14 R9 + 0x5C3C1600, // 007C MOVE R15 R11 + 0x58400002, // 007D LDCONST R16 K2 + 0x04440711, // 007E SUB R17 R3 K17 + 0x58480002, // 007F LDCONST R18 K2 + 0x544E00FE, // 0080 LDINT R19 255 + 0x7C380A00, // 0081 CALL R14 5 + 0x543E0005, // 0082 LDINT R15 6 + 0x1C3C0C0F, // 0083 EQ R15 R6 R15 + 0x783E0008, // 0084 JMPF R15 #008E + 0x5C3C1400, // 0085 MOVE R15 R10 + 0x08401C0E, // 0086 MUL R16 R14 R14 + 0x58440002, // 0087 LDCONST R17 K2 + 0x544AFE00, // 0088 LDINT R18 65025 + 0x584C0002, // 0089 LDCONST R19 K2 + 0x545200FE, // 008A LDINT R20 255 + 0x7C3C0A00, // 008B CALL R15 5 + 0x5C301E00, // 008C MOVE R12 R15 + 0x7002000B, // 008D JMP #009A + 0x543E00FE, // 008E LDINT R15 255 + 0x043C1E0E, // 008F SUB R15 R15 R14 + 0x544200FE, // 0090 LDINT R16 255 + 0x5C441400, // 0091 MOVE R17 R10 + 0x08481E0F, // 0092 MUL R18 R15 R15 + 0x584C0002, // 0093 LDCONST R19 K2 + 0x5452FE00, // 0094 LDINT R20 65025 + 0x58540002, // 0095 LDCONST R21 K2 + 0x545A00FE, // 0096 LDINT R22 255 + 0x7C440A00, // 0097 CALL R17 5 + 0x04402011, // 0098 SUB R16 R16 R17 + 0x5C302000, // 0099 MOVE R12 R16 + 0x700200B7, // 009A JMP #0153 + 0x543A0007, // 009B LDINT R14 8 + 0x1C380C0E, // 009C EQ R14 R6 R14 + 0x783A0048, // 009D JMPF R14 #00E7 + 0x5C381200, // 009E MOVE R14 R9 + 0x5C3C1600, // 009F MOVE R15 R11 + 0x58400002, // 00A0 LDCONST R16 K2 + 0x04440711, // 00A1 SUB R17 R3 K17 + 0x58480002, // 00A2 LDCONST R18 K2 + 0x544E00FE, // 00A3 LDINT R19 255 + 0x7C380A00, // 00A4 CALL R14 5 + 0x1C3C1D02, // 00A5 EQ R15 R14 K2 + 0x783E0002, // 00A6 JMPF R15 #00AA + 0x90020204, // 00A7 SETMBR R0 K1 R4 + 0x883C0101, // 00A8 GETMBR R15 R0 K1 + 0x80041E00, // 00A9 RET 1 R15 + 0x543E00FE, // 00AA LDINT R15 255 + 0x1C3C1C0F, // 00AB EQ R15 R14 R15 + 0x783E0002, // 00AC JMPF R15 #00B0 + 0x90020205, // 00AD SETMBR R0 K1 R5 + 0x883C0101, // 00AE GETMBR R15 R0 K1 + 0x80041E00, // 00AF RET 1 R15 + 0x5C3C1200, // 00B0 MOVE R15 R9 + 0x544200FE, // 00B1 LDINT R16 255 + 0x0440200E, // 00B2 SUB R16 R16 R14 + 0x58440002, // 00B3 LDCONST R17 K2 + 0x544A00FE, // 00B4 LDINT R18 255 + 0x544E00FE, // 00B5 LDINT R19 255 + 0x5452001F, // 00B6 LDINT R20 32 + 0x7C3C0A00, // 00B7 CALL R15 5 + 0xB8421400, // 00B8 GETNGBL R16 K10 + 0x8C402112, // 00B9 GETMET R16 R16 K18 + 0x5C481200, // 00BA MOVE R18 R9 + 0x5C4C1C00, // 00BB MOVE R19 R14 + 0x58500002, // 00BC LDCONST R20 K2 + 0x545600FE, // 00BD LDINT R21 255 + 0x58580002, // 00BE LDCONST R22 K2 + 0x585C0013, // 00BF LDCONST R23 K19 + 0x7C480A00, // 00C0 CALL R18 5 + 0x544E7FFE, // 00C1 LDINT R19 32767 + 0x10482413, // 00C2 MOD R18 R18 R19 + 0x7C400400, // 00C3 CALL R16 2 + 0x5C441400, // 00C4 MOVE R17 R10 + 0x0848200F, // 00C5 MUL R18 R16 R15 + 0x584C0014, // 00C6 LDCONST R19 K20 + 0x58500015, // 00C7 LDCONST R20 K21 + 0x5455FF00, // 00C8 LDINT R21 -255 + 0x545A00FE, // 00C9 LDINT R22 255 + 0x7C440A00, // 00CA CALL R17 5 + 0x5C481400, // 00CB MOVE R18 R10 + 0x5C4C1C00, // 00CC MOVE R19 R14 + 0x58500002, // 00CD LDCONST R20 K2 + 0x545600FE, // 00CE LDINT R21 255 + 0x58580002, // 00CF LDCONST R22 K2 + 0x045C0A04, // 00D0 SUB R23 R5 R4 + 0x7C480A00, // 00D1 CALL R18 5 + 0x00480812, // 00D2 ADD R18 R4 R18 + 0x00482411, // 00D3 ADD R18 R18 R17 + 0x90020212, // 00D4 SETMBR R0 K1 R18 + 0x04480A04, // 00D5 SUB R18 R5 R4 + 0x544E0003, // 00D6 LDINT R19 4 + 0x0C482413, // 00D7 DIV R18 R18 R19 + 0x884C0101, // 00D8 GETMBR R19 R0 K1 + 0x00500A12, // 00D9 ADD R20 R5 R18 + 0x244C2614, // 00DA GT R19 R19 R20 + 0x784E0001, // 00DB JMPF R19 #00DE + 0x004C0A12, // 00DC ADD R19 R5 R18 + 0x90020213, // 00DD SETMBR R0 K1 R19 + 0x884C0101, // 00DE GETMBR R19 R0 K1 + 0x04500812, // 00DF SUB R20 R4 R18 + 0x144C2614, // 00E0 LT R19 R19 R20 + 0x784E0001, // 00E1 JMPF R19 #00E4 + 0x044C0812, // 00E2 SUB R19 R4 R18 + 0x90020213, // 00E3 SETMBR R0 K1 R19 + 0x884C0101, // 00E4 GETMBR R19 R0 K1 + 0x80042600, // 00E5 RET 1 R19 + 0x7002006B, // 00E6 JMP #0153 + 0x543A0008, // 00E7 LDINT R14 9 + 0x1C380C0E, // 00E8 EQ R14 R6 R14 + 0x783A0060, // 00E9 JMPF R14 #014B + 0x5C381200, // 00EA MOVE R14 R9 + 0x5C3C1600, // 00EB MOVE R15 R11 + 0x58400002, // 00EC LDCONST R16 K2 + 0x04440711, // 00ED SUB R17 R3 K17 + 0x58480002, // 00EE LDCONST R18 K2 + 0x544E00FE, // 00EF LDINT R19 255 + 0x7C380A00, // 00F0 CALL R14 5 + 0x543E007F, // 00F1 LDINT R15 128 + 0x143C1C0F, // 00F2 LT R15 R14 R15 + 0x783E0015, // 00F3 JMPF R15 #010A + 0x5C3C1200, // 00F4 MOVE R15 R9 + 0x5C401C00, // 00F5 MOVE R16 R14 + 0x58440002, // 00F6 LDCONST R17 K2 + 0x544A007E, // 00F7 LDINT R18 127 + 0x584C0002, // 00F8 LDCONST R19 K2 + 0x545200FE, // 00F9 LDINT R20 255 + 0x7C3C0A00, // 00FA CALL R15 5 + 0x544200FE, // 00FB LDINT R16 255 + 0x5C441400, // 00FC MOVE R17 R10 + 0x544A00FE, // 00FD LDINT R18 255 + 0x0448240F, // 00FE SUB R18 R18 R15 + 0x544E00FE, // 00FF LDINT R19 255 + 0x044C260F, // 0100 SUB R19 R19 R15 + 0x08482413, // 0101 MUL R18 R18 R19 + 0x584C0002, // 0102 LDCONST R19 K2 + 0x5452FE00, // 0103 LDINT R20 65025 + 0x58540002, // 0104 LDCONST R21 K2 + 0x545A00FE, // 0105 LDINT R22 255 + 0x7C440A00, // 0106 CALL R17 5 + 0x04402011, // 0107 SUB R16 R16 R17 + 0x5C302000, // 0108 MOVE R12 R16 + 0x7002003F, // 0109 JMP #014A + 0x543E00BF, // 010A LDINT R15 192 + 0x143C1C0F, // 010B LT R15 R14 R15 + 0x783E001C, // 010C JMPF R15 #012A + 0x5C3C1200, // 010D MOVE R15 R9 + 0x5442007F, // 010E LDINT R16 128 + 0x04401C10, // 010F SUB R16 R14 R16 + 0x58440002, // 0110 LDCONST R17 K2 + 0x544A003E, // 0111 LDINT R18 63 + 0x584C0002, // 0112 LDCONST R19 K2 + 0x545200FE, // 0113 LDINT R20 255 + 0x7C3C0A00, // 0114 CALL R15 5 + 0x5C401400, // 0115 MOVE R16 R10 + 0x544600FE, // 0116 LDINT R17 255 + 0x5C481400, // 0117 MOVE R18 R10 + 0x544E00FE, // 0118 LDINT R19 255 + 0x044C260F, // 0119 SUB R19 R19 R15 + 0x545200FE, // 011A LDINT R20 255 + 0x0450280F, // 011B SUB R20 R20 R15 + 0x084C2614, // 011C MUL R19 R19 R20 + 0x58500002, // 011D LDCONST R20 K2 + 0x5456FE00, // 011E LDINT R21 65025 + 0x58580002, // 011F LDCONST R22 K2 + 0x545E00FE, // 0120 LDINT R23 255 + 0x7C480A00, // 0121 CALL R18 5 + 0x04442212, // 0122 SUB R17 R17 R18 + 0x58480002, // 0123 LDCONST R18 K2 + 0x544E00FE, // 0124 LDINT R19 255 + 0x58500002, // 0125 LDCONST R20 K2 + 0x5456007F, // 0126 LDINT R21 128 + 0x7C400A00, // 0127 CALL R16 5 + 0x5C302000, // 0128 MOVE R12 R16 + 0x7002001F, // 0129 JMP #014A + 0x5C3C1200, // 012A MOVE R15 R9 + 0x544200BF, // 012B LDINT R16 192 + 0x04401C10, // 012C SUB R16 R14 R16 + 0x58440002, // 012D LDCONST R17 K2 + 0x544A003E, // 012E LDINT R18 63 + 0x584C0002, // 012F LDCONST R19 K2 + 0x545200FE, // 0130 LDINT R20 255 + 0x7C3C0A00, // 0131 CALL R15 5 + 0x544200FE, // 0132 LDINT R16 255 + 0x5C441400, // 0133 MOVE R17 R10 + 0x544A00FE, // 0134 LDINT R18 255 + 0x0448240F, // 0135 SUB R18 R18 R15 + 0x544E00FE, // 0136 LDINT R19 255 + 0x044C260F, // 0137 SUB R19 R19 R15 + 0x08482413, // 0138 MUL R18 R18 R19 + 0x584C0002, // 0139 LDCONST R19 K2 + 0x5452FE00, // 013A LDINT R20 65025 + 0x58540002, // 013B LDCONST R21 K2 + 0x545A00FE, // 013C LDINT R22 255 + 0x7C440A00, // 013D CALL R17 5 + 0x04402011, // 013E SUB R16 R16 R17 + 0x544600FE, // 013F LDINT R17 255 + 0x5C481400, // 0140 MOVE R18 R10 + 0x544E00FE, // 0141 LDINT R19 255 + 0x044C2610, // 0142 SUB R19 R19 R16 + 0x58500002, // 0143 LDCONST R20 K2 + 0x545600FE, // 0144 LDINT R21 255 + 0x58580002, // 0145 LDCONST R22 K2 + 0x545E003F, // 0146 LDINT R23 64 + 0x7C480A00, // 0147 CALL R18 5 + 0x04442212, // 0148 SUB R17 R17 R18 + 0x5C302200, // 0149 MOVE R12 R17 + 0x70020007, // 014A JMP #0153 + 0x5C381200, // 014B MOVE R14 R9 + 0x5C3C1600, // 014C MOVE R15 R11 + 0x58400002, // 014D LDCONST R16 K2 + 0x04440711, // 014E SUB R17 R3 K17 + 0x58480002, // 014F LDCONST R18 K2 + 0x544E00FE, // 0150 LDINT R19 255 + 0x7C380A00, // 0151 CALL R14 5 + 0x5C301C00, // 0152 MOVE R12 R14 + 0x5C381400, // 0153 MOVE R14 R10 + 0x5C3C1800, // 0154 MOVE R15 R12 + 0x58400002, // 0155 LDCONST R16 K2 + 0x544600FE, // 0156 LDINT R17 255 + 0x5C480800, // 0157 MOVE R18 R4 + 0x5C4C0A00, // 0158 MOVE R19 R5 + 0x7C380A00, // 0159 CALL R14 5 + 0x9002020E, // 015A SETMBR R0 K1 R14 + 0x88380101, // 015B GETMBR R14 R0 K1 + 0x80041C00, // 015C RET 1 R14 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: oscillator_value +********************************************************************/ +extern const bclass be_class_value_provider; +be_local_class(oscillator_value, + 1, + &be_class_value_provider, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(init, -1), be_const_closure(class_oscillator_value_init_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_oscillator_value_start_closure) }, + { be_const_key_weak(produce_value, 4), be_const_closure(class_oscillator_value_produce_value_closure) }, + { be_const_key_weak(PARAMS, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(phase, -1), be_const_bytes_instance(07000001FF000000) }, + { be_const_key_weak(max_value, 4), be_const_bytes_instance(0401FF00) }, + { be_const_key_weak(duty_cycle, -1), be_const_bytes_instance(07000001FF00007F) }, + { be_const_key_weak(min_value, -1), be_const_bytes_instance(040000) }, + { be_const_key_weak(duration, -1), be_const_bytes_instance(05000101E803) }, + { be_const_key_weak(form, 1), be_const_bytes_instance(14000109000100020003000400050006000700080009) }, + })) ) } )) }, + { be_const_key_weak(value, -1), be_const_var(0) }, + })), + be_str_weak(oscillator_value) +); +// compact class 'closure_value' ktab size: 4, total: 5 (saved 8 bytes) +static const bvalue be_ktab_class_closure_value[4] = { + /* K0 */ be_nested_str_weak(_closure), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(on_param_changed), + /* K3 */ be_nested_str_weak(closure), +}; + + +extern const bclass be_class_closure_value; + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_closure_value_produce_value, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_closure_value, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C100604, // 0002 EQ R4 R3 R4 + 0x78120001, // 0003 JMPF R4 #0006 + 0x4C100000, // 0004 LDNIL R4 + 0x80040800, // 0005 RET 1 R4 + 0x5C100600, // 0006 MOVE R4 R3 + 0x88140101, // 0007 GETMBR R5 R0 K1 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_closure_value_on_param_changed, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_closure_value, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0303, // 0007 EQ R3 R1 K3 + 0x780E0000, // 0008 JMPF R3 #000A + 0x90020002, // 0009 SETMBR R0 K0 R2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: closure_value +********************************************************************/ +extern const bclass be_class_value_provider; +be_local_class(closure_value, + 1, + &be_class_value_provider, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_closure, -1), be_const_var(0) }, + { be_const_key_weak(produce_value, 2), be_const_closure(class_closure_value_produce_value_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_closure_value_on_param_changed_closure) }, + { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(closure, -1), be_const_bytes_instance(0C0606) }, + })) ) } )) }, + })), + be_str_weak(closure_value) +); + +/******************************************************************** +** Solidified function: bounce +********************************************************************/ +be_local_closure(bounce, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + }), + be_str_weak(bounce), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A0008, // 0004 LDINT R2 9 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + // compact class 'sequence_manager' ktab size: 34, total: 122 (saved 704 bytes) static const bvalue be_ktab_class_sequence_manager[34] = { /* K0 */ be_nested_str_weak(step_durations), @@ -5291,2883 +9038,6 @@ be_local_class(sequence_manager, be_str_weak(sequence_manager) ); -/******************************************************************** -** Solidified function: ramp -********************************************************************/ -be_local_closure(ramp, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_const_int(1), - }), - be_str_weak(ramp), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wave_custom -********************************************************************/ -be_local_closure(wave_custom, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(wave_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(wave_type), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(frequency), - /* K6 */ be_nested_str_weak(wave_speed), - }), - be_str_weak(wave_custom), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FEFF, // 0004 LDINT R2 -256 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A0027, // 0007 LDINT R2 40 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A001D, // 0009 LDINT R2 30 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: list_user_functions -********************************************************************/ -be_local_closure(list_user_functions, /* name */ - be_nested_proto( - 6, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(user_functions), - /* K2 */ be_nested_str_weak(keys), - /* K3 */ be_nested_str_weak(push), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(list_user_functions), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60000012, // 0000 GETGBL R0 G18 - 0x7C000000, // 0001 CALL R0 0 - 0x60040010, // 0002 GETGBL R1 G16 - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x88080501, // 0004 GETMBR R2 R2 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x7C040200, // 0007 CALL R1 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C080200, // 0009 MOVE R2 R1 - 0x7C080000, // 000A CALL R2 0 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x7001FFF9, // 000E JMP #0009 - 0x58040004, // 000F LDCONST R1 K4 - 0xAC040200, // 0010 CATCH R1 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040000, // 0012 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_user_function -********************************************************************/ -be_local_closure(get_user_function, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(_user_functions), - /* K2 */ be_nested_str_weak(find), - }), - be_str_weak(get_user_function), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x8C040302, // 0002 GETMET R1 R1 K2 - 0x5C0C0000, // 0003 MOVE R3 R0 - 0x7C040400, // 0004 CALL R1 2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'Animation' ktab size: 24, total: 32 (saved 64 bytes) -static const bvalue be_ktab_class_Animation[24] = { - /* K0 */ be_nested_str_weak(get_color_at), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(init), - /* K3 */ be_nested_str_weak(member), - /* K4 */ be_nested_str_weak(color), - /* K5 */ be_nested_str_weak(fill_pixels), - /* K6 */ be_nested_str_weak(pixels), - /* K7 */ be_nested_str_weak(animation), - /* K8 */ be_nested_str_weak(opacity_frame), - /* K9 */ be_nested_str_weak(width), - /* K10 */ be_nested_str_weak(frame_buffer), - /* K11 */ be_nested_str_weak(clear), - /* K12 */ be_nested_str_weak(is_running), - /* K13 */ be_nested_str_weak(start), - /* K14 */ be_nested_str_weak(start_time), - /* K15 */ be_nested_str_weak(update), - /* K16 */ be_nested_str_weak(render), - /* K17 */ be_nested_str_weak(apply_opacity), - /* K18 */ be_nested_str_weak(opacity), - /* K19 */ be_nested_str_weak(int), - /* K20 */ be_nested_str_weak(_apply_opacity), - /* K21 */ be_nested_str_weak(get_param_value), - /* K22 */ be_nested_str_weak(duration), - /* K23 */ be_nested_str_weak(loop), -}; - - -extern const bclass be_class_Animation; - -/******************************************************************** -** Solidified function: get_color -********************************************************************/ -be_local_closure(class_Animation_get_color, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(get_color), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x58100001, // 0001 LDCONST R4 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_Animation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080502, // 0003 GETMET R2 R2 K2 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_Animation_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C100103, // 0000 GETMET R4 R0 K3 - 0x58180004, // 0001 LDCONST R6 K4 - 0x7C100400, // 0002 CALL R4 2 - 0x20140901, // 0003 NE R5 R4 K1 - 0x78160003, // 0004 JMPF R5 #0009 - 0x8C140305, // 0005 GETMET R5 R1 K5 - 0x881C0306, // 0006 GETMBR R7 R1 K6 - 0x5C200800, // 0007 MOVE R8 R4 - 0x7C140600, // 0008 CALL R5 3 - 0x50140200, // 0009 LDBOOL R5 1 0 - 0x80040A00, // 000A RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _apply_opacity -********************************************************************/ -be_local_closure(class_Animation__apply_opacity, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(_apply_opacity), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x6014000F, // 0000 GETGBL R5 G15 - 0x5C180400, // 0001 MOVE R6 R2 - 0xB81E0E00, // 0002 GETNGBL R7 K7 - 0x881C0F07, // 0003 GETMBR R7 R7 K7 - 0x7C140400, // 0004 CALL R5 2 - 0x78160023, // 0005 JMPF R5 #002A - 0x5C140400, // 0006 MOVE R5 R2 - 0x88180108, // 0007 GETMBR R6 R0 K8 - 0x4C1C0000, // 0008 LDNIL R7 - 0x1C180C07, // 0009 EQ R6 R6 R7 - 0x741A0004, // 000A JMPT R6 #0010 - 0x88180108, // 000B GETMBR R6 R0 K8 - 0x88180D09, // 000C GETMBR R6 R6 K9 - 0x881C0309, // 000D GETMBR R7 R1 K9 - 0x20180C07, // 000E NE R6 R6 R7 - 0x781A0004, // 000F JMPF R6 #0015 - 0xB81A0E00, // 0010 GETNGBL R6 K7 - 0x8C180D0A, // 0011 GETMET R6 R6 K10 - 0x88200309, // 0012 GETMBR R8 R1 K9 - 0x7C180400, // 0013 CALL R6 2 - 0x90021006, // 0014 SETMBR R0 K8 R6 - 0x88180108, // 0015 GETMBR R6 R0 K8 - 0x8C180D0B, // 0016 GETMET R6 R6 K11 - 0x7C180200, // 0017 CALL R6 1 - 0x88180B0C, // 0018 GETMBR R6 R5 K12 - 0x741A0002, // 0019 JMPT R6 #001D - 0x8C180B0D, // 001A GETMET R6 R5 K13 - 0x8820010E, // 001B GETMBR R8 R0 K14 - 0x7C180400, // 001C CALL R6 2 - 0x8C180B0F, // 001D GETMET R6 R5 K15 - 0x5C200600, // 001E MOVE R8 R3 - 0x7C180400, // 001F CALL R6 2 - 0x8C180B10, // 0020 GETMET R6 R5 K16 - 0x88200108, // 0021 GETMBR R8 R0 K8 - 0x5C240600, // 0022 MOVE R9 R3 - 0x5C280800, // 0023 MOVE R10 R4 - 0x7C180800, // 0024 CALL R6 4 - 0x8C180311, // 0025 GETMET R6 R1 K17 - 0x88200306, // 0026 GETMBR R8 R1 K6 - 0x88240108, // 0027 GETMBR R9 R0 K8 - 0x88241306, // 0028 GETMBR R9 R9 K6 - 0x7C180600, // 0029 CALL R6 3 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: post_render -********************************************************************/ -be_local_closure(class_Animation_post_render, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(post_render), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88100112, // 0000 GETMBR R4 R0 K18 - 0x541600FE, // 0001 LDINT R5 255 - 0x1C140805, // 0002 EQ R5 R4 R5 - 0x78160001, // 0003 JMPF R5 #0006 - 0x80000A00, // 0004 RET 0 - 0x7002000F, // 0005 JMP #0016 - 0x60140004, // 0006 GETGBL R5 G4 - 0x5C180800, // 0007 MOVE R6 R4 - 0x7C140200, // 0008 CALL R5 1 - 0x1C140B13, // 0009 EQ R5 R5 K19 - 0x78160004, // 000A JMPF R5 #0010 - 0x8C140311, // 000B GETMET R5 R1 K17 - 0x881C0306, // 000C GETMBR R7 R1 K6 - 0x5C200800, // 000D MOVE R8 R4 - 0x7C140600, // 000E CALL R5 3 - 0x70020005, // 000F JMP #0016 - 0x8C140114, // 0010 GETMET R5 R0 K20 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x5C200800, // 0012 MOVE R8 R4 - 0x5C240400, // 0013 MOVE R9 R2 - 0x5C280600, // 0014 MOVE R10 R3 - 0x7C140A00, // 0015 CALL R5 5 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_at -********************************************************************/ -be_local_closure(class_Animation_get_color_at, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(get_color_at), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0115, // 0000 GETMET R3 R0 K21 - 0x58140004, // 0001 LDCONST R5 K4 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_Animation_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 - 0x240C0501, // 0001 GT R3 R2 K1 - 0x780E000D, // 0002 JMPF R3 #0011 - 0x880C010E, // 0003 GETMBR R3 R0 K14 - 0x040C0203, // 0004 SUB R3 R1 R3 - 0x28100602, // 0005 GE R4 R3 R2 - 0x78120009, // 0006 JMPF R4 #0011 - 0x88100117, // 0007 GETMBR R4 R0 K23 - 0x78120005, // 0008 JMPF R4 #000F - 0x0C140602, // 0009 DIV R5 R3 R2 - 0x8818010E, // 000A GETMBR R6 R0 K14 - 0x081C0A02, // 000B MUL R7 R5 R2 - 0x00180C07, // 000C ADD R6 R6 R7 - 0x90021C06, // 000D SETMBR R0 K14 R6 - 0x70020001, // 000E JMP #0011 - 0x50140000, // 000F LDBOOL R5 0 0 - 0x90021805, // 0010 SETMBR R0 K12 R5 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animation -********************************************************************/ -extern const bclass be_class_parameterized_object; -be_local_class(Animation, - 1, - &be_class_parameterized_object, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update, 1), be_const_closure(class_Animation_update_closure) }, - { be_const_key_weak(get_color_at, -1), be_const_closure(class_Animation_get_color_at_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(id, -1), be_const_bytes_instance(0C030001) }, - { be_const_key_weak(priority, -1), be_const_bytes_instance(050000000A) }, - { be_const_key_weak(color, -1), be_const_bytes_instance(040000) }, - { be_const_key_weak(loop, 1), be_const_bytes_instance(0C050003) }, - { be_const_key_weak(opacity, 2), be_const_bytes_instance(0C01FF0004) }, - { be_const_key_weak(duration, -1), be_const_bytes_instance(0500000000) }, - })) ) } )) }, - { be_const_key_weak(opacity_frame, -1), be_const_var(0) }, - { be_const_key_weak(_apply_opacity, -1), be_const_closure(class_Animation__apply_opacity_closure) }, - { be_const_key_weak(get_color, 8), be_const_closure(class_Animation_get_color_closure) }, - { be_const_key_weak(init, 2), be_const_closure(class_Animation_init_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_Animation_render_closure) }, - { be_const_key_weak(post_render, -1), be_const_closure(class_Animation_post_render_closure) }, - })), - be_str_weak(Animation) -); - -/******************************************************************** -** Solidified function: create_closure_value -********************************************************************/ -be_local_closure(create_closure_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(closure_value), - /* K2 */ be_nested_str_weak(closure), - }), - be_str_weak(create_closure_value), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: animation_init -********************************************************************/ -be_local_closure(animation_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(_ntv), - /* K4 */ be_nested_str_weak(undefined), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0x8C0C0502, // 0002 GETMET R3 R2 K2 - 0x88140303, // 0003 GETMBR R5 R1 K3 - 0x5C180000, // 0004 MOVE R6 R0 - 0x7C0C0600, // 0005 CALL R3 3 - 0x780E0003, // 0006 JMPF R3 #000B - 0x880C0303, // 0007 GETMBR R3 R1 K3 - 0x880C0600, // 0008 GETMBR R3 R3 R0 - 0x80040600, // 0009 RET 1 R3 - 0x70020003, // 000A JMP #000F - 0x600C000B, // 000B GETGBL R3 G11 - 0x58100004, // 000C LDCONST R4 K4 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040600, // 000E RET 1 R3 - 0x80000000, // 000F RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(_ntv), - /* K2 */ be_nested_str_weak(event_manager), - /* K3 */ be_nested_str_weak(EventManager), - /* K4 */ be_nested_str_weak(member), - /* K5 */ be_nested_str_weak(_user_functions), - }), - be_str_weak(animation_init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x6004000B, // 0000 GETGBL R1 G11 - 0x58080000, // 0001 LDCONST R2 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x90060200, // 0003 SETMBR R1 K1 R0 - 0x8C080103, // 0004 GETMET R2 R0 K3 - 0x7C080200, // 0005 CALL R2 1 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x84080000, // 0007 CLOSURE R2 P0 - 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x60080013, // 0009 GETGBL R2 G19 - 0x7C080000, // 000A CALL R2 0 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x80040200, // 000C RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: solid -********************************************************************/ -be_local_closure(solid, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - }), - be_str_weak(solid), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040300, // 0001 GETMET R1 R1 K0 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'twinkle' ktab size: 33, total: 54 (saved 168 bytes) -static const bvalue be_ktab_class_twinkle[33] = { - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_random), - /* K2 */ be_nested_str_weak(current_colors), - /* K3 */ be_nested_str_weak(size), - /* K4 */ be_nested_str_weak(_initialize_arrays), - /* K5 */ be_nested_str_weak(width), - /* K6 */ be_nested_str_weak(get), - /* K7 */ be_nested_str_weak(set_pixel_color), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(twinkle_speed), - /* K10 */ be_nested_str_weak(last_update), - /* K11 */ be_nested_str_weak(_update_twinkle_simulation), - /* K12 */ be_nested_str_weak(random_seed), - /* K13 */ be_const_int(1103515245), - /* K14 */ be_const_int(2147483647), - /* K15 */ be_nested_str_weak(engine), - /* K16 */ be_nested_str_weak(strip_length), - /* K17 */ be_nested_str_weak(clear), - /* K18 */ be_nested_str_weak(resize), - /* K19 */ be_nested_str_weak(set), - /* K20 */ be_nested_str_weak(on_param_changed), - /* K21 */ be_nested_str_weak(set_param), - /* K22 */ be_nested_str_weak(init), - /* K23 */ be_nested_str_weak(time_ms), - /* K24 */ be_nested_str_weak(fade_speed), - /* K25 */ be_nested_str_weak(density), - /* K26 */ be_nested_str_weak(min_brightness), - /* K27 */ be_nested_str_weak(max_brightness), - /* K28 */ be_nested_str_weak(color), - /* K29 */ be_nested_str_weak(tasmota), - /* K30 */ be_nested_str_weak(scale_uint), - /* K31 */ be_const_int(16777215), - /* K32 */ be_nested_str_weak(_random_range), -}; - - -extern const bclass be_class_twinkle; - -/******************************************************************** -** Solidified function: _random_range -********************************************************************/ -be_local_closure(class_twinkle__random_range, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80060000, // 0002 RET 1 K0 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_twinkle_render, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x88100102, // 0000 GETMBR R4 R0 K2 - 0x8C100903, // 0001 GETMET R4 R4 K3 - 0x7C100200, // 0002 CALL R4 1 - 0x54160003, // 0003 LDINT R5 4 - 0x08140605, // 0004 MUL R5 R3 R5 - 0x20100805, // 0005 NE R4 R4 R5 - 0x78120001, // 0006 JMPF R4 #0009 - 0x8C100104, // 0007 GETMET R4 R0 K4 - 0x7C100200, // 0008 CALL R4 1 - 0x50100000, // 0009 LDBOOL R4 0 0 - 0x58140000, // 000A LDCONST R5 K0 - 0x14180A03, // 000B LT R6 R5 R3 - 0x781A0015, // 000C JMPF R6 #0023 - 0x88180305, // 000D GETMBR R6 R1 K5 - 0x14180A06, // 000E LT R6 R5 R6 - 0x781A0010, // 000F JMPF R6 #0021 - 0x88180102, // 0010 GETMBR R6 R0 K2 - 0x8C180D06, // 0011 GETMET R6 R6 K6 - 0x54220003, // 0012 LDINT R8 4 - 0x08200A08, // 0013 MUL R8 R5 R8 - 0x5425FFFB, // 0014 LDINT R9 -4 - 0x7C180600, // 0015 CALL R6 3 - 0x541E0017, // 0016 LDINT R7 24 - 0x3C1C0C07, // 0017 SHR R7 R6 R7 - 0x542200FE, // 0018 LDINT R8 255 - 0x2C1C0E08, // 0019 AND R7 R7 R8 - 0x241C0F00, // 001A GT R7 R7 K0 - 0x781E0004, // 001B JMPF R7 #0021 - 0x8C1C0307, // 001C GETMET R7 R1 K7 - 0x5C240A00, // 001D MOVE R9 R5 - 0x5C280C00, // 001E MOVE R10 R6 - 0x7C1C0600, // 001F CALL R7 3 - 0x50100200, // 0020 LDBOOL R4 1 0 - 0x00140B08, // 0021 ADD R5 R5 K8 - 0x7001FFE7, // 0022 JMP #000B - 0x80040800, // 0023 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_twinkle_update, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88080109, // 0000 GETMBR R2 R0 K9 - 0x540E03E7, // 0001 LDINT R3 1000 - 0x0C0C0602, // 0002 DIV R3 R3 R2 - 0x8810010A, // 0003 GETMBR R4 R0 K10 - 0x04100204, // 0004 SUB R4 R1 R4 - 0x28100803, // 0005 GE R4 R4 R3 - 0x78120003, // 0006 JMPF R4 #000B - 0x90021401, // 0007 SETMBR R0 K10 R1 - 0x8C10010B, // 0008 GETMET R4 R0 K11 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_twinkle__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8804010C, // 0000 GETMBR R1 R0 K12 - 0x0804030D, // 0001 MUL R1 R1 K13 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C04030E, // 0004 AND R1 R1 K14 - 0x90021801, // 0005 SETMBR R0 K12 R1 - 0x8804010C, // 0006 GETMBR R1 R0 K12 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_arrays -********************************************************************/ -be_local_closure(class_twinkle__initialize_arrays, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(_initialize_arrays), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x8804010F, // 0000 GETMBR R1 R0 K15 - 0x88040310, // 0001 GETMBR R1 R1 K16 - 0x88080102, // 0002 GETMBR R2 R0 K2 - 0x8C080511, // 0003 GETMET R2 R2 K17 - 0x7C080200, // 0004 CALL R2 1 - 0x88080102, // 0005 GETMBR R2 R0 K2 - 0x8C080512, // 0006 GETMET R2 R2 K18 - 0x54120003, // 0007 LDINT R4 4 - 0x08100204, // 0008 MUL R4 R1 R4 - 0x7C080400, // 0009 CALL R2 2 - 0x58080000, // 000A LDCONST R2 K0 - 0x140C0401, // 000B LT R3 R2 R1 - 0x780E0008, // 000C JMPF R3 #0016 - 0x880C0102, // 000D GETMBR R3 R0 K2 - 0x8C0C0713, // 000E GETMET R3 R3 K19 - 0x54160003, // 000F LDINT R5 4 - 0x08140405, // 0010 MUL R5 R2 R5 - 0x58180000, // 0011 LDCONST R6 K0 - 0x541DFFFB, // 0012 LDINT R7 -4 - 0x7C0C0800, // 0013 CALL R3 4 - 0x00080508, // 0014 ADD R2 R2 K8 - 0x7001FFF4, // 0015 JMP #000B - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_twinkle_on_param_changed, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0714, // 0003 GETMET R3 R3 K20 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0309, // 0007 EQ R3 R1 K9 - 0x780E0010, // 0008 JMPF R3 #001A - 0x540E0031, // 0009 LDINT R3 50 - 0x280C0403, // 000A GE R3 R2 R3 - 0x780E000D, // 000B JMPF R3 #001A - 0x540E03E7, // 000C LDINT R3 1000 - 0x0C0C0602, // 000D DIV R3 R3 R2 - 0x14100708, // 000E LT R4 R3 K8 - 0x78120001, // 000F JMPF R4 #0012 - 0x580C0008, // 0010 LDCONST R3 K8 - 0x70020003, // 0011 JMP #0016 - 0x54120013, // 0012 LDINT R4 20 - 0x24100604, // 0013 GT R4 R3 R4 - 0x78120000, // 0014 JMPF R4 #0016 - 0x540E0013, // 0015 LDINT R3 20 - 0x8C100115, // 0016 GETMET R4 R0 K21 - 0x58180009, // 0017 LDCONST R6 K9 - 0x5C1C0600, // 0018 MOVE R7 R3 - 0x7C100600, // 0019 CALL R4 3 - 0x80000000, // 001A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_twinkle_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080516, // 0003 GETMET R2 R2 K22 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080015, // 0006 GETGBL R2 G21 - 0x7C080000, // 0007 CALL R2 0 - 0x90020402, // 0008 SETMBR R0 K2 R2 - 0x90021500, // 0009 SETMBR R0 K10 K0 - 0x8808010F, // 000A GETMBR R2 R0 K15 - 0x88080517, // 000B GETMBR R2 R2 K23 - 0x540EFFFF, // 000C LDINT R3 65536 - 0x10080403, // 000D MOD R2 R2 R3 - 0x90021802, // 000E SETMBR R0 K12 R2 - 0x8C080104, // 000F GETMET R2 R0 K4 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_twinkle_simulation -********************************************************************/ -be_local_closure(class_twinkle__update_twinkle_simulation, /* name */ - be_nested_proto( - 22, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_twinkle, /* shared constants */ - be_str_weak(_update_twinkle_simulation), - &be_const_str_solidified, - ( &(const binstruction[116]) { /* code */ - 0x88080118, // 0000 GETMBR R2 R0 K24 - 0x880C0119, // 0001 GETMBR R3 R0 K25 - 0x8810011A, // 0002 GETMBR R4 R0 K26 - 0x8814011B, // 0003 GETMBR R5 R0 K27 - 0x8818011C, // 0004 GETMBR R6 R0 K28 - 0x881C010F, // 0005 GETMBR R7 R0 K15 - 0x881C0F10, // 0006 GETMBR R7 R7 K16 - 0x88200102, // 0007 GETMBR R8 R0 K2 - 0x8C201103, // 0008 GETMET R8 R8 K3 - 0x7C200200, // 0009 CALL R8 1 - 0x54260003, // 000A LDINT R9 4 - 0x08240E09, // 000B MUL R9 R7 R9 - 0x20201009, // 000C NE R8 R8 R9 - 0x78220001, // 000D JMPF R8 #0010 - 0x8C200104, // 000E GETMET R8 R0 K4 - 0x7C200200, // 000F CALL R8 1 - 0x58200000, // 0010 LDCONST R8 K0 - 0x14241007, // 0011 LT R9 R8 R7 - 0x7826002A, // 0012 JMPF R9 #003E - 0x88240102, // 0013 GETMBR R9 R0 K2 - 0x8C241306, // 0014 GETMET R9 R9 K6 - 0x542E0003, // 0015 LDINT R11 4 - 0x082C100B, // 0016 MUL R11 R8 R11 - 0x5431FFFB, // 0017 LDINT R12 -4 - 0x7C240600, // 0018 CALL R9 3 - 0x542A0017, // 0019 LDINT R10 24 - 0x3C28120A, // 001A SHR R10 R9 R10 - 0x542E00FE, // 001B LDINT R11 255 - 0x2C28140B, // 001C AND R10 R10 R11 - 0x242C1500, // 001D GT R11 R10 K0 - 0x782E001C, // 001E JMPF R11 #003C - 0xB82E3A00, // 001F GETNGBL R11 K29 - 0x8C2C171E, // 0020 GETMET R11 R11 K30 - 0x5C340400, // 0021 MOVE R13 R2 - 0x58380000, // 0022 LDCONST R14 K0 - 0x543E00FE, // 0023 LDINT R15 255 - 0x58400008, // 0024 LDCONST R16 K8 - 0x54460013, // 0025 LDINT R17 20 - 0x7C2C0C00, // 0026 CALL R11 6 - 0x1830140B, // 0027 LE R12 R10 R11 - 0x78320007, // 0028 JMPF R12 #0031 - 0x88300102, // 0029 GETMBR R12 R0 K2 - 0x8C301913, // 002A GETMET R12 R12 K19 - 0x543A0003, // 002B LDINT R14 4 - 0x0838100E, // 002C MUL R14 R8 R14 - 0x583C0000, // 002D LDCONST R15 K0 - 0x5441FFFB, // 002E LDINT R16 -4 - 0x7C300800, // 002F CALL R12 4 - 0x7002000A, // 0030 JMP #003C - 0x0430140B, // 0031 SUB R12 R10 R11 - 0x2C34131F, // 0032 AND R13 R9 K31 - 0x88380102, // 0033 GETMBR R14 R0 K2 - 0x8C381D13, // 0034 GETMET R14 R14 K19 - 0x54420003, // 0035 LDINT R16 4 - 0x08401010, // 0036 MUL R16 R8 R16 - 0x54460017, // 0037 LDINT R17 24 - 0x38441811, // 0038 SHL R17 R12 R17 - 0x3044220D, // 0039 OR R17 R17 R13 - 0x5449FFFB, // 003A LDINT R18 -4 - 0x7C380800, // 003B CALL R14 4 - 0x00201108, // 003C ADD R8 R8 K8 - 0x7001FFD2, // 003D JMP #0011 - 0x58240000, // 003E LDCONST R9 K0 - 0x14281207, // 003F LT R10 R9 R7 - 0x782A0031, // 0040 JMPF R10 #0073 - 0x88280102, // 0041 GETMBR R10 R0 K2 - 0x8C281506, // 0042 GETMET R10 R10 K6 - 0x54320003, // 0043 LDINT R12 4 - 0x0830120C, // 0044 MUL R12 R9 R12 - 0x5435FFFB, // 0045 LDINT R13 -4 - 0x7C280600, // 0046 CALL R10 3 - 0x542E0017, // 0047 LDINT R11 24 - 0x3C2C140B, // 0048 SHR R11 R10 R11 - 0x543200FE, // 0049 LDINT R12 255 - 0x2C2C160C, // 004A AND R11 R11 R12 - 0x1C301700, // 004B EQ R12 R11 K0 - 0x78320023, // 004C JMPF R12 #0071 - 0x8C300120, // 004D GETMET R12 R0 K32 - 0x543A00FE, // 004E LDINT R14 255 - 0x7C300400, // 004F CALL R12 2 - 0x14301803, // 0050 LT R12 R12 R3 - 0x7832001E, // 0051 JMPF R12 #0071 - 0x8C300120, // 0052 GETMET R12 R0 K32 - 0x04380A04, // 0053 SUB R14 R5 R4 - 0x00381D08, // 0054 ADD R14 R14 K8 - 0x7C300400, // 0055 CALL R12 2 - 0x0030080C, // 0056 ADD R12 R4 R12 - 0x5C340C00, // 0057 MOVE R13 R6 - 0x543A000F, // 0058 LDINT R14 16 - 0x3C381A0E, // 0059 SHR R14 R13 R14 - 0x543E00FE, // 005A LDINT R15 255 - 0x2C381C0F, // 005B AND R14 R14 R15 - 0x543E0007, // 005C LDINT R15 8 - 0x3C3C1A0F, // 005D SHR R15 R13 R15 - 0x544200FE, // 005E LDINT R16 255 - 0x2C3C1E10, // 005F AND R15 R15 R16 - 0x544200FE, // 0060 LDINT R16 255 - 0x2C401A10, // 0061 AND R16 R13 R16 - 0x88440102, // 0062 GETMBR R17 R0 K2 - 0x8C442313, // 0063 GETMET R17 R17 K19 - 0x544E0003, // 0064 LDINT R19 4 - 0x084C1213, // 0065 MUL R19 R9 R19 - 0x54520017, // 0066 LDINT R20 24 - 0x38501814, // 0067 SHL R20 R12 R20 - 0x5456000F, // 0068 LDINT R21 16 - 0x38541C15, // 0069 SHL R21 R14 R21 - 0x30502815, // 006A OR R20 R20 R21 - 0x54560007, // 006B LDINT R21 8 - 0x38541E15, // 006C SHL R21 R15 R21 - 0x30502815, // 006D OR R20 R20 R21 - 0x30502810, // 006E OR R20 R20 R16 - 0x5455FFFB, // 006F LDINT R21 -4 - 0x7C440800, // 0070 CALL R17 4 - 0x00241308, // 0071 ADD R9 R9 K8 - 0x7001FFCB, // 0072 JMP #003F - 0x80000000, // 0073 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: twinkle -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(twinkle, - 3, - &be_class_Animation, - be_nested_map(12, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(last_update, -1), be_const_var(1) }, - { be_const_key_weak(render, 8), be_const_closure(class_twinkle_render_closure) }, - { be_const_key_weak(_update_twinkle_simulation, -1), be_const_closure(class_twinkle__update_twinkle_simulation_closure) }, - { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(twinkle_speed, 1), be_const_bytes_instance(0700010188130064) }, - { be_const_key_weak(min_brightness, -1), be_const_bytes_instance(07000001FF000020) }, - { be_const_key_weak(density, -1), be_const_bytes_instance(07000001FF000040) }, - { be_const_key_weak(max_brightness, 2), be_const_bytes_instance(07000001FF0001FF00) }, - { be_const_key_weak(color, -1), be_const_bytes_instance(0400BB) }, - { be_const_key_weak(fade_speed, 0), be_const_bytes_instance(07000001FF0001B400) }, - })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_twinkle_update_closure) }, - { be_const_key_weak(_random, -1), be_const_closure(class_twinkle__random_closure) }, - { be_const_key_weak(init, 9), be_const_closure(class_twinkle_init_closure) }, - { be_const_key_weak(_initialize_arrays, -1), be_const_closure(class_twinkle__initialize_arrays_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_twinkle_on_param_changed_closure) }, - { be_const_key_weak(current_colors, -1), be_const_var(0) }, - { be_const_key_weak(random_seed, 2), be_const_var(2) }, - { be_const_key_weak(_random_range, 0), be_const_closure(class_twinkle__random_range_closure) }, - })), - be_str_weak(twinkle) -); -// compact class 'FireAnimation' ktab size: 44, total: 68 (saved 192 bytes) -static const bvalue be_ktab_class_FireAnimation[44] = { - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(_random), - /* K2 */ be_nested_str_weak(width), - /* K3 */ be_nested_str_weak(set_pixel_color), - /* K4 */ be_nested_str_weak(current_colors), - /* K5 */ be_nested_str_weak(get), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(random_seed), - /* K8 */ be_const_int(1103515245), - /* K9 */ be_const_int(2147483647), - /* K10 */ be_nested_str_weak(init), - /* K11 */ be_nested_str_weak(heat_map), - /* K12 */ be_nested_str_weak(last_update), - /* K13 */ be_nested_str_weak(engine), - /* K14 */ be_nested_str_weak(time_ms), - /* K15 */ be_nested_str_weak(cooling_rate), - /* K16 */ be_nested_str_weak(sparking_rate), - /* K17 */ be_nested_str_weak(intensity), - /* K18 */ be_nested_str_weak(flicker_amount), - /* K19 */ be_nested_str_weak(color), - /* K20 */ be_nested_str_weak(strip_length), - /* K21 */ be_nested_str_weak(size), - /* K22 */ be_nested_str_weak(_initialize_buffers), - /* K23 */ be_nested_str_weak(_random_range), - /* K24 */ be_nested_str_weak(tasmota), - /* K25 */ be_nested_str_weak(scale_uint), - /* K26 */ be_const_int(2), - /* K27 */ be_const_int(3), - /* K28 */ be_const_int(-16777216), - /* K29 */ be_nested_str_weak(animation), - /* K30 */ be_nested_str_weak(rich_palette_color), - /* K31 */ be_nested_str_weak(colors), - /* K32 */ be_nested_str_weak(PALETTE_FIRE), - /* K33 */ be_nested_str_weak(period), - /* K34 */ be_nested_str_weak(transition_type), - /* K35 */ be_nested_str_weak(brightness), - /* K36 */ be_nested_str_weak(is_color_provider), - /* K37 */ be_nested_str_weak(get_color_for_value), - /* K38 */ be_nested_str_weak(set), - /* K39 */ be_nested_str_weak(start), - /* K40 */ be_nested_str_weak(clear), - /* K41 */ be_nested_str_weak(resize), - /* K42 */ be_nested_str_weak(flicker_speed), - /* K43 */ be_nested_str_weak(_update_fire_simulation), -}; - - -extern const bclass be_class_FireAnimation; - -/******************************************************************** -** Solidified function: _random_range -********************************************************************/ -be_local_closure(class_FireAnimation__random_range, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80060000, // 0002 RET 1 K0 - 0x8C080101, // 0003 GETMET R2 R0 K1 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_FireAnimation_render, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x14140803, // 0001 LT R5 R4 R3 - 0x7816000D, // 0002 JMPF R5 #0011 - 0x88140302, // 0003 GETMBR R5 R1 K2 - 0x14140805, // 0004 LT R5 R4 R5 - 0x78160008, // 0005 JMPF R5 #000F - 0x8C140303, // 0006 GETMET R5 R1 K3 - 0x5C1C0800, // 0007 MOVE R7 R4 - 0x88200104, // 0008 GETMBR R8 R0 K4 - 0x8C201105, // 0009 GETMET R8 R8 K5 - 0x542A0003, // 000A LDINT R10 4 - 0x0828080A, // 000B MUL R10 R4 R10 - 0x542DFFFB, // 000C LDINT R11 -4 - 0x7C200600, // 000D CALL R8 3 - 0x7C140600, // 000E CALL R5 3 - 0x00100906, // 000F ADD R4 R4 K6 - 0x7001FFEF, // 0010 JMP #0001 - 0x50140200, // 0011 LDBOOL R5 1 0 - 0x80040A00, // 0012 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_FireAnimation__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040107, // 0000 GETMBR R1 R0 K7 - 0x08040308, // 0001 MUL R1 R1 K8 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040309, // 0004 AND R1 R1 K9 - 0x90020E01, // 0005 SETMBR R0 K7 R1 - 0x88040107, // 0006 GETMBR R1 R0 K7 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_FireAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080015, // 0006 GETGBL R2 G21 - 0x7C080000, // 0007 CALL R2 0 - 0x90021602, // 0008 SETMBR R0 K11 R2 - 0x60080015, // 0009 GETGBL R2 G21 - 0x7C080000, // 000A CALL R2 0 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x90021900, // 000C SETMBR R0 K12 K0 - 0x8808010D, // 000D GETMBR R2 R0 K13 - 0x8808050E, // 000E GETMBR R2 R2 K14 - 0x540EFFFF, // 000F LDINT R3 65536 - 0x10080403, // 0010 MOD R2 R2 R3 - 0x90020E02, // 0011 SETMBR R0 K7 R2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_fire_simulation -********************************************************************/ -be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ - be_nested_proto( - 23, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_update_fire_simulation), - &be_const_str_solidified, - ( &(const binstruction[232]) { /* code */ - 0x8808010F, // 0000 GETMBR R2 R0 K15 - 0x880C0110, // 0001 GETMBR R3 R0 K16 - 0x88100111, // 0002 GETMBR R4 R0 K17 - 0x88140112, // 0003 GETMBR R5 R0 K18 - 0x88180113, // 0004 GETMBR R6 R0 K19 - 0x881C010D, // 0005 GETMBR R7 R0 K13 - 0x881C0F14, // 0006 GETMBR R7 R7 K20 - 0x8820010B, // 0007 GETMBR R8 R0 K11 - 0x8C201115, // 0008 GETMET R8 R8 K21 - 0x7C200200, // 0009 CALL R8 1 - 0x20201007, // 000A NE R8 R8 R7 - 0x74220006, // 000B JMPT R8 #0013 - 0x88200104, // 000C GETMBR R8 R0 K4 - 0x8C201115, // 000D GETMET R8 R8 K21 - 0x7C200200, // 000E CALL R8 1 - 0x54260003, // 000F LDINT R9 4 - 0x08240E09, // 0010 MUL R9 R7 R9 - 0x20201009, // 0011 NE R8 R8 R9 - 0x78220001, // 0012 JMPF R8 #0015 - 0x8C200116, // 0013 GETMET R8 R0 K22 - 0x7C200200, // 0014 CALL R8 1 - 0x58200000, // 0015 LDCONST R8 K0 - 0x14241007, // 0016 LT R9 R8 R7 - 0x78260017, // 0017 JMPF R9 #0030 - 0x8C240117, // 0018 GETMET R9 R0 K23 - 0xB82E3000, // 0019 GETNGBL R11 K24 - 0x8C2C1719, // 001A GETMET R11 R11 K25 - 0x5C340400, // 001B MOVE R13 R2 - 0x58380000, // 001C LDCONST R14 K0 - 0x543E00FE, // 001D LDINT R15 255 - 0x58400000, // 001E LDCONST R16 K0 - 0x54460009, // 001F LDINT R17 10 - 0x7C2C0C00, // 0020 CALL R11 6 - 0x002C171A, // 0021 ADD R11 R11 K26 - 0x7C240400, // 0022 CALL R9 2 - 0x8828010B, // 0023 GETMBR R10 R0 K11 - 0x94281408, // 0024 GETIDX R10 R10 R8 - 0x2828120A, // 0025 GE R10 R9 R10 - 0x782A0002, // 0026 JMPF R10 #002A - 0x8828010B, // 0027 GETMBR R10 R0 K11 - 0x98281100, // 0028 SETIDX R10 R8 K0 - 0x70020003, // 0029 JMP #002E - 0x8828010B, // 002A GETMBR R10 R0 K11 - 0x942C1408, // 002B GETIDX R11 R10 R8 - 0x042C1609, // 002C SUB R11 R11 R9 - 0x9828100B, // 002D SETIDX R10 R8 R11 - 0x00201106, // 002E ADD R8 R8 K6 - 0x7001FFE5, // 002F JMP #0016 - 0x28240F1B, // 0030 GE R9 R7 K27 - 0x7826001D, // 0031 JMPF R9 #0050 - 0x04240F06, // 0032 SUB R9 R7 K6 - 0x2828131A, // 0033 GE R10 R9 K26 - 0x782A001A, // 0034 JMPF R10 #0050 - 0x04281306, // 0035 SUB R10 R9 K6 - 0x882C010B, // 0036 GETMBR R11 R0 K11 - 0x9428160A, // 0037 GETIDX R10 R11 R10 - 0x042C131A, // 0038 SUB R11 R9 K26 - 0x8830010B, // 0039 GETMBR R12 R0 K11 - 0x942C180B, // 003A GETIDX R11 R12 R11 - 0x0028140B, // 003B ADD R10 R10 R11 - 0x042C131A, // 003C SUB R11 R9 K26 - 0x8830010B, // 003D GETMBR R12 R0 K11 - 0x942C180B, // 003E GETIDX R11 R12 R11 - 0x0028140B, // 003F ADD R10 R10 R11 - 0x0C28151B, // 0040 DIV R10 R10 K27 - 0x142C1500, // 0041 LT R11 R10 K0 - 0x782E0001, // 0042 JMPF R11 #0045 - 0x58280000, // 0043 LDCONST R10 K0 - 0x70020003, // 0044 JMP #0049 - 0x542E00FE, // 0045 LDINT R11 255 - 0x242C140B, // 0046 GT R11 R10 R11 - 0x782E0000, // 0047 JMPF R11 #0049 - 0x542A00FE, // 0048 LDINT R10 255 - 0x882C010B, // 0049 GETMBR R11 R0 K11 - 0x60300009, // 004A GETGBL R12 G9 - 0x5C341400, // 004B MOVE R13 R10 - 0x7C300200, // 004C CALL R12 1 - 0x982C120C, // 004D SETIDX R11 R9 R12 - 0x04241306, // 004E SUB R9 R9 K6 - 0x7001FFE2, // 004F JMP #0033 - 0x8C240117, // 0050 GETMET R9 R0 K23 - 0x542E00FE, // 0051 LDINT R11 255 - 0x7C240400, // 0052 CALL R9 2 - 0x14241203, // 0053 LT R9 R9 R3 - 0x7826000F, // 0054 JMPF R9 #0065 - 0x8C240117, // 0055 GETMET R9 R0 K23 - 0x542E0006, // 0056 LDINT R11 7 - 0x7C240400, // 0057 CALL R9 2 - 0x8C280117, // 0058 GETMET R10 R0 K23 - 0x5432005E, // 0059 LDINT R12 95 - 0x7C280400, // 005A CALL R10 2 - 0x542E009F, // 005B LDINT R11 160 - 0x0028140B, // 005C ADD R10 R10 R11 - 0x542E00FE, // 005D LDINT R11 255 - 0x242C140B, // 005E GT R11 R10 R11 - 0x782E0000, // 005F JMPF R11 #0061 - 0x542A00FE, // 0060 LDINT R10 255 - 0x142C1207, // 0061 LT R11 R9 R7 - 0x782E0001, // 0062 JMPF R11 #0065 - 0x882C010B, // 0063 GETMBR R11 R0 K11 - 0x982C120A, // 0064 SETIDX R11 R9 R10 - 0x58200000, // 0065 LDCONST R8 K0 - 0x14241007, // 0066 LT R9 R8 R7 - 0x7826007E, // 0067 JMPF R9 #00E7 - 0x8824010B, // 0068 GETMBR R9 R0 K11 - 0x94241208, // 0069 GETIDX R9 R9 R8 - 0xB82A3000, // 006A GETNGBL R10 K24 - 0x8C281519, // 006B GETMET R10 R10 K25 - 0x5C301200, // 006C MOVE R12 R9 - 0x58340000, // 006D LDCONST R13 K0 - 0x543A00FE, // 006E LDINT R14 255 - 0x583C0000, // 006F LDCONST R15 K0 - 0x5C400800, // 0070 MOVE R16 R4 - 0x7C280C00, // 0071 CALL R10 6 - 0x5C241400, // 0072 MOVE R9 R10 - 0x24280B00, // 0073 GT R10 R5 K0 - 0x782A0012, // 0074 JMPF R10 #0088 - 0x8C280117, // 0075 GETMET R10 R0 K23 - 0x5C300A00, // 0076 MOVE R12 R5 - 0x7C280400, // 0077 CALL R10 2 - 0x8C2C0117, // 0078 GETMET R11 R0 K23 - 0x5834001A, // 0079 LDCONST R13 K26 - 0x7C2C0400, // 007A CALL R11 2 - 0x1C2C1700, // 007B EQ R11 R11 K0 - 0x782E0001, // 007C JMPF R11 #007F - 0x0024120A, // 007D ADD R9 R9 R10 - 0x70020004, // 007E JMP #0084 - 0x242C120A, // 007F GT R11 R9 R10 - 0x782E0001, // 0080 JMPF R11 #0083 - 0x0424120A, // 0081 SUB R9 R9 R10 - 0x70020000, // 0082 JMP #0084 - 0x58240000, // 0083 LDCONST R9 K0 - 0x542E00FE, // 0084 LDINT R11 255 - 0x242C120B, // 0085 GT R11 R9 R11 - 0x782E0000, // 0086 JMPF R11 #0088 - 0x542600FE, // 0087 LDINT R9 255 - 0x5828001C, // 0088 LDCONST R10 K28 - 0x242C1300, // 0089 GT R11 R9 K0 - 0x782E0052, // 008A JMPF R11 #00DE - 0x5C2C0C00, // 008B MOVE R11 R6 - 0x4C300000, // 008C LDNIL R12 - 0x1C30160C, // 008D EQ R12 R11 R12 - 0x7832000B, // 008E JMPF R12 #009B - 0xB8323A00, // 008F GETNGBL R12 K29 - 0x8C30191E, // 0090 GETMET R12 R12 K30 - 0x8838010D, // 0091 GETMBR R14 R0 K13 - 0x7C300400, // 0092 CALL R12 2 - 0xB8363A00, // 0093 GETNGBL R13 K29 - 0x88341B20, // 0094 GETMBR R13 R13 K32 - 0x90323E0D, // 0095 SETMBR R12 K31 R13 - 0x90324300, // 0096 SETMBR R12 K33 K0 - 0x90324506, // 0097 SETMBR R12 K34 K6 - 0x543600FE, // 0098 LDINT R13 255 - 0x9032460D, // 0099 SETMBR R12 K35 R13 - 0x5C2C1800, // 009A MOVE R11 R12 - 0xB8323A00, // 009B GETNGBL R12 K29 - 0x8C301924, // 009C GETMET R12 R12 K36 - 0x5C381600, // 009D MOVE R14 R11 - 0x7C300400, // 009E CALL R12 2 - 0x78320009, // 009F JMPF R12 #00AA - 0x88301725, // 00A0 GETMBR R12 R11 K37 - 0x4C340000, // 00A1 LDNIL R13 - 0x2030180D, // 00A2 NE R12 R12 R13 - 0x78320005, // 00A3 JMPF R12 #00AA - 0x8C301725, // 00A4 GETMET R12 R11 K37 - 0x5C381200, // 00A5 MOVE R14 R9 - 0x583C0000, // 00A6 LDCONST R15 K0 - 0x7C300600, // 00A7 CALL R12 3 - 0x5C281800, // 00A8 MOVE R10 R12 - 0x70020033, // 00A9 JMP #00DE - 0x5C281600, // 00AA MOVE R10 R11 - 0x54320017, // 00AB LDINT R12 24 - 0x3C30140C, // 00AC SHR R12 R10 R12 - 0x543600FE, // 00AD LDINT R13 255 - 0x2C30180D, // 00AE AND R12 R12 R13 - 0x5436000F, // 00AF LDINT R13 16 - 0x3C34140D, // 00B0 SHR R13 R10 R13 - 0x543A00FE, // 00B1 LDINT R14 255 - 0x2C341A0E, // 00B2 AND R13 R13 R14 - 0x543A0007, // 00B3 LDINT R14 8 - 0x3C38140E, // 00B4 SHR R14 R10 R14 - 0x543E00FE, // 00B5 LDINT R15 255 - 0x2C381C0F, // 00B6 AND R14 R14 R15 - 0x543E00FE, // 00B7 LDINT R15 255 - 0x2C3C140F, // 00B8 AND R15 R10 R15 - 0xB8423000, // 00B9 GETNGBL R16 K24 - 0x8C402119, // 00BA GETMET R16 R16 K25 - 0x5C481200, // 00BB MOVE R18 R9 - 0x584C0000, // 00BC LDCONST R19 K0 - 0x545200FE, // 00BD LDINT R20 255 - 0x58540000, // 00BE LDCONST R21 K0 - 0x5C581A00, // 00BF MOVE R22 R13 - 0x7C400C00, // 00C0 CALL R16 6 - 0x5C342000, // 00C1 MOVE R13 R16 - 0xB8423000, // 00C2 GETNGBL R16 K24 - 0x8C402119, // 00C3 GETMET R16 R16 K25 - 0x5C481200, // 00C4 MOVE R18 R9 - 0x584C0000, // 00C5 LDCONST R19 K0 - 0x545200FE, // 00C6 LDINT R20 255 - 0x58540000, // 00C7 LDCONST R21 K0 - 0x5C581C00, // 00C8 MOVE R22 R14 - 0x7C400C00, // 00C9 CALL R16 6 - 0x5C382000, // 00CA MOVE R14 R16 - 0xB8423000, // 00CB GETNGBL R16 K24 - 0x8C402119, // 00CC GETMET R16 R16 K25 - 0x5C481200, // 00CD MOVE R18 R9 - 0x584C0000, // 00CE LDCONST R19 K0 - 0x545200FE, // 00CF LDINT R20 255 - 0x58540000, // 00D0 LDCONST R21 K0 - 0x5C581E00, // 00D1 MOVE R22 R15 - 0x7C400C00, // 00D2 CALL R16 6 - 0x5C3C2000, // 00D3 MOVE R15 R16 - 0x54420017, // 00D4 LDINT R16 24 - 0x38401810, // 00D5 SHL R16 R12 R16 - 0x5446000F, // 00D6 LDINT R17 16 - 0x38441A11, // 00D7 SHL R17 R13 R17 - 0x30402011, // 00D8 OR R16 R16 R17 - 0x54460007, // 00D9 LDINT R17 8 - 0x38441C11, // 00DA SHL R17 R14 R17 - 0x30402011, // 00DB OR R16 R16 R17 - 0x3040200F, // 00DC OR R16 R16 R15 - 0x5C282000, // 00DD MOVE R10 R16 - 0x882C0104, // 00DE GETMBR R11 R0 K4 - 0x8C2C1726, // 00DF GETMET R11 R11 K38 - 0x54360003, // 00E0 LDINT R13 4 - 0x0834100D, // 00E1 MUL R13 R8 R13 - 0x5C381400, // 00E2 MOVE R14 R10 - 0x543DFFFB, // 00E3 LDINT R15 -4 - 0x7C2C0800, // 00E4 CALL R11 4 - 0x00201106, // 00E5 ADD R8 R8 K6 - 0x7001FF7E, // 00E6 JMP #0066 - 0x80000000, // 00E7 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_FireAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080527, // 0003 GETMET R2 R2 K39 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90021900, // 0006 SETMBR R0 K12 K0 - 0x8C080116, // 0007 GETMET R2 R0 K22 - 0x7C080200, // 0008 CALL R2 1 - 0x8808010D, // 0009 GETMBR R2 R0 K13 - 0x8808050E, // 000A GETMBR R2 R2 K14 - 0x540EFFFF, // 000B LDINT R3 65536 - 0x10080403, // 000C MOD R2 R2 R3 - 0x90020E02, // 000D SETMBR R0 K7 R2 - 0x80040000, // 000E RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_FireAnimation__initialize_buffers, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 - 0x88040314, // 0001 GETMBR R1 R1 K20 - 0x8808010B, // 0002 GETMBR R2 R0 K11 - 0x8C080528, // 0003 GETMET R2 R2 K40 - 0x7C080200, // 0004 CALL R2 1 - 0x8808010B, // 0005 GETMBR R2 R0 K11 - 0x8C080529, // 0006 GETMET R2 R2 K41 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x88080104, // 0009 GETMBR R2 R0 K4 - 0x8C080528, // 000A GETMET R2 R2 K40 - 0x7C080200, // 000B CALL R2 1 - 0x88080104, // 000C GETMBR R2 R0 K4 - 0x8C080529, // 000D GETMET R2 R2 K41 - 0x54120003, // 000E LDINT R4 4 - 0x08100204, // 000F MUL R4 R1 R4 - 0x7C080400, // 0010 CALL R2 2 - 0x58080000, // 0011 LDCONST R2 K0 - 0x140C0401, // 0012 LT R3 R2 R1 - 0x780E0008, // 0013 JMPF R3 #001D - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x8C0C0726, // 0015 GETMET R3 R3 K38 - 0x54160003, // 0016 LDINT R5 4 - 0x08140405, // 0017 MUL R5 R2 R5 - 0x5818001C, // 0018 LDCONST R6 K28 - 0x541DFFFB, // 0019 LDINT R7 -4 - 0x7C0C0800, // 001A CALL R3 4 - 0x00080506, // 001B ADD R2 R2 K6 - 0x7001FFF4, // 001C JMP #0012 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_FireAnimation_update, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8808012A, // 0000 GETMBR R2 R0 K42 - 0x540E03E7, // 0001 LDINT R3 1000 - 0x0C0C0602, // 0002 DIV R3 R3 R2 - 0x8810010C, // 0003 GETMBR R4 R0 K12 - 0x04100204, // 0004 SUB R4 R1 R4 - 0x28100803, // 0005 GE R4 R4 R3 - 0x78120003, // 0006 JMPF R4 #000B - 0x90021801, // 0007 SETMBR R0 K12 R1 - 0x8C10012B, // 0008 GETMET R4 R0 K43 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C100400, // 000A CALL R4 2 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: FireAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(FireAnimation, - 4, - &be_class_Animation, - be_nested_map(13, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(current_colors, -1), be_const_var(1) }, - { be_const_key_weak(last_update, 4), be_const_var(2) }, - { be_const_key_weak(render, -1), be_const_closure(class_FireAnimation_render_closure) }, - { be_const_key_weak(_random_range, 9), be_const_closure(class_FireAnimation__random_range_closure) }, - { be_const_key_weak(_random, -1), be_const_closure(class_FireAnimation__random_closure) }, - { be_const_key_weak(random_seed, -1), be_const_var(3) }, - { be_const_key_weak(init, -1), be_const_closure(class_FireAnimation_init_closure) }, - { be_const_key_weak(_update_fire_simulation, -1), be_const_closure(class_FireAnimation__update_fire_simulation_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_FireAnimation_start_closure) }, - { be_const_key_weak(_initialize_buffers, 2), be_const_closure(class_FireAnimation__initialize_buffers_closure) }, - { be_const_key_weak(heat_map, -1), be_const_var(0) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(flicker_amount, 4), be_const_bytes_instance(07000001FF000064) }, - { be_const_key_weak(intensity, 0), be_const_bytes_instance(07000001FF0001B400) }, - { be_const_key_weak(flicker_speed, -1), be_const_bytes_instance(07000100140008) }, - { be_const_key_weak(sparking_rate, -1), be_const_bytes_instance(07000001FF000078) }, - { be_const_key_weak(cooling_rate, -1), be_const_bytes_instance(07000001FF000037) }, - })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_FireAnimation_update_closure) }, - })), - be_str_weak(FireAnimation) -); - -extern const bclass be_class_CrenelPositionAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_CrenelPositionAnimation_render, /* name */ - be_nested_proto( - 16, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(back_color), - /* K1 */ be_nested_str_weak(pos), - /* K2 */ be_nested_str_weak(pulse_size), - /* K3 */ be_nested_str_weak(low_size), - /* K4 */ be_nested_str_weak(nb_pulse), - /* K5 */ be_nested_str_weak(color), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(fill_pixels), - /* K8 */ be_nested_str_weak(pixels), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(set_pixel_color), - }), - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x88140101, // 0001 GETMBR R5 R0 K1 - 0x88180102, // 0002 GETMBR R6 R0 K2 - 0x881C0103, // 0003 GETMBR R7 R0 K3 - 0x88200104, // 0004 GETMBR R8 R0 K4 - 0x88240105, // 0005 GETMBR R9 R0 K5 - 0x60280009, // 0006 GETGBL R10 G9 - 0x002C0C07, // 0007 ADD R11 R6 R7 - 0x7C280200, // 0008 CALL R10 1 - 0x202C0906, // 0009 NE R11 R4 K6 - 0x782E0003, // 000A JMPF R11 #000F - 0x8C2C0307, // 000B GETMET R11 R1 K7 - 0x88340308, // 000C GETMBR R13 R1 K8 - 0x5C380800, // 000D MOVE R14 R4 - 0x7C2C0600, // 000E CALL R11 3 - 0x182C1506, // 000F LE R11 R10 K6 - 0x782E0000, // 0010 JMPF R11 #0012 - 0x58280009, // 0011 LDCONST R10 K9 - 0x1C2C1106, // 0012 EQ R11 R8 K6 - 0x782E0001, // 0013 JMPF R11 #0016 - 0x502C0200, // 0014 LDBOOL R11 1 0 - 0x80041600, // 0015 RET 1 R11 - 0x142C1106, // 0016 LT R11 R8 K6 - 0x782E0006, // 0017 JMPF R11 #001F - 0x002C0A06, // 0018 ADD R11 R5 R6 - 0x042C1709, // 0019 SUB R11 R11 K9 - 0x102C160A, // 001A MOD R11 R11 R10 - 0x042C1606, // 001B SUB R11 R11 R6 - 0x002C1709, // 001C ADD R11 R11 K9 - 0x5C141600, // 001D MOVE R5 R11 - 0x70020007, // 001E JMP #0027 - 0x442C1400, // 001F NEG R11 R10 - 0x142C0A0B, // 0020 LT R11 R5 R11 - 0x782E0004, // 0021 JMPF R11 #0027 - 0x202C1106, // 0022 NE R11 R8 K6 - 0x782E0002, // 0023 JMPF R11 #0027 - 0x00140A0A, // 0024 ADD R5 R5 R10 - 0x04201109, // 0025 SUB R8 R8 K9 - 0x7001FFF7, // 0026 JMP #001F - 0x142C0A03, // 0027 LT R11 R5 R3 - 0x782E0014, // 0028 JMPF R11 #003E - 0x202C1106, // 0029 NE R11 R8 K6 - 0x782E0012, // 002A JMPF R11 #003E - 0x582C0006, // 002B LDCONST R11 K6 - 0x14300B06, // 002C LT R12 R5 K6 - 0x78320001, // 002D JMPF R12 #0030 - 0x44300A00, // 002E NEG R12 R5 - 0x5C2C1800, // 002F MOVE R11 R12 - 0x14301606, // 0030 LT R12 R11 R6 - 0x78320008, // 0031 JMPF R12 #003B - 0x00300A0B, // 0032 ADD R12 R5 R11 - 0x14301803, // 0033 LT R12 R12 R3 - 0x78320005, // 0034 JMPF R12 #003B - 0x8C30030A, // 0035 GETMET R12 R1 K10 - 0x00380A0B, // 0036 ADD R14 R5 R11 - 0x5C3C1200, // 0037 MOVE R15 R9 - 0x7C300600, // 0038 CALL R12 3 - 0x002C1709, // 0039 ADD R11 R11 K9 - 0x7001FFF4, // 003A JMP #0030 - 0x00140A0A, // 003B ADD R5 R5 R10 - 0x04201109, // 003C SUB R8 R8 K9 - 0x7001FFE8, // 003D JMP #0027 - 0x502C0200, // 003E LDBOOL R11 1 0 - 0x80041600, // 003F RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: CrenelPositionAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(CrenelPositionAnimation, - 0, - &be_class_Animation, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(render, -1), be_const_closure(class_CrenelPositionAnimation_render_closure) }, - { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(nb_pulse, -1), be_const_bytes_instance(0400FF) }, - { be_const_key_weak(low_size, 4), be_const_bytes_instance(0500000003) }, - { be_const_key_weak(pos, 1), be_const_bytes_instance(040000) }, - { be_const_key_weak(pulse_size, -1), be_const_bytes_instance(0500000001) }, - { be_const_key_weak(back_color, -1), be_const_bytes_instance(040000) }, - })) ) } )) }, - })), - be_str_weak(CrenelPositionAnimation) -); -// compact class 'CometAnimation' ktab size: 18, total: 31 (saved 104 bytes) -static const bvalue be_ktab_class_CometAnimation[18] = { - /* K0 */ be_nested_str_weak(head_position), - /* K1 */ be_nested_str_weak(color), - /* K2 */ be_nested_str_weak(tail_length), - /* K3 */ be_nested_str_weak(direction), - /* K4 */ be_nested_str_weak(wrap_around), - /* K5 */ be_nested_str_weak(fade_factor), - /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(width), - /* K11 */ be_nested_str_weak(set_pixel_color), - /* K12 */ be_nested_str_weak(init), - /* K13 */ be_nested_str_weak(speed), - /* K14 */ be_nested_str_weak(engine), - /* K15 */ be_nested_str_weak(strip_length), - /* K16 */ be_nested_str_weak(start_time), - /* K17 */ be_nested_str_weak(on_param_changed), -}; - - -extern const bclass be_class_CometAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_CometAnimation_render, /* name */ - be_nested_proto( - 25, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CometAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x541600FF, // 0001 LDINT R5 256 - 0x0C100805, // 0002 DIV R4 R4 R5 - 0x88140101, // 0003 GETMBR R5 R0 K1 - 0x88180102, // 0004 GETMBR R6 R0 K2 - 0x881C0103, // 0005 GETMBR R7 R0 K3 - 0x88200104, // 0006 GETMBR R8 R0 K4 - 0x88240105, // 0007 GETMBR R9 R0 K5 - 0x542A0017, // 0008 LDINT R10 24 - 0x3C280A0A, // 0009 SHR R10 R5 R10 - 0x542E00FE, // 000A LDINT R11 255 - 0x2C28140B, // 000B AND R10 R10 R11 - 0x542E000F, // 000C LDINT R11 16 - 0x3C2C0A0B, // 000D SHR R11 R5 R11 - 0x543200FE, // 000E LDINT R12 255 - 0x2C2C160C, // 000F AND R11 R11 R12 - 0x54320007, // 0010 LDINT R12 8 - 0x3C300A0C, // 0011 SHR R12 R5 R12 - 0x543600FE, // 0012 LDINT R13 255 - 0x2C30180D, // 0013 AND R12 R12 R13 - 0x543600FE, // 0014 LDINT R13 255 - 0x2C340A0D, // 0015 AND R13 R5 R13 - 0x58380006, // 0016 LDCONST R14 K6 - 0x143C1C06, // 0017 LT R15 R14 R6 - 0x783E0037, // 0018 JMPF R15 #0051 - 0x083C1C07, // 0019 MUL R15 R14 R7 - 0x043C080F, // 001A SUB R15 R4 R15 - 0x20401106, // 001B NE R16 R8 K6 - 0x78420008, // 001C JMPF R16 #0026 - 0x28401E03, // 001D GE R16 R15 R3 - 0x78420001, // 001E JMPF R16 #0021 - 0x043C1E03, // 001F SUB R15 R15 R3 - 0x7001FFFB, // 0020 JMP #001D - 0x14401F06, // 0021 LT R16 R15 K6 - 0x78420001, // 0022 JMPF R16 #0025 - 0x003C1E03, // 0023 ADD R15 R15 R3 - 0x7001FFFB, // 0024 JMP #0021 - 0x70020005, // 0025 JMP #002C - 0x14401F06, // 0026 LT R16 R15 K6 - 0x74420001, // 0027 JMPT R16 #002A - 0x28401E03, // 0028 GE R16 R15 R3 - 0x78420001, // 0029 JMPF R16 #002C - 0x00381D07, // 002A ADD R14 R14 K7 - 0x7001FFEA, // 002B JMP #0017 - 0x544200FE, // 002C LDINT R16 255 - 0x24441D06, // 002D GT R17 R14 K6 - 0x7846000D, // 002E JMPF R17 #003D - 0x58440006, // 002F LDCONST R17 K6 - 0x1448220E, // 0030 LT R18 R17 R14 - 0x784A000A, // 0031 JMPF R18 #003D - 0xB84A1000, // 0032 GETNGBL R18 K8 - 0x8C482509, // 0033 GETMET R18 R18 K9 - 0x5C502000, // 0034 MOVE R20 R16 - 0x58540006, // 0035 LDCONST R21 K6 - 0x545A00FE, // 0036 LDINT R22 255 - 0x585C0006, // 0037 LDCONST R23 K6 - 0x5C601200, // 0038 MOVE R24 R9 - 0x7C480C00, // 0039 CALL R18 6 - 0x5C402400, // 003A MOVE R16 R18 - 0x00442307, // 003B ADD R17 R17 K7 - 0x7001FFF2, // 003C JMP #0030 - 0x54460017, // 003D LDINT R17 24 - 0x38442011, // 003E SHL R17 R16 R17 - 0x544A000F, // 003F LDINT R18 16 - 0x38481612, // 0040 SHL R18 R11 R18 - 0x30442212, // 0041 OR R17 R17 R18 - 0x544A0007, // 0042 LDINT R18 8 - 0x38481812, // 0043 SHL R18 R12 R18 - 0x30442212, // 0044 OR R17 R17 R18 - 0x3044220D, // 0045 OR R17 R17 R13 - 0x28481F06, // 0046 GE R18 R15 K6 - 0x784A0006, // 0047 JMPF R18 #004F - 0x8848030A, // 0048 GETMBR R18 R1 K10 - 0x14481E12, // 0049 LT R18 R15 R18 - 0x784A0003, // 004A JMPF R18 #004F - 0x8C48030B, // 004B GETMET R18 R1 K11 - 0x5C501E00, // 004C MOVE R20 R15 - 0x5C542200, // 004D MOVE R21 R17 - 0x7C480600, // 004E CALL R18 3 - 0x00381D07, // 004F ADD R14 R14 K7 - 0x7001FFC5, // 0050 JMP #0017 - 0x503C0200, // 0051 LDBOOL R15 1 0 - 0x80041E00, // 0052 RET 1 R15 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_CometAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CometAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050C, // 0003 GETMET R2 R2 K12 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020106, // 0006 SETMBR R0 K0 K6 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_CometAnimation_update, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CometAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x8808010D, // 0000 GETMBR R2 R0 K13 - 0x880C0103, // 0001 GETMBR R3 R0 K3 - 0x88100104, // 0002 GETMBR R4 R0 K4 - 0x8814010E, // 0003 GETMBR R5 R0 K14 - 0x88140B0F, // 0004 GETMBR R5 R5 K15 - 0x88180110, // 0005 GETMBR R6 R0 K16 - 0x04180206, // 0006 SUB R6 R1 R6 - 0x081C0406, // 0007 MUL R7 R2 R6 - 0x081C0E03, // 0008 MUL R7 R7 R3 - 0x542203E7, // 0009 LDINT R8 1000 - 0x0C1C0E08, // 000A DIV R7 R7 R8 - 0x24200706, // 000B GT R8 R3 K6 - 0x78220001, // 000C JMPF R8 #000F - 0x90020007, // 000D SETMBR R0 K0 R7 - 0x70020004, // 000E JMP #0014 - 0x04200B07, // 000F SUB R8 R5 K7 - 0x542600FF, // 0010 LDINT R9 256 - 0x08201009, // 0011 MUL R8 R8 R9 - 0x00201007, // 0012 ADD R8 R8 R7 - 0x90020008, // 0013 SETMBR R0 K0 R8 - 0x542200FF, // 0014 LDINT R8 256 - 0x08200A08, // 0015 MUL R8 R5 R8 - 0x20240906, // 0016 NE R9 R4 K6 - 0x7826000E, // 0017 JMPF R9 #0027 - 0x88240100, // 0018 GETMBR R9 R0 K0 - 0x28241208, // 0019 GE R9 R9 R8 - 0x78260003, // 001A JMPF R9 #001F - 0x88240100, // 001B GETMBR R9 R0 K0 - 0x04241208, // 001C SUB R9 R9 R8 - 0x90020009, // 001D SETMBR R0 K0 R9 - 0x7001FFF8, // 001E JMP #0018 - 0x88240100, // 001F GETMBR R9 R0 K0 - 0x14241306, // 0020 LT R9 R9 K6 - 0x78260003, // 0021 JMPF R9 #0026 - 0x88240100, // 0022 GETMBR R9 R0 K0 - 0x00241208, // 0023 ADD R9 R9 R8 - 0x90020009, // 0024 SETMBR R0 K0 R9 - 0x7001FFF8, // 0025 JMP #001F - 0x7002000F, // 0026 JMP #0037 - 0x88240100, // 0027 GETMBR R9 R0 K0 - 0x28241208, // 0028 GE R9 R9 R8 - 0x78260006, // 0029 JMPF R9 #0031 - 0x04240B07, // 002A SUB R9 R5 K7 - 0x542A00FF, // 002B LDINT R10 256 - 0x0824120A, // 002C MUL R9 R9 R10 - 0x90020009, // 002D SETMBR R0 K0 R9 - 0x44240600, // 002E NEG R9 R3 - 0x90020609, // 002F SETMBR R0 K3 R9 - 0x70020005, // 0030 JMP #0037 - 0x88240100, // 0031 GETMBR R9 R0 K0 - 0x14241306, // 0032 LT R9 R9 K6 - 0x78260002, // 0033 JMPF R9 #0037 - 0x90020106, // 0034 SETMBR R0 K0 K6 - 0x44240600, // 0035 NEG R9 R3 - 0x90020609, // 0036 SETMBR R0 K3 R9 - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_CometAnimation_on_param_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_CometAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0711, // 0003 GETMET R3 R3 K17 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0303, // 0007 EQ R3 R1 K3 - 0x780E0009, // 0008 JMPF R3 #0013 - 0x880C010E, // 0009 GETMBR R3 R0 K14 - 0x880C070F, // 000A GETMBR R3 R3 K15 - 0x24100506, // 000B GT R4 R2 K6 - 0x78120001, // 000C JMPF R4 #000F - 0x90020106, // 000D SETMBR R0 K0 K6 - 0x70020003, // 000E JMP #0013 - 0x04100707, // 000F SUB R4 R3 K7 - 0x541600FF, // 0010 LDINT R5 256 - 0x08100805, // 0011 MUL R4 R4 R5 - 0x90020004, // 0012 SETMBR R0 K0 R4 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: CometAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(CometAnimation, - 1, - &be_class_Animation, - be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_CometAnimation_on_param_changed_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_CometAnimation_render_closure) }, - { be_const_key_weak(PARAMS, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(fade_factor, -1), be_const_bytes_instance(07000001FF0001B300) }, - { be_const_key_weak(wrap_around, -1), be_const_bytes_instance(07000000010001) }, - { be_const_key_weak(direction, -1), be_const_bytes_instance(1400010200FF0001) }, - { be_const_key_weak(speed, 0), be_const_bytes_instance(07000101006401000A) }, - { be_const_key_weak(tail_length, -1), be_const_bytes_instance(07000100320005) }, - })) ) } )) }, - { be_const_key_weak(head_position, 2), be_const_var(0) }, - { be_const_key_weak(update, -1), be_const_closure(class_CometAnimation_update_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_CometAnimation_init_closure) }, - })), - be_str_weak(CometAnimation) -); -// compact class 'oscillator_value' ktab size: 22, total: 24 (saved 16 bytes) -static const bvalue be_ktab_class_oscillator_value[22] = { - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(value), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start), - /* K4 */ be_nested_str_weak(duration), - /* K5 */ be_nested_str_weak(min_value), - /* K6 */ be_nested_str_weak(max_value), - /* K7 */ be_nested_str_weak(form), - /* K8 */ be_nested_str_weak(phase), - /* K9 */ be_nested_str_weak(duty_cycle), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(scale_uint), - /* K12 */ be_nested_str_weak(scale_int), - /* K13 */ be_nested_str_weak(_fix_time_ms), - /* K14 */ be_nested_str_weak(start_time), - /* K15 */ be_const_int(3), - /* K16 */ be_const_int(2), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(sine_int), - /* K19 */ be_const_int(196602), - /* K20 */ be_const_int(-1044480), - /* K21 */ be_const_int(1044480), -}; - - -extern const bclass be_class_oscillator_value; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_oscillator_value_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_oscillator_value, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_oscillator_value_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_oscillator_value, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080503, // 0003 GETMET R2 R2 K3 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80040000, // 0006 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_oscillator_value_produce_value, /* name */ - be_nested_proto( - 24, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_oscillator_value, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[349]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x88100105, // 0001 GETMBR R4 R0 K5 - 0x88140106, // 0002 GETMBR R5 R0 K6 - 0x88180107, // 0003 GETMBR R6 R0 K7 - 0x881C0108, // 0004 GETMBR R7 R0 K8 - 0x88200109, // 0005 GETMBR R8 R0 K9 - 0xB8261400, // 0006 GETNGBL R9 K10 - 0x8824130B, // 0007 GETMBR R9 R9 K11 - 0xB82A1400, // 0008 GETNGBL R10 K10 - 0x8828150C, // 0009 GETMBR R10 R10 K12 - 0x8C2C010D, // 000A GETMET R11 R0 K13 - 0x5C340400, // 000B MOVE R13 R2 - 0x7C2C0400, // 000C CALL R11 2 - 0x5C081600, // 000D MOVE R2 R11 - 0x4C2C0000, // 000E LDNIL R11 - 0x1C2C060B, // 000F EQ R11 R3 R11 - 0x742E0001, // 0010 JMPT R11 #0013 - 0x182C0702, // 0011 LE R11 R3 K2 - 0x782E0000, // 0012 JMPF R11 #0014 - 0x80040800, // 0013 RET 1 R4 - 0x882C010E, // 0014 GETMBR R11 R0 K14 - 0x042C040B, // 0015 SUB R11 R2 R11 - 0x14301702, // 0016 LT R12 R11 K2 - 0x78320000, // 0017 JMPF R12 #0019 - 0x582C0002, // 0018 LDCONST R11 K2 - 0x28301603, // 0019 GE R12 R11 R3 - 0x78320005, // 001A JMPF R12 #0021 - 0x0C341603, // 001B DIV R13 R11 R3 - 0x08341A03, // 001C MUL R13 R13 R3 - 0x8830010E, // 001D GETMBR R12 R0 K14 - 0x0030180D, // 001E ADD R12 R12 R13 - 0x90021C0C, // 001F SETMBR R0 K14 R12 - 0x102C1603, // 0020 MOD R11 R11 R3 - 0x24300F02, // 0021 GT R12 R7 K2 - 0x7832000A, // 0022 JMPF R12 #002E - 0x5C301200, // 0023 MOVE R12 R9 - 0x5C340E00, // 0024 MOVE R13 R7 - 0x58380002, // 0025 LDCONST R14 K2 - 0x543E00FE, // 0026 LDINT R15 255 - 0x58400002, // 0027 LDCONST R16 K2 - 0x5C440600, // 0028 MOVE R17 R3 - 0x7C300A00, // 0029 CALL R12 5 - 0x002C160C, // 002A ADD R11 R11 R12 - 0x28301603, // 002B GE R12 R11 R3 - 0x78320000, // 002C JMPF R12 #002E - 0x042C1603, // 002D SUB R11 R11 R3 - 0x4C300000, // 002E LDNIL R12 - 0x5C341200, // 002F MOVE R13 R9 - 0x5C381000, // 0030 MOVE R14 R8 - 0x583C0002, // 0031 LDCONST R15 K2 - 0x544200FE, // 0032 LDINT R16 255 - 0x58440002, // 0033 LDCONST R17 K2 - 0x5C480600, // 0034 MOVE R18 R3 - 0x7C340A00, // 0035 CALL R13 5 - 0x1C380D0F, // 0036 EQ R14 R6 K15 - 0x783A0008, // 0037 JMPF R14 #0041 - 0x1438160D, // 0038 LT R14 R11 R13 - 0x783A0001, // 0039 JMPF R14 #003C - 0x5C380800, // 003A MOVE R14 R4 - 0x70020000, // 003B JMP #003D - 0x5C380A00, // 003C MOVE R14 R5 - 0x9002020E, // 003D SETMBR R0 K1 R14 - 0x88380101, // 003E GETMBR R14 R0 K1 - 0x80041C00, // 003F RET 1 R14 - 0x70020111, // 0040 JMP #0153 - 0x1C380D10, // 0041 EQ R14 R6 K16 - 0x783A0013, // 0042 JMPF R14 #0057 - 0x1438160D, // 0043 LT R14 R11 R13 - 0x783A0008, // 0044 JMPF R14 #004E - 0x5C381200, // 0045 MOVE R14 R9 - 0x5C3C1600, // 0046 MOVE R15 R11 - 0x58400002, // 0047 LDCONST R16 K2 - 0x04441B11, // 0048 SUB R17 R13 K17 - 0x58480002, // 0049 LDCONST R18 K2 - 0x544E00FE, // 004A LDINT R19 255 - 0x7C380A00, // 004B CALL R14 5 - 0x5C301C00, // 004C MOVE R12 R14 - 0x70020007, // 004D JMP #0056 - 0x5C381200, // 004E MOVE R14 R9 - 0x5C3C1600, // 004F MOVE R15 R11 - 0x5C401A00, // 0050 MOVE R16 R13 - 0x04440711, // 0051 SUB R17 R3 K17 - 0x544A00FE, // 0052 LDINT R18 255 - 0x584C0002, // 0053 LDCONST R19 K2 - 0x7C380A00, // 0054 CALL R14 5 - 0x5C301C00, // 0055 MOVE R12 R14 - 0x700200FB, // 0056 JMP #0153 - 0x543A0003, // 0057 LDINT R14 4 - 0x1C380C0E, // 0058 EQ R14 R6 R14 - 0x743A0002, // 0059 JMPT R14 #005D - 0x543A0004, // 005A LDINT R14 5 - 0x1C380C0E, // 005B EQ R14 R6 R14 - 0x783A0017, // 005C JMPF R14 #0075 - 0x5C381200, // 005D MOVE R14 R9 - 0x5C3C1600, // 005E MOVE R15 R11 - 0x58400002, // 005F LDCONST R16 K2 - 0x04440711, // 0060 SUB R17 R3 K17 - 0x58480002, // 0061 LDCONST R18 K2 - 0x544E7FFE, // 0062 LDINT R19 32767 - 0x7C380A00, // 0063 CALL R14 5 - 0x543E0003, // 0064 LDINT R15 4 - 0x1C3C0C0F, // 0065 EQ R15 R6 R15 - 0x783E0001, // 0066 JMPF R15 #0069 - 0x543E1FFF, // 0067 LDINT R15 8192 - 0x04381C0F, // 0068 SUB R14 R14 R15 - 0x5C3C1400, // 0069 MOVE R15 R10 - 0xB8421400, // 006A GETNGBL R16 K10 - 0x8C402112, // 006B GETMET R16 R16 K18 - 0x5C481C00, // 006C MOVE R18 R14 - 0x7C400400, // 006D CALL R16 2 - 0x5445EFFF, // 006E LDINT R17 -4096 - 0x544A0FFF, // 006F LDINT R18 4096 - 0x584C0002, // 0070 LDCONST R19 K2 - 0x545200FE, // 0071 LDINT R20 255 - 0x7C3C0A00, // 0072 CALL R15 5 - 0x5C301E00, // 0073 MOVE R12 R15 - 0x700200DD, // 0074 JMP #0153 - 0x543A0005, // 0075 LDINT R14 6 - 0x1C380C0E, // 0076 EQ R14 R6 R14 - 0x743A0002, // 0077 JMPT R14 #007B - 0x543A0006, // 0078 LDINT R14 7 - 0x1C380C0E, // 0079 EQ R14 R6 R14 - 0x783A001F, // 007A JMPF R14 #009B - 0x5C381200, // 007B MOVE R14 R9 - 0x5C3C1600, // 007C MOVE R15 R11 - 0x58400002, // 007D LDCONST R16 K2 - 0x04440711, // 007E SUB R17 R3 K17 - 0x58480002, // 007F LDCONST R18 K2 - 0x544E00FE, // 0080 LDINT R19 255 - 0x7C380A00, // 0081 CALL R14 5 - 0x543E0005, // 0082 LDINT R15 6 - 0x1C3C0C0F, // 0083 EQ R15 R6 R15 - 0x783E0008, // 0084 JMPF R15 #008E - 0x5C3C1400, // 0085 MOVE R15 R10 - 0x08401C0E, // 0086 MUL R16 R14 R14 - 0x58440002, // 0087 LDCONST R17 K2 - 0x544AFE00, // 0088 LDINT R18 65025 - 0x584C0002, // 0089 LDCONST R19 K2 - 0x545200FE, // 008A LDINT R20 255 - 0x7C3C0A00, // 008B CALL R15 5 - 0x5C301E00, // 008C MOVE R12 R15 - 0x7002000B, // 008D JMP #009A - 0x543E00FE, // 008E LDINT R15 255 - 0x043C1E0E, // 008F SUB R15 R15 R14 - 0x544200FE, // 0090 LDINT R16 255 - 0x5C441400, // 0091 MOVE R17 R10 - 0x08481E0F, // 0092 MUL R18 R15 R15 - 0x584C0002, // 0093 LDCONST R19 K2 - 0x5452FE00, // 0094 LDINT R20 65025 - 0x58540002, // 0095 LDCONST R21 K2 - 0x545A00FE, // 0096 LDINT R22 255 - 0x7C440A00, // 0097 CALL R17 5 - 0x04402011, // 0098 SUB R16 R16 R17 - 0x5C302000, // 0099 MOVE R12 R16 - 0x700200B7, // 009A JMP #0153 - 0x543A0007, // 009B LDINT R14 8 - 0x1C380C0E, // 009C EQ R14 R6 R14 - 0x783A0048, // 009D JMPF R14 #00E7 - 0x5C381200, // 009E MOVE R14 R9 - 0x5C3C1600, // 009F MOVE R15 R11 - 0x58400002, // 00A0 LDCONST R16 K2 - 0x04440711, // 00A1 SUB R17 R3 K17 - 0x58480002, // 00A2 LDCONST R18 K2 - 0x544E00FE, // 00A3 LDINT R19 255 - 0x7C380A00, // 00A4 CALL R14 5 - 0x1C3C1D02, // 00A5 EQ R15 R14 K2 - 0x783E0002, // 00A6 JMPF R15 #00AA - 0x90020204, // 00A7 SETMBR R0 K1 R4 - 0x883C0101, // 00A8 GETMBR R15 R0 K1 - 0x80041E00, // 00A9 RET 1 R15 - 0x543E00FE, // 00AA LDINT R15 255 - 0x1C3C1C0F, // 00AB EQ R15 R14 R15 - 0x783E0002, // 00AC JMPF R15 #00B0 - 0x90020205, // 00AD SETMBR R0 K1 R5 - 0x883C0101, // 00AE GETMBR R15 R0 K1 - 0x80041E00, // 00AF RET 1 R15 - 0x5C3C1200, // 00B0 MOVE R15 R9 - 0x544200FE, // 00B1 LDINT R16 255 - 0x0440200E, // 00B2 SUB R16 R16 R14 - 0x58440002, // 00B3 LDCONST R17 K2 - 0x544A00FE, // 00B4 LDINT R18 255 - 0x544E00FE, // 00B5 LDINT R19 255 - 0x5452001F, // 00B6 LDINT R20 32 - 0x7C3C0A00, // 00B7 CALL R15 5 - 0xB8421400, // 00B8 GETNGBL R16 K10 - 0x8C402112, // 00B9 GETMET R16 R16 K18 - 0x5C481200, // 00BA MOVE R18 R9 - 0x5C4C1C00, // 00BB MOVE R19 R14 - 0x58500002, // 00BC LDCONST R20 K2 - 0x545600FE, // 00BD LDINT R21 255 - 0x58580002, // 00BE LDCONST R22 K2 - 0x585C0013, // 00BF LDCONST R23 K19 - 0x7C480A00, // 00C0 CALL R18 5 - 0x544E7FFE, // 00C1 LDINT R19 32767 - 0x10482413, // 00C2 MOD R18 R18 R19 - 0x7C400400, // 00C3 CALL R16 2 - 0x5C441400, // 00C4 MOVE R17 R10 - 0x0848200F, // 00C5 MUL R18 R16 R15 - 0x584C0014, // 00C6 LDCONST R19 K20 - 0x58500015, // 00C7 LDCONST R20 K21 - 0x5455FF00, // 00C8 LDINT R21 -255 - 0x545A00FE, // 00C9 LDINT R22 255 - 0x7C440A00, // 00CA CALL R17 5 - 0x5C481400, // 00CB MOVE R18 R10 - 0x5C4C1C00, // 00CC MOVE R19 R14 - 0x58500002, // 00CD LDCONST R20 K2 - 0x545600FE, // 00CE LDINT R21 255 - 0x58580002, // 00CF LDCONST R22 K2 - 0x045C0A04, // 00D0 SUB R23 R5 R4 - 0x7C480A00, // 00D1 CALL R18 5 - 0x00480812, // 00D2 ADD R18 R4 R18 - 0x00482411, // 00D3 ADD R18 R18 R17 - 0x90020212, // 00D4 SETMBR R0 K1 R18 - 0x04480A04, // 00D5 SUB R18 R5 R4 - 0x544E0003, // 00D6 LDINT R19 4 - 0x0C482413, // 00D7 DIV R18 R18 R19 - 0x884C0101, // 00D8 GETMBR R19 R0 K1 - 0x00500A12, // 00D9 ADD R20 R5 R18 - 0x244C2614, // 00DA GT R19 R19 R20 - 0x784E0001, // 00DB JMPF R19 #00DE - 0x004C0A12, // 00DC ADD R19 R5 R18 - 0x90020213, // 00DD SETMBR R0 K1 R19 - 0x884C0101, // 00DE GETMBR R19 R0 K1 - 0x04500812, // 00DF SUB R20 R4 R18 - 0x144C2614, // 00E0 LT R19 R19 R20 - 0x784E0001, // 00E1 JMPF R19 #00E4 - 0x044C0812, // 00E2 SUB R19 R4 R18 - 0x90020213, // 00E3 SETMBR R0 K1 R19 - 0x884C0101, // 00E4 GETMBR R19 R0 K1 - 0x80042600, // 00E5 RET 1 R19 - 0x7002006B, // 00E6 JMP #0153 - 0x543A0008, // 00E7 LDINT R14 9 - 0x1C380C0E, // 00E8 EQ R14 R6 R14 - 0x783A0060, // 00E9 JMPF R14 #014B - 0x5C381200, // 00EA MOVE R14 R9 - 0x5C3C1600, // 00EB MOVE R15 R11 - 0x58400002, // 00EC LDCONST R16 K2 - 0x04440711, // 00ED SUB R17 R3 K17 - 0x58480002, // 00EE LDCONST R18 K2 - 0x544E00FE, // 00EF LDINT R19 255 - 0x7C380A00, // 00F0 CALL R14 5 - 0x543E007F, // 00F1 LDINT R15 128 - 0x143C1C0F, // 00F2 LT R15 R14 R15 - 0x783E0015, // 00F3 JMPF R15 #010A - 0x5C3C1200, // 00F4 MOVE R15 R9 - 0x5C401C00, // 00F5 MOVE R16 R14 - 0x58440002, // 00F6 LDCONST R17 K2 - 0x544A007E, // 00F7 LDINT R18 127 - 0x584C0002, // 00F8 LDCONST R19 K2 - 0x545200FE, // 00F9 LDINT R20 255 - 0x7C3C0A00, // 00FA CALL R15 5 - 0x544200FE, // 00FB LDINT R16 255 - 0x5C441400, // 00FC MOVE R17 R10 - 0x544A00FE, // 00FD LDINT R18 255 - 0x0448240F, // 00FE SUB R18 R18 R15 - 0x544E00FE, // 00FF LDINT R19 255 - 0x044C260F, // 0100 SUB R19 R19 R15 - 0x08482413, // 0101 MUL R18 R18 R19 - 0x584C0002, // 0102 LDCONST R19 K2 - 0x5452FE00, // 0103 LDINT R20 65025 - 0x58540002, // 0104 LDCONST R21 K2 - 0x545A00FE, // 0105 LDINT R22 255 - 0x7C440A00, // 0106 CALL R17 5 - 0x04402011, // 0107 SUB R16 R16 R17 - 0x5C302000, // 0108 MOVE R12 R16 - 0x7002003F, // 0109 JMP #014A - 0x543E00BF, // 010A LDINT R15 192 - 0x143C1C0F, // 010B LT R15 R14 R15 - 0x783E001C, // 010C JMPF R15 #012A - 0x5C3C1200, // 010D MOVE R15 R9 - 0x5442007F, // 010E LDINT R16 128 - 0x04401C10, // 010F SUB R16 R14 R16 - 0x58440002, // 0110 LDCONST R17 K2 - 0x544A003E, // 0111 LDINT R18 63 - 0x584C0002, // 0112 LDCONST R19 K2 - 0x545200FE, // 0113 LDINT R20 255 - 0x7C3C0A00, // 0114 CALL R15 5 - 0x5C401400, // 0115 MOVE R16 R10 - 0x544600FE, // 0116 LDINT R17 255 - 0x5C481400, // 0117 MOVE R18 R10 - 0x544E00FE, // 0118 LDINT R19 255 - 0x044C260F, // 0119 SUB R19 R19 R15 - 0x545200FE, // 011A LDINT R20 255 - 0x0450280F, // 011B SUB R20 R20 R15 - 0x084C2614, // 011C MUL R19 R19 R20 - 0x58500002, // 011D LDCONST R20 K2 - 0x5456FE00, // 011E LDINT R21 65025 - 0x58580002, // 011F LDCONST R22 K2 - 0x545E00FE, // 0120 LDINT R23 255 - 0x7C480A00, // 0121 CALL R18 5 - 0x04442212, // 0122 SUB R17 R17 R18 - 0x58480002, // 0123 LDCONST R18 K2 - 0x544E00FE, // 0124 LDINT R19 255 - 0x58500002, // 0125 LDCONST R20 K2 - 0x5456007F, // 0126 LDINT R21 128 - 0x7C400A00, // 0127 CALL R16 5 - 0x5C302000, // 0128 MOVE R12 R16 - 0x7002001F, // 0129 JMP #014A - 0x5C3C1200, // 012A MOVE R15 R9 - 0x544200BF, // 012B LDINT R16 192 - 0x04401C10, // 012C SUB R16 R14 R16 - 0x58440002, // 012D LDCONST R17 K2 - 0x544A003E, // 012E LDINT R18 63 - 0x584C0002, // 012F LDCONST R19 K2 - 0x545200FE, // 0130 LDINT R20 255 - 0x7C3C0A00, // 0131 CALL R15 5 - 0x544200FE, // 0132 LDINT R16 255 - 0x5C441400, // 0133 MOVE R17 R10 - 0x544A00FE, // 0134 LDINT R18 255 - 0x0448240F, // 0135 SUB R18 R18 R15 - 0x544E00FE, // 0136 LDINT R19 255 - 0x044C260F, // 0137 SUB R19 R19 R15 - 0x08482413, // 0138 MUL R18 R18 R19 - 0x584C0002, // 0139 LDCONST R19 K2 - 0x5452FE00, // 013A LDINT R20 65025 - 0x58540002, // 013B LDCONST R21 K2 - 0x545A00FE, // 013C LDINT R22 255 - 0x7C440A00, // 013D CALL R17 5 - 0x04402011, // 013E SUB R16 R16 R17 - 0x544600FE, // 013F LDINT R17 255 - 0x5C481400, // 0140 MOVE R18 R10 - 0x544E00FE, // 0141 LDINT R19 255 - 0x044C2610, // 0142 SUB R19 R19 R16 - 0x58500002, // 0143 LDCONST R20 K2 - 0x545600FE, // 0144 LDINT R21 255 - 0x58580002, // 0145 LDCONST R22 K2 - 0x545E003F, // 0146 LDINT R23 64 - 0x7C480A00, // 0147 CALL R18 5 - 0x04442212, // 0148 SUB R17 R17 R18 - 0x5C302200, // 0149 MOVE R12 R17 - 0x70020007, // 014A JMP #0153 - 0x5C381200, // 014B MOVE R14 R9 - 0x5C3C1600, // 014C MOVE R15 R11 - 0x58400002, // 014D LDCONST R16 K2 - 0x04440711, // 014E SUB R17 R3 K17 - 0x58480002, // 014F LDCONST R18 K2 - 0x544E00FE, // 0150 LDINT R19 255 - 0x7C380A00, // 0151 CALL R14 5 - 0x5C301C00, // 0152 MOVE R12 R14 - 0x5C381400, // 0153 MOVE R14 R10 - 0x5C3C1800, // 0154 MOVE R15 R12 - 0x58400002, // 0155 LDCONST R16 K2 - 0x544600FE, // 0156 LDINT R17 255 - 0x5C480800, // 0157 MOVE R18 R4 - 0x5C4C0A00, // 0158 MOVE R19 R5 - 0x7C380A00, // 0159 CALL R14 5 - 0x9002020E, // 015A SETMBR R0 K1 R14 - 0x88380101, // 015B GETMBR R14 R0 K1 - 0x80041C00, // 015C RET 1 R14 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: oscillator_value -********************************************************************/ -extern const bclass be_class_value_provider; -be_local_class(oscillator_value, - 1, - &be_class_value_provider, - be_nested_map(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_oscillator_value_init_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_oscillator_value_start_closure) }, - { be_const_key_weak(produce_value, 4), be_const_closure(class_oscillator_value_produce_value_closure) }, - { be_const_key_weak(PARAMS, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(6, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(phase, -1), be_const_bytes_instance(07000001FF000000) }, - { be_const_key_weak(max_value, 4), be_const_bytes_instance(0401FF00) }, - { be_const_key_weak(duty_cycle, -1), be_const_bytes_instance(07000001FF00007F) }, - { be_const_key_weak(min_value, -1), be_const_bytes_instance(040000) }, - { be_const_key_weak(duration, -1), be_const_bytes_instance(05000101E803) }, - { be_const_key_weak(form, 1), be_const_bytes_instance(14000109000100020003000400050006000700080009) }, - })) ) } )) }, - { be_const_key_weak(value, -1), be_const_var(0) }, - })), - be_str_weak(oscillator_value) -); - -/******************************************************************** -** Solidified function: animation_resolve -********************************************************************/ -be_local_closure(animation_resolve, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(is_value_provider), - /* K2 */ be_nested_str_weak(produce_value), - /* K3 */ be_nested_str_weak(parameterized_object), - /* K4 */ be_nested_str_weak(value_error), - /* K5 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), - /* K6 */ be_nested_str_weak(get_param_value), - }), - be_str_weak(animation_resolve), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140000, // 0002 MOVE R5 R0 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0005, // 0004 JMPF R3 #000B - 0x8C0C0102, // 0005 GETMET R3 R0 K2 - 0x5C140200, // 0006 MOVE R5 R1 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C0C0600, // 0008 CALL R3 3 - 0x80040600, // 0009 RET 1 R3 - 0x70020012, // 000A JMP #001E - 0x4C0C0000, // 000B LDNIL R3 - 0x200C0003, // 000C NE R3 R0 R3 - 0x780E000E, // 000D JMPF R3 #001D - 0x600C000F, // 000E GETGBL R3 G15 - 0x5C100000, // 000F MOVE R4 R0 - 0xB8160000, // 0010 GETNGBL R5 K0 - 0x88140B03, // 0011 GETMBR R5 R5 K3 - 0x7C0C0400, // 0012 CALL R3 2 - 0x780E0008, // 0013 JMPF R3 #001D - 0x4C0C0000, // 0014 LDNIL R3 - 0x1C0C0203, // 0015 EQ R3 R1 R3 - 0x780E0000, // 0016 JMPF R3 #0018 - 0xB0060905, // 0017 RAISE 1 K4 K5 - 0x8C0C0106, // 0018 GETMET R3 R0 K6 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x80040600, // 001B RET 1 R3 - 0x70020000, // 001C JMP #001E - 0x80040000, // 001D RET 1 R0 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wave_single_sine -********************************************************************/ -be_local_closure(wave_single_sine, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(wave_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(wave_type), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(frequency), - /* K6 */ be_nested_str_weak(wave_speed), - }), - be_str_weak(wave_single_sine), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5408FFFF, // 0004 LDINT R2 -65536 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A001F, // 0007 LDINT R2 32 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A0031, // 0009 LDINT R2 50 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'closure_value' ktab size: 4, total: 5 (saved 8 bytes) -static const bvalue be_ktab_class_closure_value[4] = { - /* K0 */ be_nested_str_weak(_closure), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(on_param_changed), - /* K3 */ be_nested_str_weak(closure), -}; - - -extern const bclass be_class_closure_value; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_closure_value_produce_value, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_closure_value, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C100604, // 0002 EQ R4 R3 R4 - 0x78120001, // 0003 JMPF R4 #0006 - 0x4C100000, // 0004 LDNIL R4 - 0x80040800, // 0005 RET 1 R4 - 0x5C100600, // 0006 MOVE R4 R3 - 0x88140101, // 0007 GETMBR R5 R0 K1 - 0x5C180200, // 0008 MOVE R6 R1 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C100600, // 000A CALL R4 3 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_closure_value_on_param_changed, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_closure_value, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0303, // 0007 EQ R3 R1 K3 - 0x780E0000, // 0008 JMPF R3 #000A - 0x90020002, // 0009 SETMBR R0 K0 R2 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: closure_value -********************************************************************/ -extern const bclass be_class_value_provider; -be_local_class(closure_value, - 1, - &be_class_value_provider, - be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_closure, -1), be_const_var(0) }, - { be_const_key_weak(produce_value, 2), be_const_closure(class_closure_value_produce_value_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_closure_value_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(closure, -1), be_const_bytes_instance(0C0606) }, - })) ) } )) }, - })), - be_str_weak(closure_value) -); - /******************************************************************** ** Solidified function: is_value_provider ********************************************************************/ @@ -8300,6 +9170,2277 @@ be_local_closure(linear, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: sine_osc +********************************************************************/ +be_local_closure(sine_osc, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + }), + be_str_weak(sine_osc), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A0004, // 0004 LDINT R2 5 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: animation_resolve +********************************************************************/ +be_local_closure(animation_resolve, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(is_value_provider), + /* K2 */ be_nested_str_weak(produce_value), + /* K3 */ be_nested_str_weak(parameterized_object), + /* K4 */ be_nested_str_weak(value_error), + /* K5 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), + /* K6 */ be_nested_str_weak(get_param_value), + }), + be_str_weak(animation_resolve), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0005, // 0004 JMPF R3 #000B + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x5C140200, // 0006 MOVE R5 R1 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C0C0600, // 0008 CALL R3 3 + 0x80040600, // 0009 RET 1 R3 + 0x70020012, // 000A JMP #001E + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0003, // 000C NE R3 R0 R3 + 0x780E000E, // 000D JMPF R3 #001D + 0x600C000F, // 000E GETGBL R3 G15 + 0x5C100000, // 000F MOVE R4 R0 + 0xB8160000, // 0010 GETNGBL R5 K0 + 0x88140B03, // 0011 GETMBR R5 R5 K3 + 0x7C0C0400, // 0012 CALL R3 2 + 0x780E0008, // 0013 JMPF R3 #001D + 0x4C0C0000, // 0014 LDNIL R3 + 0x1C0C0203, // 0015 EQ R3 R1 R3 + 0x780E0000, // 0016 JMPF R3 #0018 + 0xB0060905, // 0017 RAISE 1 K4 K5 + 0x8C0C0106, // 0018 GETMET R3 R0 K6 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x80040600, // 001B RET 1 R3 + 0x70020000, // 001C JMP #001E + 0x80040000, // 001D RET 1 R0 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + +// compact class 'EventManager' ktab size: 30, total: 61 (saved 248 bytes) +static const bvalue be_ktab_class_EventManager[30] = { + /* K0 */ be_nested_str_weak(event_name), + /* K1 */ be_nested_str_weak(_X2A), + /* K2 */ be_nested_str_weak(global_handlers), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(remove), + /* K5 */ be_nested_str_weak(handlers), + /* K6 */ be_nested_str_weak(set_active), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(get_info), + /* K10 */ be_nested_str_weak(keys), + /* K11 */ be_nested_str_weak(event_queue), + /* K12 */ be_nested_str_weak(is_processing), + /* K13 */ be_nested_str_weak(clear), + /* K14 */ be_const_int(1), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(priority), + /* K17 */ be_nested_str_weak(animation), + /* K18 */ be_nested_str_weak(event_handler), + /* K19 */ be_nested_str_weak(_sort_handlers), + /* K20 */ be_nested_str_weak(contains), + /* K21 */ be_nested_str_weak(name), + /* K22 */ be_nested_str_weak(data), + /* K23 */ be_nested_str_weak(is_active), + /* K24 */ be_nested_str_weak(execute), + /* K25 */ be_nested_str_weak(Event_X20processing_X20error_X3A), + /* K26 */ be_nested_str_weak(_process_queued_events), + /* K27 */ be_nested_str_weak(size), + /* K28 */ be_nested_str_weak(pop), + /* K29 */ be_nested_str_weak(trigger_event), +}; + + +extern const bclass be_class_EventManager; + +/******************************************************************** +** Solidified function: unregister_handler +********************************************************************/ +be_local_closure(class_EventManager_unregister_handler, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(unregister_handler), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x1C080501, // 0001 EQ R2 R2 K1 + 0x780A000B, // 0002 JMPF R2 #000F + 0x88080102, // 0003 GETMBR R2 R0 K2 + 0x8C080503, // 0004 GETMET R2 R2 K3 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0003, // 0009 JMPF R3 #000E + 0x880C0102, // 000A GETMBR R3 R0 K2 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 + 0x7002000F, // 000E JMP #001F + 0x88080105, // 000F GETMBR R2 R0 K5 + 0x8C080503, // 0010 GETMET R2 R2 K3 + 0x88100300, // 0011 GETMBR R4 R1 K0 + 0x7C080400, // 0012 CALL R2 2 + 0x4C0C0000, // 0013 LDNIL R3 + 0x200C0403, // 0014 NE R3 R2 R3 + 0x780E0008, // 0015 JMPF R3 #001F + 0x8C0C0503, // 0016 GETMET R3 R2 K3 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x4C100000, // 0019 LDNIL R4 + 0x20100604, // 001A NE R4 R3 R4 + 0x78120002, // 001B JMPF R4 #001F + 0x8C100504, // 001C GETMET R4 R2 K4 + 0x5C180600, // 001D MOVE R6 R3 + 0x7C100400, // 001E CALL R4 2 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_event_active +********************************************************************/ +be_local_closure(class_EventManager_set_event_active, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(set_event_active), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x880C0105, // 0000 GETMBR R3 R0 K5 + 0x8C0C0703, // 0001 GETMET R3 R3 K3 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x7812000C, // 0006 JMPF R4 #0014 + 0x60100010, // 0007 GETGBL R4 G16 + 0x5C140600, // 0008 MOVE R5 R3 + 0x7C100200, // 0009 CALL R4 1 + 0xA8020005, // 000A EXBLK 0 #0011 + 0x5C140800, // 000B MOVE R5 R4 + 0x7C140000, // 000C CALL R5 0 + 0x8C180B06, // 000D GETMET R6 R5 K6 + 0x5C200400, // 000E MOVE R8 R2 + 0x7C180400, // 000F CALL R6 2 + 0x7001FFF9, // 0010 JMP #000B + 0x58100007, // 0011 LDCONST R4 K7 + 0xAC100200, // 0012 CATCH R4 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_handlers +********************************************************************/ +be_local_closure(class_EventManager_get_handlers, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(get_handlers), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA8020006, // 0005 EXBLK 0 #000D + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140508, // 0008 GETMET R5 R2 K8 + 0x8C1C0909, // 0009 GETMET R7 R4 K9 + 0x7C1C0200, // 000A CALL R7 1 + 0x7C140400, // 000B CALL R5 2 + 0x7001FFF8, // 000C JMP #0006 + 0x580C0007, // 000D LDCONST R3 K7 + 0xAC0C0200, // 000E CATCH R3 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x880C0105, // 0010 GETMBR R3 R0 K5 + 0x8C0C0703, // 0011 GETMET R3 R3 K3 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x4C100000, // 0014 LDNIL R4 + 0x20100604, // 0015 NE R4 R3 R4 + 0x7812000D, // 0016 JMPF R4 #0025 + 0x60100010, // 0017 GETGBL R4 G16 + 0x5C140600, // 0018 MOVE R5 R3 + 0x7C100200, // 0019 CALL R4 1 + 0xA8020006, // 001A EXBLK 0 #0022 + 0x5C140800, // 001B MOVE R5 R4 + 0x7C140000, // 001C CALL R5 0 + 0x8C180508, // 001D GETMET R6 R2 K8 + 0x8C200B09, // 001E GETMET R8 R5 K9 + 0x7C200200, // 001F CALL R8 1 + 0x7C180400, // 0020 CALL R6 2 + 0x7001FFF8, // 0021 JMP #001B + 0x58100007, // 0022 LDCONST R4 K7 + 0xAC100200, // 0023 CATCH R4 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_registered_events +********************************************************************/ +be_local_closure(class_EventManager_get_registered_events, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(get_registered_events), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x60080010, // 0002 GETGBL R2 G16 + 0x880C0105, // 0003 GETMBR R3 R0 K5 + 0x8C0C070A, // 0004 GETMET R3 R3 K10 + 0x7C0C0200, // 0005 CALL R3 1 + 0x7C080200, // 0006 CALL R2 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C0C0400, // 0008 MOVE R3 R2 + 0x7C0C0000, // 0009 CALL R3 0 + 0x8C100308, // 000A GETMET R4 R1 K8 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x7001FFF9, // 000D JMP #0008 + 0x58080007, // 000E LDCONST R2 K7 + 0xAC080200, // 000F CATCH R2 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x80040200, // 0011 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_EventManager_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x90020A01, // 0002 SETMBR R0 K5 R1 + 0x60040012, // 0003 GETGBL R1 G18 + 0x7C040000, // 0004 CALL R1 0 + 0x90020401, // 0005 SETMBR R0 K2 R1 + 0x60040012, // 0006 GETGBL R1 G18 + 0x7C040000, // 0007 CALL R1 0 + 0x90021601, // 0008 SETMBR R0 K11 R1 + 0x50040000, // 0009 LDBOOL R1 0 0 + 0x90021801, // 000A SETMBR R0 K12 R1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear_all_handlers +********************************************************************/ +be_local_closure(class_EventManager_clear_all_handlers, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(clear_all_handlers), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x8C04030D, // 0001 GETMET R1 R1 K13 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C04030D, // 0004 GETMET R1 R1 K13 + 0x7C040200, // 0005 CALL R1 1 + 0x8804010B, // 0006 GETMBR R1 R0 K11 + 0x8C04030D, // 0007 GETMET R1 R1 K13 + 0x7C040200, // 0008 CALL R1 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _sort_handlers +********************************************************************/ +be_local_closure(class_EventManager__sort_handlers, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(_sort_handlers), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x60080010, // 0000 GETGBL R2 G16 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x040C070E, // 0004 SUB R3 R3 K14 + 0x400E1C03, // 0005 CONNECT R3 K14 R3 + 0x7C080200, // 0006 CALL R2 1 + 0xA8020012, // 0007 EXBLK 0 #001B + 0x5C0C0400, // 0008 MOVE R3 R2 + 0x7C0C0000, // 0009 CALL R3 0 + 0x94100203, // 000A GETIDX R4 R1 R3 + 0x5C140600, // 000B MOVE R5 R3 + 0x24180B0F, // 000C GT R6 R5 K15 + 0x781A000A, // 000D JMPF R6 #0019 + 0x04180B0E, // 000E SUB R6 R5 K14 + 0x94180206, // 000F GETIDX R6 R1 R6 + 0x88180D10, // 0010 GETMBR R6 R6 K16 + 0x881C0910, // 0011 GETMBR R7 R4 K16 + 0x14180C07, // 0012 LT R6 R6 R7 + 0x781A0004, // 0013 JMPF R6 #0019 + 0x04180B0E, // 0014 SUB R6 R5 K14 + 0x94180206, // 0015 GETIDX R6 R1 R6 + 0x98040A06, // 0016 SETIDX R1 R5 R6 + 0x04140B0E, // 0017 SUB R5 R5 K14 + 0x7001FFF2, // 0018 JMP #000C + 0x98040A04, // 0019 SETIDX R1 R5 R4 + 0x7001FFEC, // 001A JMP #0008 + 0x58080007, // 001B LDCONST R2 K7 + 0xAC080200, // 001C CATCH R2 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_handler +********************************************************************/ +be_local_closure(class_EventManager_register_handler, /* name */ + be_nested_proto( + 13, /* nstack */ + 6, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(register_handler), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xB81A2200, // 0000 GETNGBL R6 K17 + 0x8C180D12, // 0001 GETMET R6 R6 K18 + 0x5C200200, // 0002 MOVE R8 R1 + 0x5C240400, // 0003 MOVE R9 R2 + 0x5C280600, // 0004 MOVE R10 R3 + 0x5C2C0800, // 0005 MOVE R11 R4 + 0x5C300A00, // 0006 MOVE R12 R5 + 0x7C180C00, // 0007 CALL R6 6 + 0x1C1C0301, // 0008 EQ R7 R1 K1 + 0x781E0007, // 0009 JMPF R7 #0012 + 0x881C0102, // 000A GETMBR R7 R0 K2 + 0x8C1C0F08, // 000B GETMET R7 R7 K8 + 0x5C240C00, // 000C MOVE R9 R6 + 0x7C1C0400, // 000D CALL R7 2 + 0x8C1C0113, // 000E GETMET R7 R0 K19 + 0x88240102, // 000F GETMBR R9 R0 K2 + 0x7C1C0400, // 0010 CALL R7 2 + 0x70020011, // 0011 JMP #0024 + 0x881C0105, // 0012 GETMBR R7 R0 K5 + 0x8C1C0F14, // 0013 GETMET R7 R7 K20 + 0x5C240200, // 0014 MOVE R9 R1 + 0x7C1C0400, // 0015 CALL R7 2 + 0x741E0003, // 0016 JMPT R7 #001B + 0x881C0105, // 0017 GETMBR R7 R0 K5 + 0x60200012, // 0018 GETGBL R8 G18 + 0x7C200000, // 0019 CALL R8 0 + 0x981C0208, // 001A SETIDX R7 R1 R8 + 0x881C0105, // 001B GETMBR R7 R0 K5 + 0x941C0E01, // 001C GETIDX R7 R7 R1 + 0x8C1C0F08, // 001D GETMET R7 R7 K8 + 0x5C240C00, // 001E MOVE R9 R6 + 0x7C1C0400, // 001F CALL R7 2 + 0x8C1C0113, // 0020 GETMET R7 R0 K19 + 0x88240105, // 0021 GETMBR R9 R0 K5 + 0x94241201, // 0022 GETIDX R9 R9 R1 + 0x7C1C0400, // 0023 CALL R7 2 + 0x80040C00, // 0024 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: trigger_event +********************************************************************/ +be_local_closure(class_EventManager_trigger_event, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(trigger_event), + &be_const_str_solidified, + ( &(const binstruction[69]) { /* code */ + 0x880C010C, // 0000 GETMBR R3 R0 K12 + 0x780E0007, // 0001 JMPF R3 #000A + 0x880C010B, // 0002 GETMBR R3 R0 K11 + 0x8C0C0708, // 0003 GETMET R3 R3 K8 + 0x60140013, // 0004 GETGBL R5 G19 + 0x7C140000, // 0005 CALL R5 0 + 0x98162A01, // 0006 SETIDX R5 K21 R1 + 0x98162C02, // 0007 SETIDX R5 K22 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80000600, // 0009 RET 0 + 0x500C0200, // 000A LDBOOL R3 1 0 + 0x90021803, // 000B SETMBR R0 K12 R3 + 0xA8020029, // 000C EXBLK 0 #0037 + 0x600C0010, // 000D GETGBL R3 G16 + 0x88100102, // 000E GETMBR R4 R0 K2 + 0x7C0C0200, // 000F CALL R3 1 + 0xA802000A, // 0010 EXBLK 0 #001C + 0x5C100600, // 0011 MOVE R4 R3 + 0x7C100000, // 0012 CALL R4 0 + 0x88140917, // 0013 GETMBR R5 R4 K23 + 0x78160005, // 0014 JMPF R5 #001B + 0x8C140918, // 0015 GETMET R5 R4 K24 + 0x601C0013, // 0016 GETGBL R7 G19 + 0x7C1C0000, // 0017 CALL R7 0 + 0x981E0001, // 0018 SETIDX R7 K0 R1 + 0x981E2C02, // 0019 SETIDX R7 K22 R2 + 0x7C140400, // 001A CALL R5 2 + 0x7001FFF4, // 001B JMP #0011 + 0x580C0007, // 001C LDCONST R3 K7 + 0xAC0C0200, // 001D CATCH R3 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x880C0105, // 001F GETMBR R3 R0 K5 + 0x8C0C0703, // 0020 GETMET R3 R3 K3 + 0x5C140200, // 0021 MOVE R5 R1 + 0x7C0C0400, // 0022 CALL R3 2 + 0x4C100000, // 0023 LDNIL R4 + 0x20100604, // 0024 NE R4 R3 R4 + 0x7812000E, // 0025 JMPF R4 #0035 + 0x60100010, // 0026 GETGBL R4 G16 + 0x5C140600, // 0027 MOVE R5 R3 + 0x7C100200, // 0028 CALL R4 1 + 0xA8020007, // 0029 EXBLK 0 #0032 + 0x5C140800, // 002A MOVE R5 R4 + 0x7C140000, // 002B CALL R5 0 + 0x88180B17, // 002C GETMBR R6 R5 K23 + 0x781A0002, // 002D JMPF R6 #0031 + 0x8C180B18, // 002E GETMET R6 R5 K24 + 0x5C200400, // 002F MOVE R8 R2 + 0x7C180400, // 0030 CALL R6 2 + 0x7001FFF7, // 0031 JMP #002A + 0x58100007, // 0032 LDCONST R4 K7 + 0xAC100200, // 0033 CATCH R4 1 0 + 0xB0080000, // 0034 RAISE 2 R0 R0 + 0xA8040001, // 0035 EXBLK 1 1 + 0x70020008, // 0036 JMP #0040 + 0xAC0C0002, // 0037 CATCH R3 0 2 + 0x70020005, // 0038 JMP #003F + 0x60140001, // 0039 GETGBL R5 G1 + 0x58180019, // 003A LDCONST R6 K25 + 0x5C1C0600, // 003B MOVE R7 R3 + 0x5C200800, // 003C MOVE R8 R4 + 0x7C140600, // 003D CALL R5 3 + 0x70020000, // 003E JMP #0040 + 0xB0080000, // 003F RAISE 2 R0 R0 + 0x500C0000, // 0040 LDBOOL R3 0 0 + 0x90021803, // 0041 SETMBR R0 K12 R3 + 0x8C0C011A, // 0042 GETMET R3 R0 K26 + 0x7C0C0200, // 0043 CALL R3 1 + 0x80000000, // 0044 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_queued_events +********************************************************************/ +be_local_closure(class_EventManager__process_queued_events, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventManager, /* shared constants */ + be_str_weak(_process_queued_events), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8804010B, // 0000 GETMBR R1 R0 K11 + 0x8C04031B, // 0001 GETMET R1 R1 K27 + 0x7C040200, // 0002 CALL R1 1 + 0x2404030F, // 0003 GT R1 R1 K15 + 0x78060008, // 0004 JMPF R1 #000E + 0x8804010B, // 0005 GETMBR R1 R0 K11 + 0x8C04031C, // 0006 GETMET R1 R1 K28 + 0x580C000F, // 0007 LDCONST R3 K15 + 0x7C040400, // 0008 CALL R1 2 + 0x8C08011D, // 0009 GETMET R2 R0 K29 + 0x94100315, // 000A GETIDX R4 R1 K21 + 0x94140316, // 000B GETIDX R5 R1 K22 + 0x7C080600, // 000C CALL R2 3 + 0x7001FFF1, // 000D JMP #0000 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: EventManager +********************************************************************/ +be_local_class(EventManager, + 4, + NULL, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(unregister_handler, -1), be_const_closure(class_EventManager_unregister_handler_closure) }, + { be_const_key_weak(set_event_active, -1), be_const_closure(class_EventManager_set_event_active_closure) }, + { be_const_key_weak(handlers, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_EventManager_init_closure) }, + { be_const_key_weak(trigger_event, -1), be_const_closure(class_EventManager_trigger_event_closure) }, + { be_const_key_weak(get_handlers, 3), be_const_closure(class_EventManager_get_handlers_closure) }, + { be_const_key_weak(clear_all_handlers, -1), be_const_closure(class_EventManager_clear_all_handlers_closure) }, + { be_const_key_weak(event_queue, -1), be_const_var(2) }, + { be_const_key_weak(_sort_handlers, -1), be_const_closure(class_EventManager__sort_handlers_closure) }, + { be_const_key_weak(is_processing, 7), be_const_var(3) }, + { be_const_key_weak(global_handlers, -1), be_const_var(1) }, + { be_const_key_weak(register_handler, -1), be_const_closure(class_EventManager_register_handler_closure) }, + { be_const_key_weak(get_registered_events, 4), be_const_closure(class_EventManager_get_registered_events_closure) }, + { be_const_key_weak(_process_queued_events, -1), be_const_closure(class_EventManager__process_queued_events_closure) }, + })), + be_str_weak(EventManager) +); + +/******************************************************************** +** Solidified function: get_user_function +********************************************************************/ +be_local_closure(get_user_function, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), + /* K2 */ be_nested_str_weak(find), + }), + be_str_weak(get_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040302, // 0002 GETMET R1 R1 K2 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: elastic +********************************************************************/ +be_local_closure(elastic, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + }), + be_str_weak(elastic), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A0007, // 0004 LDINT R2 8 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +extern const bclass be_class_parameterized_object; +// compact class 'parameterized_object' ktab size: 59, total: 123 (saved 512 bytes) +static const bvalue be_ktab_class_parameterized_object[59] = { + /* K0 */ be_const_class(be_class_parameterized_object), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(_MASK), + /* K4 */ be_nested_str_weak(find), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(_TYPES), + /* K7 */ be_nested_str_weak(push), + /* K8 */ be_nested_str_weak(has_param), + /* K9 */ be_nested_str_weak(_set_parameter_value), + /* K10 */ be_nested_str_weak(_X27_X25s_X27_X20object_X20has_X20no_X20attribute_X20_X27_X25s_X27), + /* K11 */ be_nested_str_weak(attribute_error), + /* K12 */ be_nested_str_weak(_get_param_def), + /* K13 */ be_nested_str_weak(animation), + /* K14 */ be_nested_str_weak(is_value_provider), + /* K15 */ be_nested_str_weak(constraint_mask), + /* K16 */ be_nested_str_weak(nillable), + /* K17 */ be_nested_str_weak(default), + /* K18 */ be_nested_str_weak(constraint_find), + /* K19 */ be_nested_str_weak(_X27_X25s_X27_X20does_X20not_X20accept_X20nil_X20values), + /* K20 */ be_nested_str_weak(value_error), + /* K21 */ be_nested_str_weak(type), + /* K22 */ be_nested_str_weak(int), + /* K23 */ be_nested_str_weak(time), + /* K24 */ be_nested_str_weak(percentage), + /* K25 */ be_nested_str_weak(color), + /* K26 */ be_nested_str_weak(palette), + /* K27 */ be_nested_str_weak(bytes), + /* K28 */ be_nested_str_weak(any), + /* K29 */ be_nested_str_weak(real), + /* K30 */ be_nested_str_weak(math), + /* K31 */ be_nested_str_weak(round), + /* K32 */ be_nested_str_weak(instance), + /* K33 */ be_nested_str_weak(_X27_X25s_X27_X20expects_X20type_X20_X27_X25s_X27_X20but_X20got_X20_X27_X25s_X27_X20_X28value_X3A_X20_X25s_X29), + /* K34 */ be_nested_str_weak(min), + /* K35 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20below_X20minimum_X20_X25s), + /* K36 */ be_nested_str_weak(max), + /* K37 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20above_X20maximum_X20_X25s), + /* K38 */ be_nested_str_weak(enum), + /* K39 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20not_X20in_X20allowed_X20values_X20_X25s), + /* K40 */ be_nested_str_weak(values), + /* K41 */ be_nested_str_weak(contains), + /* K42 */ be_nested_str_weak(resolve_value), + /* K43 */ be_nested_str_weak(engine), + /* K44 */ be_nested_str_weak(time_ms), + /* K45 */ be_nested_str_weak(is_running), + /* K46 */ be_nested_str_weak(start_time), + /* K47 */ be_nested_str_weak(introspect), + /* K48 */ be_nested_str_weak(PARAMS), + /* K49 */ be_nested_str_weak(keys), + /* K50 */ be_nested_str_weak(stop_iteration), + /* K51 */ be_nested_str_weak(missing_X20engine_X20parameter), + /* K52 */ be_nested_str_weak(_init_parameter_values), + /* K53 */ be_nested_str_weak(toptr), + /* K54 */ be_nested_str_weak(_validate_param), + /* K55 */ be_nested_str_weak(on_param_changed), + /* K56 */ be_nested_str_weak(_X3Cinstance_X3A_X20_X25s_X3E), + /* K57 */ be_nested_str_weak(produce_value), + /* K58 */ be_nested_str_weak(member), +}; + + +extern const bclass be_class_parameterized_object; + +/******************************************************************** +** Solidified function: constraint_find +********************************************************************/ +be_local_closure(class_parameterized_object_constraint_find, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(2), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(get), + }), + be_str_weak(_skip_typed_value), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x28080202, // 0003 GE R2 R1 R2 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80060000, // 0005 RET 1 K0 + 0x94080001, // 0006 GETIDX R2 R0 R1 + 0x540E0005, // 0007 LDINT R3 6 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0001, // 0009 JMPF R3 #000C + 0x80060200, // 000A RET 1 K1 + 0x70020021, // 000B JMP #002E + 0x540E0004, // 000C LDINT R3 5 + 0x1C0C0403, // 000D EQ R3 R2 R3 + 0x780E0001, // 000E JMPF R3 #0011 + 0x80060400, // 000F RET 1 K2 + 0x7002001C, // 0010 JMP #002E + 0x1C0C0500, // 0011 EQ R3 R2 K0 + 0x780E0001, // 0012 JMPF R3 #0015 + 0x80060400, // 0013 RET 1 K2 + 0x70020018, // 0014 JMP #002E + 0x1C0C0501, // 0015 EQ R3 R2 K1 + 0x780E0001, // 0016 JMPF R3 #0019 + 0x80060600, // 0017 RET 1 K3 + 0x70020014, // 0018 JMP #002E + 0x1C0C0502, // 0019 EQ R3 R2 K2 + 0x780E0002, // 001A JMPF R3 #001E + 0x540E0004, // 001B LDINT R3 5 + 0x80040600, // 001C RET 1 R3 + 0x7002000F, // 001D JMP #002E + 0x1C0C0503, // 001E EQ R3 R2 K3 + 0x780E0004, // 001F JMPF R3 #0025 + 0x000C0301, // 0020 ADD R3 R1 K1 + 0x940C0003, // 0021 GETIDX R3 R0 R3 + 0x000E0403, // 0022 ADD R3 K2 R3 + 0x80040600, // 0023 RET 1 R3 + 0x70020008, // 0024 JMP #002E + 0x540E0003, // 0025 LDINT R3 4 + 0x1C0C0403, // 0026 EQ R3 R2 R3 + 0x780E0005, // 0027 JMPF R3 #002E + 0x8C0C0104, // 0028 GETMET R3 R0 K4 + 0x00140301, // 0029 ADD R5 R1 K1 + 0x58180002, // 002A LDCONST R6 K2 + 0x7C0C0600, // 002B CALL R3 3 + 0x000E0603, // 002C ADD R3 K3 R3 + 0x80040600, // 002D RET 1 R3 + 0x80060000, // 002E RET 1 K0 + }) + ), + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(asstring), + }), + be_str_weak(_read_typed_value), + &be_const_str_solidified, + ( &(const binstruction[83]) { /* code */ + 0x6008000C, // 0000 GETGBL R2 G12 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x28080202, // 0003 GE R2 R1 R2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x4C080000, // 0005 LDNIL R2 + 0x80040400, // 0006 RET 1 R2 + 0x94080001, // 0007 GETIDX R2 R0 R1 + 0x00040300, // 0008 ADD R1 R1 K0 + 0x540E0005, // 0009 LDINT R3 6 + 0x1C0C0403, // 000A EQ R3 R2 R3 + 0x780E0002, // 000B JMPF R3 #000F + 0x4C0C0000, // 000C LDNIL R3 + 0x80040600, // 000D RET 1 R3 + 0x70020041, // 000E JMP #0051 + 0x540E0004, // 000F LDINT R3 5 + 0x1C0C0403, // 0010 EQ R3 R2 R3 + 0x780E0003, // 0011 JMPF R3 #0016 + 0x940C0001, // 0012 GETIDX R3 R0 R1 + 0x200C0701, // 0013 NE R3 R3 K1 + 0x80040600, // 0014 RET 1 R3 + 0x7002003A, // 0015 JMP #0051 + 0x1C0C0501, // 0016 EQ R3 R2 K1 + 0x780E0009, // 0017 JMPF R3 #0022 + 0x940C0001, // 0018 GETIDX R3 R0 R1 + 0x5412007E, // 0019 LDINT R4 127 + 0x24100604, // 001A GT R4 R3 R4 + 0x78120002, // 001B JMPF R4 #001F + 0x541200FF, // 001C LDINT R4 256 + 0x04100604, // 001D SUB R4 R3 R4 + 0x70020000, // 001E JMP #0020 + 0x5C100600, // 001F MOVE R4 R3 + 0x80040800, // 0020 RET 1 R4 + 0x7002002E, // 0021 JMP #0051 + 0x1C0C0500, // 0022 EQ R3 R2 K0 + 0x780E000C, // 0023 JMPF R3 #0031 + 0x8C0C0102, // 0024 GETMET R3 R0 K2 + 0x5C140200, // 0025 MOVE R5 R1 + 0x58180003, // 0026 LDCONST R6 K3 + 0x7C0C0600, // 0027 CALL R3 3 + 0x54127FFE, // 0028 LDINT R4 32767 + 0x24100604, // 0029 GT R4 R3 R4 + 0x78120002, // 002A JMPF R4 #002E + 0x5412FFFF, // 002B LDINT R4 65536 + 0x04100604, // 002C SUB R4 R3 R4 + 0x70020000, // 002D JMP #002F + 0x5C100600, // 002E MOVE R4 R3 + 0x80040800, // 002F RET 1 R4 + 0x7002001F, // 0030 JMP #0051 + 0x1C0C0503, // 0031 EQ R3 R2 K3 + 0x780E0005, // 0032 JMPF R3 #0039 + 0x8C0C0102, // 0033 GETMET R3 R0 K2 + 0x5C140200, // 0034 MOVE R5 R1 + 0x541A0003, // 0035 LDINT R6 4 + 0x7C0C0600, // 0036 CALL R3 3 + 0x80040600, // 0037 RET 1 R3 + 0x70020017, // 0038 JMP #0051 + 0x1C0C0504, // 0039 EQ R3 R2 K4 + 0x780E0008, // 003A JMPF R3 #0044 + 0x940C0001, // 003B GETIDX R3 R0 R1 + 0x00100300, // 003C ADD R4 R1 K0 + 0x00140203, // 003D ADD R5 R1 R3 + 0x40100805, // 003E CONNECT R4 R4 R5 + 0x94100004, // 003F GETIDX R4 R0 R4 + 0x8C100905, // 0040 GETMET R4 R4 K5 + 0x7C100200, // 0041 CALL R4 1 + 0x80040800, // 0042 RET 1 R4 + 0x7002000C, // 0043 JMP #0051 + 0x540E0003, // 0044 LDINT R3 4 + 0x1C0C0403, // 0045 EQ R3 R2 R3 + 0x780E0009, // 0046 JMPF R3 #0051 + 0x8C0C0102, // 0047 GETMET R3 R0 K2 + 0x5C140200, // 0048 MOVE R5 R1 + 0x58180003, // 0049 LDCONST R6 K3 + 0x7C0C0600, // 004A CALL R3 3 + 0x00100303, // 004B ADD R4 R1 K3 + 0x00140203, // 004C ADD R5 R1 R3 + 0x00140B00, // 004D ADD R5 R5 K0 + 0x40100805, // 004E CONNECT R4 R4 R5 + 0x94100004, // 004F GETIDX R4 R0 R4 + 0x80040800, // 0050 RET 1 R4 + 0x4C0C0000, // 0051 LDNIL R3 + 0x80040600, // 0052 RET 1 R3 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(constraint_find), + &be_const_str_solidified, + ( &(const binstruction[112]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0x84100000, // 0001 CLOSURE R4 P0 + 0x84140001, // 0002 CLOSURE R5 P1 + 0x6018000C, // 0003 GETGBL R6 G12 + 0x5C1C0000, // 0004 MOVE R7 R0 + 0x7C180200, // 0005 CALL R6 1 + 0x14180D01, // 0006 LT R6 R6 K1 + 0x781A0000, // 0007 JMPF R6 #0009 + 0x80040400, // 0008 RET 1 R2 + 0x94180102, // 0009 GETIDX R6 R0 K2 + 0x581C0001, // 000A LDCONST R7 K1 + 0x88200703, // 000B GETMBR R8 R3 K3 + 0x8C201104, // 000C GETMET R8 R8 K4 + 0x5C280200, // 000D MOVE R10 R1 + 0x7C200400, // 000E CALL R8 2 + 0x4C240000, // 000F LDNIL R9 + 0x1C241009, // 0010 EQ R9 R8 R9 + 0x78260000, // 0011 JMPF R9 #0013 + 0x80040400, // 0012 RET 1 R2 + 0x38220208, // 0013 SHL R8 K1 R8 + 0x2C240C08, // 0014 AND R9 R6 R8 + 0x74260000, // 0015 JMPT R9 #0017 + 0x80040400, // 0016 RET 1 R2 + 0x5426001F, // 0017 LDINT R9 32 + 0x1C241009, // 0018 EQ R9 R8 R9 + 0x78260001, // 0019 JMPF R9 #001C + 0x50240200, // 001A LDBOOL R9 1 0 + 0x80041200, // 001B RET 1 R9 + 0x24241101, // 001C GT R9 R8 K1 + 0x78260006, // 001D JMPF R9 #0025 + 0x2C240D01, // 001E AND R9 R6 K1 + 0x78260004, // 001F JMPF R9 #0025 + 0x5C240800, // 0020 MOVE R9 R4 + 0x5C280000, // 0021 MOVE R10 R0 + 0x5C2C0E00, // 0022 MOVE R11 R7 + 0x7C240400, // 0023 CALL R9 2 + 0x001C0E09, // 0024 ADD R7 R7 R9 + 0x24241105, // 0025 GT R9 R8 K5 + 0x78260006, // 0026 JMPF R9 #002E + 0x2C240D05, // 0027 AND R9 R6 K5 + 0x78260004, // 0028 JMPF R9 #002E + 0x5C240800, // 0029 MOVE R9 R4 + 0x5C280000, // 002A MOVE R10 R0 + 0x5C2C0E00, // 002B MOVE R11 R7 + 0x7C240400, // 002C CALL R9 2 + 0x001C0E09, // 002D ADD R7 R7 R9 + 0x54260003, // 002E LDINT R9 4 + 0x24241009, // 002F GT R9 R8 R9 + 0x78260007, // 0030 JMPF R9 #0039 + 0x54260003, // 0031 LDINT R9 4 + 0x2C240C09, // 0032 AND R9 R6 R9 + 0x78260004, // 0033 JMPF R9 #0039 + 0x5C240800, // 0034 MOVE R9 R4 + 0x5C280000, // 0035 MOVE R10 R0 + 0x5C2C0E00, // 0036 MOVE R11 R7 + 0x7C240400, // 0037 CALL R9 2 + 0x001C0E09, // 0038 ADD R7 R7 R9 + 0x54260007, // 0039 LDINT R9 8 + 0x24241009, // 003A GT R9 R8 R9 + 0x78260003, // 003B JMPF R9 #0040 + 0x54260007, // 003C LDINT R9 8 + 0x2C240C09, // 003D AND R9 R6 R9 + 0x78260000, // 003E JMPF R9 #0040 + 0x001C0F01, // 003F ADD R7 R7 K1 + 0x6024000C, // 0040 GETGBL R9 G12 + 0x5C280000, // 0041 MOVE R10 R0 + 0x7C240200, // 0042 CALL R9 1 + 0x28240E09, // 0043 GE R9 R7 R9 + 0x78260000, // 0044 JMPF R9 #0046 + 0x80040400, // 0045 RET 1 R2 + 0x54260007, // 0046 LDINT R9 8 + 0x1C241009, // 0047 EQ R9 R8 R9 + 0x78260009, // 0048 JMPF R9 #0053 + 0x94240007, // 0049 GETIDX R9 R0 R7 + 0x6028000C, // 004A GETGBL R10 G12 + 0x882C0706, // 004B GETMBR R11 R3 K6 + 0x7C280200, // 004C CALL R10 1 + 0x1428120A, // 004D LT R10 R9 R10 + 0x782A0002, // 004E JMPF R10 #0052 + 0x88280706, // 004F GETMBR R10 R3 K6 + 0x94281409, // 0050 GETIDX R10 R10 R9 + 0x80041400, // 0051 RET 1 R10 + 0x80040400, // 0052 RET 1 R2 + 0x5426000F, // 0053 LDINT R9 16 + 0x1C241009, // 0054 EQ R9 R8 R9 + 0x78260014, // 0055 JMPF R9 #006B + 0x94240007, // 0056 GETIDX R9 R0 R7 + 0x001C0F01, // 0057 ADD R7 R7 K1 + 0x60280012, // 0058 GETGBL R10 G18 + 0x7C280000, // 0059 CALL R10 0 + 0x582C0002, // 005A LDCONST R11 K2 + 0x14301609, // 005B LT R12 R11 R9 + 0x7832000C, // 005C JMPF R12 #006A + 0x8C301507, // 005D GETMET R12 R10 K7 + 0x5C380A00, // 005E MOVE R14 R5 + 0x5C3C0000, // 005F MOVE R15 R0 + 0x5C400E00, // 0060 MOVE R16 R7 + 0x7C380400, // 0061 CALL R14 2 + 0x7C300400, // 0062 CALL R12 2 + 0x5C340800, // 0063 MOVE R13 R4 + 0x5C380000, // 0064 MOVE R14 R0 + 0x5C3C0E00, // 0065 MOVE R15 R7 + 0x7C340400, // 0066 CALL R13 2 + 0x001C0E0D, // 0067 ADD R7 R7 R13 + 0x002C1701, // 0068 ADD R11 R11 K1 + 0x7001FFF0, // 0069 JMP #005B + 0x80041400, // 006A RET 1 R10 + 0x5C240A00, // 006B MOVE R9 R5 + 0x5C280000, // 006C MOVE R10 R0 + 0x5C2C0E00, // 006D MOVE R11 R7 + 0x7C240400, // 006E CALL R9 2 + 0x80041200, // 006F RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setmember +********************************************************************/ +be_local_closure(class_parameterized_object_setmember, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(setmember), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C0C0108, // 0000 GETMET R3 R0 K8 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x780E0004, // 0003 JMPF R3 #0009 + 0x8C0C0109, // 0004 GETMET R3 R0 K9 + 0x5C140200, // 0005 MOVE R5 R1 + 0x5C180400, // 0006 MOVE R6 R2 + 0x7C0C0600, // 0007 CALL R3 3 + 0x70020007, // 0008 JMP #0011 + 0x600C0018, // 0009 GETGBL R3 G24 + 0x5810000A, // 000A LDCONST R4 K10 + 0x60140005, // 000B GETGBL R5 G5 + 0x5C180000, // 000C MOVE R6 R0 + 0x7C140200, // 000D CALL R5 1 + 0x5C180200, // 000E MOVE R6 R1 + 0x7C0C0600, // 000F CALL R3 3 + 0xB0061603, // 0010 RAISE 1 K11 R3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_param +********************************************************************/ +be_local_closure(class_parameterized_object__validate_param, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_validate_param), + &be_const_str_solidified, + ( &(const binstruction[186]) { /* code */ + 0x8C0C010C, // 0000 GETMET R3 R0 K12 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100604, // 0004 EQ R4 R3 R4 + 0x78120007, // 0005 JMPF R4 #000E + 0x60100018, // 0006 GETGBL R4 G24 + 0x5814000A, // 0007 LDCONST R5 K10 + 0x60180005, // 0008 GETGBL R6 G5 + 0x5C1C0000, // 0009 MOVE R7 R0 + 0x7C180200, // 000A CALL R6 1 + 0x5C1C0200, // 000B MOVE R7 R1 + 0x7C100600, // 000C CALL R4 3 + 0xB0061604, // 000D RAISE 1 K11 R4 + 0xB8121A00, // 000E GETNGBL R4 K13 + 0x8C10090E, // 000F GETMET R4 R4 K14 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C100400, // 0011 CALL R4 2 + 0x78120000, // 0012 JMPF R4 #0014 + 0x80040400, // 0013 RET 1 R2 + 0x4C100000, // 0014 LDNIL R4 + 0x1C100404, // 0015 EQ R4 R2 R4 + 0x78120014, // 0016 JMPF R4 #002C + 0x8C10010F, // 0017 GETMET R4 R0 K15 + 0x5C180600, // 0018 MOVE R6 R3 + 0x581C0010, // 0019 LDCONST R7 K16 + 0x7C100600, // 001A CALL R4 3 + 0x78120000, // 001B JMPF R4 #001D + 0x80040400, // 001C RET 1 R2 + 0x8C10010F, // 001D GETMET R4 R0 K15 + 0x5C180600, // 001E MOVE R6 R3 + 0x581C0011, // 001F LDCONST R7 K17 + 0x7C100600, // 0020 CALL R4 3 + 0x78120004, // 0021 JMPF R4 #0027 + 0x8C100112, // 0022 GETMET R4 R0 K18 + 0x5C180600, // 0023 MOVE R6 R3 + 0x581C0011, // 0024 LDCONST R7 K17 + 0x7C100600, // 0025 CALL R4 3 + 0x80040800, // 0026 RET 1 R4 + 0x60100018, // 0027 GETGBL R4 G24 + 0x58140013, // 0028 LDCONST R5 K19 + 0x5C180200, // 0029 MOVE R6 R1 + 0x7C100400, // 002A CALL R4 2 + 0xB0062804, // 002B RAISE 1 K20 R4 + 0x8C100112, // 002C GETMET R4 R0 K18 + 0x5C180600, // 002D MOVE R6 R3 + 0x581C0015, // 002E LDCONST R7 K21 + 0x58200016, // 002F LDCONST R8 K22 + 0x7C100800, // 0030 CALL R4 4 + 0x1C140917, // 0031 EQ R5 R4 K23 + 0x74160003, // 0032 JMPT R5 #0037 + 0x1C140918, // 0033 EQ R5 R4 K24 + 0x74160001, // 0034 JMPT R5 #0037 + 0x1C140919, // 0035 EQ R5 R4 K25 + 0x78160001, // 0036 JMPF R5 #0039 + 0x58100016, // 0037 LDCONST R4 K22 + 0x70020002, // 0038 JMP #003C + 0x1C14091A, // 0039 EQ R5 R4 K26 + 0x78160000, // 003A JMPF R5 #003C + 0x5810001B, // 003B LDCONST R4 K27 + 0x60140004, // 003C GETGBL R5 G4 + 0x5C180400, // 003D MOVE R6 R2 + 0x7C140200, // 003E CALL R5 1 + 0x2018091C, // 003F NE R6 R4 K28 + 0x781A0031, // 0040 JMPF R6 #0073 + 0x1C180916, // 0041 EQ R6 R4 K22 + 0x781A000A, // 0042 JMPF R6 #004E + 0x1C180B1D, // 0043 EQ R6 R5 K29 + 0x781A0008, // 0044 JMPF R6 #004E + 0xA41A3C00, // 0045 IMPORT R6 K30 + 0x601C0009, // 0046 GETGBL R7 G9 + 0x8C200D1F, // 0047 GETMET R8 R6 K31 + 0x5C280400, // 0048 MOVE R10 R2 + 0x7C200400, // 0049 CALL R8 2 + 0x7C1C0200, // 004A CALL R7 1 + 0x5C080E00, // 004B MOVE R2 R7 + 0x58140016, // 004C LDCONST R5 K22 + 0x70020024, // 004D JMP #0073 + 0x1C18091B, // 004E EQ R6 R4 K27 + 0x781A0018, // 004F JMPF R6 #0069 + 0x1C180B20, // 0050 EQ R6 R5 K32 + 0x781A0006, // 0051 JMPF R6 #0059 + 0x6018000F, // 0052 GETGBL R6 G15 + 0x5C1C0400, // 0053 MOVE R7 R2 + 0x60200015, // 0054 GETGBL R8 G21 + 0x7C180400, // 0055 CALL R6 2 + 0x781A0001, // 0056 JMPF R6 #0059 + 0x5814001B, // 0057 LDCONST R5 K27 + 0x7002000E, // 0058 JMP #0068 + 0x20180B20, // 0059 NE R6 R5 K32 + 0x741A0004, // 005A JMPT R6 #0060 + 0x6018000F, // 005B GETGBL R6 G15 + 0x5C1C0400, // 005C MOVE R7 R2 + 0x60200015, // 005D GETGBL R8 G21 + 0x7C180400, // 005E CALL R6 2 + 0x741A0007, // 005F JMPT R6 #0068 + 0x60180018, // 0060 GETGBL R6 G24 + 0x581C0021, // 0061 LDCONST R7 K33 + 0x5C200200, // 0062 MOVE R8 R1 + 0x5C240800, // 0063 MOVE R9 R4 + 0x5C280A00, // 0064 MOVE R10 R5 + 0x5C2C0400, // 0065 MOVE R11 R2 + 0x7C180A00, // 0066 CALL R6 5 + 0xB0062806, // 0067 RAISE 1 K20 R6 + 0x70020009, // 0068 JMP #0073 + 0x20180805, // 0069 NE R6 R4 R5 + 0x781A0007, // 006A JMPF R6 #0073 + 0x60180018, // 006B GETGBL R6 G24 + 0x581C0021, // 006C LDCONST R7 K33 + 0x5C200200, // 006D MOVE R8 R1 + 0x5C240800, // 006E MOVE R9 R4 + 0x5C280A00, // 006F MOVE R10 R5 + 0x5C2C0400, // 0070 MOVE R11 R2 + 0x7C180A00, // 0071 CALL R6 5 + 0xB0062806, // 0072 RAISE 1 K20 R6 + 0x1C180B16, // 0073 EQ R6 R5 K22 + 0x781A0023, // 0074 JMPF R6 #0099 + 0x8C18010F, // 0075 GETMET R6 R0 K15 + 0x5C200600, // 0076 MOVE R8 R3 + 0x58240022, // 0077 LDCONST R9 K34 + 0x7C180600, // 0078 CALL R6 3 + 0x781A000C, // 0079 JMPF R6 #0087 + 0x8C180112, // 007A GETMET R6 R0 K18 + 0x5C200600, // 007B MOVE R8 R3 + 0x58240022, // 007C LDCONST R9 K34 + 0x7C180600, // 007D CALL R6 3 + 0x141C0406, // 007E LT R7 R2 R6 + 0x781E0006, // 007F JMPF R7 #0087 + 0x601C0018, // 0080 GETGBL R7 G24 + 0x58200023, // 0081 LDCONST R8 K35 + 0x5C240200, // 0082 MOVE R9 R1 + 0x5C280400, // 0083 MOVE R10 R2 + 0x5C2C0C00, // 0084 MOVE R11 R6 + 0x7C1C0800, // 0085 CALL R7 4 + 0xB0062807, // 0086 RAISE 1 K20 R7 + 0x8C18010F, // 0087 GETMET R6 R0 K15 + 0x5C200600, // 0088 MOVE R8 R3 + 0x58240024, // 0089 LDCONST R9 K36 + 0x7C180600, // 008A CALL R6 3 + 0x781A000C, // 008B JMPF R6 #0099 + 0x8C180112, // 008C GETMET R6 R0 K18 + 0x5C200600, // 008D MOVE R8 R3 + 0x58240024, // 008E LDCONST R9 K36 + 0x7C180600, // 008F CALL R6 3 + 0x241C0406, // 0090 GT R7 R2 R6 + 0x781E0006, // 0091 JMPF R7 #0099 + 0x601C0018, // 0092 GETGBL R7 G24 + 0x58200025, // 0093 LDCONST R8 K37 + 0x5C240200, // 0094 MOVE R9 R1 + 0x5C280400, // 0095 MOVE R10 R2 + 0x5C2C0C00, // 0096 MOVE R11 R6 + 0x7C1C0800, // 0097 CALL R7 4 + 0xB0062807, // 0098 RAISE 1 K20 R7 + 0x8C18010F, // 0099 GETMET R6 R0 K15 + 0x5C200600, // 009A MOVE R8 R3 + 0x58240026, // 009B LDCONST R9 K38 + 0x7C180600, // 009C CALL R6 3 + 0x781A001A, // 009D JMPF R6 #00B9 + 0x50180000, // 009E LDBOOL R6 0 0 + 0x8C1C0112, // 009F GETMET R7 R0 K18 + 0x5C240600, // 00A0 MOVE R9 R3 + 0x58280026, // 00A1 LDCONST R10 K38 + 0x7C1C0600, // 00A2 CALL R7 3 + 0x6020000C, // 00A3 GETGBL R8 G12 + 0x5C240E00, // 00A4 MOVE R9 R7 + 0x7C200200, // 00A5 CALL R8 1 + 0x58240002, // 00A6 LDCONST R9 K2 + 0x14281208, // 00A7 LT R10 R9 R8 + 0x782A0006, // 00A8 JMPF R10 #00B0 + 0x94280E09, // 00A9 GETIDX R10 R7 R9 + 0x1C2C040A, // 00AA EQ R11 R2 R10 + 0x782E0001, // 00AB JMPF R11 #00AE + 0x50180200, // 00AC LDBOOL R6 1 0 + 0x70020001, // 00AD JMP #00B0 + 0x00241301, // 00AE ADD R9 R9 K1 + 0x7001FFF6, // 00AF JMP #00A7 + 0x5C280C00, // 00B0 MOVE R10 R6 + 0x742A0006, // 00B1 JMPT R10 #00B9 + 0x60280018, // 00B2 GETGBL R10 G24 + 0x582C0027, // 00B3 LDCONST R11 K39 + 0x5C300200, // 00B4 MOVE R12 R1 + 0x5C340400, // 00B5 MOVE R13 R2 + 0x5C380E00, // 00B6 MOVE R14 R7 + 0x7C280800, // 00B7 CALL R10 4 + 0xB006280A, // 00B8 RAISE 1 K20 R10 + 0x80040400, // 00B9 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_parameterized_object_update, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _resolve_parameter_value +********************************************************************/ +be_local_closure(class_parameterized_object__resolve_parameter_value, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_resolve_parameter_value), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x880C0128, // 0000 GETMBR R3 R0 K40 + 0x8C0C0729, // 0001 GETMET R3 R3 K41 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0011, // 0004 JMPT R3 #0017 + 0x8C0C010C, // 0005 GETMET R3 R0 K12 + 0x5C140200, // 0006 MOVE R5 R1 + 0x7C0C0400, // 0007 CALL R3 2 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120009, // 000A JMPF R4 #0015 + 0x8C10010F, // 000B GETMET R4 R0 K15 + 0x5C180600, // 000C MOVE R6 R3 + 0x581C0011, // 000D LDCONST R7 K17 + 0x7C100600, // 000E CALL R4 3 + 0x78120004, // 000F JMPF R4 #0015 + 0x8C100112, // 0010 GETMET R4 R0 K18 + 0x5C180600, // 0011 MOVE R6 R3 + 0x581C0011, // 0012 LDCONST R7 K17 + 0x7C100600, // 0013 CALL R4 3 + 0x80040800, // 0014 RET 1 R4 + 0x4C100000, // 0015 LDNIL R4 + 0x80040800, // 0016 RET 1 R4 + 0x880C0128, // 0017 GETMBR R3 R0 K40 + 0x940C0601, // 0018 GETIDX R3 R3 R1 + 0x8C10012A, // 0019 GETMET R4 R0 K42 + 0x5C180600, // 001A MOVE R6 R3 + 0x5C1C0200, // 001B MOVE R7 R1 + 0x5C200400, // 001C MOVE R8 R2 + 0x7C100800, // 001D CALL R4 4 + 0x80040800, // 001E RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: constraint_mask +********************************************************************/ +be_local_closure(class_parameterized_object_constraint_mask, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(constraint_mask), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x200C0003, // 0002 NE R3 R0 R3 + 0x780E000F, // 0003 JMPF R3 #0014 + 0x600C000C, // 0004 GETGBL R3 G12 + 0x5C100000, // 0005 MOVE R4 R0 + 0x7C0C0200, // 0006 CALL R3 1 + 0x240C0702, // 0007 GT R3 R3 K2 + 0x780E000A, // 0008 JMPF R3 #0014 + 0x880C0503, // 0009 GETMBR R3 R2 K3 + 0x8C0C0704, // 000A GETMET R3 R3 K4 + 0x5C140200, // 000B MOVE R5 R1 + 0x7C0C0400, // 000C CALL R3 2 + 0x4C100000, // 000D LDNIL R4 + 0x20100604, // 000E NE R4 R3 R4 + 0x78120003, // 000F JMPF R4 #0014 + 0x94100102, // 0010 GETIDX R4 R0 K2 + 0x38160203, // 0011 SHL R5 K1 R3 + 0x2C100805, // 0012 AND R4 R4 R5 + 0x80040800, // 0013 RET 1 R4 + 0x80060400, // 0014 RET 1 K2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: member +********************************************************************/ +be_local_closure(class_parameterized_object_member, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(member), + &be_const_str_solidified, + ( &(const binstruction[58]) { /* code */ + 0x88080128, // 0000 GETMBR R2 R0 K40 + 0x8C080504, // 0001 GETMET R2 R2 K4 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E000D, // 0006 JMPF R3 #0015 + 0x600C0004, // 0007 GETGBL R3 G4 + 0x5C100400, // 0008 MOVE R4 R2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x200C0720, // 000A NE R3 R3 K32 + 0x780E0000, // 000B JMPF R3 #000D + 0x80040400, // 000C RET 1 R2 + 0x8C0C012A, // 000D GETMET R3 R0 K42 + 0x5C140400, // 000E MOVE R5 R2 + 0x5C180200, // 000F MOVE R6 R1 + 0x881C012B, // 0010 GETMBR R7 R0 K43 + 0x881C0F2C, // 0011 GETMBR R7 R7 K44 + 0x7C0C0800, // 0012 CALL R3 4 + 0x80040600, // 0013 RET 1 R3 + 0x70020023, // 0014 JMP #0039 + 0x880C0128, // 0015 GETMBR R3 R0 K40 + 0x8C0C0729, // 0016 GETMET R3 R3 K41 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x780E0002, // 0019 JMPF R3 #001D + 0x4C0C0000, // 001A LDNIL R3 + 0x80040600, // 001B RET 1 R3 + 0x7002001B, // 001C JMP #0039 + 0x8C0C010C, // 001D GETMET R3 R0 K12 + 0x5C140200, // 001E MOVE R5 R1 + 0x7C0C0400, // 001F CALL R3 2 + 0x4C100000, // 0020 LDNIL R4 + 0x20100604, // 0021 NE R4 R3 R4 + 0x7812000D, // 0022 JMPF R4 #0031 + 0x8C10010F, // 0023 GETMET R4 R0 K15 + 0x5C180600, // 0024 MOVE R6 R3 + 0x581C0011, // 0025 LDCONST R7 K17 + 0x7C100600, // 0026 CALL R4 3 + 0x78120005, // 0027 JMPF R4 #002E + 0x8C100112, // 0028 GETMET R4 R0 K18 + 0x5C180600, // 0029 MOVE R6 R3 + 0x581C0011, // 002A LDCONST R7 K17 + 0x7C100600, // 002B CALL R4 3 + 0x80040800, // 002C RET 1 R4 + 0x70020001, // 002D JMP #0030 + 0x4C100000, // 002E LDNIL R4 + 0x80040800, // 002F RET 1 R4 + 0x70020007, // 0030 JMP #0039 + 0x60100018, // 0031 GETGBL R4 G24 + 0x5814000A, // 0032 LDCONST R5 K10 + 0x60180005, // 0033 GETGBL R6 G5 + 0x5C1C0000, // 0034 MOVE R7 R0 + 0x7C180200, // 0035 CALL R6 1 + 0x5C1C0200, // 0036 MOVE R7 R1 + 0x7C100600, // 0037 CALL R4 3 + 0xB0061604, // 0038 RAISE 1 K11 R4 + 0x80000000, // 0039 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_parameterized_object_start, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x8808012B, // 0003 GETMBR R2 R0 K43 + 0x8804052C, // 0004 GETMBR R1 R2 K44 + 0x50080200, // 0005 LDBOOL R2 1 0 + 0x90025A02, // 0006 SETMBR R0 K45 R2 + 0x8808012E, // 0007 GETMBR R2 R0 K46 + 0x4C0C0000, // 0008 LDNIL R3 + 0x20080403, // 0009 NE R2 R2 R3 + 0x780A0000, // 000A JMPF R2 #000C + 0x90025C01, // 000B SETMBR R0 K46 R1 + 0x80040000, // 000C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_parameterized_object_stop, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x90025A01, // 0001 SETMBR R0 K45 R1 + 0x80040000, // 0002 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _init_parameter_values +********************************************************************/ +be_local_closure(class_parameterized_object__init_parameter_values, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_init_parameter_values), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0xA4065E00, // 0000 IMPORT R1 K47 + 0x60080006, // 0001 GETGBL R2 G6 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0026, // 0006 JMPF R3 #002E + 0x8C0C0329, // 0007 GETMET R3 R1 K41 + 0x5C140400, // 0008 MOVE R5 R2 + 0x58180030, // 0009 LDCONST R6 K48 + 0x7C0C0600, // 000A CALL R3 3 + 0x780E001C, // 000B JMPF R3 #0029 + 0x880C0530, // 000C GETMBR R3 R2 K48 + 0x60100010, // 000D GETGBL R4 G16 + 0x8C140731, // 000E GETMET R5 R3 K49 + 0x7C140200, // 000F CALL R5 1 + 0x7C100200, // 0010 CALL R4 1 + 0xA8020013, // 0011 EXBLK 0 #0026 + 0x5C140800, // 0012 MOVE R5 R4 + 0x7C140000, // 0013 CALL R5 0 + 0x88180128, // 0014 GETMBR R6 R0 K40 + 0x8C180D29, // 0015 GETMET R6 R6 K41 + 0x5C200A00, // 0016 MOVE R8 R5 + 0x7C180400, // 0017 CALL R6 2 + 0x741A000B, // 0018 JMPT R6 #0025 + 0x94180605, // 0019 GETIDX R6 R3 R5 + 0x8C1C010F, // 001A GETMET R7 R0 K15 + 0x5C240C00, // 001B MOVE R9 R6 + 0x58280011, // 001C LDCONST R10 K17 + 0x7C1C0600, // 001D CALL R7 3 + 0x781E0005, // 001E JMPF R7 #0025 + 0x881C0128, // 001F GETMBR R7 R0 K40 + 0x8C200112, // 0020 GETMET R8 R0 K18 + 0x5C280C00, // 0021 MOVE R10 R6 + 0x582C0011, // 0022 LDCONST R11 K17 + 0x7C200600, // 0023 CALL R8 3 + 0x981C0A08, // 0024 SETIDX R7 R5 R8 + 0x7001FFEB, // 0025 JMP #0012 + 0x58100032, // 0026 LDCONST R4 K50 + 0xAC100200, // 0027 CATCH R4 1 0 + 0xB0080000, // 0028 RAISE 2 R0 R0 + 0x600C0003, // 0029 GETGBL R3 G3 + 0x5C100400, // 002A MOVE R4 R2 + 0x7C0C0200, // 002B CALL R3 1 + 0x5C080600, // 002C MOVE R2 R3 + 0x7001FFD5, // 002D JMP #0004 + 0x80000000, // 002E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_parameterized_object_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x60080004, // 0003 GETGBL R2 G4 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x20080520, // 0006 NE R2 R2 K32 + 0x780A0000, // 0007 JMPF R2 #0009 + 0xB0062933, // 0008 RAISE 1 K20 K51 + 0x90025601, // 0009 SETMBR R0 K43 R1 + 0x60080013, // 000A GETGBL R2 G19 + 0x7C080000, // 000B CALL R2 0 + 0x90025002, // 000C SETMBR R0 K40 R2 + 0x50080000, // 000D LDBOOL R2 0 0 + 0x90025A02, // 000E SETMBR R0 K45 R2 + 0x8C080134, // 000F GETMET R2 R0 K52 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _fix_time_ms +********************************************************************/ +be_local_closure(class_parameterized_object__fix_time_ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_fix_time_ms), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x8808012B, // 0003 GETMBR R2 R0 K43 + 0x8804052C, // 0004 GETMBR R1 R2 K44 + 0x8808012E, // 0005 GETMBR R2 R0 K46 + 0x4C0C0000, // 0006 LDNIL R3 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0000, // 0008 JMPF R2 #000A + 0x90025C01, // 0009 SETMBR R0 K46 R1 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has_param +********************************************************************/ +be_local_closure(class_parameterized_object_has_param, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(has_param), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C08010C, // 0000 GETMET R2 R0 K12 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x4C0C0000, // 0003 LDNIL R3 + 0x20080403, // 0004 NE R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: == +********************************************************************/ +be_local_closure(class_parameterized_object__X3D_X3D, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_X3D_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0xA40A5E00, // 0000 IMPORT R2 K47 + 0x8C0C0535, // 0001 GETMET R3 R2 K53 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100535, // 0004 GETMET R4 R2 K53 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x1C0C0604, // 0007 EQ R3 R3 R4 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_param +********************************************************************/ +be_local_closure(class_parameterized_object_set_param, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(set_param), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x8C0C0108, // 0000 GETMET R3 R0 K8 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x740E0001, // 0003 JMPT R3 #0006 + 0x500C0000, // 0004 LDBOOL R3 0 0 + 0x80040600, // 0005 RET 1 R3 + 0xA8020008, // 0006 EXBLK 0 #0010 + 0x8C0C0109, // 0007 GETMET R3 R0 K9 + 0x5C140200, // 0008 MOVE R5 R1 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C0C0600, // 000A CALL R3 3 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0xA8040001, // 000C EXBLK 1 1 + 0x80040600, // 000D RET 1 R3 + 0xA8040001, // 000E EXBLK 1 1 + 0x70020006, // 000F JMP #0017 + 0x580C0014, // 0010 LDCONST R3 K20 + 0xAC0C0201, // 0011 CATCH R3 1 1 + 0x70020002, // 0012 JMP #0016 + 0x50100000, // 0013 LDBOOL R4 0 0 + 0x80040800, // 0014 RET 1 R4 + 0x70020000, // 0015 JMP #0017 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_parameterized_object_on_param_changed, /* name */ + be_nested_proto( + 3, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: != +********************************************************************/ +be_local_closure(class_parameterized_object__X21_X3D, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_X21_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x1C080001, // 0000 EQ R2 R0 R1 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x50080001, // 0002 LDBOOL R2 0 1 + 0x50080200, // 0003 LDBOOL R2 1 0 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _set_parameter_value +********************************************************************/ +be_local_closure(class_parameterized_object__set_parameter_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_set_parameter_value), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB80E1A00, // 0000 GETNGBL R3 K13 + 0x8C0C070E, // 0001 GETMET R3 R3 K14 + 0x5C140400, // 0002 MOVE R5 R2 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x8C0C0136, // 0005 GETMET R3 R0 K54 + 0x5C140200, // 0006 MOVE R5 R1 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C0C0600, // 0008 CALL R3 3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x880C0128, // 000A GETMBR R3 R0 K40 + 0x980C0202, // 000B SETIDX R3 R1 R2 + 0x8C0C0137, // 000C GETMET R3 R0 K55 + 0x5C140200, // 000D MOVE R5 R1 + 0x5C180400, // 000E MOVE R6 R2 + 0x7C0C0600, // 000F CALL R3 3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tobool +********************************************************************/ +be_local_closure(class_parameterized_object_tobool, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(tobool), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x50040200, // 0000 LDBOOL R1 1 0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_parameterized_object_tostring, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080038, // 0001 LDCONST R2 K56 + 0x600C0005, // 0002 GETGBL R3 G5 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x7C040400, // 0005 CALL R1 2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resolve_value +********************************************************************/ +be_local_closure(class_parameterized_object_resolve_value, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(resolve_value), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0xB8121A00, // 0000 GETNGBL R4 K13 + 0x8C10090E, // 0001 GETMET R4 R4 K14 + 0x5C180200, // 0002 MOVE R6 R1 + 0x7C100400, // 0003 CALL R4 2 + 0x7812001A, // 0004 JMPF R4 #0020 + 0x8C100339, // 0005 GETMET R4 R1 K57 + 0x5C180400, // 0006 MOVE R6 R2 + 0x5C1C0600, // 0007 MOVE R7 R3 + 0x7C100600, // 0008 CALL R4 3 + 0x4C140000, // 0009 LDNIL R5 + 0x1C140805, // 000A EQ R5 R4 R5 + 0x78160011, // 000B JMPF R5 #001E + 0x8C14010C, // 000C GETMET R5 R0 K12 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C140400, // 000E CALL R5 2 + 0x8C18010F, // 000F GETMET R6 R0 K15 + 0x5C200A00, // 0010 MOVE R8 R5 + 0x58240010, // 0011 LDCONST R9 K16 + 0x7C180600, // 0012 CALL R6 3 + 0x741A0009, // 0013 JMPT R6 #001E + 0x8C18010F, // 0014 GETMET R6 R0 K15 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x58240011, // 0016 LDCONST R9 K17 + 0x7C180600, // 0017 CALL R6 3 + 0x781A0004, // 0018 JMPF R6 #001E + 0x8C180112, // 0019 GETMET R6 R0 K18 + 0x5C200A00, // 001A MOVE R8 R5 + 0x58240011, // 001B LDCONST R9 K17 + 0x7C180600, // 001C CALL R6 3 + 0x5C100C00, // 001D MOVE R4 R6 + 0x80040800, // 001E RET 1 R4 + 0x70020000, // 001F JMP #0021 + 0x80040200, // 0020 RET 1 R1 + 0x80000000, // 0021 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param_value +********************************************************************/ +be_local_closure(class_parameterized_object_get_param_value, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(get_param_value), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C08013A, // 0000 GETMET R2 R0 K58 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x80040400, // 0003 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _get_param_def +********************************************************************/ +be_local_closure(class_parameterized_object__get_param_def, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(_get_param_def), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA40A5E00, // 0000 IMPORT R2 K47 + 0x600C0006, // 0001 GETGBL R3 G6 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x78120010, // 0006 JMPF R4 #0018 + 0x8C100529, // 0007 GETMET R4 R2 K41 + 0x5C180600, // 0008 MOVE R6 R3 + 0x581C0030, // 0009 LDCONST R7 K48 + 0x7C100600, // 000A CALL R4 3 + 0x78120006, // 000B JMPF R4 #0013 + 0x88100730, // 000C GETMBR R4 R3 K48 + 0x8C140929, // 000D GETMET R5 R4 K41 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x7C140400, // 000F CALL R5 2 + 0x78160001, // 0010 JMPF R5 #0013 + 0x94140801, // 0011 GETIDX R5 R4 R1 + 0x80040A00, // 0012 RET 1 R5 + 0x60100003, // 0013 GETGBL R4 G3 + 0x5C140600, // 0014 MOVE R5 R3 + 0x7C100200, // 0015 CALL R4 1 + 0x5C0C0800, // 0016 MOVE R3 R4 + 0x7001FFEB, // 0017 JMP #0004 + 0x4C100000, // 0018 LDNIL R4 + 0x80040800, // 0019 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param +********************************************************************/ +be_local_closure(class_parameterized_object_get_param, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_parameterized_object, /* shared constants */ + be_str_weak(get_param), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x880C0128, // 0000 GETMBR R3 R0 K40 + 0x8C0C0729, // 0001 GETMET R3 R3 K41 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0002, // 0004 JMPF R3 #0008 + 0x880C0128, // 0005 GETMBR R3 R0 K40 + 0x940C0601, // 0006 GETIDX R3 R3 R1 + 0x80040600, // 0007 RET 1 R3 + 0x8C0C010C, // 0008 GETMET R3 R0 K12 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C0C0400, // 000A CALL R3 2 + 0x4C100000, // 000B LDNIL R4 + 0x20100604, // 000C NE R4 R3 R4 + 0x7812000A, // 000D JMPF R4 #0019 + 0x8C10010F, // 000E GETMET R4 R0 K15 + 0x5C180600, // 000F MOVE R6 R3 + 0x581C0011, // 0010 LDCONST R7 K17 + 0x7C100600, // 0011 CALL R4 3 + 0x78120005, // 0012 JMPF R4 #0019 + 0x8C100112, // 0013 GETMET R4 R0 K18 + 0x5C180600, // 0014 MOVE R6 R3 + 0x581C0011, // 0015 LDCONST R7 K17 + 0x5C200400, // 0016 MOVE R8 R2 + 0x7C100800, // 0017 CALL R4 4 + 0x80040800, // 0018 RET 1 R4 + 0x80040400, // 0019 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: parameterized_object +********************************************************************/ +be_local_class(parameterized_object, + 4, + NULL, + be_nested_map(30, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(constraint_find, 10), be_const_static_closure(class_parameterized_object_constraint_find_closure) }, + { be_const_key_weak(setmember, 20), be_const_closure(class_parameterized_object_setmember_closure) }, + { be_const_key_weak(get_param, -1), be_const_closure(class_parameterized_object_get_param_closure) }, + { be_const_key_weak(values, -1), be_const_var(0) }, + { be_const_key_weak(update, -1), be_const_closure(class_parameterized_object_update_closure) }, + { be_const_key_weak(_TYPES, 18), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(7, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(int), + be_nested_str_weak(string), + be_nested_str_weak(bytes), + be_nested_str_weak(bool), + be_nested_str_weak(any), + be_nested_str_weak(instance), + be_nested_str_weak(function), + })) ) } )) }, + { be_const_key_weak(_resolve_parameter_value, -1), be_const_closure(class_parameterized_object__resolve_parameter_value_closure) }, + { be_const_key_weak(constraint_mask, 21), be_const_static_closure(class_parameterized_object_constraint_mask_closure) }, + { be_const_key_weak(_get_param_def, -1), be_const_closure(class_parameterized_object__get_param_def_closure) }, + { be_const_key_weak(get_param_value, -1), be_const_closure(class_parameterized_object_get_param_value_closure) }, + { be_const_key_weak(_MASK, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(6, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(min), + be_nested_str_weak(max), + be_nested_str_weak(default), + be_nested_str_weak(type), + be_nested_str_weak(enum), + be_nested_str_weak(nillable), + })) ) } )) }, + { be_const_key_weak(start, -1), be_const_closure(class_parameterized_object_start_closure) }, + { be_const_key_weak(is_running, -1), be_const_var(3) }, + { be_const_key_weak(_init_parameter_values, -1), be_const_closure(class_parameterized_object__init_parameter_values_closure) }, + { be_const_key_weak(has_param, 13), be_const_closure(class_parameterized_object_has_param_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_parameterized_object_init_closure) }, + { be_const_key_weak(_fix_time_ms, -1), be_const_closure(class_parameterized_object__fix_time_ms_closure) }, + { be_const_key_weak(stop, 14), be_const_closure(class_parameterized_object_stop_closure) }, + { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_parameterized_object__X3D_X3D_closure) }, + { be_const_key_weak(set_param, -1), be_const_closure(class_parameterized_object_set_param_closure) }, + { be_const_key_weak(_X21_X3D, 26), be_const_closure(class_parameterized_object__X21_X3D_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_parameterized_object_on_param_changed_closure) }, + { be_const_key_weak(_set_parameter_value, -1), be_const_closure(class_parameterized_object__set_parameter_value_closure) }, + { be_const_key_weak(engine, -1), be_const_var(1) }, + { be_const_key_weak(tobool, -1), be_const_closure(class_parameterized_object_tobool_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_parameterized_object_tostring_closure) }, + { be_const_key_weak(member, 12), be_const_closure(class_parameterized_object_member_closure) }, + { be_const_key_weak(start_time, 9), be_const_var(2) }, + { be_const_key_weak(_validate_param, 8), be_const_closure(class_parameterized_object__validate_param_closure) }, + { be_const_key_weak(resolve_value, 2), be_const_closure(class_parameterized_object_resolve_value_closure) }, + })), + be_str_weak(parameterized_object) +); // compact class 'AnimationEngine' ktab size: 90, total: 211 (saved 968 bytes) static const bvalue be_ktab_class_AnimationEngine[90] = { /* K0 */ be_nested_str_weak(is_running), @@ -9891,2382 +13032,6 @@ be_local_class(AnimationEngine, be_str_weak(AnimationEngine) ); -/******************************************************************** -** Solidified function: pulsating_animation -********************************************************************/ -be_local_closure(pulsating_animation, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(breathe_animation), - /* K2 */ be_nested_str_weak(curve_factor), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(period), - }), - be_str_weak(pulsating_animation), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A03E7, // 0005 LDINT R2 1000 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bounce -********************************************************************/ -be_local_closure(bounce, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - }), - be_str_weak(bounce), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0008, // 0004 LDINT R2 9 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sine_osc -********************************************************************/ -be_local_closure(sine_osc, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - }), - be_str_weak(sine_osc), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0004, // 0004 LDINT R2 5 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'EventManager' ktab size: 30, total: 61 (saved 248 bytes) -static const bvalue be_ktab_class_EventManager[30] = { - /* K0 */ be_nested_str_weak(event_name), - /* K1 */ be_nested_str_weak(_X2A), - /* K2 */ be_nested_str_weak(global_handlers), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_nested_str_weak(handlers), - /* K6 */ be_nested_str_weak(set_active), - /* K7 */ be_nested_str_weak(stop_iteration), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(get_info), - /* K10 */ be_nested_str_weak(keys), - /* K11 */ be_nested_str_weak(event_queue), - /* K12 */ be_nested_str_weak(is_processing), - /* K13 */ be_nested_str_weak(clear), - /* K14 */ be_const_int(1), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(priority), - /* K17 */ be_nested_str_weak(animation), - /* K18 */ be_nested_str_weak(event_handler), - /* K19 */ be_nested_str_weak(_sort_handlers), - /* K20 */ be_nested_str_weak(contains), - /* K21 */ be_nested_str_weak(name), - /* K22 */ be_nested_str_weak(data), - /* K23 */ be_nested_str_weak(is_active), - /* K24 */ be_nested_str_weak(execute), - /* K25 */ be_nested_str_weak(Event_X20processing_X20error_X3A), - /* K26 */ be_nested_str_weak(_process_queued_events), - /* K27 */ be_nested_str_weak(size), - /* K28 */ be_nested_str_weak(pop), - /* K29 */ be_nested_str_weak(trigger_event), -}; - - -extern const bclass be_class_EventManager; - -/******************************************************************** -** Solidified function: unregister_handler -********************************************************************/ -be_local_closure(class_EventManager_unregister_handler, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(unregister_handler), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x1C080501, // 0001 EQ R2 R2 K1 - 0x780A000B, // 0002 JMPF R2 #000F - 0x88080102, // 0003 GETMBR R2 R0 K2 - 0x8C080503, // 0004 GETMET R2 R2 K3 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C0102, // 000A GETMBR R3 R0 K2 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x7002000F, // 000E JMP #001F - 0x88080105, // 000F GETMBR R2 R0 K5 - 0x8C080503, // 0010 GETMET R2 R2 K3 - 0x88100300, // 0011 GETMBR R4 R1 K0 - 0x7C080400, // 0012 CALL R2 2 - 0x4C0C0000, // 0013 LDNIL R3 - 0x200C0403, // 0014 NE R3 R2 R3 - 0x780E0008, // 0015 JMPF R3 #001F - 0x8C0C0503, // 0016 GETMET R3 R2 K3 - 0x5C140200, // 0017 MOVE R5 R1 - 0x7C0C0400, // 0018 CALL R3 2 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120002, // 001B JMPF R4 #001F - 0x8C100504, // 001C GETMET R4 R2 K4 - 0x5C180600, // 001D MOVE R6 R3 - 0x7C100400, // 001E CALL R4 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_event_active -********************************************************************/ -be_local_closure(class_EventManager_set_event_active, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(set_event_active), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x880C0105, // 0000 GETMBR R3 R0 K5 - 0x8C0C0703, // 0001 GETMET R3 R3 K3 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x7812000C, // 0006 JMPF R4 #0014 - 0x60100010, // 0007 GETGBL R4 G16 - 0x5C140600, // 0008 MOVE R5 R3 - 0x7C100200, // 0009 CALL R4 1 - 0xA8020005, // 000A EXBLK 0 #0011 - 0x5C140800, // 000B MOVE R5 R4 - 0x7C140000, // 000C CALL R5 0 - 0x8C180B06, // 000D GETMET R6 R5 K6 - 0x5C200400, // 000E MOVE R8 R2 - 0x7C180400, // 000F CALL R6 2 - 0x7001FFF9, // 0010 JMP #000B - 0x58100007, // 0011 LDCONST R4 K7 - 0xAC100200, // 0012 CATCH R4 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_handlers -********************************************************************/ -be_local_closure(class_EventManager_get_handlers, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(get_handlers), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x600C0010, // 0002 GETGBL R3 G16 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA8020006, // 0005 EXBLK 0 #000D - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x8C140508, // 0008 GETMET R5 R2 K8 - 0x8C1C0909, // 0009 GETMET R7 R4 K9 - 0x7C1C0200, // 000A CALL R7 1 - 0x7C140400, // 000B CALL R5 2 - 0x7001FFF8, // 000C JMP #0006 - 0x580C0007, // 000D LDCONST R3 K7 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x880C0105, // 0010 GETMBR R3 R0 K5 - 0x8C0C0703, // 0011 GETMET R3 R3 K3 - 0x5C140200, // 0012 MOVE R5 R1 - 0x7C0C0400, // 0013 CALL R3 2 - 0x4C100000, // 0014 LDNIL R4 - 0x20100604, // 0015 NE R4 R3 R4 - 0x7812000D, // 0016 JMPF R4 #0025 - 0x60100010, // 0017 GETGBL R4 G16 - 0x5C140600, // 0018 MOVE R5 R3 - 0x7C100200, // 0019 CALL R4 1 - 0xA8020006, // 001A EXBLK 0 #0022 - 0x5C140800, // 001B MOVE R5 R4 - 0x7C140000, // 001C CALL R5 0 - 0x8C180508, // 001D GETMET R6 R2 K8 - 0x8C200B09, // 001E GETMET R8 R5 K9 - 0x7C200200, // 001F CALL R8 1 - 0x7C180400, // 0020 CALL R6 2 - 0x7001FFF8, // 0021 JMP #001B - 0x58100007, // 0022 LDCONST R4 K7 - 0xAC100200, // 0023 CATCH R4 1 0 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x80040400, // 0025 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_registered_events -********************************************************************/ -be_local_closure(class_EventManager_get_registered_events, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(get_registered_events), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0105, // 0003 GETMBR R3 R0 K5 - 0x8C0C070A, // 0004 GETMET R3 R3 K10 - 0x7C0C0200, // 0005 CALL R3 1 - 0x7C080200, // 0006 CALL R2 1 - 0xA8020005, // 0007 EXBLK 0 #000E - 0x5C0C0400, // 0008 MOVE R3 R2 - 0x7C0C0000, // 0009 CALL R3 0 - 0x8C100308, // 000A GETMET R4 R1 K8 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0x7001FFF9, // 000D JMP #0008 - 0x58080007, // 000E LDCONST R2 K7 - 0xAC080200, // 000F CATCH R2 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x80040200, // 0011 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_EventManager_init, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x90020A01, // 0002 SETMBR R0 K5 R1 - 0x60040012, // 0003 GETGBL R1 G18 - 0x7C040000, // 0004 CALL R1 0 - 0x90020401, // 0005 SETMBR R0 K2 R1 - 0x60040012, // 0006 GETGBL R1 G18 - 0x7C040000, // 0007 CALL R1 0 - 0x90021601, // 0008 SETMBR R0 K11 R1 - 0x50040000, // 0009 LDBOOL R1 0 0 - 0x90021801, // 000A SETMBR R0 K12 R1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear_all_handlers -********************************************************************/ -be_local_closure(class_EventManager_clear_all_handlers, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(clear_all_handlers), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040105, // 0000 GETMBR R1 R0 K5 - 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C04030D, // 0004 GETMET R1 R1 K13 - 0x7C040200, // 0005 CALL R1 1 - 0x8804010B, // 0006 GETMBR R1 R0 K11 - 0x8C04030D, // 0007 GETMET R1 R1 K13 - 0x7C040200, // 0008 CALL R1 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sort_handlers -********************************************************************/ -be_local_closure(class_EventManager__sort_handlers, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(_sort_handlers), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x60080010, // 0000 GETGBL R2 G16 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x040C070E, // 0004 SUB R3 R3 K14 - 0x400E1C03, // 0005 CONNECT R3 K14 R3 - 0x7C080200, // 0006 CALL R2 1 - 0xA8020012, // 0007 EXBLK 0 #001B - 0x5C0C0400, // 0008 MOVE R3 R2 - 0x7C0C0000, // 0009 CALL R3 0 - 0x94100203, // 000A GETIDX R4 R1 R3 - 0x5C140600, // 000B MOVE R5 R3 - 0x24180B0F, // 000C GT R6 R5 K15 - 0x781A000A, // 000D JMPF R6 #0019 - 0x04180B0E, // 000E SUB R6 R5 K14 - 0x94180206, // 000F GETIDX R6 R1 R6 - 0x88180D10, // 0010 GETMBR R6 R6 K16 - 0x881C0910, // 0011 GETMBR R7 R4 K16 - 0x14180C07, // 0012 LT R6 R6 R7 - 0x781A0004, // 0013 JMPF R6 #0019 - 0x04180B0E, // 0014 SUB R6 R5 K14 - 0x94180206, // 0015 GETIDX R6 R1 R6 - 0x98040A06, // 0016 SETIDX R1 R5 R6 - 0x04140B0E, // 0017 SUB R5 R5 K14 - 0x7001FFF2, // 0018 JMP #000C - 0x98040A04, // 0019 SETIDX R1 R5 R4 - 0x7001FFEC, // 001A JMP #0008 - 0x58080007, // 001B LDCONST R2 K7 - 0xAC080200, // 001C CATCH R2 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_handler -********************************************************************/ -be_local_closure(class_EventManager_register_handler, /* name */ - be_nested_proto( - 13, /* nstack */ - 6, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(register_handler), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xB81A2200, // 0000 GETNGBL R6 K17 - 0x8C180D12, // 0001 GETMET R6 R6 K18 - 0x5C200200, // 0002 MOVE R8 R1 - 0x5C240400, // 0003 MOVE R9 R2 - 0x5C280600, // 0004 MOVE R10 R3 - 0x5C2C0800, // 0005 MOVE R11 R4 - 0x5C300A00, // 0006 MOVE R12 R5 - 0x7C180C00, // 0007 CALL R6 6 - 0x1C1C0301, // 0008 EQ R7 R1 K1 - 0x781E0007, // 0009 JMPF R7 #0012 - 0x881C0102, // 000A GETMBR R7 R0 K2 - 0x8C1C0F08, // 000B GETMET R7 R7 K8 - 0x5C240C00, // 000C MOVE R9 R6 - 0x7C1C0400, // 000D CALL R7 2 - 0x8C1C0113, // 000E GETMET R7 R0 K19 - 0x88240102, // 000F GETMBR R9 R0 K2 - 0x7C1C0400, // 0010 CALL R7 2 - 0x70020011, // 0011 JMP #0024 - 0x881C0105, // 0012 GETMBR R7 R0 K5 - 0x8C1C0F14, // 0013 GETMET R7 R7 K20 - 0x5C240200, // 0014 MOVE R9 R1 - 0x7C1C0400, // 0015 CALL R7 2 - 0x741E0003, // 0016 JMPT R7 #001B - 0x881C0105, // 0017 GETMBR R7 R0 K5 - 0x60200012, // 0018 GETGBL R8 G18 - 0x7C200000, // 0019 CALL R8 0 - 0x981C0208, // 001A SETIDX R7 R1 R8 - 0x881C0105, // 001B GETMBR R7 R0 K5 - 0x941C0E01, // 001C GETIDX R7 R7 R1 - 0x8C1C0F08, // 001D GETMET R7 R7 K8 - 0x5C240C00, // 001E MOVE R9 R6 - 0x7C1C0400, // 001F CALL R7 2 - 0x8C1C0113, // 0020 GETMET R7 R0 K19 - 0x88240105, // 0021 GETMBR R9 R0 K5 - 0x94241201, // 0022 GETIDX R9 R9 R1 - 0x7C1C0400, // 0023 CALL R7 2 - 0x80040C00, // 0024 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: trigger_event -********************************************************************/ -be_local_closure(class_EventManager_trigger_event, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(trigger_event), - &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ - 0x880C010C, // 0000 GETMBR R3 R0 K12 - 0x780E0007, // 0001 JMPF R3 #000A - 0x880C010B, // 0002 GETMBR R3 R0 K11 - 0x8C0C0708, // 0003 GETMET R3 R3 K8 - 0x60140013, // 0004 GETGBL R5 G19 - 0x7C140000, // 0005 CALL R5 0 - 0x98162A01, // 0006 SETIDX R5 K21 R1 - 0x98162C02, // 0007 SETIDX R5 K22 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80000600, // 0009 RET 0 - 0x500C0200, // 000A LDBOOL R3 1 0 - 0x90021803, // 000B SETMBR R0 K12 R3 - 0xA8020029, // 000C EXBLK 0 #0037 - 0x600C0010, // 000D GETGBL R3 G16 - 0x88100102, // 000E GETMBR R4 R0 K2 - 0x7C0C0200, // 000F CALL R3 1 - 0xA802000A, // 0010 EXBLK 0 #001C - 0x5C100600, // 0011 MOVE R4 R3 - 0x7C100000, // 0012 CALL R4 0 - 0x88140917, // 0013 GETMBR R5 R4 K23 - 0x78160005, // 0014 JMPF R5 #001B - 0x8C140918, // 0015 GETMET R5 R4 K24 - 0x601C0013, // 0016 GETGBL R7 G19 - 0x7C1C0000, // 0017 CALL R7 0 - 0x981E0001, // 0018 SETIDX R7 K0 R1 - 0x981E2C02, // 0019 SETIDX R7 K22 R2 - 0x7C140400, // 001A CALL R5 2 - 0x7001FFF4, // 001B JMP #0011 - 0x580C0007, // 001C LDCONST R3 K7 - 0xAC0C0200, // 001D CATCH R3 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x880C0105, // 001F GETMBR R3 R0 K5 - 0x8C0C0703, // 0020 GETMET R3 R3 K3 - 0x5C140200, // 0021 MOVE R5 R1 - 0x7C0C0400, // 0022 CALL R3 2 - 0x4C100000, // 0023 LDNIL R4 - 0x20100604, // 0024 NE R4 R3 R4 - 0x7812000E, // 0025 JMPF R4 #0035 - 0x60100010, // 0026 GETGBL R4 G16 - 0x5C140600, // 0027 MOVE R5 R3 - 0x7C100200, // 0028 CALL R4 1 - 0xA8020007, // 0029 EXBLK 0 #0032 - 0x5C140800, // 002A MOVE R5 R4 - 0x7C140000, // 002B CALL R5 0 - 0x88180B17, // 002C GETMBR R6 R5 K23 - 0x781A0002, // 002D JMPF R6 #0031 - 0x8C180B18, // 002E GETMET R6 R5 K24 - 0x5C200400, // 002F MOVE R8 R2 - 0x7C180400, // 0030 CALL R6 2 - 0x7001FFF7, // 0031 JMP #002A - 0x58100007, // 0032 LDCONST R4 K7 - 0xAC100200, // 0033 CATCH R4 1 0 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0xA8040001, // 0035 EXBLK 1 1 - 0x70020008, // 0036 JMP #0040 - 0xAC0C0002, // 0037 CATCH R3 0 2 - 0x70020005, // 0038 JMP #003F - 0x60140001, // 0039 GETGBL R5 G1 - 0x58180019, // 003A LDCONST R6 K25 - 0x5C1C0600, // 003B MOVE R7 R3 - 0x5C200800, // 003C MOVE R8 R4 - 0x7C140600, // 003D CALL R5 3 - 0x70020000, // 003E JMP #0040 - 0xB0080000, // 003F RAISE 2 R0 R0 - 0x500C0000, // 0040 LDBOOL R3 0 0 - 0x90021803, // 0041 SETMBR R0 K12 R3 - 0x8C0C011A, // 0042 GETMET R3 R0 K26 - 0x7C0C0200, // 0043 CALL R3 1 - 0x80000000, // 0044 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_queued_events -********************************************************************/ -be_local_closure(class_EventManager__process_queued_events, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_EventManager, /* shared constants */ - be_str_weak(_process_queued_events), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8804010B, // 0000 GETMBR R1 R0 K11 - 0x8C04031B, // 0001 GETMET R1 R1 K27 - 0x7C040200, // 0002 CALL R1 1 - 0x2404030F, // 0003 GT R1 R1 K15 - 0x78060008, // 0004 JMPF R1 #000E - 0x8804010B, // 0005 GETMBR R1 R0 K11 - 0x8C04031C, // 0006 GETMET R1 R1 K28 - 0x580C000F, // 0007 LDCONST R3 K15 - 0x7C040400, // 0008 CALL R1 2 - 0x8C08011D, // 0009 GETMET R2 R0 K29 - 0x94100315, // 000A GETIDX R4 R1 K21 - 0x94140316, // 000B GETIDX R5 R1 K22 - 0x7C080600, // 000C CALL R2 3 - 0x7001FFF1, // 000D JMP #0000 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: EventManager -********************************************************************/ -be_local_class(EventManager, - 4, - NULL, - be_nested_map(14, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(unregister_handler, -1), be_const_closure(class_EventManager_unregister_handler_closure) }, - { be_const_key_weak(set_event_active, -1), be_const_closure(class_EventManager_set_event_active_closure) }, - { be_const_key_weak(handlers, -1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_EventManager_init_closure) }, - { be_const_key_weak(trigger_event, -1), be_const_closure(class_EventManager_trigger_event_closure) }, - { be_const_key_weak(get_handlers, 3), be_const_closure(class_EventManager_get_handlers_closure) }, - { be_const_key_weak(clear_all_handlers, -1), be_const_closure(class_EventManager_clear_all_handlers_closure) }, - { be_const_key_weak(event_queue, -1), be_const_var(2) }, - { be_const_key_weak(_sort_handlers, -1), be_const_closure(class_EventManager__sort_handlers_closure) }, - { be_const_key_weak(is_processing, 7), be_const_var(3) }, - { be_const_key_weak(global_handlers, -1), be_const_var(1) }, - { be_const_key_weak(register_handler, -1), be_const_closure(class_EventManager_register_handler_closure) }, - { be_const_key_weak(get_registered_events, 4), be_const_closure(class_EventManager_get_registered_events_closure) }, - { be_const_key_weak(_process_queued_events, -1), be_const_closure(class_EventManager__process_queued_events_closure) }, - })), - be_str_weak(EventManager) -); - -/******************************************************************** -** Solidified function: elastic -********************************************************************/ -be_local_closure(elastic, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - }), - be_str_weak(elastic), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0007, // 0004 LDINT R2 8 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: wave_rainbow_sine -********************************************************************/ -be_local_closure(wave_rainbow_sine, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(wave_animation), - /* K2 */ be_nested_str_weak(rich_palette_color), - /* K3 */ be_nested_str_weak(colors), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(color), - /* K10 */ be_nested_str_weak(wave_type), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(frequency), - /* K13 */ be_nested_str_weak(wave_speed), - }), - be_str_weak(wave_rainbow_sine), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x5C100000, // 0006 MOVE R4 R0 - 0x7C080400, // 0007 CALL R2 2 - 0xB80E0000, // 0008 GETNGBL R3 K0 - 0x880C0704, // 0009 GETMBR R3 R3 K4 - 0x900A0603, // 000A SETMBR R2 K3 R3 - 0x540E1387, // 000B LDINT R3 5000 - 0x900A0A03, // 000C SETMBR R2 K5 R3 - 0x900A0D07, // 000D SETMBR R2 K6 K7 - 0x540E00FE, // 000E LDINT R3 255 - 0x900A1003, // 000F SETMBR R2 K8 R3 - 0x90061202, // 0010 SETMBR R1 K9 R2 - 0x9006150B, // 0011 SETMBR R1 K10 K11 - 0x540E001F, // 0012 LDINT R3 32 - 0x90061803, // 0013 SETMBR R1 K12 R3 - 0x540E0031, // 0014 LDINT R3 50 - 0x90061A03, // 0015 SETMBR R1 K13 R3 - 0x80040200, // 0016 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -extern const bclass be_class_parameterized_object; -// compact class 'parameterized_object' ktab size: 59, total: 123 (saved 512 bytes) -static const bvalue be_ktab_class_parameterized_object[59] = { - /* K0 */ be_const_class(be_class_parameterized_object), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(_MASK), - /* K4 */ be_nested_str_weak(find), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(_TYPES), - /* K7 */ be_nested_str_weak(push), - /* K8 */ be_nested_str_weak(has_param), - /* K9 */ be_nested_str_weak(_set_parameter_value), - /* K10 */ be_nested_str_weak(_X27_X25s_X27_X20object_X20has_X20no_X20attribute_X20_X27_X25s_X27), - /* K11 */ be_nested_str_weak(attribute_error), - /* K12 */ be_nested_str_weak(_get_param_def), - /* K13 */ be_nested_str_weak(animation), - /* K14 */ be_nested_str_weak(is_value_provider), - /* K15 */ be_nested_str_weak(constraint_mask), - /* K16 */ be_nested_str_weak(nillable), - /* K17 */ be_nested_str_weak(default), - /* K18 */ be_nested_str_weak(constraint_find), - /* K19 */ be_nested_str_weak(_X27_X25s_X27_X20does_X20not_X20accept_X20nil_X20values), - /* K20 */ be_nested_str_weak(value_error), - /* K21 */ be_nested_str_weak(type), - /* K22 */ be_nested_str_weak(int), - /* K23 */ be_nested_str_weak(time), - /* K24 */ be_nested_str_weak(percentage), - /* K25 */ be_nested_str_weak(color), - /* K26 */ be_nested_str_weak(palette), - /* K27 */ be_nested_str_weak(bytes), - /* K28 */ be_nested_str_weak(any), - /* K29 */ be_nested_str_weak(real), - /* K30 */ be_nested_str_weak(math), - /* K31 */ be_nested_str_weak(round), - /* K32 */ be_nested_str_weak(instance), - /* K33 */ be_nested_str_weak(_X27_X25s_X27_X20expects_X20type_X20_X27_X25s_X27_X20but_X20got_X20_X27_X25s_X27_X20_X28value_X3A_X20_X25s_X29), - /* K34 */ be_nested_str_weak(min), - /* K35 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20below_X20minimum_X20_X25s), - /* K36 */ be_nested_str_weak(max), - /* K37 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20above_X20maximum_X20_X25s), - /* K38 */ be_nested_str_weak(enum), - /* K39 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20not_X20in_X20allowed_X20values_X20_X25s), - /* K40 */ be_nested_str_weak(values), - /* K41 */ be_nested_str_weak(contains), - /* K42 */ be_nested_str_weak(resolve_value), - /* K43 */ be_nested_str_weak(engine), - /* K44 */ be_nested_str_weak(time_ms), - /* K45 */ be_nested_str_weak(is_running), - /* K46 */ be_nested_str_weak(start_time), - /* K47 */ be_nested_str_weak(introspect), - /* K48 */ be_nested_str_weak(PARAMS), - /* K49 */ be_nested_str_weak(keys), - /* K50 */ be_nested_str_weak(stop_iteration), - /* K51 */ be_nested_str_weak(missing_X20engine_X20parameter), - /* K52 */ be_nested_str_weak(_init_parameter_values), - /* K53 */ be_nested_str_weak(toptr), - /* K54 */ be_nested_str_weak(_validate_param), - /* K55 */ be_nested_str_weak(on_param_changed), - /* K56 */ be_nested_str_weak(_X3Cinstance_X3A_X20_X25s_X3E), - /* K57 */ be_nested_str_weak(produce_value), - /* K58 */ be_nested_str_weak(member), -}; - - -extern const bclass be_class_parameterized_object; - -/******************************************************************** -** Solidified function: constraint_find -********************************************************************/ -be_local_closure(class_parameterized_object_constraint_find, /* name */ - be_nested_proto( - 17, /* nstack */ - 3, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(2), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(get), - }), - be_str_weak(_skip_typed_value), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x6008000C, // 0000 GETGBL R2 G12 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x28080202, // 0003 GE R2 R1 R2 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80060000, // 0005 RET 1 K0 - 0x94080001, // 0006 GETIDX R2 R0 R1 - 0x540E0005, // 0007 LDINT R3 6 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0001, // 0009 JMPF R3 #000C - 0x80060200, // 000A RET 1 K1 - 0x70020021, // 000B JMP #002E - 0x540E0004, // 000C LDINT R3 5 - 0x1C0C0403, // 000D EQ R3 R2 R3 - 0x780E0001, // 000E JMPF R3 #0011 - 0x80060400, // 000F RET 1 K2 - 0x7002001C, // 0010 JMP #002E - 0x1C0C0500, // 0011 EQ R3 R2 K0 - 0x780E0001, // 0012 JMPF R3 #0015 - 0x80060400, // 0013 RET 1 K2 - 0x70020018, // 0014 JMP #002E - 0x1C0C0501, // 0015 EQ R3 R2 K1 - 0x780E0001, // 0016 JMPF R3 #0019 - 0x80060600, // 0017 RET 1 K3 - 0x70020014, // 0018 JMP #002E - 0x1C0C0502, // 0019 EQ R3 R2 K2 - 0x780E0002, // 001A JMPF R3 #001E - 0x540E0004, // 001B LDINT R3 5 - 0x80040600, // 001C RET 1 R3 - 0x7002000F, // 001D JMP #002E - 0x1C0C0503, // 001E EQ R3 R2 K3 - 0x780E0004, // 001F JMPF R3 #0025 - 0x000C0301, // 0020 ADD R3 R1 K1 - 0x940C0003, // 0021 GETIDX R3 R0 R3 - 0x000E0403, // 0022 ADD R3 K2 R3 - 0x80040600, // 0023 RET 1 R3 - 0x70020008, // 0024 JMP #002E - 0x540E0003, // 0025 LDINT R3 4 - 0x1C0C0403, // 0026 EQ R3 R2 R3 - 0x780E0005, // 0027 JMPF R3 #002E - 0x8C0C0104, // 0028 GETMET R3 R0 K4 - 0x00140301, // 0029 ADD R5 R1 K1 - 0x58180002, // 002A LDCONST R6 K2 - 0x7C0C0600, // 002B CALL R3 3 - 0x000E0603, // 002C ADD R3 K3 R3 - 0x80040600, // 002D RET 1 R3 - 0x80060000, // 002E RET 1 K0 - }) - ), - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(1), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(asstring), - }), - be_str_weak(_read_typed_value), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0x6008000C, // 0000 GETGBL R2 G12 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x28080202, // 0003 GE R2 R1 R2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x4C080000, // 0005 LDNIL R2 - 0x80040400, // 0006 RET 1 R2 - 0x94080001, // 0007 GETIDX R2 R0 R1 - 0x00040300, // 0008 ADD R1 R1 K0 - 0x540E0005, // 0009 LDINT R3 6 - 0x1C0C0403, // 000A EQ R3 R2 R3 - 0x780E0002, // 000B JMPF R3 #000F - 0x4C0C0000, // 000C LDNIL R3 - 0x80040600, // 000D RET 1 R3 - 0x70020041, // 000E JMP #0051 - 0x540E0004, // 000F LDINT R3 5 - 0x1C0C0403, // 0010 EQ R3 R2 R3 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x940C0001, // 0012 GETIDX R3 R0 R1 - 0x200C0701, // 0013 NE R3 R3 K1 - 0x80040600, // 0014 RET 1 R3 - 0x7002003A, // 0015 JMP #0051 - 0x1C0C0501, // 0016 EQ R3 R2 K1 - 0x780E0009, // 0017 JMPF R3 #0022 - 0x940C0001, // 0018 GETIDX R3 R0 R1 - 0x5412007E, // 0019 LDINT R4 127 - 0x24100604, // 001A GT R4 R3 R4 - 0x78120002, // 001B JMPF R4 #001F - 0x541200FF, // 001C LDINT R4 256 - 0x04100604, // 001D SUB R4 R3 R4 - 0x70020000, // 001E JMP #0020 - 0x5C100600, // 001F MOVE R4 R3 - 0x80040800, // 0020 RET 1 R4 - 0x7002002E, // 0021 JMP #0051 - 0x1C0C0500, // 0022 EQ R3 R2 K0 - 0x780E000C, // 0023 JMPF R3 #0031 - 0x8C0C0102, // 0024 GETMET R3 R0 K2 - 0x5C140200, // 0025 MOVE R5 R1 - 0x58180003, // 0026 LDCONST R6 K3 - 0x7C0C0600, // 0027 CALL R3 3 - 0x54127FFE, // 0028 LDINT R4 32767 - 0x24100604, // 0029 GT R4 R3 R4 - 0x78120002, // 002A JMPF R4 #002E - 0x5412FFFF, // 002B LDINT R4 65536 - 0x04100604, // 002C SUB R4 R3 R4 - 0x70020000, // 002D JMP #002F - 0x5C100600, // 002E MOVE R4 R3 - 0x80040800, // 002F RET 1 R4 - 0x7002001F, // 0030 JMP #0051 - 0x1C0C0503, // 0031 EQ R3 R2 K3 - 0x780E0005, // 0032 JMPF R3 #0039 - 0x8C0C0102, // 0033 GETMET R3 R0 K2 - 0x5C140200, // 0034 MOVE R5 R1 - 0x541A0003, // 0035 LDINT R6 4 - 0x7C0C0600, // 0036 CALL R3 3 - 0x80040600, // 0037 RET 1 R3 - 0x70020017, // 0038 JMP #0051 - 0x1C0C0504, // 0039 EQ R3 R2 K4 - 0x780E0008, // 003A JMPF R3 #0044 - 0x940C0001, // 003B GETIDX R3 R0 R1 - 0x00100300, // 003C ADD R4 R1 K0 - 0x00140203, // 003D ADD R5 R1 R3 - 0x40100805, // 003E CONNECT R4 R4 R5 - 0x94100004, // 003F GETIDX R4 R0 R4 - 0x8C100905, // 0040 GETMET R4 R4 K5 - 0x7C100200, // 0041 CALL R4 1 - 0x80040800, // 0042 RET 1 R4 - 0x7002000C, // 0043 JMP #0051 - 0x540E0003, // 0044 LDINT R3 4 - 0x1C0C0403, // 0045 EQ R3 R2 R3 - 0x780E0009, // 0046 JMPF R3 #0051 - 0x8C0C0102, // 0047 GETMET R3 R0 K2 - 0x5C140200, // 0048 MOVE R5 R1 - 0x58180003, // 0049 LDCONST R6 K3 - 0x7C0C0600, // 004A CALL R3 3 - 0x00100303, // 004B ADD R4 R1 K3 - 0x00140203, // 004C ADD R5 R1 R3 - 0x00140B00, // 004D ADD R5 R5 K0 - 0x40100805, // 004E CONNECT R4 R4 R5 - 0x94100004, // 004F GETIDX R4 R0 R4 - 0x80040800, // 0050 RET 1 R4 - 0x4C0C0000, // 0051 LDNIL R3 - 0x80040600, // 0052 RET 1 R3 - }) - ), - }), - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(constraint_find), - &be_const_str_solidified, - ( &(const binstruction[112]) { /* code */ - 0x580C0000, // 0000 LDCONST R3 K0 - 0x84100000, // 0001 CLOSURE R4 P0 - 0x84140001, // 0002 CLOSURE R5 P1 - 0x6018000C, // 0003 GETGBL R6 G12 - 0x5C1C0000, // 0004 MOVE R7 R0 - 0x7C180200, // 0005 CALL R6 1 - 0x14180D01, // 0006 LT R6 R6 K1 - 0x781A0000, // 0007 JMPF R6 #0009 - 0x80040400, // 0008 RET 1 R2 - 0x94180102, // 0009 GETIDX R6 R0 K2 - 0x581C0001, // 000A LDCONST R7 K1 - 0x88200703, // 000B GETMBR R8 R3 K3 - 0x8C201104, // 000C GETMET R8 R8 K4 - 0x5C280200, // 000D MOVE R10 R1 - 0x7C200400, // 000E CALL R8 2 - 0x4C240000, // 000F LDNIL R9 - 0x1C241009, // 0010 EQ R9 R8 R9 - 0x78260000, // 0011 JMPF R9 #0013 - 0x80040400, // 0012 RET 1 R2 - 0x38220208, // 0013 SHL R8 K1 R8 - 0x2C240C08, // 0014 AND R9 R6 R8 - 0x74260000, // 0015 JMPT R9 #0017 - 0x80040400, // 0016 RET 1 R2 - 0x5426001F, // 0017 LDINT R9 32 - 0x1C241009, // 0018 EQ R9 R8 R9 - 0x78260001, // 0019 JMPF R9 #001C - 0x50240200, // 001A LDBOOL R9 1 0 - 0x80041200, // 001B RET 1 R9 - 0x24241101, // 001C GT R9 R8 K1 - 0x78260006, // 001D JMPF R9 #0025 - 0x2C240D01, // 001E AND R9 R6 K1 - 0x78260004, // 001F JMPF R9 #0025 - 0x5C240800, // 0020 MOVE R9 R4 - 0x5C280000, // 0021 MOVE R10 R0 - 0x5C2C0E00, // 0022 MOVE R11 R7 - 0x7C240400, // 0023 CALL R9 2 - 0x001C0E09, // 0024 ADD R7 R7 R9 - 0x24241105, // 0025 GT R9 R8 K5 - 0x78260006, // 0026 JMPF R9 #002E - 0x2C240D05, // 0027 AND R9 R6 K5 - 0x78260004, // 0028 JMPF R9 #002E - 0x5C240800, // 0029 MOVE R9 R4 - 0x5C280000, // 002A MOVE R10 R0 - 0x5C2C0E00, // 002B MOVE R11 R7 - 0x7C240400, // 002C CALL R9 2 - 0x001C0E09, // 002D ADD R7 R7 R9 - 0x54260003, // 002E LDINT R9 4 - 0x24241009, // 002F GT R9 R8 R9 - 0x78260007, // 0030 JMPF R9 #0039 - 0x54260003, // 0031 LDINT R9 4 - 0x2C240C09, // 0032 AND R9 R6 R9 - 0x78260004, // 0033 JMPF R9 #0039 - 0x5C240800, // 0034 MOVE R9 R4 - 0x5C280000, // 0035 MOVE R10 R0 - 0x5C2C0E00, // 0036 MOVE R11 R7 - 0x7C240400, // 0037 CALL R9 2 - 0x001C0E09, // 0038 ADD R7 R7 R9 - 0x54260007, // 0039 LDINT R9 8 - 0x24241009, // 003A GT R9 R8 R9 - 0x78260003, // 003B JMPF R9 #0040 - 0x54260007, // 003C LDINT R9 8 - 0x2C240C09, // 003D AND R9 R6 R9 - 0x78260000, // 003E JMPF R9 #0040 - 0x001C0F01, // 003F ADD R7 R7 K1 - 0x6024000C, // 0040 GETGBL R9 G12 - 0x5C280000, // 0041 MOVE R10 R0 - 0x7C240200, // 0042 CALL R9 1 - 0x28240E09, // 0043 GE R9 R7 R9 - 0x78260000, // 0044 JMPF R9 #0046 - 0x80040400, // 0045 RET 1 R2 - 0x54260007, // 0046 LDINT R9 8 - 0x1C241009, // 0047 EQ R9 R8 R9 - 0x78260009, // 0048 JMPF R9 #0053 - 0x94240007, // 0049 GETIDX R9 R0 R7 - 0x6028000C, // 004A GETGBL R10 G12 - 0x882C0706, // 004B GETMBR R11 R3 K6 - 0x7C280200, // 004C CALL R10 1 - 0x1428120A, // 004D LT R10 R9 R10 - 0x782A0002, // 004E JMPF R10 #0052 - 0x88280706, // 004F GETMBR R10 R3 K6 - 0x94281409, // 0050 GETIDX R10 R10 R9 - 0x80041400, // 0051 RET 1 R10 - 0x80040400, // 0052 RET 1 R2 - 0x5426000F, // 0053 LDINT R9 16 - 0x1C241009, // 0054 EQ R9 R8 R9 - 0x78260014, // 0055 JMPF R9 #006B - 0x94240007, // 0056 GETIDX R9 R0 R7 - 0x001C0F01, // 0057 ADD R7 R7 K1 - 0x60280012, // 0058 GETGBL R10 G18 - 0x7C280000, // 0059 CALL R10 0 - 0x582C0002, // 005A LDCONST R11 K2 - 0x14301609, // 005B LT R12 R11 R9 - 0x7832000C, // 005C JMPF R12 #006A - 0x8C301507, // 005D GETMET R12 R10 K7 - 0x5C380A00, // 005E MOVE R14 R5 - 0x5C3C0000, // 005F MOVE R15 R0 - 0x5C400E00, // 0060 MOVE R16 R7 - 0x7C380400, // 0061 CALL R14 2 - 0x7C300400, // 0062 CALL R12 2 - 0x5C340800, // 0063 MOVE R13 R4 - 0x5C380000, // 0064 MOVE R14 R0 - 0x5C3C0E00, // 0065 MOVE R15 R7 - 0x7C340400, // 0066 CALL R13 2 - 0x001C0E0D, // 0067 ADD R7 R7 R13 - 0x002C1701, // 0068 ADD R11 R11 K1 - 0x7001FFF0, // 0069 JMP #005B - 0x80041400, // 006A RET 1 R10 - 0x5C240A00, // 006B MOVE R9 R5 - 0x5C280000, // 006C MOVE R10 R0 - 0x5C2C0E00, // 006D MOVE R11 R7 - 0x7C240400, // 006E CALL R9 2 - 0x80041200, // 006F RET 1 R9 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setmember -********************************************************************/ -be_local_closure(class_parameterized_object_setmember, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(setmember), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x780E0004, // 0003 JMPF R3 #0009 - 0x8C0C0109, // 0004 GETMET R3 R0 K9 - 0x5C140200, // 0005 MOVE R5 R1 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C0C0600, // 0007 CALL R3 3 - 0x70020007, // 0008 JMP #0011 - 0x600C0018, // 0009 GETGBL R3 G24 - 0x5810000A, // 000A LDCONST R4 K10 - 0x60140005, // 000B GETGBL R5 G5 - 0x5C180000, // 000C MOVE R6 R0 - 0x7C140200, // 000D CALL R5 1 - 0x5C180200, // 000E MOVE R6 R1 - 0x7C0C0600, // 000F CALL R3 3 - 0xB0061603, // 0010 RAISE 1 K11 R3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_param -********************************************************************/ -be_local_closure(class_parameterized_object__validate_param, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_validate_param), - &be_const_str_solidified, - ( &(const binstruction[186]) { /* code */ - 0x8C0C010C, // 0000 GETMET R3 R0 K12 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x4C100000, // 0003 LDNIL R4 - 0x1C100604, // 0004 EQ R4 R3 R4 - 0x78120007, // 0005 JMPF R4 #000E - 0x60100018, // 0006 GETGBL R4 G24 - 0x5814000A, // 0007 LDCONST R5 K10 - 0x60180005, // 0008 GETGBL R6 G5 - 0x5C1C0000, // 0009 MOVE R7 R0 - 0x7C180200, // 000A CALL R6 1 - 0x5C1C0200, // 000B MOVE R7 R1 - 0x7C100600, // 000C CALL R4 3 - 0xB0061604, // 000D RAISE 1 K11 R4 - 0xB8121A00, // 000E GETNGBL R4 K13 - 0x8C10090E, // 000F GETMET R4 R4 K14 - 0x5C180400, // 0010 MOVE R6 R2 - 0x7C100400, // 0011 CALL R4 2 - 0x78120000, // 0012 JMPF R4 #0014 - 0x80040400, // 0013 RET 1 R2 - 0x4C100000, // 0014 LDNIL R4 - 0x1C100404, // 0015 EQ R4 R2 R4 - 0x78120014, // 0016 JMPF R4 #002C - 0x8C10010F, // 0017 GETMET R4 R0 K15 - 0x5C180600, // 0018 MOVE R6 R3 - 0x581C0010, // 0019 LDCONST R7 K16 - 0x7C100600, // 001A CALL R4 3 - 0x78120000, // 001B JMPF R4 #001D - 0x80040400, // 001C RET 1 R2 - 0x8C10010F, // 001D GETMET R4 R0 K15 - 0x5C180600, // 001E MOVE R6 R3 - 0x581C0011, // 001F LDCONST R7 K17 - 0x7C100600, // 0020 CALL R4 3 - 0x78120004, // 0021 JMPF R4 #0027 - 0x8C100112, // 0022 GETMET R4 R0 K18 - 0x5C180600, // 0023 MOVE R6 R3 - 0x581C0011, // 0024 LDCONST R7 K17 - 0x7C100600, // 0025 CALL R4 3 - 0x80040800, // 0026 RET 1 R4 - 0x60100018, // 0027 GETGBL R4 G24 - 0x58140013, // 0028 LDCONST R5 K19 - 0x5C180200, // 0029 MOVE R6 R1 - 0x7C100400, // 002A CALL R4 2 - 0xB0062804, // 002B RAISE 1 K20 R4 - 0x8C100112, // 002C GETMET R4 R0 K18 - 0x5C180600, // 002D MOVE R6 R3 - 0x581C0015, // 002E LDCONST R7 K21 - 0x58200016, // 002F LDCONST R8 K22 - 0x7C100800, // 0030 CALL R4 4 - 0x1C140917, // 0031 EQ R5 R4 K23 - 0x74160003, // 0032 JMPT R5 #0037 - 0x1C140918, // 0033 EQ R5 R4 K24 - 0x74160001, // 0034 JMPT R5 #0037 - 0x1C140919, // 0035 EQ R5 R4 K25 - 0x78160001, // 0036 JMPF R5 #0039 - 0x58100016, // 0037 LDCONST R4 K22 - 0x70020002, // 0038 JMP #003C - 0x1C14091A, // 0039 EQ R5 R4 K26 - 0x78160000, // 003A JMPF R5 #003C - 0x5810001B, // 003B LDCONST R4 K27 - 0x60140004, // 003C GETGBL R5 G4 - 0x5C180400, // 003D MOVE R6 R2 - 0x7C140200, // 003E CALL R5 1 - 0x2018091C, // 003F NE R6 R4 K28 - 0x781A0031, // 0040 JMPF R6 #0073 - 0x1C180916, // 0041 EQ R6 R4 K22 - 0x781A000A, // 0042 JMPF R6 #004E - 0x1C180B1D, // 0043 EQ R6 R5 K29 - 0x781A0008, // 0044 JMPF R6 #004E - 0xA41A3C00, // 0045 IMPORT R6 K30 - 0x601C0009, // 0046 GETGBL R7 G9 - 0x8C200D1F, // 0047 GETMET R8 R6 K31 - 0x5C280400, // 0048 MOVE R10 R2 - 0x7C200400, // 0049 CALL R8 2 - 0x7C1C0200, // 004A CALL R7 1 - 0x5C080E00, // 004B MOVE R2 R7 - 0x58140016, // 004C LDCONST R5 K22 - 0x70020024, // 004D JMP #0073 - 0x1C18091B, // 004E EQ R6 R4 K27 - 0x781A0018, // 004F JMPF R6 #0069 - 0x1C180B20, // 0050 EQ R6 R5 K32 - 0x781A0006, // 0051 JMPF R6 #0059 - 0x6018000F, // 0052 GETGBL R6 G15 - 0x5C1C0400, // 0053 MOVE R7 R2 - 0x60200015, // 0054 GETGBL R8 G21 - 0x7C180400, // 0055 CALL R6 2 - 0x781A0001, // 0056 JMPF R6 #0059 - 0x5814001B, // 0057 LDCONST R5 K27 - 0x7002000E, // 0058 JMP #0068 - 0x20180B20, // 0059 NE R6 R5 K32 - 0x741A0004, // 005A JMPT R6 #0060 - 0x6018000F, // 005B GETGBL R6 G15 - 0x5C1C0400, // 005C MOVE R7 R2 - 0x60200015, // 005D GETGBL R8 G21 - 0x7C180400, // 005E CALL R6 2 - 0x741A0007, // 005F JMPT R6 #0068 - 0x60180018, // 0060 GETGBL R6 G24 - 0x581C0021, // 0061 LDCONST R7 K33 - 0x5C200200, // 0062 MOVE R8 R1 - 0x5C240800, // 0063 MOVE R9 R4 - 0x5C280A00, // 0064 MOVE R10 R5 - 0x5C2C0400, // 0065 MOVE R11 R2 - 0x7C180A00, // 0066 CALL R6 5 - 0xB0062806, // 0067 RAISE 1 K20 R6 - 0x70020009, // 0068 JMP #0073 - 0x20180805, // 0069 NE R6 R4 R5 - 0x781A0007, // 006A JMPF R6 #0073 - 0x60180018, // 006B GETGBL R6 G24 - 0x581C0021, // 006C LDCONST R7 K33 - 0x5C200200, // 006D MOVE R8 R1 - 0x5C240800, // 006E MOVE R9 R4 - 0x5C280A00, // 006F MOVE R10 R5 - 0x5C2C0400, // 0070 MOVE R11 R2 - 0x7C180A00, // 0071 CALL R6 5 - 0xB0062806, // 0072 RAISE 1 K20 R6 - 0x1C180B16, // 0073 EQ R6 R5 K22 - 0x781A0023, // 0074 JMPF R6 #0099 - 0x8C18010F, // 0075 GETMET R6 R0 K15 - 0x5C200600, // 0076 MOVE R8 R3 - 0x58240022, // 0077 LDCONST R9 K34 - 0x7C180600, // 0078 CALL R6 3 - 0x781A000C, // 0079 JMPF R6 #0087 - 0x8C180112, // 007A GETMET R6 R0 K18 - 0x5C200600, // 007B MOVE R8 R3 - 0x58240022, // 007C LDCONST R9 K34 - 0x7C180600, // 007D CALL R6 3 - 0x141C0406, // 007E LT R7 R2 R6 - 0x781E0006, // 007F JMPF R7 #0087 - 0x601C0018, // 0080 GETGBL R7 G24 - 0x58200023, // 0081 LDCONST R8 K35 - 0x5C240200, // 0082 MOVE R9 R1 - 0x5C280400, // 0083 MOVE R10 R2 - 0x5C2C0C00, // 0084 MOVE R11 R6 - 0x7C1C0800, // 0085 CALL R7 4 - 0xB0062807, // 0086 RAISE 1 K20 R7 - 0x8C18010F, // 0087 GETMET R6 R0 K15 - 0x5C200600, // 0088 MOVE R8 R3 - 0x58240024, // 0089 LDCONST R9 K36 - 0x7C180600, // 008A CALL R6 3 - 0x781A000C, // 008B JMPF R6 #0099 - 0x8C180112, // 008C GETMET R6 R0 K18 - 0x5C200600, // 008D MOVE R8 R3 - 0x58240024, // 008E LDCONST R9 K36 - 0x7C180600, // 008F CALL R6 3 - 0x241C0406, // 0090 GT R7 R2 R6 - 0x781E0006, // 0091 JMPF R7 #0099 - 0x601C0018, // 0092 GETGBL R7 G24 - 0x58200025, // 0093 LDCONST R8 K37 - 0x5C240200, // 0094 MOVE R9 R1 - 0x5C280400, // 0095 MOVE R10 R2 - 0x5C2C0C00, // 0096 MOVE R11 R6 - 0x7C1C0800, // 0097 CALL R7 4 - 0xB0062807, // 0098 RAISE 1 K20 R7 - 0x8C18010F, // 0099 GETMET R6 R0 K15 - 0x5C200600, // 009A MOVE R8 R3 - 0x58240026, // 009B LDCONST R9 K38 - 0x7C180600, // 009C CALL R6 3 - 0x781A001A, // 009D JMPF R6 #00B9 - 0x50180000, // 009E LDBOOL R6 0 0 - 0x8C1C0112, // 009F GETMET R7 R0 K18 - 0x5C240600, // 00A0 MOVE R9 R3 - 0x58280026, // 00A1 LDCONST R10 K38 - 0x7C1C0600, // 00A2 CALL R7 3 - 0x6020000C, // 00A3 GETGBL R8 G12 - 0x5C240E00, // 00A4 MOVE R9 R7 - 0x7C200200, // 00A5 CALL R8 1 - 0x58240002, // 00A6 LDCONST R9 K2 - 0x14281208, // 00A7 LT R10 R9 R8 - 0x782A0006, // 00A8 JMPF R10 #00B0 - 0x94280E09, // 00A9 GETIDX R10 R7 R9 - 0x1C2C040A, // 00AA EQ R11 R2 R10 - 0x782E0001, // 00AB JMPF R11 #00AE - 0x50180200, // 00AC LDBOOL R6 1 0 - 0x70020001, // 00AD JMP #00B0 - 0x00241301, // 00AE ADD R9 R9 K1 - 0x7001FFF6, // 00AF JMP #00A7 - 0x5C280C00, // 00B0 MOVE R10 R6 - 0x742A0006, // 00B1 JMPT R10 #00B9 - 0x60280018, // 00B2 GETGBL R10 G24 - 0x582C0027, // 00B3 LDCONST R11 K39 - 0x5C300200, // 00B4 MOVE R12 R1 - 0x5C340400, // 00B5 MOVE R13 R2 - 0x5C380E00, // 00B6 MOVE R14 R7 - 0x7C280800, // 00B7 CALL R10 4 - 0xB006280A, // 00B8 RAISE 1 K20 R10 - 0x80040400, // 00B9 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_parameterized_object_update, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _resolve_parameter_value -********************************************************************/ -be_local_closure(class_parameterized_object__resolve_parameter_value, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_resolve_parameter_value), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x880C0128, // 0000 GETMBR R3 R0 K40 - 0x8C0C0729, // 0001 GETMET R3 R3 K41 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E0011, // 0004 JMPT R3 #0017 - 0x8C0C010C, // 0005 GETMET R3 R0 K12 - 0x5C140200, // 0006 MOVE R5 R1 - 0x7C0C0400, // 0007 CALL R3 2 - 0x4C100000, // 0008 LDNIL R4 - 0x20100604, // 0009 NE R4 R3 R4 - 0x78120009, // 000A JMPF R4 #0015 - 0x8C10010F, // 000B GETMET R4 R0 K15 - 0x5C180600, // 000C MOVE R6 R3 - 0x581C0011, // 000D LDCONST R7 K17 - 0x7C100600, // 000E CALL R4 3 - 0x78120004, // 000F JMPF R4 #0015 - 0x8C100112, // 0010 GETMET R4 R0 K18 - 0x5C180600, // 0011 MOVE R6 R3 - 0x581C0011, // 0012 LDCONST R7 K17 - 0x7C100600, // 0013 CALL R4 3 - 0x80040800, // 0014 RET 1 R4 - 0x4C100000, // 0015 LDNIL R4 - 0x80040800, // 0016 RET 1 R4 - 0x880C0128, // 0017 GETMBR R3 R0 K40 - 0x940C0601, // 0018 GETIDX R3 R3 R1 - 0x8C10012A, // 0019 GETMET R4 R0 K42 - 0x5C180600, // 001A MOVE R6 R3 - 0x5C1C0200, // 001B MOVE R7 R1 - 0x5C200400, // 001C MOVE R8 R2 - 0x7C100800, // 001D CALL R4 4 - 0x80040800, // 001E RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: constraint_mask -********************************************************************/ -be_local_closure(class_parameterized_object_constraint_mask, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(constraint_mask), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x200C0003, // 0002 NE R3 R0 R3 - 0x780E000F, // 0003 JMPF R3 #0014 - 0x600C000C, // 0004 GETGBL R3 G12 - 0x5C100000, // 0005 MOVE R4 R0 - 0x7C0C0200, // 0006 CALL R3 1 - 0x240C0702, // 0007 GT R3 R3 K2 - 0x780E000A, // 0008 JMPF R3 #0014 - 0x880C0503, // 0009 GETMBR R3 R2 K3 - 0x8C0C0704, // 000A GETMET R3 R3 K4 - 0x5C140200, // 000B MOVE R5 R1 - 0x7C0C0400, // 000C CALL R3 2 - 0x4C100000, // 000D LDNIL R4 - 0x20100604, // 000E NE R4 R3 R4 - 0x78120003, // 000F JMPF R4 #0014 - 0x94100102, // 0010 GETIDX R4 R0 K2 - 0x38160203, // 0011 SHL R5 K1 R3 - 0x2C100805, // 0012 AND R4 R4 R5 - 0x80040800, // 0013 RET 1 R4 - 0x80060400, // 0014 RET 1 K2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: member -********************************************************************/ -be_local_closure(class_parameterized_object_member, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(member), - &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ - 0x88080128, // 0000 GETMBR R2 R0 K40 - 0x8C080504, // 0001 GETMET R2 R2 K4 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E000D, // 0006 JMPF R3 #0015 - 0x600C0004, // 0007 GETGBL R3 G4 - 0x5C100400, // 0008 MOVE R4 R2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x200C0720, // 000A NE R3 R3 K32 - 0x780E0000, // 000B JMPF R3 #000D - 0x80040400, // 000C RET 1 R2 - 0x8C0C012A, // 000D GETMET R3 R0 K42 - 0x5C140400, // 000E MOVE R5 R2 - 0x5C180200, // 000F MOVE R6 R1 - 0x881C012B, // 0010 GETMBR R7 R0 K43 - 0x881C0F2C, // 0011 GETMBR R7 R7 K44 - 0x7C0C0800, // 0012 CALL R3 4 - 0x80040600, // 0013 RET 1 R3 - 0x70020023, // 0014 JMP #0039 - 0x880C0128, // 0015 GETMBR R3 R0 K40 - 0x8C0C0729, // 0016 GETMET R3 R3 K41 - 0x5C140200, // 0017 MOVE R5 R1 - 0x7C0C0400, // 0018 CALL R3 2 - 0x780E0002, // 0019 JMPF R3 #001D - 0x4C0C0000, // 001A LDNIL R3 - 0x80040600, // 001B RET 1 R3 - 0x7002001B, // 001C JMP #0039 - 0x8C0C010C, // 001D GETMET R3 R0 K12 - 0x5C140200, // 001E MOVE R5 R1 - 0x7C0C0400, // 001F CALL R3 2 - 0x4C100000, // 0020 LDNIL R4 - 0x20100604, // 0021 NE R4 R3 R4 - 0x7812000D, // 0022 JMPF R4 #0031 - 0x8C10010F, // 0023 GETMET R4 R0 K15 - 0x5C180600, // 0024 MOVE R6 R3 - 0x581C0011, // 0025 LDCONST R7 K17 - 0x7C100600, // 0026 CALL R4 3 - 0x78120005, // 0027 JMPF R4 #002E - 0x8C100112, // 0028 GETMET R4 R0 K18 - 0x5C180600, // 0029 MOVE R6 R3 - 0x581C0011, // 002A LDCONST R7 K17 - 0x7C100600, // 002B CALL R4 3 - 0x80040800, // 002C RET 1 R4 - 0x70020001, // 002D JMP #0030 - 0x4C100000, // 002E LDNIL R4 - 0x80040800, // 002F RET 1 R4 - 0x70020007, // 0030 JMP #0039 - 0x60100018, // 0031 GETGBL R4 G24 - 0x5814000A, // 0032 LDCONST R5 K10 - 0x60180005, // 0033 GETGBL R6 G5 - 0x5C1C0000, // 0034 MOVE R7 R0 - 0x7C180200, // 0035 CALL R6 1 - 0x5C1C0200, // 0036 MOVE R7 R1 - 0x7C100600, // 0037 CALL R4 3 - 0xB0061604, // 0038 RAISE 1 K11 R4 - 0x80000000, // 0039 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_parameterized_object_start, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808012B, // 0003 GETMBR R2 R0 K43 - 0x8804052C, // 0004 GETMBR R1 R2 K44 - 0x50080200, // 0005 LDBOOL R2 1 0 - 0x90025A02, // 0006 SETMBR R0 K45 R2 - 0x8808012E, // 0007 GETMBR R2 R0 K46 - 0x4C0C0000, // 0008 LDNIL R3 - 0x20080403, // 0009 NE R2 R2 R3 - 0x780A0000, // 000A JMPF R2 #000C - 0x90025C01, // 000B SETMBR R0 K46 R1 - 0x80040000, // 000C RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_parameterized_object_stop, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90025A01, // 0001 SETMBR R0 K45 R1 - 0x80040000, // 0002 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_parameter_values -********************************************************************/ -be_local_closure(class_parameterized_object__init_parameter_values, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_init_parameter_values), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0xA4065E00, // 0000 IMPORT R1 K47 - 0x60080006, // 0001 GETGBL R2 G6 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0026, // 0006 JMPF R3 #002E - 0x8C0C0329, // 0007 GETMET R3 R1 K41 - 0x5C140400, // 0008 MOVE R5 R2 - 0x58180030, // 0009 LDCONST R6 K48 - 0x7C0C0600, // 000A CALL R3 3 - 0x780E001C, // 000B JMPF R3 #0029 - 0x880C0530, // 000C GETMBR R3 R2 K48 - 0x60100010, // 000D GETGBL R4 G16 - 0x8C140731, // 000E GETMET R5 R3 K49 - 0x7C140200, // 000F CALL R5 1 - 0x7C100200, // 0010 CALL R4 1 - 0xA8020013, // 0011 EXBLK 0 #0026 - 0x5C140800, // 0012 MOVE R5 R4 - 0x7C140000, // 0013 CALL R5 0 - 0x88180128, // 0014 GETMBR R6 R0 K40 - 0x8C180D29, // 0015 GETMET R6 R6 K41 - 0x5C200A00, // 0016 MOVE R8 R5 - 0x7C180400, // 0017 CALL R6 2 - 0x741A000B, // 0018 JMPT R6 #0025 - 0x94180605, // 0019 GETIDX R6 R3 R5 - 0x8C1C010F, // 001A GETMET R7 R0 K15 - 0x5C240C00, // 001B MOVE R9 R6 - 0x58280011, // 001C LDCONST R10 K17 - 0x7C1C0600, // 001D CALL R7 3 - 0x781E0005, // 001E JMPF R7 #0025 - 0x881C0128, // 001F GETMBR R7 R0 K40 - 0x8C200112, // 0020 GETMET R8 R0 K18 - 0x5C280C00, // 0021 MOVE R10 R6 - 0x582C0011, // 0022 LDCONST R11 K17 - 0x7C200600, // 0023 CALL R8 3 - 0x981C0A08, // 0024 SETIDX R7 R5 R8 - 0x7001FFEB, // 0025 JMP #0012 - 0x58100032, // 0026 LDCONST R4 K50 - 0xAC100200, // 0027 CATCH R4 1 0 - 0xB0080000, // 0028 RAISE 2 R0 R0 - 0x600C0003, // 0029 GETGBL R3 G3 - 0x5C100400, // 002A MOVE R4 R2 - 0x7C0C0200, // 002B CALL R3 1 - 0x5C080600, // 002C MOVE R2 R3 - 0x7001FFD5, // 002D JMP #0004 - 0x80000000, // 002E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_parameterized_object_init, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x60080004, // 0003 GETGBL R2 G4 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x20080520, // 0006 NE R2 R2 K32 - 0x780A0000, // 0007 JMPF R2 #0009 - 0xB0062933, // 0008 RAISE 1 K20 K51 - 0x90025601, // 0009 SETMBR R0 K43 R1 - 0x60080013, // 000A GETGBL R2 G19 - 0x7C080000, // 000B CALL R2 0 - 0x90025002, // 000C SETMBR R0 K40 R2 - 0x50080000, // 000D LDBOOL R2 0 0 - 0x90025A02, // 000E SETMBR R0 K45 R2 - 0x8C080134, // 000F GETMET R2 R0 K52 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _fix_time_ms -********************************************************************/ -be_local_closure(class_parameterized_object__fix_time_ms, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_fix_time_ms), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808012B, // 0003 GETMBR R2 R0 K43 - 0x8804052C, // 0004 GETMBR R1 R2 K44 - 0x8808012E, // 0005 GETMBR R2 R0 K46 - 0x4C0C0000, // 0006 LDNIL R3 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0000, // 0008 JMPF R2 #000A - 0x90025C01, // 0009 SETMBR R0 K46 R1 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has_param -********************************************************************/ -be_local_closure(class_parameterized_object_has_param, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(has_param), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C08010C, // 0000 GETMET R2 R0 K12 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x4C0C0000, // 0003 LDNIL R3 - 0x20080403, // 0004 NE R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: == -********************************************************************/ -be_local_closure(class_parameterized_object__X3D_X3D, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_X3D_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA40A5E00, // 0000 IMPORT R2 K47 - 0x8C0C0535, // 0001 GETMET R3 R2 K53 - 0x5C140000, // 0002 MOVE R5 R0 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100535, // 0004 GETMET R4 R2 K53 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C100400, // 0006 CALL R4 2 - 0x1C0C0604, // 0007 EQ R3 R3 R4 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_param -********************************************************************/ -be_local_closure(class_parameterized_object_set_param, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(set_param), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x740E0001, // 0003 JMPT R3 #0006 - 0x500C0000, // 0004 LDBOOL R3 0 0 - 0x80040600, // 0005 RET 1 R3 - 0xA8020008, // 0006 EXBLK 0 #0010 - 0x8C0C0109, // 0007 GETMET R3 R0 K9 - 0x5C140200, // 0008 MOVE R5 R1 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C0C0600, // 000A CALL R3 3 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0xA8040001, // 000C EXBLK 1 1 - 0x80040600, // 000D RET 1 R3 - 0xA8040001, // 000E EXBLK 1 1 - 0x70020006, // 000F JMP #0017 - 0x580C0014, // 0010 LDCONST R3 K20 - 0xAC0C0201, // 0011 CATCH R3 1 1 - 0x70020002, // 0012 JMP #0016 - 0x50100000, // 0013 LDBOOL R4 0 0 - 0x80040800, // 0014 RET 1 R4 - 0x70020000, // 0015 JMP #0017 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_parameterized_object_on_param_changed, /* name */ - be_nested_proto( - 3, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: != -********************************************************************/ -be_local_closure(class_parameterized_object__X21_X3D, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_X21_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x1C080001, // 0000 EQ R2 R0 R1 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x50080001, // 0002 LDBOOL R2 0 1 - 0x50080200, // 0003 LDBOOL R2 1 0 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _set_parameter_value -********************************************************************/ -be_local_closure(class_parameterized_object__set_parameter_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_set_parameter_value), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB80E1A00, // 0000 GETNGBL R3 K13 - 0x8C0C070E, // 0001 GETMET R3 R3 K14 - 0x5C140400, // 0002 MOVE R5 R2 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x8C0C0136, // 0005 GETMET R3 R0 K54 - 0x5C140200, // 0006 MOVE R5 R1 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C0C0600, // 0008 CALL R3 3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0128, // 000A GETMBR R3 R0 K40 - 0x980C0202, // 000B SETIDX R3 R1 R2 - 0x8C0C0137, // 000C GETMET R3 R0 K55 - 0x5C140200, // 000D MOVE R5 R1 - 0x5C180400, // 000E MOVE R6 R2 - 0x7C0C0600, // 000F CALL R3 3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tobool -********************************************************************/ -be_local_closure(class_parameterized_object_tobool, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(tobool), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x50040200, // 0000 LDBOOL R1 1 0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_parameterized_object_tostring, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080038, // 0001 LDCONST R2 K56 - 0x600C0005, // 0002 GETGBL R3 G5 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x7C040400, // 0005 CALL R1 2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_value -********************************************************************/ -be_local_closure(class_parameterized_object_resolve_value, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(resolve_value), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0xB8121A00, // 0000 GETNGBL R4 K13 - 0x8C10090E, // 0001 GETMET R4 R4 K14 - 0x5C180200, // 0002 MOVE R6 R1 - 0x7C100400, // 0003 CALL R4 2 - 0x7812001A, // 0004 JMPF R4 #0020 - 0x8C100339, // 0005 GETMET R4 R1 K57 - 0x5C180400, // 0006 MOVE R6 R2 - 0x5C1C0600, // 0007 MOVE R7 R3 - 0x7C100600, // 0008 CALL R4 3 - 0x4C140000, // 0009 LDNIL R5 - 0x1C140805, // 000A EQ R5 R4 R5 - 0x78160011, // 000B JMPF R5 #001E - 0x8C14010C, // 000C GETMET R5 R0 K12 - 0x5C1C0400, // 000D MOVE R7 R2 - 0x7C140400, // 000E CALL R5 2 - 0x8C18010F, // 000F GETMET R6 R0 K15 - 0x5C200A00, // 0010 MOVE R8 R5 - 0x58240010, // 0011 LDCONST R9 K16 - 0x7C180600, // 0012 CALL R6 3 - 0x741A0009, // 0013 JMPT R6 #001E - 0x8C18010F, // 0014 GETMET R6 R0 K15 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240011, // 0016 LDCONST R9 K17 - 0x7C180600, // 0017 CALL R6 3 - 0x781A0004, // 0018 JMPF R6 #001E - 0x8C180112, // 0019 GETMET R6 R0 K18 - 0x5C200A00, // 001A MOVE R8 R5 - 0x58240011, // 001B LDCONST R9 K17 - 0x7C180600, // 001C CALL R6 3 - 0x5C100C00, // 001D MOVE R4 R6 - 0x80040800, // 001E RET 1 R4 - 0x70020000, // 001F JMP #0021 - 0x80040200, // 0020 RET 1 R1 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_param_value -********************************************************************/ -be_local_closure(class_parameterized_object_get_param_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(get_param_value), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C08013A, // 0000 GETMET R2 R0 K58 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x80040400, // 0003 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_param_def -********************************************************************/ -be_local_closure(class_parameterized_object__get_param_def, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(_get_param_def), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A5E00, // 0000 IMPORT R2 K47 - 0x600C0006, // 0001 GETGBL R3 G6 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x78120010, // 0006 JMPF R4 #0018 - 0x8C100529, // 0007 GETMET R4 R2 K41 - 0x5C180600, // 0008 MOVE R6 R3 - 0x581C0030, // 0009 LDCONST R7 K48 - 0x7C100600, // 000A CALL R4 3 - 0x78120006, // 000B JMPF R4 #0013 - 0x88100730, // 000C GETMBR R4 R3 K48 - 0x8C140929, // 000D GETMET R5 R4 K41 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x7C140400, // 000F CALL R5 2 - 0x78160001, // 0010 JMPF R5 #0013 - 0x94140801, // 0011 GETIDX R5 R4 R1 - 0x80040A00, // 0012 RET 1 R5 - 0x60100003, // 0013 GETGBL R4 G3 - 0x5C140600, // 0014 MOVE R5 R3 - 0x7C100200, // 0015 CALL R4 1 - 0x5C0C0800, // 0016 MOVE R3 R4 - 0x7001FFEB, // 0017 JMP #0004 - 0x4C100000, // 0018 LDNIL R4 - 0x80040800, // 0019 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_param -********************************************************************/ -be_local_closure(class_parameterized_object_get_param, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_parameterized_object, /* shared constants */ - be_str_weak(get_param), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x880C0128, // 0000 GETMBR R3 R0 K40 - 0x8C0C0729, // 0001 GETMET R3 R3 K41 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0002, // 0004 JMPF R3 #0008 - 0x880C0128, // 0005 GETMBR R3 R0 K40 - 0x940C0601, // 0006 GETIDX R3 R3 R1 - 0x80040600, // 0007 RET 1 R3 - 0x8C0C010C, // 0008 GETMET R3 R0 K12 - 0x5C140200, // 0009 MOVE R5 R1 - 0x7C0C0400, // 000A CALL R3 2 - 0x4C100000, // 000B LDNIL R4 - 0x20100604, // 000C NE R4 R3 R4 - 0x7812000A, // 000D JMPF R4 #0019 - 0x8C10010F, // 000E GETMET R4 R0 K15 - 0x5C180600, // 000F MOVE R6 R3 - 0x581C0011, // 0010 LDCONST R7 K17 - 0x7C100600, // 0011 CALL R4 3 - 0x78120005, // 0012 JMPF R4 #0019 - 0x8C100112, // 0013 GETMET R4 R0 K18 - 0x5C180600, // 0014 MOVE R6 R3 - 0x581C0011, // 0015 LDCONST R7 K17 - 0x5C200400, // 0016 MOVE R8 R2 - 0x7C100800, // 0017 CALL R4 4 - 0x80040800, // 0018 RET 1 R4 - 0x80040400, // 0019 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: parameterized_object -********************************************************************/ -be_local_class(parameterized_object, - 4, - NULL, - be_nested_map(30, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(constraint_find, 10), be_const_static_closure(class_parameterized_object_constraint_find_closure) }, - { be_const_key_weak(setmember, 20), be_const_closure(class_parameterized_object_setmember_closure) }, - { be_const_key_weak(get_param, -1), be_const_closure(class_parameterized_object_get_param_closure) }, - { be_const_key_weak(values, -1), be_const_var(0) }, - { be_const_key_weak(update, -1), be_const_closure(class_parameterized_object_update_closure) }, - { be_const_key_weak(_TYPES, 18), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(7, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(int), - be_nested_str_weak(string), - be_nested_str_weak(bytes), - be_nested_str_weak(bool), - be_nested_str_weak(any), - be_nested_str_weak(instance), - be_nested_str_weak(function), - })) ) } )) }, - { be_const_key_weak(_resolve_parameter_value, -1), be_const_closure(class_parameterized_object__resolve_parameter_value_closure) }, - { be_const_key_weak(constraint_mask, 21), be_const_static_closure(class_parameterized_object_constraint_mask_closure) }, - { be_const_key_weak(_get_param_def, -1), be_const_closure(class_parameterized_object__get_param_def_closure) }, - { be_const_key_weak(get_param_value, -1), be_const_closure(class_parameterized_object_get_param_value_closure) }, - { be_const_key_weak(_MASK, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(6, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(min), - be_nested_str_weak(max), - be_nested_str_weak(default), - be_nested_str_weak(type), - be_nested_str_weak(enum), - be_nested_str_weak(nillable), - })) ) } )) }, - { be_const_key_weak(start, -1), be_const_closure(class_parameterized_object_start_closure) }, - { be_const_key_weak(is_running, -1), be_const_var(3) }, - { be_const_key_weak(_init_parameter_values, -1), be_const_closure(class_parameterized_object__init_parameter_values_closure) }, - { be_const_key_weak(has_param, 13), be_const_closure(class_parameterized_object_has_param_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_parameterized_object_init_closure) }, - { be_const_key_weak(_fix_time_ms, -1), be_const_closure(class_parameterized_object__fix_time_ms_closure) }, - { be_const_key_weak(stop, 14), be_const_closure(class_parameterized_object_stop_closure) }, - { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_parameterized_object__X3D_X3D_closure) }, - { be_const_key_weak(set_param, -1), be_const_closure(class_parameterized_object_set_param_closure) }, - { be_const_key_weak(_X21_X3D, 26), be_const_closure(class_parameterized_object__X21_X3D_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_parameterized_object_on_param_changed_closure) }, - { be_const_key_weak(_set_parameter_value, -1), be_const_closure(class_parameterized_object__set_parameter_value_closure) }, - { be_const_key_weak(engine, -1), be_const_var(1) }, - { be_const_key_weak(tobool, -1), be_const_closure(class_parameterized_object_tobool_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_parameterized_object_tostring_closure) }, - { be_const_key_weak(member, 12), be_const_closure(class_parameterized_object_member_closure) }, - { be_const_key_weak(start_time, 9), be_const_var(2) }, - { be_const_key_weak(_validate_param, 8), be_const_closure(class_parameterized_object__validate_param_closure) }, - { be_const_key_weak(resolve_value, 2), be_const_closure(class_parameterized_object_resolve_value_closure) }, - })), - be_str_weak(parameterized_object) -); - -/******************************************************************** -** Solidified function: ease_out -********************************************************************/ -be_local_closure(ease_out, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - }), - be_str_weak(ease_out), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0006, // 0004 LDINT R2 7 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: smooth -********************************************************************/ -be_local_closure(smooth, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - }), - be_str_weak(smooth), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A0003, // 0004 LDINT R2 4 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x80040200, // 0006 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: get_registered_events ********************************************************************/ @@ -12298,139 +13063,8 @@ be_local_closure(get_registered_events, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: triangle -********************************************************************/ -be_local_closure(triangle, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_const_int(2), - }), - be_str_weak(triangle), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'static_color' ktab size: 3, total: 6 (saved 24 bytes) -static const bvalue be_ktab_class_static_color[3] = { - /* K0 */ be_nested_str_weak(color), - /* K1 */ be_nested_str_weak(brightness), - /* K2 */ be_nested_str_weak(apply_brightness), -}; - - -extern const bclass be_class_static_color; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_static_color_produce_value, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_static_color, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x541600FE, // 0002 LDINT R5 255 - 0x20140805, // 0003 NE R5 R4 R5 - 0x78160004, // 0004 JMPF R5 #000A - 0x8C140102, // 0005 GETMET R5 R0 K2 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x5C200800, // 0007 MOVE R8 R4 - 0x7C140600, // 0008 CALL R5 3 - 0x80040A00, // 0009 RET 1 R5 - 0x80040600, // 000A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_static_color_get_color_for_value, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_static_color, /* shared constants */ - be_str_weak(get_color_for_value), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x541600FE, // 0002 LDINT R5 255 - 0x20140805, // 0003 NE R5 R4 R5 - 0x78160004, // 0004 JMPF R5 #000A - 0x8C140102, // 0005 GETMET R5 R0 K2 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x5C200800, // 0007 MOVE R8 R4 - 0x7C140600, // 0008 CALL R5 3 - 0x80040A00, // 0009 RET 1 R5 - 0x80040600, // 000A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: static_color -********************************************************************/ -extern const bclass be_class_color_provider; -be_local_class(static_color, - 0, - &be_class_color_provider, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(produce_value, 1), be_const_closure(class_static_color_produce_value_closure) }, - { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(color, -1), be_const_bytes_instance(0400FF) }, - })) ) } )) }, - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_static_color_get_color_for_value_closure) }, - })), - be_str_weak(static_color) -); -// compact class 'PaletteGradientAnimation' ktab size: 32, total: 47 (saved 120 bytes) -static const bvalue be_ktab_class_PaletteGradientAnimation[32] = { +// compact class 'palette_gradient' ktab size: 32, total: 47 (saved 120 bytes) +static const bvalue be_ktab_class_palette_gradient[32] = { /* K0 */ be_nested_str_weak(get_param), /* K1 */ be_nested_str_weak(color_source), /* K2 */ be_nested_str_weak(animation), @@ -12466,12 +13100,12 @@ static const bvalue be_ktab_class_PaletteGradientAnimation[32] = { }; -extern const bclass be_class_PaletteGradientAnimation; +extern const bclass be_class_palette_gradient; /******************************************************************** ** Solidified function: render ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_render, /* name */ +be_local_closure(class_palette_gradient_render, /* name */ be_nested_proto( 16, /* nstack */ 4, /* argc */ @@ -12481,7 +13115,7 @@ be_local_closure(class_PaletteGradientAnimation_render, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(render), &be_const_str_solidified, ( &(const binstruction[75]) { /* code */ @@ -12569,7 +13203,7 @@ be_local_closure(class_PaletteGradientAnimation_render, /* name */ /******************************************************************** ** Solidified function: update ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_update, /* name */ +be_local_closure(class_palette_gradient_update, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -12579,7 +13213,7 @@ be_local_closure(class_PaletteGradientAnimation_update, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(update), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ @@ -12610,7 +13244,7 @@ be_local_closure(class_PaletteGradientAnimation_update, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_init, /* name */ +be_local_closure(class_palette_gradient_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -12620,7 +13254,7 @@ be_local_closure(class_PaletteGradientAnimation_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(init), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -12645,7 +13279,7 @@ be_local_closure(class_PaletteGradientAnimation_init, /* name */ /******************************************************************** ** Solidified function: _update_value_buffer ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name */ +be_local_closure(class_palette_gradient__update_value_buffer, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ @@ -12655,7 +13289,7 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(_update_value_buffer), &be_const_str_solidified, ( &(const binstruction[72]) { /* code */ @@ -12740,7 +13374,7 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_on_param_changed, /* name */ +be_local_closure(class_palette_gradient_on_param_changed, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ @@ -12750,7 +13384,7 @@ be_local_closure(class_PaletteGradientAnimation_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, ( &(const binstruction[12]) { /* code */ @@ -12775,7 +13409,7 @@ be_local_closure(class_PaletteGradientAnimation_on_param_changed, /* name */ /******************************************************************** ** Solidified function: _initialize_value_buffer ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation__initialize_value_buffer, /* name */ +be_local_closure(class_palette_gradient__initialize_value_buffer, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -12785,7 +13419,7 @@ be_local_closure(class_PaletteGradientAnimation__initialize_value_buffer, /* n 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PaletteGradientAnimation, /* shared constants */ + &be_ktab_class_palette_gradient, /* shared constants */ be_str_weak(_initialize_value_buffer), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ @@ -12810,17 +13444,17 @@ be_local_closure(class_PaletteGradientAnimation__initialize_value_buffer, /* n /******************************************************************** -** Solidified class: PaletteGradientAnimation +** Solidified class: palette_gradient ********************************************************************/ extern const bclass be_class_Animation; -be_local_class(PaletteGradientAnimation, +be_local_class(palette_gradient, 3, &be_class_Animation, be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(_spatial_period, -1), be_const_var(1) }, { be_const_key_weak(value_buffer, -1), be_const_var(0) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_PaletteGradientAnimation_on_param_changed_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_palette_gradient_on_param_changed_closure) }, { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { @@ -12829,587 +13463,44 @@ be_local_class(PaletteGradientAnimation, { be_const_key_weak(spatial_period, -1), be_const_bytes_instance(0500000000) }, { be_const_key_weak(phase_shift, -1), be_const_bytes_instance(07000001FF000000) }, })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_PaletteGradientAnimation_update_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteGradientAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteGradientAnimation__update_value_buffer_closure) }, - { be_const_key_weak(render, 2), be_const_closure(class_PaletteGradientAnimation_render_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_palette_gradient_update_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_palette_gradient_init_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_palette_gradient__update_value_buffer_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_palette_gradient_render_closure) }, { be_const_key_weak(_phase_shift, -1), be_const_var(2) }, - { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PaletteGradientAnimation__initialize_value_buffer_closure) }, + { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_palette_gradient__initialize_value_buffer_closure) }, })), - be_str_weak(PaletteGradientAnimation) + be_str_weak(palette_gradient) ); -// compact class 'engine_proxy' ktab size: 40, total: 109 (saved 552 bytes) -static const bvalue be_ktab_class_engine_proxy[40] = { - /* K0 */ be_nested_str_weak(engine), - /* K1 */ be_nested_str_weak(strip_length), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(sequence_manager), - /* K4 */ be_nested_str_weak(_remove_sequence_manager), - /* K5 */ be_nested_str_weak(value_provider), - /* K6 */ be_nested_str_weak(_remove_value_provider), - /* K7 */ be_nested_str_weak(_remove_animation), - /* K8 */ be_nested_str_weak(animations), - /* K9 */ be_nested_str_weak(find), - /* K10 */ be_nested_str_weak(push), - /* K11 */ be_nested_str_weak(_sort_animations_by_priority), - /* K12 */ be_nested_str_weak(is_running), - /* K13 */ be_nested_str_weak(start), - /* K14 */ be_nested_str_weak(time_ms), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(sequences), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(value_providers), - /* K19 */ be_nested_str_weak(remove), - /* K20 */ be_nested_str_weak(iteration_stack), - /* K21 */ be_nested_str_weak(stop), - /* K22 */ be_nested_str_weak(_add_sequence_manager), - /* K23 */ be_nested_str_weak(_add_value_provider), - /* K24 */ be_nested_str_weak(_add_animation), - /* K25 */ be_nested_str_weak(type_error), - /* K26 */ be_nested_str_weak(only_X20Animation_X2C_X20sequence_manager_X2C_X20or_X20value_provider), - /* K27 */ be_nested_str_weak(update), - /* K28 */ be_nested_str_weak(start_time), - /* K29 */ be_nested_str_weak(pop), - /* K30 */ be_nested_str_weak(priority), - /* K31 */ be_nested_str_weak(temp_buffer), - /* K32 */ be_nested_str_weak(clear), - /* K33 */ be_nested_str_weak(render), - /* K34 */ be_nested_str_weak(post_render), - /* K35 */ be_nested_str_weak(blend_pixels), - /* K36 */ be_nested_str_weak(pixels), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(init), - /* K39 */ be_nested_str_weak(setup_template), -}; - - -extern const bclass be_class_engine_proxy; /******************************************************************** -** Solidified function: get_strip_length +** Solidified function: triangle ********************************************************************/ -be_local_closure(class_engine_proxy_get_strip_length, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(get_strip_length), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88040301, // 0001 GETMBR R1 R1 K1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove -********************************************************************/ -be_local_closure(class_engine_proxy_remove, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(remove), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x88100903, // 0003 GETMBR R4 R4 K3 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080104, // 0006 GETMET R2 R0 K4 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020015, // 000A JMP #0021 - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8120400, // 000D GETNGBL R4 K2 - 0x88100905, // 000E GETMBR R4 R4 K5 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C080106, // 0011 GETMET R2 R0 K6 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x7002000A, // 0015 JMP #0021 - 0x6008000F, // 0016 GETGBL R2 G15 - 0x5C0C0200, // 0017 MOVE R3 R1 - 0xB8120400, // 0018 GETNGBL R4 K2 - 0x88100902, // 0019 GETMBR R4 R4 K2 - 0x7C080400, // 001A CALL R2 2 - 0x780A0004, // 001B JMPF R2 #0021 - 0x8C080107, // 001C GETMET R2 R0 K7 - 0x5C100200, // 001D MOVE R4 R1 - 0x7C080400, // 001E CALL R2 2 - 0x80040400, // 001F RET 1 R2 - 0x7001FFFF, // 0020 JMP #0021 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: size_animations -********************************************************************/ -be_local_closure(class_engine_proxy_size_animations, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(size_animations), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_animation -********************************************************************/ -be_local_closure(class_engine_proxy__add_animation, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_add_animation), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A000E, // 0006 JMPF R2 #0016 - 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x8C08050A, // 0008 GETMET R2 R2 K10 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x8C08010B, // 000B GETMET R2 R0 K11 - 0x7C080200, // 000C CALL R2 1 - 0x8808010C, // 000D GETMBR R2 R0 K12 - 0x780A0003, // 000E JMPF R2 #0013 - 0x8C08030D, // 000F GETMET R2 R1 K13 - 0x88100100, // 0010 GETMBR R4 R0 K0 - 0x8810090E, // 0011 GETMBR R4 R4 K14 - 0x7C080400, // 0012 CALL R2 2 - 0x50080200, // 0013 LDBOOL R2 1 0 - 0x80040400, // 0014 RET 1 R2 - 0x70020001, // 0015 JMP #0018 - 0x50080000, // 0016 LDBOOL R2 0 0 - 0x80040400, // 0017 RET 1 R2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_engine_proxy_start, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050D, // 0003 GETMET R2 R2 K13 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x5808000F, // 0006 LDCONST R2 K15 - 0x600C000C, // 0007 GETGBL R3 G12 - 0x88100110, // 0008 GETMBR R4 R0 K16 - 0x7C0C0200, // 0009 CALL R3 1 - 0x140C0403, // 000A LT R3 R2 R3 - 0x780E0006, // 000B JMPF R3 #0013 - 0x880C0110, // 000C GETMBR R3 R0 K16 - 0x940C0602, // 000D GETIDX R3 R3 R2 - 0x8C0C070D, // 000E GETMET R3 R3 K13 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x00080511, // 0011 ADD R2 R2 K17 - 0x7001FFF3, // 0012 JMP #0007 - 0x5808000F, // 0013 LDCONST R2 K15 - 0x600C000C, // 0014 GETGBL R3 G12 - 0x88100112, // 0015 GETMBR R4 R0 K18 - 0x7C0C0200, // 0016 CALL R3 1 - 0x140C0403, // 0017 LT R3 R2 R3 - 0x780E0006, // 0018 JMPF R3 #0020 - 0x880C0112, // 0019 GETMBR R3 R0 K18 - 0x940C0602, // 001A GETIDX R3 R3 R2 - 0x8C0C070D, // 001B GETMET R3 R3 K13 - 0x5C140200, // 001C MOVE R5 R1 - 0x7C0C0400, // 001D CALL R3 2 - 0x00080511, // 001E ADD R2 R2 K17 - 0x7001FFF3, // 001F JMP #0014 - 0x5808000F, // 0020 LDCONST R2 K15 - 0x600C000C, // 0021 GETGBL R3 G12 - 0x88100108, // 0022 GETMBR R4 R0 K8 - 0x7C0C0200, // 0023 CALL R3 1 - 0x140C0403, // 0024 LT R3 R2 R3 - 0x780E0006, // 0025 JMPF R3 #002D - 0x880C0108, // 0026 GETMBR R3 R0 K8 - 0x940C0602, // 0027 GETIDX R3 R3 R2 - 0x8C0C070D, // 0028 GETMET R3 R3 K13 - 0x5C140200, // 0029 MOVE R5 R1 - 0x7C0C0400, // 002A CALL R3 2 - 0x00080511, // 002B ADD R2 R2 K17 - 0x7001FFF3, // 002C JMP #0021 - 0x80040000, // 002D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _remove_value_provider -********************************************************************/ -be_local_closure(class_engine_proxy__remove_value_provider, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_remove_value_provider), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080112, // 0000 GETMBR R2 R0 K18 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0006, // 0006 JMPF R3 #000E - 0x880C0112, // 0007 GETMBR R3 R0 K18 - 0x8C0C0713, // 0008 GETMET R3 R3 K19 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0x80040600, // 000C RET 1 R3 - 0x70020001, // 000D JMP #0010 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x80040600, // 000F RET 1 R3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _remove_animation -********************************************************************/ -be_local_closure(class_engine_proxy__remove_animation, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_remove_animation), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0006, // 0006 JMPF R3 #000E - 0x880C0108, // 0007 GETMBR R3 R0 K8 - 0x8C0C0713, // 0008 GETMET R3 R3 K19 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0x80040600, // 000C RET 1 R3 - 0x70020001, // 000D JMP #0010 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x80040600, // 000F RET 1 R3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setup_template -********************************************************************/ -be_local_closure(class_engine_proxy_setup_template, /* name */ - be_nested_proto( - 1, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(setup_template), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update_current_iteration -********************************************************************/ -be_local_closure(class_engine_proxy_update_current_iteration, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(update_current_iteration), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x6008000C, // 0000 GETGBL R2 G12 - 0x880C0114, // 0001 GETMBR R3 R0 K20 - 0x7C080200, // 0002 CALL R2 1 - 0x2408050F, // 0003 GT R2 R2 K15 - 0x780A0002, // 0004 JMPF R2 #0008 - 0x88080114, // 0005 GETMBR R2 R0 K20 - 0x540DFFFE, // 0006 LDINT R3 -1 - 0x98080601, // 0007 SETIDX R2 R3 R1 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(class_engine_proxy_clear, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(clear), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C040115, // 0000 GETMET R1 R0 K21 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x90021001, // 0004 SETMBR R0 K8 R1 - 0x60040012, // 0005 GETGBL R1 G18 - 0x7C040000, // 0006 CALL R1 0 - 0x90022001, // 0007 SETMBR R0 K16 R1 - 0x60040012, // 0008 GETGBL R1 G18 - 0x7C040000, // 0009 CALL R1 0 - 0x90022401, // 000A SETMBR R0 K18 R1 - 0x80040000, // 000B RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_value_provider -********************************************************************/ -be_local_closure(class_engine_proxy__add_value_provider, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_add_value_provider), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080112, // 0000 GETMBR R2 R0 K18 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A0006, // 0006 JMPF R2 #000E - 0x88080112, // 0007 GETMBR R2 R0 K18 - 0x8C08050A, // 0008 GETMET R2 R2 K10 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x50080200, // 000B LDBOOL R2 1 0 - 0x80040400, // 000C RET 1 R2 - 0x70020001, // 000D JMP #0010 - 0x50080000, // 000E LDBOOL R2 0 0 - 0x80040400, // 000F RET 1 R2 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_sequence_manager -********************************************************************/ -be_local_closure(class_engine_proxy__add_sequence_manager, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_add_sequence_manager), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080110, // 0000 GETMBR R2 R0 K16 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A0006, // 0006 JMPF R2 #000E - 0x88080110, // 0007 GETMBR R2 R0 K16 - 0x8C08050A, // 0008 GETMET R2 R2 K10 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x50080200, // 000B LDBOOL R2 1 0 - 0x80040400, // 000C RET 1 R2 - 0x70020001, // 000D JMP #0010 - 0x50080000, // 000E LDBOOL R2 0 0 - 0x80040400, // 000F RET 1 R2 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_engine_proxy_stop, /* name */ +be_local_closure(triangle, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 10, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(stop), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_const_int(2), + }), + be_str_weak(triangle), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x5804000F, // 0000 LDCONST R1 K15 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0108, // 0002 GETMBR R3 R0 K8 - 0x7C080200, // 0003 CALL R2 1 - 0x14080202, // 0004 LT R2 R1 R2 - 0x780A0005, // 0005 JMPF R2 #000C - 0x88080108, // 0006 GETMBR R2 R0 K8 - 0x94080401, // 0007 GETIDX R2 R2 R1 - 0x8C080515, // 0008 GETMET R2 R2 K21 - 0x7C080200, // 0009 CALL R2 1 - 0x00040311, // 000A ADD R1 R1 K17 - 0x7001FFF4, // 000B JMP #0001 - 0x5804000F, // 000C LDCONST R1 K15 - 0x6008000C, // 000D GETGBL R2 G12 - 0x880C0110, // 000E GETMBR R3 R0 K16 - 0x7C080200, // 000F CALL R2 1 - 0x14080202, // 0010 LT R2 R1 R2 - 0x780A0005, // 0011 JMPF R2 #0018 - 0x88080110, // 0012 GETMBR R2 R0 K16 - 0x94080401, // 0013 GETIDX R2 R2 R1 - 0x8C080515, // 0014 GETMET R2 R2 K21 - 0x7C080200, // 0015 CALL R2 1 - 0x00040311, // 0016 ADD R1 R1 K17 - 0x7001FFF4, // 0017 JMP #000D - 0x60080003, // 0018 GETGBL R2 G3 - 0x5C0C0000, // 0019 MOVE R3 R0 - 0x7C080200, // 001A CALL R2 1 - 0x8C080515, // 001B GETMET R2 R2 K21 - 0x7C080200, // 001C CALL R2 1 - 0x80040000, // 001D RET 1 R0 + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060503, // 0004 SETMBR R1 K2 K3 + 0x80040200, // 0005 RET 1 R1 }) ) ); @@ -13417,616 +13508,9 @@ be_local_closure(class_engine_proxy_stop, /* name */ /******************************************************************** -** Solidified function: add +** Solidified function: smooth ********************************************************************/ -be_local_closure(class_engine_proxy_add, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(add), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8120400, // 0002 GETNGBL R4 K2 - 0x88100903, // 0003 GETMBR R4 R4 K3 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080116, // 0006 GETMET R2 R0 K22 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020016, // 000A JMP #0022 - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8120400, // 000D GETNGBL R4 K2 - 0x88100905, // 000E GETMBR R4 R4 K5 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C080117, // 0011 GETMET R2 R0 K23 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x7002000B, // 0015 JMP #0022 - 0x6008000F, // 0016 GETGBL R2 G15 - 0x5C0C0200, // 0017 MOVE R3 R1 - 0xB8120400, // 0018 GETNGBL R4 K2 - 0x88100902, // 0019 GETMBR R4 R4 K2 - 0x7C080400, // 001A CALL R2 2 - 0x780A0004, // 001B JMPF R2 #0021 - 0x8C080118, // 001C GETMET R2 R0 K24 - 0x5C100200, // 001D MOVE R4 R1 - 0x7C080400, // 001E CALL R2 2 - 0x80040400, // 001F RET 1 R2 - 0x70020000, // 0020 JMP #0022 - 0xB006331A, // 0021 RAISE 1 K25 K26 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_engine_proxy_update, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x90021C01, // 0000 SETMBR R0 K14 R1 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x88080501, // 0002 GETMBR R2 R2 K1 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x60080003, // 0004 GETGBL R2 G3 - 0x5C0C0000, // 0005 MOVE R3 R0 - 0x7C080200, // 0006 CALL R2 1 - 0x8C08051B, // 0007 GETMET R2 R2 K27 - 0x5C100200, // 0008 MOVE R4 R1 - 0x7C080400, // 0009 CALL R2 2 - 0x5808000F, // 000A LDCONST R2 K15 - 0x600C000C, // 000B GETGBL R3 G12 - 0x88100112, // 000C GETMBR R4 R0 K18 - 0x7C0C0200, // 000D CALL R3 1 - 0x14100403, // 000E LT R4 R2 R3 - 0x7812000D, // 000F JMPF R4 #001E - 0x88100112, // 0010 GETMBR R4 R0 K18 - 0x94100802, // 0011 GETIDX R4 R4 R2 - 0x8814090C, // 0012 GETMBR R5 R4 K12 - 0x78160007, // 0013 JMPF R5 #001C - 0x8814091C, // 0014 GETMBR R5 R4 K28 - 0x4C180000, // 0015 LDNIL R6 - 0x1C140A06, // 0016 EQ R5 R5 R6 - 0x78160000, // 0017 JMPF R5 #0019 - 0x90123801, // 0018 SETMBR R4 K28 R1 - 0x8C14091B, // 0019 GETMET R5 R4 K27 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x7C140400, // 001B CALL R5 2 - 0x00080511, // 001C ADD R2 R2 K17 - 0x7001FFEF, // 001D JMP #000E - 0x5808000F, // 001E LDCONST R2 K15 - 0x6010000C, // 001F GETGBL R4 G12 - 0x88140110, // 0020 GETMBR R5 R0 K16 - 0x7C100200, // 0021 CALL R4 1 - 0x5C0C0800, // 0022 MOVE R3 R4 - 0x14100403, // 0023 LT R4 R2 R3 - 0x7812000D, // 0024 JMPF R4 #0033 - 0x88100110, // 0025 GETMBR R4 R0 K16 - 0x94100802, // 0026 GETIDX R4 R4 R2 - 0x8814090C, // 0027 GETMBR R5 R4 K12 - 0x78160007, // 0028 JMPF R5 #0031 - 0x8814091C, // 0029 GETMBR R5 R4 K28 - 0x4C180000, // 002A LDNIL R6 - 0x1C140A06, // 002B EQ R5 R5 R6 - 0x78160000, // 002C JMPF R5 #002E - 0x90123801, // 002D SETMBR R4 K28 R1 - 0x8C14091B, // 002E GETMET R5 R4 K27 - 0x5C1C0200, // 002F MOVE R7 R1 - 0x7C140400, // 0030 CALL R5 2 - 0x00080511, // 0031 ADD R2 R2 K17 - 0x7001FFEF, // 0032 JMP #0023 - 0x5808000F, // 0033 LDCONST R2 K15 - 0x6010000C, // 0034 GETGBL R4 G12 - 0x88140108, // 0035 GETMBR R5 R0 K8 - 0x7C100200, // 0036 CALL R4 1 - 0x5C0C0800, // 0037 MOVE R3 R4 - 0x14100403, // 0038 LT R4 R2 R3 - 0x7812000D, // 0039 JMPF R4 #0048 - 0x88100108, // 003A GETMBR R4 R0 K8 - 0x94100802, // 003B GETIDX R4 R4 R2 - 0x8814090C, // 003C GETMBR R5 R4 K12 - 0x78160007, // 003D JMPF R5 #0046 - 0x8814091C, // 003E GETMBR R5 R4 K28 - 0x4C180000, // 003F LDNIL R6 - 0x1C140A06, // 0040 EQ R5 R5 R6 - 0x78160000, // 0041 JMPF R5 #0043 - 0x90123801, // 0042 SETMBR R4 K28 R1 - 0x8C14091B, // 0043 GETMET R5 R4 K27 - 0x5C1C0200, // 0044 MOVE R7 R1 - 0x7C140400, // 0045 CALL R5 2 - 0x00080511, // 0046 ADD R2 R2 K17 - 0x7001FFEF, // 0047 JMP #0038 - 0x80000000, // 0048 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pop_iteration_context -********************************************************************/ -be_local_closure(class_engine_proxy_pop_iteration_context, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(pop_iteration_context), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080114, // 0001 GETMBR R2 R0 K20 - 0x7C040200, // 0002 CALL R1 1 - 0x2404030F, // 0003 GT R1 R1 K15 - 0x78060003, // 0004 JMPF R1 #0009 - 0x88040114, // 0005 GETMBR R1 R0 K20 - 0x8C04031D, // 0006 GETMET R1 R1 K29 - 0x7C040200, // 0007 CALL R1 1 - 0x80040200, // 0008 RET 1 R1 - 0x4C040000, // 0009 LDNIL R1 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _remove_sequence_manager -********************************************************************/ -be_local_closure(class_engine_proxy__remove_sequence_manager, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_remove_sequence_manager), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080110, // 0000 GETMBR R2 R0 K16 - 0x8C080509, // 0001 GETMET R2 R2 K9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0006, // 0006 JMPF R3 #000E - 0x880C0110, // 0007 GETMBR R3 R0 K16 - 0x8C0C0713, // 0008 GETMET R3 R3 K19 - 0x5C140400, // 0009 MOVE R5 R2 - 0x7C0C0400, // 000A CALL R3 2 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0x80040600, // 000C RET 1 R3 - 0x70020001, // 000D JMP #0010 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x80040600, // 000F RET 1 R3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_empty -********************************************************************/ -be_local_closure(class_engine_proxy_is_empty, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(is_empty), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x1C04030F, // 0003 EQ R1 R1 K15 - 0x78060009, // 0004 JMPF R1 #000F - 0x6004000C, // 0005 GETGBL R1 G12 - 0x88080110, // 0006 GETMBR R2 R0 K16 - 0x7C040200, // 0007 CALL R1 1 - 0x1C04030F, // 0008 EQ R1 R1 K15 - 0x78060004, // 0009 JMPF R1 #000F - 0x6004000C, // 000A GETGBL R1 G12 - 0x88080112, // 000B GETMBR R2 R0 K18 - 0x7C040200, // 000C CALL R1 1 - 0x1C04030F, // 000D EQ R1 R1 K15 - 0x74060000, // 000E JMPT R1 #0010 - 0x50040001, // 000F LDBOOL R1 0 1 - 0x50040200, // 0010 LDBOOL R1 1 0 - 0x80040200, // 0011 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sort_animations_by_priority -********************************************************************/ -be_local_closure(class_engine_proxy__sort_animations_by_priority, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(_sort_animations_by_priority), - &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x18080311, // 0003 LE R2 R1 K17 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80000400, // 0005 RET 0 - 0x58080011, // 0006 LDCONST R2 K17 - 0x140C0401, // 0007 LT R3 R2 R1 - 0x780E0025, // 0008 JMPF R3 #002F - 0x880C0108, // 0009 GETMBR R3 R0 K8 - 0x940C0602, // 000A GETIDX R3 R3 R2 - 0x6010000F, // 000B GETGBL R4 G15 - 0x5C140600, // 000C MOVE R5 R3 - 0xB81A0400, // 000D GETNGBL R6 K2 - 0x88180D02, // 000E GETMBR R6 R6 K2 - 0x7C100400, // 000F CALL R4 2 - 0x74120001, // 0010 JMPT R4 #0013 - 0x00080511, // 0011 ADD R2 R2 K17 - 0x7001FFF3, // 0012 JMP #0007 - 0x5C100400, // 0013 MOVE R4 R2 - 0x2414090F, // 0014 GT R5 R4 K15 - 0x78160014, // 0015 JMPF R5 #002B - 0x04140911, // 0016 SUB R5 R4 K17 - 0x88180108, // 0017 GETMBR R6 R0 K8 - 0x94140C05, // 0018 GETIDX R5 R6 R5 - 0x6018000F, // 0019 GETGBL R6 G15 - 0x5C1C0A00, // 001A MOVE R7 R5 - 0xB8220400, // 001B GETNGBL R8 K2 - 0x88201102, // 001C GETMBR R8 R8 K2 - 0x7C180400, // 001D CALL R6 2 - 0x781A0003, // 001E JMPF R6 #0023 - 0x88180B1E, // 001F GETMBR R6 R5 K30 - 0x881C071E, // 0020 GETMBR R7 R3 K30 - 0x28180C07, // 0021 GE R6 R6 R7 - 0x781A0000, // 0022 JMPF R6 #0024 - 0x70020006, // 0023 JMP #002B - 0x88180108, // 0024 GETMBR R6 R0 K8 - 0x041C0911, // 0025 SUB R7 R4 K17 - 0x88200108, // 0026 GETMBR R8 R0 K8 - 0x941C1007, // 0027 GETIDX R7 R8 R7 - 0x98180807, // 0028 SETIDX R6 R4 R7 - 0x04100911, // 0029 SUB R4 R4 K17 - 0x7001FFE8, // 002A JMP #0014 - 0x88140108, // 002B GETMBR R5 R0 K8 - 0x98140803, // 002C SETIDX R5 R4 R3 - 0x00080511, // 002D ADD R2 R2 K17 - 0x7001FFD7, // 002E JMP #0007 - 0x80000000, // 002F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_engine_proxy_render, /* name */ - be_nested_proto( - 14, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x8810010C, // 0000 GETMBR R4 R0 K12 - 0x78120002, // 0001 JMPF R4 #0005 - 0x4C100000, // 0002 LDNIL R4 - 0x1C100204, // 0003 EQ R4 R1 R4 - 0x78120001, // 0004 JMPF R4 #0007 - 0x50100000, // 0005 LDBOOL R4 0 0 - 0x80040800, // 0006 RET 1 R4 - 0x4C100000, // 0007 LDNIL R4 - 0x1C100604, // 0008 EQ R4 R3 R4 - 0x78120000, // 0009 JMPF R4 #000B - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x50100000, // 000B LDBOOL R4 0 0 - 0x5814000F, // 000C LDCONST R5 K15 - 0x6018000C, // 000D GETGBL R6 G12 - 0x881C0108, // 000E GETMBR R7 R0 K8 - 0x7C180200, // 000F CALL R6 1 - 0x141C0A06, // 0010 LT R7 R5 R6 - 0x781E0019, // 0011 JMPF R7 #002C - 0x881C0108, // 0012 GETMBR R7 R0 K8 - 0x941C0E05, // 0013 GETIDX R7 R7 R5 - 0x88200F0C, // 0014 GETMBR R8 R7 K12 - 0x78220013, // 0015 JMPF R8 #002A - 0x8820011F, // 0016 GETMBR R8 R0 K31 - 0x8C201120, // 0017 GETMET R8 R8 K32 - 0x7C200200, // 0018 CALL R8 1 - 0x8C200F21, // 0019 GETMET R8 R7 K33 - 0x8828011F, // 001A GETMBR R10 R0 K31 - 0x5C2C0400, // 001B MOVE R11 R2 - 0x5C300600, // 001C MOVE R12 R3 - 0x7C200800, // 001D CALL R8 4 - 0x7822000A, // 001E JMPF R8 #002A - 0x8C240F22, // 001F GETMET R9 R7 K34 - 0x882C011F, // 0020 GETMBR R11 R0 K31 - 0x5C300400, // 0021 MOVE R12 R2 - 0x5C340600, // 0022 MOVE R13 R3 - 0x7C240800, // 0023 CALL R9 4 - 0x8C240323, // 0024 GETMET R9 R1 K35 - 0x882C0324, // 0025 GETMBR R11 R1 K36 - 0x8830011F, // 0026 GETMBR R12 R0 K31 - 0x88301924, // 0027 GETMBR R12 R12 K36 - 0x7C240600, // 0028 CALL R9 3 - 0x50100200, // 0029 LDBOOL R4 1 0 - 0x00140B11, // 002A ADD R5 R5 K17 - 0x7001FFE3, // 002B JMP #0010 - 0x80040800, // 002C RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_current_iteration_number -********************************************************************/ -be_local_closure(class_engine_proxy_get_current_iteration_number, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(get_current_iteration_number), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080114, // 0001 GETMBR R2 R0 K20 - 0x7C040200, // 0002 CALL R1 1 - 0x2404030F, // 0003 GT R1 R1 K15 - 0x78060003, // 0004 JMPF R1 #0009 - 0x88040114, // 0005 GETMBR R1 R0 K20 - 0x5409FFFE, // 0006 LDINT R2 -1 - 0x94040202, // 0007 GETIDX R1 R1 R2 - 0x80040200, // 0008 RET 1 R1 - 0x4C040000, // 0009 LDNIL R1 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: push_iteration_context -********************************************************************/ -be_local_closure(class_engine_proxy_push_iteration_context, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(push_iteration_context), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080114, // 0000 GETMBR R2 R0 K20 - 0x8C08050A, // 0001 GETMET R2 R2 K10 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_animations -********************************************************************/ -be_local_closure(class_engine_proxy_get_animations, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(get_animations), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x60080010, // 0002 GETGBL R2 G16 - 0x880C0108, // 0003 GETMBR R3 R0 K8 - 0x7C080200, // 0004 CALL R2 1 - 0xA802000B, // 0005 EXBLK 0 #0012 - 0x5C0C0400, // 0006 MOVE R3 R2 - 0x7C0C0000, // 0007 CALL R3 0 - 0x6010000F, // 0008 GETGBL R4 G15 - 0x5C140600, // 0009 MOVE R5 R3 - 0xB81A0400, // 000A GETNGBL R6 K2 - 0x88180D02, // 000B GETMBR R6 R6 K2 - 0x7C100400, // 000C CALL R4 2 - 0x78120002, // 000D JMPF R4 #0011 - 0x8C10030A, // 000E GETMET R4 R1 K10 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x7001FFF3, // 0011 JMP #0006 - 0x58080025, // 0012 LDCONST R2 K37 - 0xAC080200, // 0013 CATCH R2 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_engine_proxy_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_engine_proxy, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080526, // 0003 GETMET R2 R2 K38 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x8808051F, // 0007 GETMBR R2 R2 K31 - 0x90023E02, // 0008 SETMBR R0 K31 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90021002, // 000B SETMBR R0 K8 R2 - 0x60080012, // 000C GETGBL R2 G18 - 0x7C080000, // 000D CALL R2 0 - 0x90022002, // 000E SETMBR R0 K16 R2 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90022402, // 0011 SETMBR R0 K18 R2 - 0x60080012, // 0012 GETGBL R2 G18 - 0x7C080000, // 0013 CALL R2 0 - 0x90022802, // 0014 SETMBR R0 K20 R2 - 0x90021D0F, // 0015 SETMBR R0 K14 K15 - 0x8C080127, // 0016 GETMET R2 R0 K39 - 0x7C080200, // 0017 CALL R2 1 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: engine_proxy -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(engine_proxy, - 7, - &be_class_Animation, - be_nested_map(31, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_strip_length, -1), be_const_closure(class_engine_proxy_get_strip_length_closure) }, - { be_const_key_weak(remove, -1), be_const_closure(class_engine_proxy_remove_closure) }, - { be_const_key_weak(size_animations, 23), be_const_closure(class_engine_proxy_size_animations_closure) }, - { be_const_key_weak(_add_animation, 24), be_const_closure(class_engine_proxy__add_animation_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_engine_proxy_start_closure) }, - { be_const_key_weak(value_providers, 19), be_const_var(2) }, - { be_const_key_weak(setup_template, -1), be_const_closure(class_engine_proxy_setup_template_closure) }, - { be_const_key_weak(_remove_animation, -1), be_const_closure(class_engine_proxy__remove_animation_closure) }, - { be_const_key_weak(animations, 6), be_const_var(0) }, - { be_const_key_weak(update_current_iteration, -1), be_const_closure(class_engine_proxy_update_current_iteration_closure) }, - { be_const_key_weak(clear, -1), be_const_closure(class_engine_proxy_clear_closure) }, - { be_const_key_weak(_add_value_provider, 12), be_const_closure(class_engine_proxy__add_value_provider_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_engine_proxy_stop_closure) }, - { be_const_key_weak(strip_length, -1), be_const_var(3) }, - { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_engine_proxy__add_sequence_manager_closure) }, - { be_const_key_weak(push_iteration_context, 22), be_const_closure(class_engine_proxy_push_iteration_context_closure) }, - { be_const_key_weak(add, -1), be_const_closure(class_engine_proxy_add_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_engine_proxy_update_closure) }, - { be_const_key_weak(_remove_value_provider, 27), be_const_closure(class_engine_proxy__remove_value_provider_closure) }, - { be_const_key_weak(pop_iteration_context, -1), be_const_closure(class_engine_proxy_pop_iteration_context_closure) }, - { be_const_key_weak(_remove_sequence_manager, -1), be_const_closure(class_engine_proxy__remove_sequence_manager_closure) }, - { be_const_key_weak(is_empty, -1), be_const_closure(class_engine_proxy_is_empty_closure) }, - { be_const_key_weak(sequences, -1), be_const_var(1) }, - { be_const_key_weak(time_ms, 8), be_const_var(6) }, - { be_const_key_weak(_sort_animations_by_priority, -1), be_const_closure(class_engine_proxy__sort_animations_by_priority_closure) }, - { be_const_key_weak(render, 15), be_const_closure(class_engine_proxy_render_closure) }, - { be_const_key_weak(get_current_iteration_number, -1), be_const_closure(class_engine_proxy_get_current_iteration_number_closure) }, - { be_const_key_weak(iteration_stack, -1), be_const_var(5) }, - { be_const_key_weak(get_animations, -1), be_const_closure(class_engine_proxy_get_animations_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_engine_proxy_init_closure) }, - { be_const_key_weak(temp_buffer, -1), be_const_var(4) }, - })), - be_str_weak(engine_proxy) -); - -/******************************************************************** -** Solidified function: cosine_osc -********************************************************************/ -be_local_closure(cosine_osc, /* name */ +be_local_closure(smooth, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -14041,7 +13525,7 @@ be_local_closure(cosine_osc, /* name */ /* K1 */ be_nested_str_weak(oscillator_value), /* K2 */ be_nested_str_weak(form), }), - be_str_weak(cosine_osc), + be_str_weak(smooth), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 @@ -14056,38 +13540,157 @@ be_local_closure(cosine_osc, /* name */ ); /*******************************************************************/ +// compact class 'EventHandler' ktab size: 7, total: 11 (saved 32 bytes) +static const bvalue be_ktab_class_EventHandler[7] = { + /* K0 */ be_nested_str_weak(is_active), + /* K1 */ be_nested_str_weak(condition), + /* K2 */ be_nested_str_weak(callback_func), + /* K3 */ be_nested_str_weak(event_name), + /* K4 */ be_nested_str_weak(priority), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(metadata), +}; + + +extern const bclass be_class_EventHandler; /******************************************************************** -** Solidified function: clear_all_event_handlers +** Solidified function: set_active ********************************************************************/ -be_local_closure(clear_all_event_handlers, /* name */ +be_local_closure(class_EventHandler_set_active, /* name */ be_nested_proto( 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(event_manager), - /* K2 */ be_nested_str_weak(clear_all_handlers), - }), - be_str_weak(clear_all_event_handlers), + &be_ktab_class_EventHandler, /* shared constants */ + be_str_weak(set_active), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8020000, // 0000 GETNGBL R0 K0 - 0x88000101, // 0001 GETMBR R0 R0 K1 - 0x8C000102, // 0002 GETMET R0 R0 K2 - 0x7C000200, // 0003 CALL R0 1 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 }) ) ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: execute +********************************************************************/ +be_local_closure(class_EventHandler_execute, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventHandler, /* shared constants */ + be_str_weak(execute), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0001, // 0001 JMPT R2 #0004 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x80040400, // 0003 RET 1 R2 + 0x88080101, // 0004 GETMBR R2 R0 K1 + 0x4C0C0000, // 0005 LDNIL R3 + 0x20080403, // 0006 NE R2 R2 R3 + 0x780A0005, // 0007 JMPF R2 #000E + 0x8C080101, // 0008 GETMET R2 R0 K1 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x740A0001, // 000B JMPT R2 #000E + 0x50080000, // 000C LDBOOL R2 0 0 + 0x80040400, // 000D RET 1 R2 + 0x88080102, // 000E GETMBR R2 R0 K2 + 0x4C0C0000, // 000F LDNIL R3 + 0x20080403, // 0010 NE R2 R2 R3 + 0x780A0004, // 0011 JMPF R2 #0017 + 0x8C080102, // 0012 GETMET R2 R0 K2 + 0x5C100200, // 0013 MOVE R4 R1 + 0x7C080400, // 0014 CALL R2 2 + 0x50080200, // 0015 LDBOOL R2 1 0 + 0x80040400, // 0016 RET 1 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x80040400, // 0018 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_EventHandler_init, /* name */ + be_nested_proto( + 7, /* nstack */ + 6, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_EventHandler, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x90020601, // 0000 SETMBR R0 K3 R1 + 0x90020402, // 0001 SETMBR R0 K2 R2 + 0x4C180000, // 0002 LDNIL R6 + 0x20180606, // 0003 NE R6 R3 R6 + 0x781A0001, // 0004 JMPF R6 #0007 + 0x5C180600, // 0005 MOVE R6 R3 + 0x70020000, // 0006 JMP #0008 + 0x58180005, // 0007 LDCONST R6 K5 + 0x90020806, // 0008 SETMBR R0 K4 R6 + 0x90020204, // 0009 SETMBR R0 K1 R4 + 0x50180200, // 000A LDBOOL R6 1 0 + 0x90020006, // 000B SETMBR R0 K0 R6 + 0x4C180000, // 000C LDNIL R6 + 0x20180A06, // 000D NE R6 R5 R6 + 0x781A0001, // 000E JMPF R6 #0011 + 0x5C180A00, // 000F MOVE R6 R5 + 0x70020001, // 0010 JMP #0013 + 0x60180013, // 0011 GETGBL R6 G19 + 0x7C180000, // 0012 CALL R6 0 + 0x90020C06, // 0013 SETMBR R0 K6 R6 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: EventHandler +********************************************************************/ +be_local_class(EventHandler, + 6, + NULL, + be_nested_map(9, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(set_active, -1), be_const_closure(class_EventHandler_set_active_closure) }, + { be_const_key_weak(execute, 2), be_const_closure(class_EventHandler_execute_closure) }, + { be_const_key_weak(callback_func, -1), be_const_var(1) }, + { be_const_key_weak(init, -1), be_const_closure(class_EventHandler_init_closure) }, + { be_const_key_weak(event_name, -1), be_const_var(0) }, + { be_const_key_weak(condition, -1), be_const_var(2) }, + { be_const_key_weak(priority, 3), be_const_var(3) }, + { be_const_key_weak(metadata, -1), be_const_var(5) }, + { be_const_key_weak(is_active, -1), be_const_var(4) }, + })), + be_str_weak(EventHandler) +); // compact class 'frame_buffer' ktab size: 20, total: 40 (saved 160 bytes) static const bvalue be_ktab_class_frame_buffer[20] = { /* K0 */ be_nested_str_weak(pixels), @@ -14461,51 +14064,174 @@ be_local_class(frame_buffer, })), be_str_weak(frame_buffer) ); -// compact class 'WaveAnimation' ktab size: 32, total: 52 (saved 160 bytes) -static const bvalue be_ktab_class_WaveAnimation[32] = { - /* K0 */ be_nested_str_weak(update), - /* K1 */ be_nested_str_weak(wave_speed), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(start_time), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(scale_uint), - /* K6 */ be_nested_str_weak(time_offset), - /* K7 */ be_nested_str_weak(_calculate_wave), - /* K8 */ be_nested_str_weak(init), - /* K9 */ be_nested_str_weak(current_colors), - /* K10 */ be_nested_str_weak(wave_table), - /* K11 */ be_nested_str_weak(_init_wave_table), - /* K12 */ be_nested_str_weak(engine), - /* K13 */ be_nested_str_weak(strip_length), - /* K14 */ be_nested_str_weak(frequency), - /* K15 */ be_nested_str_weak(phase), - /* K16 */ be_nested_str_weak(amplitude), - /* K17 */ be_nested_str_weak(center_level), - /* K18 */ be_nested_str_weak(back_color), - /* K19 */ be_nested_str_weak(color), - /* K20 */ be_nested_str_weak(size), - /* K21 */ be_nested_str_weak(resize), - /* K22 */ be_const_int(1), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(is_color_provider), - /* K25 */ be_nested_str_weak(get_color_for_value), - /* K26 */ be_nested_str_weak(resolve_value), - /* K27 */ be_nested_str_weak(width), - /* K28 */ be_nested_str_weak(set_pixel_color), - /* K29 */ be_nested_str_weak(on_param_changed), - /* K30 */ be_nested_str_weak(wave_type), - /* K31 */ be_const_int(2), +// compact class 'static_color' ktab size: 3, total: 6 (saved 24 bytes) +static const bvalue be_ktab_class_static_color[3] = { + /* K0 */ be_nested_str_weak(color), + /* K1 */ be_nested_str_weak(brightness), + /* K2 */ be_nested_str_weak(apply_brightness), }; -extern const bclass be_class_WaveAnimation; +extern const bclass be_class_static_color; /******************************************************************** -** Solidified function: update +** Solidified function: produce_value ********************************************************************/ -be_local_closure(class_WaveAnimation_update, /* name */ +be_local_closure(class_static_color_produce_value, /* name */ be_nested_proto( - 11, /* nstack */ + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_static_color, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x541600FE, // 0002 LDINT R5 255 + 0x20140805, // 0003 NE R5 R4 R5 + 0x78160004, // 0004 JMPF R5 #000A + 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x5C200800, // 0007 MOVE R8 R4 + 0x7C140600, // 0008 CALL R5 3 + 0x80040A00, // 0009 RET 1 R5 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_static_color_get_color_for_value, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_static_color, /* shared constants */ + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x541600FE, // 0002 LDINT R5 255 + 0x20140805, // 0003 NE R5 R4 R5 + 0x78160004, // 0004 JMPF R5 #000A + 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x5C200800, // 0007 MOVE R8 R4 + 0x7C140600, // 0008 CALL R5 3 + 0x80040A00, // 0009 RET 1 R5 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: static_color +********************************************************************/ +extern const bclass be_class_color_provider; +be_local_class(static_color, + 0, + &be_class_color_provider, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(produce_value, 1), be_const_closure(class_static_color_produce_value_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(color, -1), be_const_bytes_instance(0400FF) }, + })) ) } )) }, + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_static_color_get_color_for_value_closure) }, + })), + be_str_weak(static_color) +); + +/******************************************************************** +** Solidified function: square +********************************************************************/ +be_local_closure(square, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_const_int(3), + }), + be_str_weak(square), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060503, // 0004 SETMBR R1 K2 K3 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'Animation' ktab size: 24, total: 32 (saved 64 bytes) +static const bvalue be_ktab_class_Animation[24] = { + /* K0 */ be_nested_str_weak(get_color_at), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(init), + /* K3 */ be_nested_str_weak(member), + /* K4 */ be_nested_str_weak(color), + /* K5 */ be_nested_str_weak(fill_pixels), + /* K6 */ be_nested_str_weak(pixels), + /* K7 */ be_nested_str_weak(animation), + /* K8 */ be_nested_str_weak(opacity_frame), + /* K9 */ be_nested_str_weak(width), + /* K10 */ be_nested_str_weak(frame_buffer), + /* K11 */ be_nested_str_weak(clear), + /* K12 */ be_nested_str_weak(is_running), + /* K13 */ be_nested_str_weak(start), + /* K14 */ be_nested_str_weak(start_time), + /* K15 */ be_nested_str_weak(update), + /* K16 */ be_nested_str_weak(render), + /* K17 */ be_nested_str_weak(apply_opacity), + /* K18 */ be_nested_str_weak(opacity), + /* K19 */ be_nested_str_weak(int), + /* K20 */ be_nested_str_weak(_apply_opacity), + /* K21 */ be_nested_str_weak(get_param_value), + /* K22 */ be_nested_str_weak(duration), + /* K23 */ be_nested_str_weak(loop), +}; + + +extern const bclass be_class_Animation; + +/******************************************************************** +** Solidified function: get_color +********************************************************************/ +be_local_closure(class_Animation_get_color, /* name */ + be_nested_proto( + 6, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -14513,41 +14239,15 @@ be_local_closure(class_WaveAnimation_update, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ - be_str_weak(update), + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(get_color), &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080101, // 0006 GETMBR R2 R0 K1 - 0x240C0502, // 0007 GT R3 R2 K2 - 0x780E0011, // 0008 JMPF R3 #001B - 0x880C0103, // 0009 GETMBR R3 R0 K3 - 0x040C0203, // 000A SUB R3 R1 R3 - 0xB8120800, // 000B GETNGBL R4 K4 - 0x8C100905, // 000C GETMET R4 R4 K5 - 0x5C180400, // 000D MOVE R6 R2 - 0x581C0002, // 000E LDCONST R7 K2 - 0x542200FE, // 000F LDINT R8 255 - 0x58240002, // 0010 LDCONST R9 K2 - 0x542A0009, // 0011 LDINT R10 10 - 0x7C100C00, // 0012 CALL R4 6 - 0x24140902, // 0013 GT R5 R4 K2 - 0x78160005, // 0014 JMPF R5 #001B - 0x08140604, // 0015 MUL R5 R3 R4 - 0x541A03E7, // 0016 LDINT R6 1000 - 0x0C140A06, // 0017 DIV R5 R5 R6 - 0x541A00FF, // 0018 LDINT R6 256 - 0x10140A06, // 0019 MOD R5 R5 R6 - 0x90020C05, // 001A SETMBR R0 K6 R5 - 0x8C0C0107, // 001B GETMET R3 R0 K7 - 0x5C140200, // 001C MOVE R5 R1 - 0x7C0C0400, // 001D CALL R3 2 - 0x80000000, // 001E RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x58100001, // 0001 LDCONST R4 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -14557,7 +14257,7 @@ be_local_closure(class_WaveAnimation_update, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_WaveAnimation_init, /* name */ +be_local_closure(class_Animation_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -14567,217 +14267,17 @@ be_local_closure(class_WaveAnimation_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ + &be_ktab_class_Animation, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080508, // 0003 GETMET R2 R2 K8 + 0x8C080502, // 0003 GETMET R2 R2 K2 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90021202, // 0008 SETMBR R0 K9 R2 - 0x90020D02, // 0009 SETMBR R0 K6 K2 - 0x60080012, // 000A GETGBL R2 G18 - 0x7C080000, // 000B CALL R2 0 - 0x90021402, // 000C SETMBR R0 K10 R2 - 0x8C08010B, // 000D GETMET R2 R0 K11 - 0x7C080200, // 000E CALL R2 1 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_wave -********************************************************************/ -be_local_closure(class_WaveAnimation__calculate_wave, /* name */ - be_nested_proto( - 27, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ - be_str_weak(_calculate_wave), - &be_const_str_solidified, - ( &(const binstruction[168]) { /* code */ - 0x8808010C, // 0000 GETMBR R2 R0 K12 - 0x8808050D, // 0001 GETMBR R2 R2 K13 - 0x880C010E, // 0002 GETMBR R3 R0 K14 - 0x8810010F, // 0003 GETMBR R4 R0 K15 - 0x88140110, // 0004 GETMBR R5 R0 K16 - 0x88180111, // 0005 GETMBR R6 R0 K17 - 0x881C0112, // 0006 GETMBR R7 R0 K18 - 0x88200113, // 0007 GETMBR R8 R0 K19 - 0x88240109, // 0008 GETMBR R9 R0 K9 - 0x8C241314, // 0009 GETMET R9 R9 K20 - 0x7C240200, // 000A CALL R9 1 - 0x20241202, // 000B NE R9 R9 R2 - 0x78260003, // 000C JMPF R9 #0011 - 0x88240109, // 000D GETMBR R9 R0 K9 - 0x8C241315, // 000E GETMET R9 R9 K21 - 0x5C2C0400, // 000F MOVE R11 R2 - 0x7C240400, // 0010 CALL R9 2 - 0x58240002, // 0011 LDCONST R9 K2 - 0x14281202, // 0012 LT R10 R9 R2 - 0x782A0092, // 0013 JMPF R10 #00A7 - 0xB82A0800, // 0014 GETNGBL R10 K4 - 0x8C281505, // 0015 GETMET R10 R10 K5 - 0x5C301200, // 0016 MOVE R12 R9 - 0x58340002, // 0017 LDCONST R13 K2 - 0x04380516, // 0018 SUB R14 R2 K22 - 0x583C0002, // 0019 LDCONST R15 K2 - 0x544200FE, // 001A LDINT R16 255 - 0x7C280C00, // 001B CALL R10 6 - 0x082C1403, // 001C MUL R11 R10 R3 - 0x5432001F, // 001D LDINT R12 32 - 0x0C2C160C, // 001E DIV R11 R11 R12 - 0x002C1604, // 001F ADD R11 R11 R4 - 0x88300106, // 0020 GETMBR R12 R0 K6 - 0x002C160C, // 0021 ADD R11 R11 R12 - 0x543200FE, // 0022 LDINT R12 255 - 0x2C2C160C, // 0023 AND R11 R11 R12 - 0x8830010A, // 0024 GETMBR R12 R0 K10 - 0x9430180B, // 0025 GETIDX R12 R12 R11 - 0xB8360800, // 0026 GETNGBL R13 K4 - 0x8C341B05, // 0027 GETMET R13 R13 K5 - 0x5C3C0A00, // 0028 MOVE R15 R5 - 0x58400002, // 0029 LDCONST R16 K2 - 0x544600FE, // 002A LDINT R17 255 - 0x58480002, // 002B LDCONST R18 K2 - 0x544E007F, // 002C LDINT R19 128 - 0x7C340C00, // 002D CALL R13 6 - 0x58380002, // 002E LDCONST R14 K2 - 0x543E007F, // 002F LDINT R15 128 - 0x283C180F, // 0030 GE R15 R12 R15 - 0x783E000D, // 0031 JMPF R15 #0040 - 0x543E007F, // 0032 LDINT R15 128 - 0x043C180F, // 0033 SUB R15 R12 R15 - 0xB8420800, // 0034 GETNGBL R16 K4 - 0x8C402105, // 0035 GETMET R16 R16 K5 - 0x5C481E00, // 0036 MOVE R18 R15 - 0x584C0002, // 0037 LDCONST R19 K2 - 0x5452007E, // 0038 LDINT R20 127 - 0x58540002, // 0039 LDCONST R21 K2 - 0x5C581A00, // 003A MOVE R22 R13 - 0x7C400C00, // 003B CALL R16 6 - 0x5C3C2000, // 003C MOVE R15 R16 - 0x00400C0F, // 003D ADD R16 R6 R15 - 0x5C382000, // 003E MOVE R14 R16 - 0x7002000C, // 003F JMP #004D - 0x543E007F, // 0040 LDINT R15 128 - 0x043C1E0C, // 0041 SUB R15 R15 R12 - 0xB8420800, // 0042 GETNGBL R16 K4 - 0x8C402105, // 0043 GETMET R16 R16 K5 - 0x5C481E00, // 0044 MOVE R18 R15 - 0x584C0002, // 0045 LDCONST R19 K2 - 0x5452007F, // 0046 LDINT R20 128 - 0x58540002, // 0047 LDCONST R21 K2 - 0x5C581A00, // 0048 MOVE R22 R13 - 0x7C400C00, // 0049 CALL R16 6 - 0x5C3C2000, // 004A MOVE R15 R16 - 0x04400C0F, // 004B SUB R16 R6 R15 - 0x5C382000, // 004C MOVE R14 R16 - 0x543E00FE, // 004D LDINT R15 255 - 0x243C1C0F, // 004E GT R15 R14 R15 - 0x783E0001, // 004F JMPF R15 #0052 - 0x543A00FE, // 0050 LDINT R14 255 - 0x70020002, // 0051 JMP #0055 - 0x143C1D02, // 0052 LT R15 R14 K2 - 0x783E0000, // 0053 JMPF R15 #0055 - 0x58380002, // 0054 LDCONST R14 K2 - 0x5C3C0E00, // 0055 MOVE R15 R7 - 0x54420009, // 0056 LDINT R16 10 - 0x24401C10, // 0057 GT R16 R14 R16 - 0x78420049, // 0058 JMPF R16 #00A3 - 0xB8422E00, // 0059 GETNGBL R16 K23 - 0x8C402118, // 005A GETMET R16 R16 K24 - 0x5C481000, // 005B MOVE R18 R8 - 0x7C400400, // 005C CALL R16 2 - 0x78420009, // 005D JMPF R16 #0068 - 0x88401119, // 005E GETMBR R16 R8 K25 - 0x4C440000, // 005F LDNIL R17 - 0x20402011, // 0060 NE R16 R16 R17 - 0x78420005, // 0061 JMPF R16 #0068 - 0x8C401119, // 0062 GETMET R16 R8 K25 - 0x5C481C00, // 0063 MOVE R18 R14 - 0x584C0002, // 0064 LDCONST R19 K2 - 0x7C400600, // 0065 CALL R16 3 - 0x5C3C2000, // 0066 MOVE R15 R16 - 0x7002003A, // 0067 JMP #00A3 - 0x8C40011A, // 0068 GETMET R16 R0 K26 - 0x5C481000, // 0069 MOVE R18 R8 - 0x584C0013, // 006A LDCONST R19 K19 - 0x54520009, // 006B LDINT R20 10 - 0x08501C14, // 006C MUL R20 R14 R20 - 0x00500214, // 006D ADD R20 R1 R20 - 0x7C400800, // 006E CALL R16 4 - 0x5C3C2000, // 006F MOVE R15 R16 - 0x54420017, // 0070 LDINT R16 24 - 0x3C401E10, // 0071 SHR R16 R15 R16 - 0x544600FE, // 0072 LDINT R17 255 - 0x2C402011, // 0073 AND R16 R16 R17 - 0x5446000F, // 0074 LDINT R17 16 - 0x3C441E11, // 0075 SHR R17 R15 R17 - 0x544A00FE, // 0076 LDINT R18 255 - 0x2C442212, // 0077 AND R17 R17 R18 - 0x544A0007, // 0078 LDINT R18 8 - 0x3C481E12, // 0079 SHR R18 R15 R18 - 0x544E00FE, // 007A LDINT R19 255 - 0x2C482413, // 007B AND R18 R18 R19 - 0x544E00FE, // 007C LDINT R19 255 - 0x2C4C1E13, // 007D AND R19 R15 R19 - 0xB8520800, // 007E GETNGBL R20 K4 - 0x8C502905, // 007F GETMET R20 R20 K5 - 0x5C581C00, // 0080 MOVE R22 R14 - 0x585C0002, // 0081 LDCONST R23 K2 - 0x546200FE, // 0082 LDINT R24 255 - 0x58640002, // 0083 LDCONST R25 K2 - 0x5C682200, // 0084 MOVE R26 R17 - 0x7C500C00, // 0085 CALL R20 6 - 0x5C442800, // 0086 MOVE R17 R20 - 0xB8520800, // 0087 GETNGBL R20 K4 - 0x8C502905, // 0088 GETMET R20 R20 K5 - 0x5C581C00, // 0089 MOVE R22 R14 - 0x585C0002, // 008A LDCONST R23 K2 - 0x546200FE, // 008B LDINT R24 255 - 0x58640002, // 008C LDCONST R25 K2 - 0x5C682400, // 008D MOVE R26 R18 - 0x7C500C00, // 008E CALL R20 6 - 0x5C482800, // 008F MOVE R18 R20 - 0xB8520800, // 0090 GETNGBL R20 K4 - 0x8C502905, // 0091 GETMET R20 R20 K5 - 0x5C581C00, // 0092 MOVE R22 R14 - 0x585C0002, // 0093 LDCONST R23 K2 - 0x546200FE, // 0094 LDINT R24 255 - 0x58640002, // 0095 LDCONST R25 K2 - 0x5C682600, // 0096 MOVE R26 R19 - 0x7C500C00, // 0097 CALL R20 6 - 0x5C4C2800, // 0098 MOVE R19 R20 - 0x54520017, // 0099 LDINT R20 24 - 0x38502014, // 009A SHL R20 R16 R20 - 0x5456000F, // 009B LDINT R21 16 - 0x38542215, // 009C SHL R21 R17 R21 - 0x30502815, // 009D OR R20 R20 R21 - 0x54560007, // 009E LDINT R21 8 - 0x38542415, // 009F SHL R21 R18 R21 - 0x30502815, // 00A0 OR R20 R20 R21 - 0x30502813, // 00A1 OR R20 R20 R19 - 0x5C3C2800, // 00A2 MOVE R15 R20 - 0x88400109, // 00A3 GETMBR R16 R0 K9 - 0x9840120F, // 00A4 SETIDX R16 R9 R15 - 0x00241316, // 00A5 ADD R9 R9 K22 - 0x7001FF6A, // 00A6 JMP #0012 - 0x80000000, // 00A7 RET 0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -14787,7 +14287,7 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ /******************************************************************** ** Solidified function: render ********************************************************************/ -be_local_closure(class_WaveAnimation_render, /* name */ +be_local_closure(class_Animation_render, /* name */ be_nested_proto( 9, /* nstack */ 4, /* argc */ @@ -14797,30 +14297,21 @@ be_local_closure(class_WaveAnimation_render, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ + &be_ktab_class_Animation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x58100002, // 0000 LDCONST R4 K2 - 0x14140803, // 0001 LT R5 R4 R3 - 0x7816000E, // 0002 JMPF R5 #0012 - 0x8814031B, // 0003 GETMBR R5 R1 K27 - 0x14140805, // 0004 LT R5 R4 R5 - 0x78160009, // 0005 JMPF R5 #0010 - 0x88140109, // 0006 GETMBR R5 R0 K9 - 0x8C140B14, // 0007 GETMET R5 R5 K20 - 0x7C140200, // 0008 CALL R5 1 - 0x14140805, // 0009 LT R5 R4 R5 - 0x78160004, // 000A JMPF R5 #0010 - 0x8C14031C, // 000B GETMET R5 R1 K28 - 0x5C1C0800, // 000C MOVE R7 R4 - 0x88200109, // 000D GETMBR R8 R0 K9 - 0x94201004, // 000E GETIDX R8 R8 R4 - 0x7C140600, // 000F CALL R5 3 - 0x00100916, // 0010 ADD R4 R4 K22 - 0x7001FFEE, // 0011 JMP #0001 - 0x50140200, // 0012 LDBOOL R5 1 0 - 0x80040A00, // 0013 RET 1 R5 + ( &(const binstruction[11]) { /* code */ + 0x8C100103, // 0000 GETMET R4 R0 K3 + 0x58180004, // 0001 LDCONST R6 K4 + 0x7C100400, // 0002 CALL R4 2 + 0x20140901, // 0003 NE R5 R4 K1 + 0x78160003, // 0004 JMPF R5 #0009 + 0x8C140305, // 0005 GETMET R5 R1 K5 + 0x881C0306, // 0006 GETMBR R7 R1 K6 + 0x5C200800, // 0007 MOVE R8 R4 + 0x7C140600, // 0008 CALL R5 3 + 0x50140200, // 0009 LDBOOL R5 1 0 + 0x80040A00, // 000A RET 1 R5 }) ) ); @@ -14828,9 +14319,121 @@ be_local_closure(class_WaveAnimation_render, /* name */ /******************************************************************** -** Solidified function: on_param_changed +** Solidified function: _apply_opacity ********************************************************************/ -be_local_closure(class_WaveAnimation_on_param_changed, /* name */ +be_local_closure(class_Animation__apply_opacity, /* name */ + be_nested_proto( + 11, /* nstack */ + 5, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(_apply_opacity), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x6014000F, // 0000 GETGBL R5 G15 + 0x5C180400, // 0001 MOVE R6 R2 + 0xB81E0E00, // 0002 GETNGBL R7 K7 + 0x881C0F07, // 0003 GETMBR R7 R7 K7 + 0x7C140400, // 0004 CALL R5 2 + 0x78160023, // 0005 JMPF R5 #002A + 0x5C140400, // 0006 MOVE R5 R2 + 0x88180108, // 0007 GETMBR R6 R0 K8 + 0x4C1C0000, // 0008 LDNIL R7 + 0x1C180C07, // 0009 EQ R6 R6 R7 + 0x741A0004, // 000A JMPT R6 #0010 + 0x88180108, // 000B GETMBR R6 R0 K8 + 0x88180D09, // 000C GETMBR R6 R6 K9 + 0x881C0309, // 000D GETMBR R7 R1 K9 + 0x20180C07, // 000E NE R6 R6 R7 + 0x781A0004, // 000F JMPF R6 #0015 + 0xB81A0E00, // 0010 GETNGBL R6 K7 + 0x8C180D0A, // 0011 GETMET R6 R6 K10 + 0x88200309, // 0012 GETMBR R8 R1 K9 + 0x7C180400, // 0013 CALL R6 2 + 0x90021006, // 0014 SETMBR R0 K8 R6 + 0x88180108, // 0015 GETMBR R6 R0 K8 + 0x8C180D0B, // 0016 GETMET R6 R6 K11 + 0x7C180200, // 0017 CALL R6 1 + 0x88180B0C, // 0018 GETMBR R6 R5 K12 + 0x741A0002, // 0019 JMPT R6 #001D + 0x8C180B0D, // 001A GETMET R6 R5 K13 + 0x8820010E, // 001B GETMBR R8 R0 K14 + 0x7C180400, // 001C CALL R6 2 + 0x8C180B0F, // 001D GETMET R6 R5 K15 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x8C180B10, // 0020 GETMET R6 R5 K16 + 0x88200108, // 0021 GETMBR R8 R0 K8 + 0x5C240600, // 0022 MOVE R9 R3 + 0x5C280800, // 0023 MOVE R10 R4 + 0x7C180800, // 0024 CALL R6 4 + 0x8C180311, // 0025 GETMET R6 R1 K17 + 0x88200306, // 0026 GETMBR R8 R1 K6 + 0x88240108, // 0027 GETMBR R9 R0 K8 + 0x88241306, // 0028 GETMBR R9 R9 K6 + 0x7C180600, // 0029 CALL R6 3 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: post_render +********************************************************************/ +be_local_closure(class_Animation_post_render, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(post_render), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x88100112, // 0000 GETMBR R4 R0 K18 + 0x541600FE, // 0001 LDINT R5 255 + 0x1C140805, // 0002 EQ R5 R4 R5 + 0x78160001, // 0003 JMPF R5 #0006 + 0x80000A00, // 0004 RET 0 + 0x7002000F, // 0005 JMP #0016 + 0x60140004, // 0006 GETGBL R5 G4 + 0x5C180800, // 0007 MOVE R6 R4 + 0x7C140200, // 0008 CALL R5 1 + 0x1C140B13, // 0009 EQ R5 R5 K19 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C140311, // 000B GETMET R5 R1 K17 + 0x881C0306, // 000C GETMBR R7 R1 K6 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C140600, // 000E CALL R5 3 + 0x70020005, // 000F JMP #0016 + 0x8C140114, // 0010 GETMET R5 R0 K20 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x5C200800, // 0012 MOVE R8 R4 + 0x5C240400, // 0013 MOVE R9 R2 + 0x5C280600, // 0014 MOVE R10 R3 + 0x7C140A00, // 0015 CALL R5 5 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_at +********************************************************************/ +be_local_closure(class_Animation_get_color_at, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ @@ -14840,22 +14443,15 @@ be_local_closure(class_WaveAnimation_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ - be_str_weak(on_param_changed), + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(get_color_at), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C071D, // 0003 GETMET R3 R3 K29 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C031E, // 0007 EQ R3 R1 K30 - 0x780E0001, // 0008 JMPF R3 #000B - 0x8C0C010B, // 0009 GETMET R3 R0 K11 - 0x7C0C0200, // 000A CALL R3 1 - 0x80000000, // 000B RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C0115, // 0000 GETMET R3 R0 K21 + 0x58140004, // 0001 LDCONST R5 K4 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 }) ) ); @@ -14863,130 +14459,40 @@ be_local_closure(class_WaveAnimation_on_param_changed, /* name */ /******************************************************************** -** Solidified function: _init_wave_table +** Solidified function: update ********************************************************************/ -be_local_closure(class_WaveAnimation__init_wave_table, /* name */ +be_local_closure(class_Animation_update, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ + 8, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_WaveAnimation, /* shared constants */ - be_str_weak(_init_wave_table), + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[108]) { /* code */ - 0x8804010A, // 0000 GETMBR R1 R0 K10 - 0x8C040315, // 0001 GETMET R1 R1 K21 - 0x540E00FF, // 0002 LDINT R3 256 - 0x7C040400, // 0003 CALL R1 2 - 0x8804011E, // 0004 GETMBR R1 R0 K30 - 0x58080002, // 0005 LDCONST R2 K2 - 0x540E00FF, // 0006 LDINT R3 256 - 0x140C0403, // 0007 LT R3 R2 R3 - 0x780E0061, // 0008 JMPF R3 #006B - 0x580C0002, // 0009 LDCONST R3 K2 - 0x1C100302, // 000A EQ R4 R1 K2 - 0x78120035, // 000B JMPF R4 #0042 - 0x5412003F, // 000C LDINT R4 64 - 0x10100404, // 000D MOD R4 R2 R4 - 0x5416003F, // 000E LDINT R5 64 - 0x14140405, // 000F LT R5 R2 R5 - 0x78160009, // 0010 JMPF R5 #001B - 0xB8160800, // 0011 GETNGBL R5 K4 - 0x8C140B05, // 0012 GETMET R5 R5 K5 - 0x5C1C0800, // 0013 MOVE R7 R4 - 0x58200002, // 0014 LDCONST R8 K2 - 0x5426003F, // 0015 LDINT R9 64 - 0x542A007F, // 0016 LDINT R10 128 - 0x542E00FE, // 0017 LDINT R11 255 - 0x7C140C00, // 0018 CALL R5 6 - 0x5C0C0A00, // 0019 MOVE R3 R5 - 0x70020025, // 001A JMP #0041 - 0x5416007F, // 001B LDINT R5 128 - 0x14140405, // 001C LT R5 R2 R5 - 0x7816000A, // 001D JMPF R5 #0029 - 0xB8160800, // 001E GETNGBL R5 K4 - 0x8C140B05, // 001F GETMET R5 R5 K5 - 0x541E007F, // 0020 LDINT R7 128 - 0x041C0E02, // 0021 SUB R7 R7 R2 - 0x58200002, // 0022 LDCONST R8 K2 - 0x5426003F, // 0023 LDINT R9 64 - 0x542A007F, // 0024 LDINT R10 128 - 0x542E00FE, // 0025 LDINT R11 255 - 0x7C140C00, // 0026 CALL R5 6 - 0x5C0C0A00, // 0027 MOVE R3 R5 - 0x70020017, // 0028 JMP #0041 - 0x541600BF, // 0029 LDINT R5 192 - 0x14140405, // 002A LT R5 R2 R5 - 0x7816000A, // 002B JMPF R5 #0037 - 0xB8160800, // 002C GETNGBL R5 K4 - 0x8C140B05, // 002D GETMET R5 R5 K5 - 0x541E007F, // 002E LDINT R7 128 - 0x041C0407, // 002F SUB R7 R2 R7 - 0x58200002, // 0030 LDCONST R8 K2 - 0x5426003F, // 0031 LDINT R9 64 - 0x542A007F, // 0032 LDINT R10 128 - 0x582C0002, // 0033 LDCONST R11 K2 - 0x7C140C00, // 0034 CALL R5 6 - 0x5C0C0A00, // 0035 MOVE R3 R5 - 0x70020009, // 0036 JMP #0041 - 0xB8160800, // 0037 GETNGBL R5 K4 - 0x8C140B05, // 0038 GETMET R5 R5 K5 - 0x541E00FF, // 0039 LDINT R7 256 - 0x041C0E02, // 003A SUB R7 R7 R2 - 0x58200002, // 003B LDCONST R8 K2 - 0x5426003F, // 003C LDINT R9 64 - 0x542A007F, // 003D LDINT R10 128 - 0x582C0002, // 003E LDCONST R11 K2 - 0x7C140C00, // 003F CALL R5 6 - 0x5C0C0A00, // 0040 MOVE R3 R5 - 0x70020024, // 0041 JMP #0067 - 0x1C100316, // 0042 EQ R4 R1 K22 - 0x78120017, // 0043 JMPF R4 #005C - 0x5412007F, // 0044 LDINT R4 128 - 0x14100404, // 0045 LT R4 R2 R4 - 0x78120009, // 0046 JMPF R4 #0051 - 0xB8120800, // 0047 GETNGBL R4 K4 - 0x8C100905, // 0048 GETMET R4 R4 K5 - 0x5C180400, // 0049 MOVE R6 R2 - 0x581C0002, // 004A LDCONST R7 K2 - 0x5422007F, // 004B LDINT R8 128 - 0x58240002, // 004C LDCONST R9 K2 - 0x542A00FE, // 004D LDINT R10 255 - 0x7C100C00, // 004E CALL R4 6 - 0x5C0C0800, // 004F MOVE R3 R4 - 0x70020009, // 0050 JMP #005B - 0xB8120800, // 0051 GETNGBL R4 K4 - 0x8C100905, // 0052 GETMET R4 R4 K5 - 0x541A00FF, // 0053 LDINT R6 256 - 0x04180C02, // 0054 SUB R6 R6 R2 - 0x581C0002, // 0055 LDCONST R7 K2 - 0x5422007F, // 0056 LDINT R8 128 - 0x58240002, // 0057 LDCONST R9 K2 - 0x542A00FE, // 0058 LDINT R10 255 - 0x7C100C00, // 0059 CALL R4 6 - 0x5C0C0800, // 005A MOVE R3 R4 - 0x7002000A, // 005B JMP #0067 - 0x1C10031F, // 005C EQ R4 R1 K31 - 0x78120007, // 005D JMPF R4 #0066 - 0x5412007F, // 005E LDINT R4 128 - 0x14100404, // 005F LT R4 R2 R4 - 0x78120001, // 0060 JMPF R4 #0063 - 0x541200FE, // 0061 LDINT R4 255 - 0x70020000, // 0062 JMP #0064 - 0x58100002, // 0063 LDCONST R4 K2 - 0x5C0C0800, // 0064 MOVE R3 R4 - 0x70020000, // 0065 JMP #0067 - 0x5C0C0400, // 0066 MOVE R3 R2 - 0x8810010A, // 0067 GETMBR R4 R0 K10 - 0x98100403, // 0068 SETIDX R4 R2 R3 - 0x00080516, // 0069 ADD R2 R2 K22 - 0x7001FF9A, // 006A JMP #0006 - 0x80000000, // 006B RET 0 + ( &(const binstruction[18]) { /* code */ + 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x240C0501, // 0001 GT R3 R2 K1 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C010E, // 0003 GETMBR R3 R0 K14 + 0x040C0203, // 0004 SUB R3 R1 R3 + 0x28100602, // 0005 GE R4 R3 R2 + 0x78120009, // 0006 JMPF R4 #0011 + 0x88100117, // 0007 GETMBR R4 R0 K23 + 0x78120005, // 0008 JMPF R4 #000F + 0x0C140602, // 0009 DIV R5 R3 R2 + 0x8818010E, // 000A GETMBR R6 R0 K14 + 0x081C0A02, // 000B MUL R7 R5 R2 + 0x00180C07, // 000C ADD R6 R6 R7 + 0x90021C06, // 000D SETMBR R0 K14 R6 + 0x70020001, // 000E JMP #0011 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x90021805, // 0010 SETMBR R0 K12 R5 + 0x80000000, // 0011 RET 0 }) ) ); @@ -14994,104 +14500,96 @@ be_local_closure(class_WaveAnimation__init_wave_table, /* name */ /******************************************************************** -** Solidified class: WaveAnimation +** Solidified class: Animation ********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(WaveAnimation, - 3, - &be_class_Animation, - be_nested_map(10, +extern const bclass be_class_parameterized_object; +be_local_class(Animation, + 1, + &be_class_parameterized_object, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(time_offset, -1), be_const_var(1) }, - { be_const_key_weak(current_colors, -1), be_const_var(0) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_WaveAnimation_on_param_changed_closure) }, - { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(8, + { be_const_key_weak(update, 1), be_const_closure(class_Animation_update_closure) }, + { be_const_key_weak(get_color_at, -1), be_const_closure(class_Animation_get_color_at_closure) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(phase, 7), be_const_bytes_instance(07000001FF000000) }, - { be_const_key_weak(center_level, 3), be_const_bytes_instance(07000001FF00018000) }, - { be_const_key_weak(amplitude, -1), be_const_bytes_instance(07000001FF00018000) }, - { be_const_key_weak(frequency, 5), be_const_bytes_instance(07000001FF000020) }, - { be_const_key_weak(wave_speed, -1), be_const_bytes_instance(07000001FF000032) }, - { be_const_key_weak(wave_type, -1), be_const_bytes_instance(07000000030000) }, - { be_const_key_weak(back_color, -1), be_const_bytes_instance(0402000000FF) }, - { be_const_key_weak(color, -1), be_const_bytes_instance(04020000FFFF) }, + { be_const_key_weak(id, -1), be_const_bytes_instance(0C030001) }, + { be_const_key_weak(priority, -1), be_const_bytes_instance(050000000A) }, + { be_const_key_weak(color, -1), be_const_bytes_instance(040000) }, + { be_const_key_weak(loop, 1), be_const_bytes_instance(0C050003) }, + { be_const_key_weak(opacity, 2), be_const_bytes_instance(0C01FF0004) }, + { be_const_key_weak(duration, -1), be_const_bytes_instance(0500000000) }, })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_WaveAnimation_update_closure) }, - { be_const_key_weak(wave_table, 8), be_const_var(2) }, - { be_const_key_weak(_calculate_wave, -1), be_const_closure(class_WaveAnimation__calculate_wave_closure) }, - { be_const_key_weak(render, 2), be_const_closure(class_WaveAnimation_render_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_WaveAnimation_init_closure) }, - { be_const_key_weak(_init_wave_table, -1), be_const_closure(class_WaveAnimation__init_wave_table_closure) }, + { be_const_key_weak(opacity_frame, -1), be_const_var(0) }, + { be_const_key_weak(_apply_opacity, -1), be_const_closure(class_Animation__apply_opacity_closure) }, + { be_const_key_weak(get_color, 8), be_const_closure(class_Animation_get_color_closure) }, + { be_const_key_weak(init, 2), be_const_closure(class_Animation_init_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_Animation_render_closure) }, + { be_const_key_weak(post_render, -1), be_const_closure(class_Animation_post_render_closure) }, })), - be_str_weak(WaveAnimation) + be_str_weak(Animation) ); /******************************************************************** -** Solidified function: animation_init_strip +** Solidified function: cosine_osc ********************************************************************/ -be_local_closure(animation_init_strip, /* name */ +be_local_closure(cosine_osc, /* name */ be_nested_proto( - 10, /* nstack */ + 4, /* nstack */ 1, /* argc */ - 1, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(_engines), - /* K5 */ be_nested_str_weak(find), - /* K6 */ be_nested_str_weak(stop), - /* K7 */ be_nested_str_weak(clear), - /* K8 */ be_nested_str_weak(Leds), - /* K9 */ be_nested_str_weak(create_engine), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), }), - be_str_weak(animation_init_strip), + be_str_weak(cosine_osc), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xA40E0400, // 0002 IMPORT R3 K2 - 0x8C100703, // 0003 GETMET R4 R3 K3 - 0x5C180400, // 0004 MOVE R6 R2 - 0x581C0004, // 0005 LDCONST R7 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x74120002, // 0007 JMPT R4 #000B - 0x60100013, // 0008 GETGBL R4 G19 - 0x7C100000, // 0009 CALL R4 0 - 0x900A0804, // 000A SETMBR R2 K4 R4 - 0x60100008, // 000B GETGBL R4 G8 - 0x5C140000, // 000C MOVE R5 R0 - 0x7C100200, // 000D CALL R4 1 - 0x88140504, // 000E GETMBR R5 R2 K4 - 0x8C140B05, // 000F GETMET R5 R5 K5 - 0x5C1C0800, // 0010 MOVE R7 R4 - 0x7C140400, // 0011 CALL R5 2 - 0x4C180000, // 0012 LDNIL R6 - 0x20180A06, // 0013 NE R6 R5 R6 - 0x781A0004, // 0014 JMPF R6 #001A - 0x8C180B06, // 0015 GETMET R6 R5 K6 - 0x7C180200, // 0016 CALL R6 1 - 0x8C180B07, // 0017 GETMET R6 R5 K7 - 0x7C180200, // 0018 CALL R6 1 - 0x70020009, // 0019 JMP #0024 - 0x60180016, // 001A GETGBL R6 G22 - 0x881C0308, // 001B GETMBR R7 R1 K8 - 0x5C200000, // 001C MOVE R8 R0 - 0x7C180400, // 001D CALL R6 2 - 0x8C1C0509, // 001E GETMET R7 R2 K9 - 0x5C240C00, // 001F MOVE R9 R6 - 0x7C1C0400, // 0020 CALL R7 2 - 0x5C140E00, // 0021 MOVE R5 R7 - 0x881C0504, // 0022 GETMBR R7 R2 K4 - 0x981C0805, // 0023 SETIDX R7 R4 R5 - 0x80040A00, // 0024 RET 1 R5 + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A0003, // 0004 LDINT R2 4 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear_all_event_handlers +********************************************************************/ +be_local_closure(clear_all_event_handlers, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(event_manager), + /* K2 */ be_nested_str_weak(clear_all_handlers), + }), + be_str_weak(clear_all_event_handlers), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8020000, // 0000 GETNGBL R0 K0 + 0x88000101, // 0001 GETMBR R0 R0 K1 + 0x8C000102, // 0002 GETMET R0 R0 K2 + 0x7C000200, // 0003 CALL R0 1 + 0x80000000, // 0004 RET 0 }) ) ); @@ -15144,6 +14642,334 @@ be_local_class(iteration_number, be_str_weak(iteration_number) ); +extern const bclass be_class_beacon; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_beacon_render, /* name */ + be_nested_proto( + 25, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(back_color), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_nested_str_weak(slew_size), + /* K3 */ be_nested_str_weak(beacon_size), + /* K4 */ be_nested_str_weak(color), + /* K5 */ be_nested_str_weak(right_edge), + /* K6 */ be_const_int(-16777216), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(fill_pixels), + /* K9 */ be_nested_str_weak(pixels), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(scale_int), + /* K13 */ be_nested_str_weak(blend_linear), + /* K14 */ be_nested_str_weak(set_pixel_color), + }), + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[106]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x881C0103, // 0003 GETMBR R7 R0 K3 + 0x88200104, // 0004 GETMBR R8 R0 K4 + 0x88240105, // 0005 GETMBR R9 R0 K5 + 0x20280906, // 0006 NE R10 R4 K6 + 0x782A0006, // 0007 JMPF R10 #000F + 0x2C280906, // 0008 AND R10 R4 K6 + 0x20281507, // 0009 NE R10 R10 K7 + 0x782A0003, // 000A JMPF R10 #000F + 0x8C280308, // 000B GETMET R10 R1 K8 + 0x88300309, // 000C GETMBR R12 R1 K9 + 0x5C340800, // 000D MOVE R13 R4 + 0x7C280600, // 000E CALL R10 3 + 0x4C280000, // 000F LDNIL R10 + 0x1C2C130A, // 0010 EQ R11 R9 K10 + 0x782E0003, // 0011 JMPF R11 #0016 + 0x042C0A07, // 0012 SUB R11 R5 R7 + 0x002C170A, // 0013 ADD R11 R11 K10 + 0x5C281600, // 0014 MOVE R10 R11 + 0x70020000, // 0015 JMP #0017 + 0x5C280A00, // 0016 MOVE R10 R5 + 0x5C2C1400, // 0017 MOVE R11 R10 + 0x00301407, // 0018 ADD R12 R10 R7 + 0x14341707, // 0019 LT R13 R11 K7 + 0x78360000, // 001A JMPF R13 #001C + 0x582C0007, // 001B LDCONST R11 K7 + 0x28341803, // 001C GE R13 R12 R3 + 0x78360000, // 001D JMPF R13 #001F + 0x5C300600, // 001E MOVE R12 R3 + 0x8C340308, // 001F GETMET R13 R1 K8 + 0x883C0309, // 0020 GETMBR R15 R1 K9 + 0x5C401000, // 0021 MOVE R16 R8 + 0x5C441600, // 0022 MOVE R17 R11 + 0x5C481800, // 0023 MOVE R18 R12 + 0x7C340A00, // 0024 CALL R13 5 + 0x4C340000, // 0025 LDNIL R13 + 0x24380D07, // 0026 GT R14 R6 K7 + 0x783A003F, // 0027 JMPF R14 #0068 + 0x04381406, // 0028 SUB R14 R10 R6 + 0x5C3C1400, // 0029 MOVE R15 R10 + 0x14401D07, // 002A LT R16 R14 K7 + 0x78420000, // 002B JMPF R16 #002D + 0x58380007, // 002C LDCONST R14 K7 + 0x28401E03, // 002D GE R16 R15 R3 + 0x78420000, // 002E JMPF R16 #0030 + 0x5C3C0600, // 002F MOVE R15 R3 + 0x5C341C00, // 0030 MOVE R13 R14 + 0x14401A0F, // 0031 LT R16 R13 R15 + 0x78420013, // 0032 JMPF R16 #0047 + 0xB8421600, // 0033 GETNGBL R16 K11 + 0x8C40210C, // 0034 GETMET R16 R16 K12 + 0x5C481A00, // 0035 MOVE R18 R13 + 0x044C1406, // 0036 SUB R19 R10 R6 + 0x044C270A, // 0037 SUB R19 R19 K10 + 0x5C501400, // 0038 MOVE R20 R10 + 0x545600FE, // 0039 LDINT R21 255 + 0x58580007, // 003A LDCONST R22 K7 + 0x7C400C00, // 003B CALL R16 6 + 0x8C44030D, // 003C GETMET R17 R1 K13 + 0x5C4C0800, // 003D MOVE R19 R4 + 0x5C501000, // 003E MOVE R20 R8 + 0x5C542000, // 003F MOVE R21 R16 + 0x7C440800, // 0040 CALL R17 4 + 0x8C48030E, // 0041 GETMET R18 R1 K14 + 0x5C501A00, // 0042 MOVE R20 R13 + 0x5C542200, // 0043 MOVE R21 R17 + 0x7C480600, // 0044 CALL R18 3 + 0x00341B0A, // 0045 ADD R13 R13 K10 + 0x7001FFE9, // 0046 JMP #0031 + 0x00401407, // 0047 ADD R16 R10 R7 + 0x00441407, // 0048 ADD R17 R10 R7 + 0x00442206, // 0049 ADD R17 R17 R6 + 0x14482107, // 004A LT R18 R16 K7 + 0x784A0000, // 004B JMPF R18 #004D + 0x58400007, // 004C LDCONST R16 K7 + 0x28482203, // 004D GE R18 R17 R3 + 0x784A0000, // 004E JMPF R18 #0050 + 0x5C440600, // 004F MOVE R17 R3 + 0x5C342000, // 0050 MOVE R13 R16 + 0x14481A11, // 0051 LT R18 R13 R17 + 0x784A0014, // 0052 JMPF R18 #0068 + 0xB84A1600, // 0053 GETNGBL R18 K11 + 0x8C48250C, // 0054 GETMET R18 R18 K12 + 0x5C501A00, // 0055 MOVE R20 R13 + 0x00541407, // 0056 ADD R21 R10 R7 + 0x04542B0A, // 0057 SUB R21 R21 K10 + 0x00581407, // 0058 ADD R22 R10 R7 + 0x00582C06, // 0059 ADD R22 R22 R6 + 0x585C0007, // 005A LDCONST R23 K7 + 0x546200FE, // 005B LDINT R24 255 + 0x7C480C00, // 005C CALL R18 6 + 0x8C4C030D, // 005D GETMET R19 R1 K13 + 0x5C540800, // 005E MOVE R21 R4 + 0x5C581000, // 005F MOVE R22 R8 + 0x5C5C2400, // 0060 MOVE R23 R18 + 0x7C4C0800, // 0061 CALL R19 4 + 0x8C50030E, // 0062 GETMET R20 R1 K14 + 0x5C581A00, // 0063 MOVE R22 R13 + 0x5C5C2600, // 0064 MOVE R23 R19 + 0x7C500600, // 0065 CALL R20 3 + 0x00341B0A, // 0066 ADD R13 R13 K10 + 0x7001FFE8, // 0067 JMP #0051 + 0x50380200, // 0068 LDBOOL R14 1 0 + 0x80041C00, // 0069 RET 1 R14 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: beacon +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(beacon, + 0, + &be_class_Animation, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(render, -1), be_const_closure(class_beacon_render_closure) }, + { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(pos, 1), be_const_bytes_instance(040000) }, + { be_const_key_weak(slew_size, 4), be_const_bytes_instance(0500000000) }, + { be_const_key_weak(back_color, 0), be_const_bytes_instance(0402000000FF) }, + { be_const_key_weak(beacon_size, -1), be_const_bytes_instance(0500000001) }, + { be_const_key_weak(right_edge, -1), be_const_bytes_instance(1400000200000001) }, + })) ) } )) }, + })), + be_str_weak(beacon) +); + +extern const bclass be_class_crenel; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_crenel_render, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(back_color), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_nested_str_weak(pulse_size), + /* K3 */ be_nested_str_weak(low_size), + /* K4 */ be_nested_str_weak(nb_pulse), + /* K5 */ be_nested_str_weak(color), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(fill_pixels), + /* K8 */ be_nested_str_weak(pixels), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(set_pixel_color), + }), + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[64]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x881C0103, // 0003 GETMBR R7 R0 K3 + 0x88200104, // 0004 GETMBR R8 R0 K4 + 0x88240105, // 0005 GETMBR R9 R0 K5 + 0x60280009, // 0006 GETGBL R10 G9 + 0x002C0C07, // 0007 ADD R11 R6 R7 + 0x7C280200, // 0008 CALL R10 1 + 0x202C0906, // 0009 NE R11 R4 K6 + 0x782E0003, // 000A JMPF R11 #000F + 0x8C2C0307, // 000B GETMET R11 R1 K7 + 0x88340308, // 000C GETMBR R13 R1 K8 + 0x5C380800, // 000D MOVE R14 R4 + 0x7C2C0600, // 000E CALL R11 3 + 0x182C1506, // 000F LE R11 R10 K6 + 0x782E0000, // 0010 JMPF R11 #0012 + 0x58280009, // 0011 LDCONST R10 K9 + 0x1C2C1106, // 0012 EQ R11 R8 K6 + 0x782E0001, // 0013 JMPF R11 #0016 + 0x502C0200, // 0014 LDBOOL R11 1 0 + 0x80041600, // 0015 RET 1 R11 + 0x142C1106, // 0016 LT R11 R8 K6 + 0x782E0006, // 0017 JMPF R11 #001F + 0x002C0A06, // 0018 ADD R11 R5 R6 + 0x042C1709, // 0019 SUB R11 R11 K9 + 0x102C160A, // 001A MOD R11 R11 R10 + 0x042C1606, // 001B SUB R11 R11 R6 + 0x002C1709, // 001C ADD R11 R11 K9 + 0x5C141600, // 001D MOVE R5 R11 + 0x70020007, // 001E JMP #0027 + 0x442C1400, // 001F NEG R11 R10 + 0x142C0A0B, // 0020 LT R11 R5 R11 + 0x782E0004, // 0021 JMPF R11 #0027 + 0x202C1106, // 0022 NE R11 R8 K6 + 0x782E0002, // 0023 JMPF R11 #0027 + 0x00140A0A, // 0024 ADD R5 R5 R10 + 0x04201109, // 0025 SUB R8 R8 K9 + 0x7001FFF7, // 0026 JMP #001F + 0x142C0A03, // 0027 LT R11 R5 R3 + 0x782E0014, // 0028 JMPF R11 #003E + 0x202C1106, // 0029 NE R11 R8 K6 + 0x782E0012, // 002A JMPF R11 #003E + 0x582C0006, // 002B LDCONST R11 K6 + 0x14300B06, // 002C LT R12 R5 K6 + 0x78320001, // 002D JMPF R12 #0030 + 0x44300A00, // 002E NEG R12 R5 + 0x5C2C1800, // 002F MOVE R11 R12 + 0x14301606, // 0030 LT R12 R11 R6 + 0x78320008, // 0031 JMPF R12 #003B + 0x00300A0B, // 0032 ADD R12 R5 R11 + 0x14301803, // 0033 LT R12 R12 R3 + 0x78320005, // 0034 JMPF R12 #003B + 0x8C30030A, // 0035 GETMET R12 R1 K10 + 0x00380A0B, // 0036 ADD R14 R5 R11 + 0x5C3C1200, // 0037 MOVE R15 R9 + 0x7C300600, // 0038 CALL R12 3 + 0x002C1709, // 0039 ADD R11 R11 K9 + 0x7001FFF4, // 003A JMP #0030 + 0x00140A0A, // 003B ADD R5 R5 R10 + 0x04201109, // 003C SUB R8 R8 K9 + 0x7001FFE8, // 003D JMP #0027 + 0x502C0200, // 003E LDBOOL R11 1 0 + 0x80041600, // 003F RET 1 R11 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: crenel +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(crenel, + 0, + &be_class_Animation, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(render, -1), be_const_closure(class_crenel_render_closure) }, + { be_const_key_weak(PARAMS, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(nb_pulse, -1), be_const_bytes_instance(0400FF) }, + { be_const_key_weak(low_size, 4), be_const_bytes_instance(0500000003) }, + { be_const_key_weak(pos, 1), be_const_bytes_instance(040000) }, + { be_const_key_weak(pulse_size, -1), be_const_bytes_instance(0500000001) }, + { be_const_key_weak(back_color, -1), be_const_bytes_instance(040000) }, + })) ) } )) }, + })), + be_str_weak(crenel) +); + +/******************************************************************** +** Solidified function: ease_out +********************************************************************/ +be_local_closure(ease_out, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + }), + be_str_weak(ease_out), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A0006, // 0004 LDINT R2 7 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: sawtooth ********************************************************************/ @@ -15258,91 +15084,87 @@ be_local_closure(register_user_function, /* name */ ********************************************************************/ be_local_module(animation, "animation", - be_nested_map(83, + be_nested_map(79, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, - { be_const_key_weak(rich_palette_animation, 71), be_const_class(be_class_RichPaletteAnimation) }, - { be_const_key_weak(gradient_animation, -1), be_const_class(be_class_GradientAnimation) }, - { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, - { be_const_key_weak(EASE_OUT, 17), be_const_int(7) }, - { be_const_key_weak(event_handler, 25), be_const_class(be_class_EventHandler) }, - { be_const_key_weak(resolve, -1), be_const_closure(animation_resolve_closure) }, - { be_const_key_weak(value_provider, 37), be_const_class(be_class_value_provider) }, - { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_GradientMeterAnimation) }, - { be_const_key_weak(EventManager, -1), be_const_class(be_class_EventManager) }, - { be_const_key_weak(SAWTOOTH, 24), be_const_int(1) }, - { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, - { be_const_key_weak(sawtooth, 65), be_const_closure(sawtooth_closure) }, - { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, - { be_const_key_weak(VERSION, -1), be_const_int(65536) }, - { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, - { be_const_key_weak(twinkle, 7), be_const_class(be_class_twinkle) }, - { be_const_key_weak(init_strip, 68), be_const_closure(animation_init_strip_closure) }, - { be_const_key_weak(ramp, 31), be_const_closure(ramp_closure) }, - { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_oscillator_value) }, - { be_const_key_weak(color_provider, 70), be_const_class(be_class_color_provider) }, - { be_const_key_weak(engine_proxy, -1), be_const_class(be_class_engine_proxy) }, - { be_const_key_weak(trigger_event, -1), be_const_closure(trigger_event_closure) }, - { be_const_key_weak(wave_animation, 53), be_const_class(be_class_WaveAnimation) }, - { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_frame_buffer) }, - { be_const_key_weak(clear_all_event_handlers, -1), be_const_closure(clear_all_event_handlers_closure) }, - { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, - { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, - { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, - { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, - { be_const_key_weak(is_color_provider, -1), be_const_closure(is_color_provider_closure) }, - { be_const_key_weak(static_color, -1), be_const_class(be_class_static_color) }, - { be_const_key_weak(wave_custom, -1), be_const_closure(wave_custom_closure) }, - { be_const_key_weak(is_value_provider, 28), be_const_closure(is_value_provider_closure) }, - { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, - { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, - { be_const_key_weak(fire_animation, -1), be_const_class(be_class_FireAnimation) }, - { be_const_key_weak(triangle, -1), be_const_closure(triangle_closure) }, - { be_const_key_weak(breathe_color, 23), be_const_class(be_class_breathe_color) }, - { be_const_key_weak(solid, 50), be_const_closure(solid_closure) }, - { be_const_key_weak(get_user_function, -1), be_const_closure(get_user_function_closure) }, - { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, - { be_const_key_weak(wave_single_sine, 63), be_const_closure(wave_single_sine_closure) }, - { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, - { be_const_key_weak(SQUARE, -1), be_const_int(3) }, - { be_const_key_weak(rich_palette_color, 12), be_const_class(be_class_rich_palette_color) }, - { be_const_key_weak(PALETTE_RAINBOW2, 82), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFFC0000) }, - { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FF) }, - { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, - { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, - { be_const_key_weak(smooth, -1), be_const_closure(smooth_closure) }, - { be_const_key_weak(PALETTE_FIRE, -1), be_const_bytes_instance(FF000000FF800000FFFF0000FFFF8000FFFFFF00) }, - { be_const_key_weak(COSINE, -1), be_const_int(4) }, - { be_const_key_weak(parameterized_object, -1), be_const_class(be_class_parameterized_object) }, - { be_const_key_weak(strip_length, 51), be_const_class(be_class_strip_length) }, - { be_const_key_weak(square, -1), be_const_closure(square_closure) }, - { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, - { be_const_key_weak(unregister_event_handler, 72), be_const_closure(unregister_event_handler_closure) }, - { be_const_key_weak(SINE, -1), be_const_int(5) }, - { be_const_key_weak(breathe_animation, -1), be_const_class(be_class_BreatheAnimation) }, - { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, - { be_const_key_weak(create_closure_value, 58), be_const_closure(create_closure_value_closure) }, - { be_const_key_weak(PALETTE_RAINBOW_W2, 13), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFCCCCCCFFFC0000) }, - { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, { be_const_key_weak(iteration_number, -1), be_const_class(be_class_iteration_number) }, - { be_const_key_weak(bounce, -1), be_const_closure(bounce_closure) }, - { be_const_key_weak(enc_params, -1), be_const_closure(encode_constraints_closure) }, - { be_const_key_weak(create_engine, -1), be_const_class(be_class_AnimationEngine) }, - { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, - { be_const_key_weak(sequence_manager, 67), be_const_class(be_class_sequence_manager) }, + { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, - { be_const_key_weak(comet_animation, -1), be_const_class(be_class_CometAnimation) }, - { be_const_key_weak(crenel_animation, 60), be_const_class(be_class_CrenelPositionAnimation) }, - { be_const_key_weak(_math, -1), be_const_class(be_class_AnimationMath) }, - { be_const_key_weak(LINEAR, -1), be_const_int(1) }, - { be_const_key_weak(elastic, 0), be_const_closure(elastic_closure) }, - { be_const_key_weak(TRIANGLE, 29), be_const_int(2) }, - { be_const_key_weak(static_value, -1), be_const_class(be_class_static_value) }, - { be_const_key_weak(color_cycle, 48), be_const_class(be_class_ColorCycleColorProvider) }, - { be_const_key_weak(PALETTE_RAINBOW_W, -1), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFCCCCCC) }, - { be_const_key_weak(ease_out, 47), be_const_closure(ease_out_closure) }, + { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, + { be_const_key_weak(is_color_provider, 32), be_const_closure(is_color_provider_closure) }, + { be_const_key_weak(rich_palette, -1), be_const_class(be_class_rich_palette) }, + { be_const_key_weak(PALETTE_FIRE, 33), be_const_bytes_instance(FF000000FF800000FFFF0000FFFF8000FFFFFF00) }, + { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, + { be_const_key_weak(register_user_function, 47), be_const_closure(register_user_function_closure) }, + { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, + { be_const_key_weak(init, 57), be_const_closure(animation_init_closure) }, + { be_const_key_weak(get_user_function, -1), be_const_closure(get_user_function_closure) }, + { be_const_key_weak(LINEAR, 15), be_const_int(1) }, + { be_const_key_weak(PALETTE_RAINBOW_W2, 25), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFCCCCCCFFFC0000) }, + { be_const_key_weak(triangle, -1), be_const_closure(triangle_closure) }, + { be_const_key_weak(color_provider, -1), be_const_class(be_class_color_provider) }, + { be_const_key_weak(PALETTE_RAINBOW_W, 48), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFCCCCCC) }, + { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FF) }, { be_const_key_weak(closure_value, -1), be_const_class(be_class_closure_value) }, - { be_const_key_weak(PALETTE_RGB, -1), be_const_bytes_instance(FFFF0000FF00FF00FF0000FF) }, + { be_const_key_weak(strip_length, 60), be_const_class(be_class_strip_length) }, + { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, + { be_const_key_weak(breathe_color, -1), be_const_class(be_class_breathe_color) }, + { be_const_key_weak(twinkle, 53), be_const_class(be_class_twinkle) }, + { be_const_key_weak(is_value_provider, 8), be_const_closure(is_value_provider_closure) }, + { be_const_key_weak(comet, -1), be_const_class(be_class_comet) }, + { be_const_key_weak(sawtooth, 54), be_const_closure(sawtooth_closure) }, + { be_const_key_weak(value_provider, -1), be_const_class(be_class_value_provider) }, + { be_const_key_weak(palette_meter, -1), be_const_class(be_class_palette_meter) }, + { be_const_key_weak(breathe, -1), be_const_class(be_class_breathe) }, + { be_const_key_weak(crenel, -1), be_const_class(be_class_crenel) }, + { be_const_key_weak(beacon, 58), be_const_class(be_class_beacon) }, + { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, + { be_const_key_weak(clear_all_event_handlers, -1), be_const_closure(clear_all_event_handlers_closure) }, + { be_const_key_weak(cosine_osc, 51), be_const_closure(cosine_osc_closure) }, + { be_const_key_weak(sequence_manager, -1), be_const_class(be_class_sequence_manager) }, + { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, + { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, + { be_const_key_weak(_math, -1), be_const_class(be_class_AnimationMath) }, + { be_const_key_weak(enc_params, -1), be_const_closure(encode_constraints_closure) }, + { be_const_key_weak(square, -1), be_const_closure(square_closure) }, + { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, + { be_const_key_weak(solid, -1), be_const_closure(solid_closure) }, + { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, + { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, + { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, + { be_const_key_weak(PALETTE_RAINBOW2, 61), be_const_bytes_instance(FFFC0000FFFF8000FFFFFF00FF00FF00FF00FFFFFF0080FFFF8000FFFFFC0000) }, + { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_oscillator_value) }, + { be_const_key_weak(static_color, -1), be_const_class(be_class_static_color) }, + { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_frame_buffer) }, + { be_const_key_weak(engine_proxy, -1), be_const_class(be_class_engine_proxy) }, + { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, + { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, + { be_const_key_weak(bounce, -1), be_const_closure(bounce_closure) }, + { be_const_key_weak(smooth, 68), be_const_closure(smooth_closure) }, + { be_const_key_weak(palette_gradient, -1), be_const_class(be_class_palette_gradient) }, + { be_const_key_weak(create_engine, -1), be_const_class(be_class_AnimationEngine) }, + { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, + { be_const_key_weak(parameterized_object, -1), be_const_class(be_class_parameterized_object) }, + { be_const_key_weak(SINE, 63), be_const_int(5) }, + { be_const_key_weak(rich_palette_color, 29), be_const_class(be_class_rich_palette_color) }, + { be_const_key_weak(TRIANGLE, 66), be_const_int(2) }, + { be_const_key_weak(EventManager, 62), be_const_class(be_class_EventManager) }, + { be_const_key_weak(resolve, -1), be_const_closure(animation_resolve_closure) }, + { be_const_key_weak(COSINE, 71), be_const_int(4) }, + { be_const_key_weak(color_cycle, 75), be_const_class(be_class_color_cycle) }, + { be_const_key_weak(event_handler, 20), be_const_class(be_class_EventHandler) }, + { be_const_key_weak(SQUARE, -1), be_const_int(3) }, + { be_const_key_weak(get_event_handlers, 36), be_const_closure(get_event_handlers_closure) }, + { be_const_key_weak(fire, -1), be_const_class(be_class_fire) }, + { be_const_key_weak(init_strip, -1), be_const_closure(animation_init_strip_closure) }, + { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, + { be_const_key_weak(wave, 69), be_const_class(be_class_wave) }, + { be_const_key_weak(trigger_event, -1), be_const_closure(trigger_event_closure) }, + { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, + { be_const_key_weak(VERSION, -1), be_const_int(65536) }, + { be_const_key_weak(static_value, -1), be_const_class(be_class_static_value) }, + { be_const_key_weak(gradient, 55), be_const_class(be_class_gradient) }, + { be_const_key_weak(EASE_OUT, 30), be_const_int(7) }, + { be_const_key_weak(PALETTE_RGB, 39), be_const_bytes_instance(FFFF0000FF00FF00FF0000FF) }, })) ); BE_EXPORT_VARIABLE be_define_const_native_module(animation); diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h index f6faca21a..3db32f7b6 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -17031,7 +17031,7 @@ be_local_class(AnimationWebUI, { be_const_key_weak(page_main, -1), be_const_closure(class_AnimationWebUI_page_main_closure) }, { be_const_key_weak(handle_request, -1), be_const_closure(class_AnimationWebUI_handle_request_closure) }, { be_const_key_weak(last_dsl_code, -1), be_const_var(0) }, - { be_const_key_weak(DEFAULT_DSL, -1), be_nested_str_long(_X23_X20Simple_X20Berry_X20Animation_X20Example_X20_X2D_X20Cylon_X20red_X20eye_X0A_X0Aset_X20strip_len_X20_X3D_X20strip_length_X28_X29_X0A_X0Aanimation_X20red_eye_X20_X3D_X20beacon_animation_X28_X0A_X20_X20color_X20_X3D_X20red_X0A_X20_X20pos_X20_X3D_X20smooth_X28min_value_X20_X3D_X200_X2C_X20max_value_X20_X3D_X20strip_len_X20_X2D_X202_X2C_X20duration_X20_X3D_X205s_X29_X0A_X20_X20beacon_size_X20_X3D_X203_X20_X20_X20_X20_X20_X20_X20_X23_X20small_X203_X20pixels_X20eye_X0A_X20_X20slew_size_X20_X3D_X202_X20_X20_X20_X20_X20_X20_X20_X20_X20_X23_X20with_X202_X20pixel_X20shading_X20around_X0A_X29_X0A_X0Arun_X20red_eye_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X23_X20run_X20the_X20animation_X0A) }, + { be_const_key_weak(DEFAULT_DSL, -1), be_nested_str_long(_X23_X20Simple_X20Berry_X20Animation_X20Example_X20_X2D_X20Cylon_X20red_X20eye_X0A_X0Aset_X20strip_len_X20_X3D_X20strip_length_X28_X29_X0A_X0Aanimation_X20red_eye_X20_X3D_X20beacon_X28_X0A_X20_X20color_X20_X3D_X20red_X0A_X20_X20pos_X20_X3D_X20smooth_X28min_value_X20_X3D_X200_X2C_X20max_value_X20_X3D_X20strip_len_X20_X2D_X202_X2C_X20duration_X20_X3D_X205s_X29_X0A_X20_X20beacon_size_X20_X3D_X203_X20_X20_X20_X20_X20_X20_X20_X23_X20small_X203_X20pixels_X20eye_X0A_X20_X20slew_size_X20_X3D_X202_X20_X20_X20_X20_X20_X20_X20_X20_X20_X23_X20with_X202_X20pixel_X20shading_X20around_X0A_X29_X0A_X0Arun_X20red_eye_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X23_X20run_X20the_X20animation_X0A) }, { be_const_key_weak(deinit, 3), be_const_closure(class_AnimationWebUI_deinit_closure) }, { be_const_key_weak(web_add_handler, 2), be_const_closure(class_AnimationWebUI_web_add_handler_closure) }, { be_const_key_weak(last_berry_code, 7), be_const_var(1) }, diff --git a/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be b/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be index 45258efc3..4dae7f172 100644 --- a/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be @@ -31,7 +31,7 @@ def run_tests() print("==================================================") # Test 1: Basic construction - var pulse = animation.beacon_animation(engine) + var pulse = animation.beacon(engine) test_assert(pulse != nil, "Pulse position animation creation") # Set parameters using virtual member assignment diff --git a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be index 1144b6f3a..ced9df508 100644 --- a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be @@ -1,11 +1,11 @@ # Test file for Breathe animation effect # -# This file contains tests for the BreatheAnimation class following parameterized class specification +# This file contains tests for the breathe class following parameterized class specification # # Command to run test is: # ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/breathe_animation_test.be -print("Testing BreatheAnimation...") +print("Testing breathe...") # Import the core animation module import animation @@ -17,7 +17,7 @@ var engine = animation.create_engine(strip) print("Created LED strip and animation engine") # Create a breathe animation with engine-only parameter -var anim = animation.breathe_animation(engine) +var anim = animation.breathe(engine) print("Created breathe animation with defaults") # Test default values @@ -28,7 +28,7 @@ print(f"Default period: {anim.period}") print(f"Default curve_factor: {anim.curve_factor}") # Create another breathe animation and set custom parameters using virtual member assignment -var blue_breathe = animation.breathe_animation(engine) +var blue_breathe = animation.breathe(engine) blue_breathe.color = 0xFF0000FF blue_breathe.min_brightness = 20 blue_breathe.max_brightness = 200 @@ -42,7 +42,7 @@ print(f"Blue breathe animation period: {blue_breathe.period}") print(f"Blue breathe animation curve_factor: {blue_breathe.curve_factor}") # Create red breathe animation with different parameters -var red_breathe = animation.breathe_animation(engine) +var red_breathe = animation.breathe(engine) red_breathe.color = 0xFFFF0000 red_breathe.min_brightness = 10 red_breathe.max_brightness = 180 diff --git a/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be b/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be index d1d412eee..cfdd2d0c4 100644 --- a/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be @@ -1,4 +1,4 @@ -# Test file for animation.solid with ColorCycleColorProvider +# Test file for animation.solid with color_cycle # # This file contains tests for the animation.solid class with color cycle provider # @@ -21,14 +21,14 @@ class ColorCycleAnimationTest self.passed = 0 self.failed = 0 - print("Running animation.solid with ColorCycleColorProvider Tests") + print("Running animation.solid with color_cycle Tests") self.test_initialization() self.test_update_and_render() self.test_manual_only_mode() self.test_direct_creation() - print(f"animation.solid with ColorCycleColorProvider Tests: {self.passed} passed, {self.failed} failed") + print(f"animation.solid with color_cycle Tests: {self.passed} passed, {self.failed} failed") end def assert_equal(actual, expected, test_name) diff --git a/lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be b/lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be index d402225c2..be5a03529 100644 --- a/lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be +++ b/lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be @@ -1,6 +1,6 @@ #!/usr/bin/env berry -# Test for ColorCycleColorProvider with bytes palette in AARRGGBB format +# Test for color_cycle with bytes palette in AARRGGBB format import animation import animation_dsl @@ -18,7 +18,7 @@ class MockEngine end def test_color_cycle_bytes_format() - print("Testing ColorCycleColorProvider with bytes palette (AARRGGBB format)...") + print("Testing color_cycle with bytes palette (AARRGGBB format)...") var engine = MockEngine() @@ -110,7 +110,7 @@ def test_color_cycle_bytes_format() var empty_color = provider.produce_value("color", 1000) assert(empty_color == 0x00000000, f"Empty palette should return transparent") - print("✓ All ColorCycleColorProvider bytes format tests passed!") + print("✓ All color_cycle bytes format tests passed!") end def test_bytes_parameter_validation() @@ -143,4 +143,4 @@ end # Run the tests test_color_cycle_bytes_format() test_bytes_parameter_validation() -print("✓ All ColorCycleColorProvider tests completed successfully!") \ No newline at end of file +print("✓ All color_cycle tests completed successfully!") \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be b/lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be index 7f2f8f760..1b3155f30 100644 --- a/lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be +++ b/lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be @@ -1,6 +1,6 @@ #!/usr/bin/env berry -# Test for ColorCycleColorProvider palette_size read-only parameter +# Test for color_cycle palette_size read-only parameter import animation # Mock engine for testing @@ -194,4 +194,4 @@ test_palette_size_updates_with_palette_changes() test_palette_size_with_new_instances() test_palette_size_parameter_metadata() -print("✓ All ColorCycleColorProvider palette_size tests completed successfully!") \ No newline at end of file +print("✓ All color_cycle palette_size tests completed successfully!") \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be index fa5091d04..e1574fa76 100644 --- a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be @@ -1,5 +1,5 @@ # Comet Animation Test Suite -# Comprehensive tests for the CometAnimation class following parameterized class specification +# Comprehensive tests for the comet class following parameterized class specification # # Command to run: # ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/comet_animation_test.be @@ -45,7 +45,7 @@ print("Created LED strip and animation engine") # Test 1: Basic Construction print("\n--- Test 1: Basic Construction ---") -var comet = animation.comet_animation(engine) +var comet = animation.comet(engine) assert_not_nil(comet, "Comet animation should be created") assert_equals(comet.engine, engine, "Animation should have correct engine reference") @@ -77,7 +77,7 @@ assert_equals(comet.priority, 15, "Priority should be set correctly") # Test 2: Multiple Comet Animations print("\n--- Test 2: Multiple Comet Animations ---") -var comet2 = animation.comet_animation(engine) +var comet2 = animation.comet(engine) comet2.color = 0xFF00FF00 comet2.tail_length = 8 comet2.speed = 3840 @@ -85,7 +85,7 @@ assert_not_nil(comet2, "Second comet should be created") assert_equals(comet2.tail_length, 8, "Second comet tail length should be correct") assert_equals(comet2.speed, 3840, "Second comet speed should be correct") -var comet3 = animation.comet_animation(engine) +var comet3 = animation.comet(engine) comet3.color = 0xFF0000FF comet3.tail_length = 6 comet3.speed = 3072 @@ -141,7 +141,7 @@ end print("\n--- Test 4: Position Updates ---") # Create comet for position testing -var pos_comet = animation.comet_animation(engine) +var pos_comet = animation.comet(engine) pos_comet.color = 0xFFFFFFFF pos_comet.tail_length = 3 pos_comet.speed = 2560 # 10 pixels/sec (10 * 256) @@ -165,7 +165,7 @@ assert_test(pos_comet.head_position >= (expected_pos - 256) && pos_comet.head_po # Test 5: Direction Changes print("\n--- Test 5: Direction Changes ---") -var dir_comet = animation.comet_animation(engine) +var dir_comet = animation.comet(engine) dir_comet.color = 0xFFFFFFFF dir_comet.tail_length = 3 dir_comet.speed = 2560 # 10 pixels/sec @@ -192,7 +192,7 @@ var small_strip = global.Leds(10) var small_engine = animation.create_engine(small_strip) # Test wrap around -var wrap_comet = animation.comet_animation(small_engine) +var wrap_comet = animation.comet(small_engine) wrap_comet.color = 0xFFFFFFFF wrap_comet.tail_length = 3 wrap_comet.speed = 25600 # Very fast (100 pixels/sec) @@ -210,7 +210,7 @@ assert_test(wrap_comet.head_position >= 0 && wrap_comet.head_position < strip_le f"Wrapped position should be within strip bounds (position: {wrap_comet.head_position})") # Test bounce -var bounce_comet = animation.comet_animation(small_engine) +var bounce_comet = animation.comet(small_engine) bounce_comet.color = 0xFFFFFFFF bounce_comet.tail_length = 3 bounce_comet.speed = 25600 # Very fast @@ -231,7 +231,7 @@ assert_test(bounce_comet.direction == -1, print("\n--- Test 7: Frame Buffer Rendering ---") var frame = animation.frame_buffer(10) -var render_comet = animation.comet_animation(small_engine) +var render_comet = animation.comet(small_engine) render_comet.color = 0xFFFF0000 # Red render_comet.tail_length = 3 render_comet.speed = 256 # Slow (1 pixel/sec) @@ -265,7 +265,7 @@ print("\n--- Test 8: Color Provider Integration ---") # Test with solid color provider var solid_provider = animation.static_color(engine) solid_provider.color = 0xFF00FFFF -var provider_comet = animation.comet_animation(engine) +var provider_comet = animation.comet(engine) provider_comet.color = solid_provider provider_comet.tail_length = 4 provider_comet.speed = 1280 @@ -285,7 +285,7 @@ assert_equals(resolved_color, 0xFF00FFFF, "Resolved color should match provider # Test 9: Engine Integration print("\n--- Test 9: Engine Integration ---") -var engine_comet = animation.comet_animation(engine) +var engine_comet = animation.comet(engine) engine_comet.color = 0xFFFFFFFF engine_comet.tail_length = 5 engine_comet.speed = 2560 diff --git a/lib/libesp32/berry_animation/src/tests/computed_values_test.be b/lib/libesp32/berry_animation/src/tests/computed_values_test.be index 3e68b85f9..0a8760036 100644 --- a/lib/libesp32/berry_animation/src/tests/computed_values_test.be +++ b/lib/libesp32/berry_animation/src/tests/computed_values_test.be @@ -13,7 +13,7 @@ def test_basic_computed_values() print("Testing basic computed values...") var dsl_source = "set strip_len = strip_length()\n" + - "animation stream1 = comet_animation(\n" + + "animation stream1 = comet(\n" + " color=red\n" + " tail_length=strip_len / 4\n" + " speed=1.5\n" + @@ -66,7 +66,7 @@ def test_complex_computed_values() var dsl_source = "set strip_len = strip_length()\n" + "set base_speed = 2.0\n" + - "animation complex_anim = comet_animation(\n" + + "animation complex_anim = comet(\n" + " color=blue\n" + " tail_length=strip_len / 4 + 2\n" + " speed=base_speed * 1.5\n" + @@ -96,7 +96,7 @@ end def test_static_values_no_closures() print("Testing static values don't create closures...") - var dsl_source = "animation simple_anim = comet_animation(\n" + + var dsl_source = "animation simple_anim = comet(\n" + " color=red\n" + " tail_length=5\n" + " speed=1.0\n" + diff --git a/lib/libesp32/berry_animation/src/tests/constraint_encoding_test.be b/lib/libesp32/berry_animation/src/tests/constraint_encoding_test.be index ae944b098..63b7ccaab 100644 --- a/lib/libesp32/berry_animation/src/tests/constraint_encoding_test.be +++ b/lib/libesp32/berry_animation/src/tests/constraint_encoding_test.be @@ -209,7 +209,7 @@ assert_equal(animation.parameterized_object.constraint_mask(encoded_4_3, "nillab # ============================================================================ print("\n--- Test Group 5: Real-World PARAMS ---") -# Test 5.1: BeaconAnimation PARAMS +# Test 5.1: beacon PARAMS var beacon_params = { "color": {"default": 0xFFFFFFFF}, "back_color": {"default": 0xFF000000}, @@ -221,7 +221,7 @@ var beacon_encoded = animation.enc_params(beacon_params) assert_equal(animation.parameterized_object.constraint_find(beacon_encoded["color"], "default", nil), 0xFFFFFFFF, "5.1a: beacon color") assert_equal(animation.parameterized_object.constraint_find(beacon_encoded["beacon_size"], "min", nil), 0, "5.1b: beacon_size min") -# Test 5.2: CometAnimation PARAMS +# Test 5.2: comet PARAMS var comet_params = { "tail_length": {"min": 1, "max": 50, "default": 5}, "speed": {"min": 1, "max": 25600, "default": 2560}, @@ -250,7 +250,7 @@ assert_equal(animation.parameterized_object.constraint_find(animation_encoded["n assert_equal(animation.parameterized_object.constraint_find(animation_encoded["loop"], "type", nil), "bool", "5.3c: loop type") assert_equal(animation.parameterized_object.constraint_find(animation_encoded["opacity"], "type", nil), "any", "5.3d: opacity type") -# Test 5.4: GradientAnimation PARAMS (with nillable) +# Test 5.4: gradient PARAMS (with nillable) var gradient_params = { "color": {"default": nil, "nillable": true}, "gradient_type": {"min": 0, "max": 1, "default": 0}, @@ -272,7 +272,7 @@ var oscillator_encoded = animation.enc_params(oscillator_params) var form_enum = animation.parameterized_object.constraint_find(oscillator_encoded["form"], "enum", nil) assert_array_equal(form_enum, [1, 2, 3, 4, 5, 6, 7, 8, 9], "5.5a: form enum") -# Test 5.6: BreatheAnimation PARAMS +# Test 5.6: breathe PARAMS var breathe_params = { "base_color": {"default": 0xFFFFFFFF}, "min_brightness": {"min": 0, "max": 255, "default": 0}, diff --git a/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be b/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be index 9fe0d6158..c8de5def7 100644 --- a/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be @@ -1,6 +1,6 @@ # Unit tests for Crenel Position Animation # -# This file contains comprehensive tests for the CrenelPositionAnimation class +# This file contains comprehensive tests for the crenel class # to ensure it works correctly with various parameters and edge cases. # # Command to run tests: @@ -31,7 +31,7 @@ def run_tests() var engine = animation.create_engine(strip) # Test 1: Basic construction with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) test_assert(crenel != nil, "Crenel position animation creation") # Set parameters via virtual member assignment diff --git a/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be b/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be index 45c6af294..87d709a77 100644 --- a/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be +++ b/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be @@ -1,14 +1,14 @@ -# Test suite for CrenelPositionAnimation color handling +# Test suite for crenel color handling # -# This test verifies that CrenelPositionAnimation correctly handles both +# This test verifies that crenel correctly handles both # integer colors and color_provider instances. import string import animation -# Test CrenelPositionAnimation with integer color +# Test crenel with integer color def test_crenel_with_integer_color() - print("Testing CrenelPositionAnimation with integer color...") + print("Testing crenel with integer color...") # Create engine and strip for testing var strip = global.Leds(10) @@ -18,7 +18,7 @@ def test_crenel_with_integer_color() var red_color = 0xFFFF0000 # Red # Create animation with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) # Set parameters via virtual member assignment crenel.color = red_color @@ -41,12 +41,12 @@ def test_crenel_with_integer_color() assert(result == true, "Render should succeed with integer color") assert(crenel.is_running == true, "Animation should be running") - print("✓ CrenelPositionAnimation with integer color test passed") + print("✓ crenel with integer color test passed") end -# Test CrenelPositionAnimation with color_provider +# Test crenel with color_provider def test_crenel_with_color_provider() - print("Testing CrenelPositionAnimation with color_provider...") + print("Testing crenel with color_provider...") # Create engine and strip for testing var strip = global.Leds(10) @@ -60,7 +60,7 @@ def test_crenel_with_color_provider() color_provider.color = blue_color # Create animation with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) # Set parameters via virtual member assignment crenel.color = color_provider # color_provider @@ -83,12 +83,12 @@ def test_crenel_with_color_provider() assert(result == true, "Render should succeed with color_provider") assert(crenel.is_running == true, "Animation should be running") - print("✓ CrenelPositionAnimation with color_provider test passed") + print("✓ crenel with color_provider test passed") end -# Test CrenelPositionAnimation with dynamic color_provider +# Test crenel with dynamic color_provider def test_crenel_with_dynamic_color_provider() - print("Testing CrenelPositionAnimation with dynamic color_provider...") + print("Testing crenel with dynamic color_provider...") # Create engine and strip for testing var strip = global.Leds(10) @@ -102,7 +102,7 @@ def test_crenel_with_dynamic_color_provider() palette_provider.period = 2000 # 2 second cycle # Create animation with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) # Set parameters via virtual member assignment crenel.color = palette_provider # dynamic color_provider @@ -132,12 +132,12 @@ def test_crenel_with_dynamic_color_provider() var result2 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result2 == true, "Second render should succeed") - print("✓ CrenelPositionAnimation with dynamic color_provider test passed") + print("✓ crenel with dynamic color_provider test passed") end -# Test CrenelPositionAnimation with generic value_provider +# Test crenel with generic value_provider def test_crenel_with_generic_value_provider() - print("Testing CrenelPositionAnimation with generic value_provider...") + print("Testing crenel with generic value_provider...") # Create engine and strip for testing var strip = global.Leds(10) @@ -150,7 +150,7 @@ def test_crenel_with_generic_value_provider() static_provider.value = 0xFFFF00FF # Magenta # Create animation with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) # Set parameters via virtual member assignment crenel.color = static_provider # generic value_provider @@ -173,12 +173,12 @@ def test_crenel_with_generic_value_provider() assert(result == true, "Render should succeed with generic value_provider") assert(crenel.is_running == true, "Animation should be running") - print("✓ CrenelPositionAnimation with generic value_provider test passed") + print("✓ crenel with generic value_provider test passed") end # Test direct color assignment with both types def test_crenel_set_color_methods() - print("Testing CrenelPositionAnimation direct color assignment...") + print("Testing crenel direct color assignment...") # Create engine and strip for testing var strip = global.Leds(5) @@ -187,7 +187,7 @@ def test_crenel_set_color_methods() var frame = animation.frame_buffer(5) # Create animation with new parameterized pattern - var crenel = animation.crenel_animation(engine) + var crenel = animation.crenel(engine) # Set initial parameters crenel.color = 0xFFFF0000 # red @@ -219,19 +219,19 @@ def test_crenel_set_color_methods() var result2 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result2 == true, "Render with color_provider should succeed") - print("✓ CrenelPositionAnimation direct color assignment test passed") + print("✓ crenel direct color assignment test passed") end # Test tostring method with both color types def test_crenel_tostring() - print("Testing CrenelPositionAnimation tostring method...") + print("Testing crenel tostring method...") # Create engine and strip for testing var strip = global.Leds(5) var engine = animation.create_engine(strip) # Test with integer color - var crenel_int = animation.crenel_animation(engine) + var crenel_int = animation.crenel(engine) crenel_int.color = 0xFFFF0000 crenel_int.back_color = 0x00000000 # transparent (default) crenel_int.pos = 0 @@ -252,7 +252,7 @@ def test_crenel_tostring() var color_provider = animation.static_color(engine) color_provider.color = 0xFF00FF00 - var crenel_provider = animation.crenel_animation(engine) + var crenel_provider = animation.crenel(engine) crenel_provider.color = color_provider crenel_provider.back_color = 0x00000000 # transparent (default) crenel_provider.pos = 0 @@ -269,12 +269,12 @@ def test_crenel_tostring() assert(size(str_provider) > 0, "String representation should not be empty") print(f"color_provider string: {str_provider}") - print("✓ CrenelPositionAnimation tostring method test passed") + print("✓ crenel tostring method test passed") end # Run all tests def run_crenel_color_tests() - print("=== CrenelPositionAnimation Color Handling Tests ===") + print("=== crenel Color Handling Tests ===") try test_crenel_with_integer_color() @@ -284,7 +284,7 @@ def run_crenel_color_tests() test_crenel_set_color_methods() test_crenel_tostring() - print("=== All CrenelPositionAnimation color tests passed! ===") + print("=== All crenel color tests passed! ===") return true except .. as e, msg print(f"Test failed: {e} - {msg}") diff --git a/lib/libesp32/berry_animation/src/tests/demo_shutter_infinite_loop_test.be b/lib/libesp32/berry_animation/src/tests/demo_shutter_infinite_loop_test.be index f7a90d93f..9df9e84dd 100644 --- a/lib/libesp32/berry_animation/src/tests/demo_shutter_infinite_loop_test.be +++ b/lib/libesp32/berry_animation/src/tests/demo_shutter_infinite_loop_test.be @@ -77,8 +77,8 @@ def test_demo_shutter_patterns() return false end - # Test 4: Complex expressions in beacon_animation - print(" Testing complex beacon_animation expressions...") + # Test 4: Complex expressions in beacon + print(" Testing complex beacon expressions...") var complex_beacon = "template shutter_central {\n" + " param colors type palette\n" + " param duration\n" + @@ -89,7 +89,7 @@ def test_demo_shutter_patterns() " \n" + " color col1 = color_cycle(palette=colors, period=0)\n" + " \n" + - " animation shutter_anim = beacon_animation(\n" + + " animation shutter_anim = beacon(\n" + " color = col1\n" + " back_color = red\n" + " pos = strip_len2 - (shutter_size + 1) / 2\n" + @@ -105,11 +105,11 @@ def test_demo_shutter_patterns() "shutter_central(rainbow, 1s)" try - print(" Compiling complex beacon_animation...") + print(" Compiling complex beacon...") var result4 = animation_dsl.compile(complex_beacon) - print(" ✓ Complex beacon_animation works") + print(" ✓ Complex beacon works") except .. as e, msg - print(f" ✗ Complex beacon_animation failed: {e}: {msg}") + print(f" ✗ Complex beacon failed: {e}: {msg}") return false end @@ -127,7 +127,7 @@ def test_demo_shutter_patterns() " color col2 = color_cycle(palette=colors, period=0)\n" + " col2.next = 1\n" + " \n" + - " animation shutter_inout = beacon_animation(\n" + + " animation shutter_inout = beacon(\n" + " color = col2\n" + " back_color = col1\n" + " pos = strip_len2 - (shutter_size + 1) / 2\n" + @@ -136,7 +136,7 @@ def test_demo_shutter_patterns() " priority = 5\n" + " )\n" + " \n" + - " animation shutter_outin = beacon_animation(\n" + + " animation shutter_outin = beacon(\n" + " color = col1\n" + " back_color = col2\n" + " pos = strip_len2 - (strip_len - shutter_size + 1) / 2\n" + diff --git a/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be index 69f0b7976..792363e4f 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be @@ -114,7 +114,7 @@ def test_complex_berry_content() 'print("Complex berry block initialized")\n' + '"""\n' + 'color purple_custom = 0x800080\n' + - 'animation pulse = pulsating_animation(color=purple_custom, period=2s)\n' + + 'animation pulse = breathe(color=purple_custom, period=2s)\n' + 'run pulse' var berry_code = animation_dsl.compile(dsl_source) @@ -136,7 +136,7 @@ def test_berry_dsl_interaction() print("Testing berry code block interaction with DSL objects...") var dsl_source = 'color red_custom = 0xFF0000\n' + - 'animation test_anim = pulsating_animation(color=red_custom, period=3s)\n' + + 'animation test_anim = breathe(color=red_custom, period=3s)\n' + 'berry """\n' + '# Modify DSL-generated animation\n' + 'test_anim_.opacity = 150\n' + @@ -148,7 +148,7 @@ def test_berry_dsl_interaction() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should generate Berry code") - assert(string.find(berry_code, "var test_anim_ = animation.pulsating_animation(engine)") >= 0, "Should create animation") + assert(string.find(berry_code, "var test_anim_ = animation.breathe(engine)") >= 0, "Should create animation") assert(string.find(berry_code, "test_anim_.opacity = 150") >= 0, "Should modify animation opacity") assert(string.find(berry_code, "test_anim_.priority = 10") >= 0, "Should modify animation priority") assert(string.find(berry_code, 'print("Animation modified via berry code")') >= 0, "Should include print statement") @@ -396,7 +396,7 @@ def test_external_function_complex() 'extern function rand_meter\n' + 'extern function breathing_effect\n' + 'palette rainbow = [0xFF0000, 0x00FF00, 0x0000FF]\n' + - 'animation meter = palette_meter_animation(level = rand_meter())\n' + + 'animation meter = palette_meter(level = rand_meter())\n' + 'animation breath = solid(color=blue)\n' + 'breath.opacity = breathing_effect\n' + 'run meter' diff --git a/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be b/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be index c67747796..aa6d56278 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_berry_integration_test.be @@ -22,8 +22,8 @@ def test_mathematical_integration() 'end\n' + '"""\n' + 'color wave_color = 0x0080FF\n' + - 'animation wave1 = pulsating_animation(color=wave_color, period=2s)\n' + - 'animation wave2 = pulsating_animation(color=wave_color, period=3s)\n' + + 'animation wave1 = breathe(color=wave_color, period=2s)\n' + + 'animation wave2 = breathe(color=wave_color, period=3s)\n' + 'berry """\n' + 'wave1_.period = calculate_period(4000, 2.0) # 2000ms\n' + 'wave1_.opacity = calculate_opacity(80) # 204\n' + @@ -80,10 +80,10 @@ def test_configuration_management() '"""\n' + 'color fire_red = 0xFF4500\n' + 'color ocean_blue = 0x006994\n' + - 'animation fire_anim = pulsating_animation(color=fire_red, period=2s)\n' + - 'animation ocean_anim = pulsating_animation(color=ocean_blue, period=3s)\n' + + 'animation fire_anim = breathe(color=fire_red, period=2s)\n' + + 'animation ocean_anim = breathe(color=ocean_blue, period=3s)\n' + 'berry """\n' + - 'apply_config_to_animation(fire_anim_, "fire_animation")\n' + + 'apply_config_to_animation(fire_anim_, "fire")\n' + 'apply_config_to_animation(ocean_anim_, "ocean_animation")\n' + 'log_debug("Configuration applied to all animations")\n' + '"""\n' + @@ -121,7 +121,7 @@ def test_dynamic_animation_creation() 'var animation_counter = 0\n' + 'def create_numbered_animation(base_color, period_ms)\n' + ' animation_counter += 1\n' + - ' var anim = animation.pulsating_animation(engine)\n' + + ' var anim = animation.breathe(engine)\n' + ' anim.color = base_color\n' + ' anim.period = period_ms\n' + ' anim.priority = animation_counter\n' + @@ -146,7 +146,7 @@ def test_dynamic_animation_creation() # Verify dynamic creation function is included assert(string.find(berry_code, "def create_numbered_animation(base_color, period_ms)") >= 0, "Should include dynamic creation function") - assert(string.find(berry_code, "var anim = animation.pulsating_animation(engine)") >= 0, "Should create animations dynamically") + assert(string.find(berry_code, "var anim = animation.breathe(engine)") >= 0, "Should create animations dynamically") assert(string.find(berry_code, "engine.add(anim)") >= 0, "Should add animations to engine") # Test execution @@ -186,7 +186,7 @@ def test_state_management() 'end\n' + '"""\n' + 'color status_color = 0x00FFFF\n' + - 'animation status_anim = pulsating_animation(color=status_color, period=2s)\n' + + 'animation status_anim = breathe(color=status_color, period=2s)\n' + 'berry """\n' + 'set_mode("bright")\n' + 'status_anim_.opacity = get_brightness_for_mode()\n' + @@ -243,7 +243,7 @@ def test_error_handling_integration() 'end\n' + '"""\n' + 'color safe_color = 0xFF8000\n' + - 'animation safe_anim = pulsating_animation(color=safe_color, period=1s)\n' + + 'animation safe_anim = breathe(color=safe_color, period=1s)\n' + 'berry """\n' + 'var calculated_period = safe_divide(4000, 2) # Should work\n' + 'safe_set_period(safe_anim_, int(calculated_period * 1000))\n' + diff --git a/lib/libesp32/berry_animation/src/tests/dsl_compilation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_compilation_test.be index 4826e067d..7458f0772 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_compilation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_compilation_test.be @@ -53,12 +53,12 @@ def test_successful_compilation() # Test animation definitions var animation_dsl_code = - "animation test = pulsating_animation(color=0xFF0000FF, min_brightness=(0+1))\n" + + "animation test = breathe(color=0xFF0000FF, min_brightness=(0+1))\n" + "test.priority = 10\n" berry_code = animation_dsl.compile(animation_dsl_code) assert(berry_code != nil, "Should compile animation definitions") - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, "Should create pulsating animation") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, "Should create pulsating animation") assert(string.find(berry_code, "test_.color = 0xFF0000FF") >= 0, "Should set color parameter") assert(string.find(berry_code, "test_.priority = 10") >= 0, "Should set priority property") @@ -175,7 +175,7 @@ def test_compilation_failures() end # Test invalid parameter name - var invalid_param_dsl = "animation pulse = pulsating_animation(invalid_param=123)" + var invalid_param_dsl = "animation pulse = breathe(invalid_param=123)" try var berry_code = animation_dsl.compile(invalid_param_dsl) @@ -188,7 +188,7 @@ def test_compilation_failures() # Test invalid property assignment var invalid_property_dsl = - "animation pulse = pulsating_animation(color=red, period=2s)\n" + + "animation pulse = breathe(color=red, period=2s)\n" + "pulse.wrong_property = 15" try @@ -201,7 +201,7 @@ def test_compilation_failures() end # Test undefined color reference - var undefined_color_dsl = "animation pulse = pulsating_animation(color=undefined_color)" + var undefined_color_dsl = "animation pulse = breathe(color=undefined_color)" try var berry_code = animation_dsl.compile(undefined_color_dsl) @@ -378,7 +378,7 @@ def test_complete_example() "shutter_size.min_value = rand_demo()\n" + "shutter_size.max_value = strip_len\n" + "shutter_size.min_value = strip_len / 2\n" + - "animation test = pulsating_animation(color=0xFF0000FF, min_brightness=(0+1))\n" + + "animation test = breathe(color=0xFF0000FF, min_brightness=(0+1))\n" + "palette col1 = [red, orange, yellow, green, blue, indigo, white]\n" + "set zz = strip_len - 2\n" + "set z1 = x\n" + @@ -407,7 +407,7 @@ def test_complete_example() assert(string.find(berry_code, "var r1_ = animation.create_closure_value(engine") >= 0, "Should create user function closures") assert(string.find(berry_code, "var x_ = 3000") >= 0, "Should convert time values") assert(string.find(berry_code, "animation.sawtooth(engine)") >= 0, "Should create sawtooth providers") - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, "Should create animations") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, "Should create animations") assert(string.find(berry_code, 'bytes("FFFF0000"') >= 0, "Should create palette bytes") assert(string.find(berry_code, "animation.sequence_manager(engine") >= 0, "Should create sequences") assert(string.find(berry_code, "push_repeat_subsequence") >= 0, "Should create repeat loops") diff --git a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be index e751c5141..5158ebf75 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be @@ -116,8 +116,8 @@ def test_animation_processing() # Test pulse animations with named arguments var pulse_tests = [ ["animation solid_red = solid(color=red)\n" - "animation pulse_red = pulsating_animation(color=red, period=2000)", - "var pulse_red_ = animation.pulsating_animation(engine)\npulse_red_.color = 0xFFFF0000\npulse_red_.period = 2000"] + "animation pulse_red = breathe(color=red, period=2000)", + "var pulse_red_ = animation.breathe(engine)\npulse_red_.color = 0xFFFF0000\npulse_red_.period = 2000"] ] for test : pulse_tests @@ -282,7 +282,7 @@ def test_property_assignments() "red_anim_.priority = 15"], ["animation test_anim = solid(color=red)\ntest_anim.opacity = 128", "test_anim_.opacity = 128"], - ["animation solid_red = solid(color=red)\nanimation pulse_anim = pulsating_animation(color=red, period=2000)\npulse_anim.priority = 5", + ["animation solid_red = solid(color=red)\nanimation pulse_anim = breathe(color=red, period=2000)\npulse_anim.priority = 5", "pulse_anim_.priority = 5"] ] diff --git a/lib/libesp32/berry_animation/src/tests/dsl_newline_syntax_test.be b/lib/libesp32/berry_animation/src/tests/dsl_newline_syntax_test.be index 34eec4cf4..14b977b27 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_newline_syntax_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_newline_syntax_test.be @@ -14,7 +14,7 @@ def test_animation_newline_parameters() var dsl_source = "color custom_red = 0xFF0000\n" + - "animation stream1 = comet_animation(\n" + + "animation stream1 = comet(\n" + " color=custom_red\n" + " tail_length=15\n" + " speed=1.5s\n" + @@ -25,7 +25,7 @@ def test_animation_newline_parameters() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should compile DSL with newline parameters") - assert(string.find(berry_code, "var stream1_ = animation.comet_animation(engine)") >= 0, "Should generate animation creation") + assert(string.find(berry_code, "var stream1_ = animation.comet(engine)") >= 0, "Should generate animation creation") assert(string.find(berry_code, "stream1_.color = custom_red_") >= 0, "Should generate color assignment") assert(string.find(berry_code, "stream1_.tail_length = 15") >= 0, "Should generate tail_length assignment") assert(string.find(berry_code, "stream1_.speed = 1500") >= 0, "Should generate speed assignment") @@ -66,7 +66,7 @@ def test_mixed_syntax() var dsl_source = "color custom_red = 0xFF0000\n" + - "animation mixed = comet_animation(\n" + + "animation mixed = comet(\n" + " color=custom_red, tail_length=15\n" + " speed=1.5s\n" + " priority=10, direction=1\n" + @@ -92,7 +92,7 @@ def test_traditional_comma_syntax() var dsl_source = "color custom_red = 0xFF0000\n" + - "animation traditional = comet_animation(color=custom_red, tail_length=15, speed=1.5s, priority=10)\n" + + "animation traditional = comet(color=custom_red, tail_length=15, speed=1.5s, priority=10)\n" + "run traditional" var berry_code = animation_dsl.compile(dsl_source) @@ -136,7 +136,7 @@ def test_nested_function_calls() print("Testing nested function calls with newline syntax...") var dsl_source = - "animation nested = pulsating_animation(\n" + + "animation nested = breathe(\n" + " color=solid(color=red)\n" + " period=triangle(\n" + " min_value=1000\n" + @@ -149,7 +149,7 @@ def test_nested_function_calls() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should compile nested function calls with newline syntax") - assert(string.find(berry_code, "var nested_ = animation.pulsating_animation(engine)") >= 0, "Should generate main animation") + assert(string.find(berry_code, "var nested_ = animation.breathe(engine)") >= 0, "Should generate main animation") assert(string.find(berry_code, "nested_.color = (def (engine)") >= 0, "Should generate nested solid call as anonymous function") assert(string.find(berry_code, "nested_.period = (def (engine)") >= 0, "Should generate nested triangle call as anonymous function") assert(string.find(berry_code, "var provider = animation.solid(engine)") >= 0, "Should generate solid provider in anonymous function") @@ -179,7 +179,7 @@ def test_complex_example() " brightness=255\n" + ")\n" + "\n" + - "animation stream = comet_animation(\n" + + "animation stream = comet(\n" + " color=stream_pattern # color source\n" + " tail_length=15 # long tail\n" + " speed=1.5s # speed\n" + @@ -193,7 +193,7 @@ def test_complex_example() assert(berry_code != nil, "Should compile complex real-world example") assert(string.find(berry_code, "var matrix_greens_ = bytes(") >= 0, "Should generate palette") assert(string.find(berry_code, "var stream_pattern_ = animation.rich_palette_color(engine)") >= 0, "Should generate color provider") - assert(string.find(berry_code, "var stream_ = animation.comet_animation(engine)") >= 0, "Should generate animation") + assert(string.find(berry_code, "var stream_ = animation.comet(engine)") >= 0, "Should generate animation") print("✓ Complex example test passed") return true diff --git a/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be index bf91edca6..cf0bcc283 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_parameter_validation_test.be @@ -29,7 +29,7 @@ class DSLParameterValidationTest def test_valid_parameters() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation breathe_test = breathe_animation(color=0xFF0000FF, period=2000, min_brightness=50)\n" + "animation breathe_test = breathe(color=0xFF0000FF, period=2000, min_brightness=50)\n" "run breathe_test" var berry_code = animation_dsl.compile_dsl(dsl_code) @@ -56,7 +56,7 @@ class DSLParameterValidationTest def test_invalid_parameter() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation breathe_test = breathe_animation(color=0xFF0000FF, invalid_param=123)\n" + "animation breathe_test = breathe(color=0xFF0000FF, invalid_param=123)\n" "run breathe_test" var compilation_failed = false @@ -86,7 +86,7 @@ class DSLParameterValidationTest def test_mixed_parameters() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation breathe_test = breathe_animation(color=0xFF0000FF, period=2000, nonexistent_param=456)\n" + "animation breathe_test = breathe(color=0xFF0000FF, period=2000, nonexistent_param=456)\n" "run breathe_test" var compilation_failed = false @@ -116,7 +116,7 @@ class DSLParameterValidationTest def test_nested_function_invalid_parameters() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation main_anim = pulsating_animation(color=breathe_animation(color=0xFF0000FF, bad_param=789))\n" + "animation main_anim = breathe(color=breathe(color=0xFF0000FF, bad_param=789))\n" "run main_anim" var compilation_failed = false @@ -146,7 +146,7 @@ class DSLParameterValidationTest def test_user_function_not_validated() # First register a user function animation.register_user_function("my_custom_anim", def(engine, param1, param2) - return animation.breathe_animation(engine) + return animation.breathe(engine) end) var dsl_code = @@ -171,8 +171,8 @@ class DSLParameterValidationTest def test_multiple_animations_validation() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation valid_anim = breathe_animation(color=0xFF0000FF, period=2000)\n" - "animation invalid_anim = breathe_animation(color=0xFF00FF00, wrong_param=999)\n" + "animation valid_anim = breathe(color=0xFF0000FF, period=2000)\n" + "animation invalid_anim = breathe(color=0xFF00FF00, wrong_param=999)\n" "run valid_anim" var compilation_failed = false @@ -201,8 +201,8 @@ class DSLParameterValidationTest # Test valid object property references - should compile successfully def test_valid_object_property_references() var dsl_code = - "animation red_eye = beacon_animation(color=red, pos=10)\n" - "animation green_eye = beacon_animation(color=green, pos=red_eye.pos)\n" + "animation red_eye = beacon(color=red, pos=10)\n" + "animation green_eye = beacon(color=green, pos=red_eye.pos)\n" "run red_eye\n" "run green_eye" @@ -222,8 +222,8 @@ class DSLParameterValidationTest def test_invalid_object_property_references() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation red_eye = beacon_animation(color=red, pos=10)\n" - "animation green_eye = beacon_animation(color=green, pos=red_eye.invalid_param)\n" + "animation red_eye = beacon(color=red, pos=10)\n" + "animation green_eye = beacon(color=green, pos=red_eye.invalid_param)\n" "run red_eye\n" "run green_eye" @@ -249,9 +249,9 @@ class DSLParameterValidationTest raise "error_message_error", f"Error message should mention 'invalid_param', got: {error_message}" end - # Check that the error message mentions it's a BeaconAnimation parameter issue - if string.find(error_message, "BeaconAnimation") == -1 - raise "error_message_error", f"Error message should mention 'BeaconAnimation', got: {error_message}" + # Check that the error message mentions it's a beacon parameter issue + if string.find(error_message, "beacon") == -1 + raise "error_message_error", f"Error message should mention 'beacon', got: {error_message}" end end @@ -259,8 +259,8 @@ class DSLParameterValidationTest def test_object_property_references_in_expressions() var dsl_code = "set strip_len = strip_length()\n" - "animation red_eye = beacon_animation(color=red, pos=10)\n" - "animation blue_eye = beacon_animation(color=blue, pos=strip_len - red_eye.nonexistent)\n" + "animation red_eye = beacon(color=red, pos=10)\n" + "animation blue_eye = beacon(color=blue, pos=strip_len - red_eye.nonexistent)\n" "run red_eye\n" "run blue_eye" @@ -293,7 +293,7 @@ class DSLParameterValidationTest "sequence demo {\n" " play solid(color=red) for 5s\n" "}\n" - "animation test = beacon_animation(color=blue, pos=demo.pos)\n" + "animation test = beacon(color=blue, pos=demo.pos)\n" "run test" var compilation_failed = false @@ -323,8 +323,8 @@ class DSLParameterValidationTest def test_valid_computed_object_property_references() var dsl_code = "set strip_len = strip_length()\n" - "animation red_eye = beacon_animation(color=red, pos=10)\n" - "animation blue_eye = beacon_animation(color=blue, pos=strip_len - red_eye.pos)\n" + "animation red_eye = beacon(color=red, pos=10)\n" + "animation blue_eye = beacon(color=blue, pos=strip_len - red_eye.pos)\n" "run red_eye\n" "run blue_eye" diff --git a/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be b/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be index 46c088375..6b9c1a950 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_restart_test.be @@ -82,7 +82,7 @@ def test_restart_animations() print("Testing restart with animations...") var dsl_source = "set osc_val = triangle(min_value=0, max_value=10, duration=2s)\n" + - "animation pulse_anim = pulsating_animation(color=red, period=3s)\n" + + "animation pulse_anim = breathe(color=red, period=3s)\n" + "animation solid_anim = solid(color=blue)\n" + "\n" + "sequence demo {\n" + @@ -257,7 +257,7 @@ def test_complex_scenario() "set cosine_val = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s)\n" + "set triangle_val = triangle(min_value = 0, max_value = strip_len - 2, duration = 5s)\n" + "\n" + - "animation red_eye = beacon_animation(\n" + + "animation red_eye = beacon(\n" + " color = eye_color\n" + " pos = cosine_val\n" + " beacon_size = 3\n" + diff --git a/lib/libesp32/berry_animation/src/tests/dsl_template_animation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_template_animation_test.be index 1c38401de..5530ede75 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_template_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_template_animation_test.be @@ -117,7 +117,7 @@ class DSLTemplateAnimationTest " param my_duration type time\n" + " \n" + " color col = color_cycle(colors=my_color, period=0)\n" + - " animation test = pulsating_animation(color=col, period=my_duration)\n" + + " animation test = breathe(color=col, period=my_duration)\n" + " run test\n" + "}\n" @@ -147,7 +147,7 @@ class DSLTemplateAnimationTest " set strip_len = strip_length()\n" + " set computed_size = strip_len / 2\n" + " \n" + - " animation test = beacon_animation(beacon_size=base_size)\n" + + " animation test = beacon(beacon_size=base_size)\n" + " run test\n" + "}\n" @@ -207,7 +207,7 @@ class DSLTemplateAnimationTest " set strip_len = strip_length()\n" + " set oscillator = sawtooth(min_value=0, max_value=strip_len, duration=duration)\n" + " \n" + - " animation test = beacon_animation(pos=oscillator)\n" + + " animation test = beacon(pos=oscillator)\n" + " run test\n" + "}\n" @@ -475,7 +475,7 @@ class DSLTemplateAnimationTest " set shutter_size = sawtooth(min_value=0, max_value=strip_len, duration=duration)\n" + " \n" + " color col = color_cycle(colors=colors, period=0)\n" + - " animation test = beacon_animation(color=col, beacon_size=shutter_size)\n" + + " animation test = beacon(color=col, beacon_size=shutter_size)\n" + " \n" + " sequence seq repeat forever {\n" + " play test for period\n" + @@ -550,7 +550,7 @@ class DSLTemplateAnimationTest " color col2 = color_cycle(colors=colors, period=0)\n" + " col2.next = 1\n" + " \n" + - " animation shutter = beacon_animation(\n" + + " animation shutter = beacon(\n" + " color=col1\n" + " back_color=col2\n" + " pos=strip_len2\n" + diff --git a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be index 8d84a10bb..df8d05984 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be @@ -266,7 +266,7 @@ print(repeat_berry_code) "set cosine_val = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s)\n" + "set triangle_val = triangle(min_value = 0, max_value = strip_len - 2, duration = 5s)\n" + "\n" + - "animation red_eye = beacon_animation(\n" + + "animation red_eye = beacon(\n" + " color = eye_color\n" + " pos = cosine_val\n" + " beacon_size = 3\n" + @@ -489,7 +489,7 @@ def test_computed_values() # Test computed values with single resolve calls (regression test for double resolve issue) var computed_dsl = "set strip_len = strip_length()\n" + - "animation stream1 = comet_animation(\n" + + "animation stream1 = comet(\n" + " color=red\n" + " tail_length=abs(strip_len / 4)\n" + " speed=1.5\n" + @@ -519,7 +519,7 @@ def test_computed_values() # Test complex expressions with single closure (regression test for nested closure issue) var complex_expr_dsl = "set strip_len = strip_length()\n" + "set base_value = 5\n" + - "animation stream2 = comet_animation(\n" + + "animation stream2 = comet(\n" + " color=blue\n" + " tail_length=strip_len / 8 + (2 * strip_len) - 10\n" + " speed=(base_value + strip_len) * 2.5\n" + @@ -575,7 +575,7 @@ def test_computed_values() # Test simple expressions that don't need closures var simple_expr_dsl = "set strip_len = strip_length()\n" + - "animation simple = comet_animation(\n" + + "animation simple = comet(\n" + " color=red\n" + " tail_length=strip_len\n" + " speed=1.5\n" + @@ -590,7 +590,7 @@ def test_computed_values() # Test mathematical functions in computed expressions var math_expr_dsl = "set strip_len = strip_length()\n" + - "animation math_test = comet_animation(\n" + + "animation math_test = comet(\n" + " color=red\n" + " tail_length=max(1, min(strip_len, 20))\n" + " speed=abs(strip_len - 30)\n" + @@ -641,7 +641,7 @@ def test_forward_references() print("Testing forward references...") var dsl_source = "# Forward reference: animation uses color defined later\n" + - "animation fire_gradient = gradient_animation(color=red)\n" + + "animation fire_gradient = gradient(color=red)\n" + "color red = 0xFF0000\n" + "color orange = 0xFF8000" @@ -686,8 +686,8 @@ def test_complex_dsl() "set brightness = 80%\n" + "\n" + "# Animation Definitions\n" + - "animation red_pulse = pulsating_animation(color=red, period=2000)\n" + - "animation blue_breathe = breathe_animation(color=blue, period=4000)\n" + + "animation red_pulse = breathe(color=red, period=2000)\n" + + "animation blue_breathe = breathe(color=blue, period=4000)\n" + "\n" + "# Sequence Definition with Control Flow\n" + "sequence demo {\n" + @@ -758,11 +758,11 @@ def test_core_processing_methods() # Test pulse animation generation var pulse_dsl = "color custom_red = 0xFF0000\n" + "animation solid_red = solid(color=custom_red)\n" + - "animation pulse_red = pulsating_animation(color=custom_red, period=2000)" + "animation pulse_red = breathe(color=custom_red, period=2000)" var berry_code = animation_dsl.compile(pulse_dsl) assert(berry_code != nil, "Should compile pulse animation") - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, "Should generate pulse animation") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, "Should generate pulse animation") # Test control flow var control_dsl = "color custom_blue = 0x0000FF\n" + @@ -969,13 +969,13 @@ def test_animation_type_checking() # Test valid animation factory functions var valid_animation_dsl = "# strip length 30 # TEMPORARILY DISABLED\n" + "color custom_red = 0xFF0000\n" + - "animation pulse_red = pulsating_animation(color=custom_red, period=2000)\n" + + "animation pulse_red = breathe(color=custom_red, period=2000)\n" + "animation solid_blue = solid(color=0x0000FF)\n" + "run pulse_red" var berry_code = animation_dsl.compile(valid_animation_dsl) assert(berry_code != nil, "Should compile valid animation factories") - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, "Should generate pulsating_animation call") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, "Should generate breathe call") assert(string.find(berry_code, "animation.solid(engine)") >= 0, "Should generate solid call") # Test invalid animation factory function (should fail at transpile time) diff --git a/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be b/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be index 90515459c..8290e2a9a 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_value_provider_validation_test.be @@ -40,7 +40,7 @@ class DSLvalue_providerValidationTest def test_valid_value_provider_parameters() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation test = pulsating_animation(color=0xFF0000FF, min_brightness=oscillator_value(min_value=0, max_value=100))\n" + "animation test = breathe(color=0xFF0000FF, min_brightness=oscillator_value(min_value=0, max_value=100))\n" "run test" var berry_code = animation_dsl.compile_dsl(dsl_code) @@ -59,7 +59,7 @@ class DSLvalue_providerValidationTest def test_invalid_value_provider_parameter() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation test = pulsating_animation(color=0xFF0000FF, min_brightness=oscillator_value(min_value=0, invalid_param=123))\n" + "animation test = breathe(color=0xFF0000FF, min_brightness=oscillator_value(min_value=0, invalid_param=123))\n" "run test" var compilation_failed = false @@ -89,7 +89,7 @@ class DSLvalue_providerValidationTest def test_nonexistent_value_provider() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation test = pulsating_animation(color=0xFF0000FF, min_brightness=nonexistent_provider(param=123))\n" + "animation test = breathe(color=0xFF0000FF, min_brightness=nonexistent_provider(param=123))\n" "run test" var compilation_failed = false @@ -119,7 +119,7 @@ class DSLvalue_providerValidationTest def test_nested_value_providers() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation test = pulsating_animation(color=color_cycle(colors=[0xFF0000FF, 0xFF00FF00], period=oscillator_value(min_value=1000, bad_param=456)))\n" + "animation test = breathe(color=color_cycle(colors=[0xFF0000FF, 0xFF00FF00], period=oscillator_value(min_value=1000, bad_param=456)))\n" "run test" var compilation_failed = false diff --git a/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be b/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be index 01330934c..e6fcff634 100644 --- a/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be +++ b/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be @@ -93,7 +93,7 @@ print("\n=== Test 9: Engine Proxy with Own Rendering ===") var proxy2 = animation.engine_proxy(engine) proxy2.color = 0xFF0000FF # Blue background -var pulse = animation.breathe_animation(engine) +var pulse = animation.breathe(engine) pulse.color = 0xFFFFFF00 # Yellow pulse.period = 2000 diff --git a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be index 2c6e9748f..9ef2a8f76 100644 --- a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be @@ -1,5 +1,5 @@ # Fire Animation Test -# Tests the FireAnimation class functionality +# Tests the fire class functionality import animation @@ -11,7 +11,7 @@ var engine = animation.create_engine(strip) # Test 1: Basic Fire Animation Creation print("\n1. Testing basic fire animation creation...") -var fire = animation.fire_animation(engine) +var fire = animation.fire(engine) # Set parameters using virtual member assignment fire.intensity = 180 fire.flicker_speed = 8 @@ -37,16 +37,16 @@ print(f"Set flicker_speed to 25 (invalid): {result4}") # Test 3: Factory Methods (if they exist) print("\n3. Testing direct class instantiation...") -var fire_classic = animation.fire_animation(engine) +var fire_classic = animation.fire(engine) fire_classic.intensity = 150 fire_classic.priority = 30 -var fire_solid = animation.fire_animation(engine) +var fire_solid = animation.fire(engine) fire_solid.color = 0xFFFF4500 # Orange red fire_solid.intensity = 180 fire_solid.priority = 30 -var fire_palette = animation.fire_animation(engine) +var fire_palette = animation.fire(engine) fire_palette.intensity = 200 fire_palette.priority = 30 @@ -120,11 +120,11 @@ print("Set back to fire palette") # Test 9: Multiple Fire Animations print("\n9. Testing multiple fire animations...") -var fire1 = animation.fire_animation(engine) +var fire1 = animation.fire(engine) fire1.intensity = 180 fire1.priority = 15 -var fire2 = animation.fire_animation(engine) +var fire2 = animation.fire(engine) fire2.color = 0xFFFF4500 fire2.intensity = 150 fire2.priority = 15 @@ -146,7 +146,7 @@ print("\n10. Testing edge cases...") # Very small strip var tiny_strip = global.Leds(1) var tiny_engine = animation.create_engine(tiny_strip) -var tiny_fire = animation.fire_animation(tiny_engine) +var tiny_fire = animation.fire(tiny_engine) tiny_fire.intensity = 180 tiny_fire.priority = 1 tiny_fire.start() @@ -159,7 +159,7 @@ print("Tiny fire (1 pixel) created and rendered successfully") # Zero intensity var dim_strip = global.Leds(10) var dim_engine = animation.create_engine(dim_strip) -var dim_fire = animation.fire_animation(dim_engine) +var dim_fire = animation.fire(dim_engine) dim_fire.intensity = 0 dim_fire.priority = 10 dim_fire.start() diff --git a/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be b/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be index 1830bb0a6..a34b56dc3 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be @@ -1,20 +1,20 @@ -# Test suite for GradientAnimation +# Test suite for gradient # -# This test verifies that the simplified GradientAnimation works correctly +# This test verifies that the simplified gradient works correctly # with linear and radial gradients using beacon-based rendering. import animation # Test basic gradient animation creation def test_gradient_creation() - print("Testing GradientAnimation creation...") + print("Testing gradient creation...") # Create LED strip and engine for testing var strip = global.Leds(10) var engine = animation.create_engine(strip) # Test default gradient - var gradient = animation.gradient_animation(engine) + var gradient = animation.gradient(engine) assert(gradient != nil, "Should create gradient animation") assert(gradient.gradient_type == 0, "Should default to linear gradient") assert(gradient.direction == 0, "Should default to forward direction") @@ -22,23 +22,23 @@ def test_gradient_creation() assert(gradient.color2 == 0xFF0000FF, "Should default to blue color2") # Test radial gradient - var radial_gradient = animation.gradient_animation(engine) + var radial_gradient = animation.gradient(engine) radial_gradient.gradient_type = 1 radial_gradient.color1 = 0xFF000000 radial_gradient.color2 = 0xFFFFFFFF assert(radial_gradient != nil, "Should create radial gradient") assert(radial_gradient.gradient_type == 1, "Should be radial gradient") - print("✓ GradientAnimation creation test passed") + print("✓ gradient creation test passed") end # Test gradient parameter changes def test_gradient_parameters() - print("Testing GradientAnimation parameters...") + print("Testing gradient parameters...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var gradient = animation.gradient_animation(engine) + var gradient = animation.gradient(engine) # Test parameter setting via virtual members gradient.gradient_type = 1 @@ -57,16 +57,16 @@ def test_gradient_parameters() assert(gradient.set_param("gradient_type", 5) == false, "Should reject invalid gradient type") assert(gradient.set_param("direction", 5) == false, "Should reject invalid direction") - print("✓ GradientAnimation parameters test passed") + print("✓ gradient parameters test passed") end # Test gradient animation updates def test_gradient_updates() - print("Testing GradientAnimation updates...") + print("Testing gradient updates...") var strip = global.Leds(5) var engine = animation.create_engine(strip) - var gradient = animation.gradient_animation(engine) + var gradient = animation.gradient(engine) gradient.color1 = 0xFF000000 gradient.color2 = 0xFF00FF00 @@ -81,16 +81,16 @@ def test_gradient_updates() gradient.update(1500) assert(gradient.is_running == true, "Should be running after update at 500ms") - print("✓ GradientAnimation updates test passed") + print("✓ gradient updates test passed") end # Test gradient rendering def test_gradient_rendering() - print("Testing GradientAnimation rendering...") + print("Testing gradient rendering...") var strip = global.Leds(5) var engine = animation.create_engine(strip) - var gradient = animation.gradient_animation(engine) + var gradient = animation.gradient(engine) gradient.color1 = 0xFF000000 # Black gradient.color2 = 0xFFFF0000 # Red @@ -112,18 +112,18 @@ def test_gradient_rendering() # Colors should be different in a gradient (black to red) assert(first_color != last_color, "First and last pixels should be different in gradient") - print("✓ GradientAnimation rendering test passed") + print("✓ gradient rendering test passed") end # Test linear gradient direction def test_gradient_direction() - print("Testing GradientAnimation direction...") + print("Testing gradient direction...") var strip = global.Leds(10) var engine = animation.create_engine(strip) # Test forward direction (color1 -> color2) - var forward_gradient = animation.gradient_animation(engine) + var forward_gradient = animation.gradient(engine) forward_gradient.color1 = 0xFF000000 # Black forward_gradient.color2 = 0xFFFF0000 # Red forward_gradient.direction = 0 @@ -137,7 +137,7 @@ def test_gradient_direction() var forward_last = frame1.get_pixel_color(9) # Test reverse direction (color2 -> color1) - var reverse_gradient = animation.gradient_animation(engine) + var reverse_gradient = animation.gradient(engine) reverse_gradient.color1 = 0xFF000000 # Black reverse_gradient.color2 = 0xFFFF0000 # Red reverse_gradient.direction = 1 @@ -155,17 +155,17 @@ def test_gradient_direction() print(f" Forward: first=0x{forward_first:08X}, last=0x{forward_last:08X}") print(f" Reverse: first=0x{reverse_first:08X}, last=0x{reverse_last:08X}") - print("✓ GradientAnimation direction test passed") + print("✓ gradient direction test passed") end # Test radial gradient def test_radial_gradient() - print("Testing GradientAnimation radial mode...") + print("Testing gradient radial mode...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var radial_gradient = animation.gradient_animation(engine) + var radial_gradient = animation.gradient(engine) radial_gradient.gradient_type = 1 # Radial radial_gradient.color1 = 0xFF000000 # Black at center radial_gradient.color2 = 0xFFFFFFFF # White at edges @@ -188,12 +188,12 @@ def test_radial_gradient() var center_brightness = ((center_color >> 16) & 0xFF) + ((center_color >> 8) & 0xFF) + (center_color & 0xFF) assert(edge_brightness > center_brightness, "Edge should be brighter than center in radial gradient") - print("✓ GradientAnimation radial mode test passed") + print("✓ gradient radial mode test passed") end # Run all tests def run_gradient_animation_tests() - print("=== GradientAnimation Tests ===") + print("=== gradient Tests ===") try test_gradient_creation() @@ -203,7 +203,7 @@ def run_gradient_animation_tests() test_gradient_direction() test_radial_gradient() - print("=== All GradientAnimation tests passed! ===") + print("=== All gradient tests passed! ===") return true except .. as e, msg print(f"Test failed: {e} - {msg}") diff --git a/lib/libesp32/berry_animation/src/tests/gradient_lut_integration_test.be b/lib/libesp32/berry_animation/src/tests/gradient_lut_integration_test.be index 3dce846f8..2994dd81c 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_lut_integration_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_lut_integration_test.be @@ -1,7 +1,7 @@ # Integration test for gradient animation with LUT optimization # -# This test verifies that palette_gradient_animation works correctly -# with the LUT-optimized RichPaletteColorProvider +# This test verifies that palette_gradient works correctly +# with the LUT-optimized rich_palette_color import animation import animation_dsl @@ -33,7 +33,7 @@ var rainbow_with_white = bytes( ) # Create a rich palette color provider -var rainbow_rich_color = animation.rich_palette(engine) +var rainbow_rich_color = animation.rich_palette_color(engine) rainbow_rich_color.colors = rainbow_with_white rainbow_rich_color.period = 10000 # 10 seconds rainbow_rich_color.transition_type = animation.SINE @@ -49,7 +49,7 @@ period_osc.max_value = (3 * strip_len) / 2 period_osc.duration = 5000 # 5 seconds # Create gradient animation -var back_pattern = animation.palette_gradient_animation(engine) +var back_pattern = animation.palette_gradient(engine) back_pattern.color_source = rainbow_rich_color back_pattern.spatial_period = strip_len # Start with full strip back_pattern.shift_period = 0 # Static for testing diff --git a/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be b/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be index 9459c8542..52908981f 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be @@ -8,7 +8,7 @@ var strip = global.Leds(10) var engine = animation.create_engine(strip) # Test linear gradient with two colors -var gradient = animation.gradient_animation(engine) +var gradient = animation.gradient(engine) gradient.color1 = 0xFF0000FF # Blue gradient.color2 = 0xFFFF0000 # Red gradient.gradient_type = 0 # Linear diff --git a/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be b/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be index dde7d5a47..c45583c7b 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be @@ -1,14 +1,14 @@ -# Simple test for GradientAnimation +# Simple test for gradient import animation -print("Testing basic GradientAnimation functionality...") +print("Testing basic gradient functionality...") # Create LED strip and engine var strip = global.Leds(5) var engine = animation.create_engine(strip) # Test basic creation -var gradient = animation.gradient_animation(engine) +var gradient = animation.gradient(engine) assert(gradient != nil, "Should create gradient animation") # Test parameter setting @@ -35,6 +35,6 @@ var frame = animation.frame_buffer(5) var result = gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render successfully") -print("✓ Basic GradientAnimation test passed!") +print("✓ Basic gradient test passed!") return true diff --git a/lib/libesp32/berry_animation/src/tests/nested_function_calls_test.be b/lib/libesp32/berry_animation/src/tests/nested_function_calls_test.be index 7fbabda33..844832f1b 100644 --- a/lib/libesp32/berry_animation/src/tests/nested_function_calls_test.be +++ b/lib/libesp32/berry_animation/src/tests/nested_function_calls_test.be @@ -13,7 +13,7 @@ def test_basic_nested_calls() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" "color custom_red = 0xFF0000\n" - "animation pulse_red = pulsating_animation(color=static_color(color=custom_red), period=3s)\n" + "animation pulse_red = breathe(color=static_color(color=custom_red), period=3s)\n" "run pulse_red" try @@ -22,8 +22,8 @@ def test_basic_nested_calls() # Check that the generated code contains the new engine-based pattern import string - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, - "Generated code should contain pulsating_animation with engine parameter") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, + "Generated code should contain breathe with engine parameter") assert(string.find(berry_code, "animation.static_color(engine)") >= 0, "Generated code should contain nested static_color function call") except "dsl_compilation_error" as e, msg @@ -39,7 +39,7 @@ def test_deep_nesting() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation complex = pulsating_animation(color=static_color(color=red), period=2s)\n" + "animation complex = breathe(color=static_color(color=red), period=2s)\n" "run complex" try @@ -48,7 +48,7 @@ def test_deep_nesting() # Check that the generated code contains nested calls import string - assert(string.find(berry_code, "animation.pulsating_animation(") >= 0, "Should contain pulsating_animation function") + assert(string.find(berry_code, "animation.breathe(") >= 0, "Should contain breathe function") assert(string.find(berry_code, "animation.static_color(") >= 0, "Should contain static_color function") except "dsl_compilation_error" as e, msg assert(false, f"DSL compilation should not fail: {msg}") @@ -63,7 +63,7 @@ def test_mixed_parameter_types() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation mixed = pulsating_animation(color=static_color(color=blue), period=2s, max_brightness=80%)\n" + "animation mixed = breathe(color=static_color(color=blue), period=2s, max_brightness=80%)\n" "run mixed" try @@ -89,7 +89,7 @@ def test_nested_calls_in_arrays() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation cycle = pulsating_animation(color=static_color(color=red), period=5s)\n" + "animation cycle = breathe(color=static_color(color=red), period=5s)\n" "run cycle" try @@ -98,8 +98,8 @@ def test_nested_calls_in_arrays() # Check that nested calls in arrays work import string - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, - "Should contain pulsating_animation function call") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, + "Should contain breathe function call") assert(string.find(berry_code, "animation.static_color(engine)") >= 0, "Should contain nested static_color function call") except "dsl_compilation_error" as e, msg @@ -116,7 +116,7 @@ def test_error_handling() # Test unclosed parentheses var dsl_code1 = "# strip length 30 # TEMPORARILY DISABLED\n" - "animation bad = pulsating_animation(color=static_color(color=red)\n" # Missing closing paren + "animation bad = breathe(color=static_color(color=red)\n" # Missing closing paren "run bad" try @@ -150,7 +150,7 @@ def test_complex_real_world_example() var dsl_code = "# strip length 60 # TEMPORARILY DISABLED\n" "color sunset_red = 0xFF4500\n" - "animation evening = pulsating_animation(\n" + "animation evening = breathe(\n" " color=static_color(color=sunset_red),\n" " period=10s\n" ")\n" @@ -162,7 +162,7 @@ def test_complex_real_world_example() # Verify the structure is preserved import string - assert(string.find(berry_code, "animation.pulsating_animation(") >= 0, "Should contain pulsating_animation") + assert(string.find(berry_code, "animation.breathe(") >= 0, "Should contain breathe") assert(string.find(berry_code, "animation.static_color(") >= 0, "Should contain static_color") except "dsl_compilation_error" as e, msg assert(false, f"DSL compilation should not fail: {msg}") @@ -178,7 +178,7 @@ def test_generated_code_validity() var dsl_code = "# strip length 30 # TEMPORARILY DISABLED\n" "color custom_red = 0xFF0000\n" - "animation test = pulsating_animation(color=static_color(color=custom_red), period=3s)\n" + "animation test = breathe(color=static_color(color=custom_red), period=3s)\n" "run test" try diff --git a/lib/libesp32/berry_animation/src/tests/nillable_parameter_test.be b/lib/libesp32/berry_animation/src/tests/nillable_parameter_test.be index abb9acdc9..11ca938fb 100644 --- a/lib/libesp32/berry_animation/src/tests/nillable_parameter_test.be +++ b/lib/libesp32/berry_animation/src/tests/nillable_parameter_test.be @@ -46,7 +46,7 @@ assert(success == true, "Should accept valid value for non-nillable parameter") assert(test_obj.non_nillable_param == 100, "Should store valid value for non-nillable parameter") # Test gradient animation color parameter -var gradient = animation.gradient_animation(engine) +var gradient = animation.gradient(engine) # Test setting a valid color (should work) gradient.color = 0xFFFF0000 diff --git a/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be b/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be index c30177742..49782f298 100644 --- a/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be @@ -1,4 +1,4 @@ -# Test suite for GradientMeterAnimation (palette_meter_animation) +# Test suite for palette_meter (palette_meter) # # Tests the VU meter style animation with gradient colors and peak hold. @@ -6,27 +6,27 @@ import animation # Test basic creation def test_gradient_meter_creation() - print("Testing GradientMeterAnimation creation...") + print("Testing palette_meter creation...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) assert(meter != nil, "Should create gradient meter animation") assert(meter.level == 255, "Should default to level 255") assert(meter.peak_hold == 1000, "Should default to peak_hold 1000ms") assert(meter.shift_period == 0, "Should default to static gradient") - print("✓ GradientMeterAnimation creation test passed") + print("✓ palette_meter creation test passed") end # Test level parameter def test_gradient_meter_level() - print("Testing GradientMeterAnimation level...") + print("Testing palette_meter level...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) # Test level setting meter.level = 128 @@ -42,16 +42,16 @@ def test_gradient_meter_level() assert(meter.set_param("level", 300) == false, "Should reject level > 255") assert(meter.set_param("level", -1) == false, "Should reject level < 0") - print("✓ GradientMeterAnimation level test passed") + print("✓ palette_meter level test passed") end # Test peak hold functionality def test_gradient_meter_peak_hold() - print("Testing GradientMeterAnimation peak hold...") + print("Testing palette_meter peak hold...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) # Enable peak hold meter.peak_hold = 1000 # 1 second hold @@ -76,18 +76,18 @@ def test_gradient_meter_peak_hold() meter.update(2100) assert(meter.peak_level == 100, "Peak should drop to current level after hold expires") - print("✓ GradientMeterAnimation peak hold test passed") + print("✓ palette_meter peak hold test passed") end # Test rendering def test_gradient_meter_rendering() - print("Testing GradientMeterAnimation rendering...") + print("Testing palette_meter rendering...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) - # Use a color provider (required for PaletteGradientAnimation) + # Use a color provider (required for palette_gradient) var color_source = animation.rich_palette_color(engine) meter.color_source = color_source @@ -116,16 +116,16 @@ def test_gradient_meter_rendering() meter.update(200) meter.render(frame, 200, 10) - print("✓ GradientMeterAnimation rendering test passed") + print("✓ palette_meter rendering test passed") end # Test peak indicator rendering def test_gradient_meter_peak_indicator() - print("Testing GradientMeterAnimation peak indicator...") + print("Testing palette_meter peak indicator...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) # Use a color provider var color_source = animation.rich_palette_color(engine) @@ -159,16 +159,16 @@ def test_gradient_meter_peak_indicator() var peak_color = frame.get_pixel_color(peak_pixel) assert(peak_color != 0x00000000, "Peak indicator pixel should have color") - print("✓ GradientMeterAnimation peak indicator test passed") + print("✓ palette_meter peak indicator test passed") end # Test with color provider def test_gradient_meter_with_color_provider() - print("Testing GradientMeterAnimation with color provider...") + print("Testing palette_meter with color provider...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) # Use a color cycle provider var color_cycle = animation.color_cycle(engine) @@ -184,16 +184,16 @@ def test_gradient_meter_with_color_provider() var result = meter.render(frame, 0, 10) assert(result == true, "Should render with color provider") - print("✓ GradientMeterAnimation with color provider test passed") + print("✓ palette_meter with color provider test passed") end # Test tostring def test_gradient_meter_tostring() - print("Testing GradientMeterAnimation tostring...") + print("Testing palette_meter tostring...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var meter = animation.palette_meter_animation(engine) + var meter = animation.palette_meter(engine) meter.level = 150 meter.peak_hold = 500 @@ -201,12 +201,12 @@ def test_gradient_meter_tostring() assert(s != nil, "Should have string representation") assert(type(s) == "string", "Should be a string") - print("✓ GradientMeterAnimation tostring test passed") + print("✓ palette_meter tostring test passed") end # Run all tests def run_palette_meter_animation_tests() - print("=== GradientMeterAnimation Tests ===") + print("=== palette_meter Tests ===") try test_gradient_meter_creation() @@ -217,7 +217,7 @@ def run_palette_meter_animation_tests() test_gradient_meter_with_color_provider() test_gradient_meter_tostring() - print("=== All GradientMeterAnimation tests passed! ===") + print("=== All palette_meter tests passed! ===") return true except .. as e, msg print(f"Test failed: {e} - {msg}") diff --git a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be index e7c13c066..008628b8c 100644 --- a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be @@ -38,9 +38,9 @@ class MockColorSource end var mock_color_source = MockColorSource() -# Test 1: PaletteGradientAnimation -print("Test 3: PaletteGradientAnimation") -var gradient_anim = animation.palette_gradient_animation(mock_engine) +# Test 1: palette_gradient +print("Test 3: palette_gradient") +var gradient_anim = animation.palette_gradient(mock_engine) gradient_anim.color_source = mock_color_source gradient_anim.shift_period = 3000 # 3 second shift period gradient_anim.priority = 10 @@ -81,7 +81,7 @@ assert(gradient_anim.shift_period == 0, "Shift period should be updated to 0 (st # Test 3: Changing color sources dynamically print("Test 3: Changing color sources dynamically") -var dynamic_anim = animation.palette_gradient_animation(mock_engine) +var dynamic_anim = animation.palette_gradient(mock_engine) dynamic_anim.color_source = mock_color_source dynamic_anim.shift_period = 1000 dynamic_anim.spatial_period = 3 @@ -116,7 +116,7 @@ assert(result, "Render should return true") # Test 4: Parameter validation print("Test 4: Parameter validation") -var validation_anim = animation.palette_gradient_animation(mock_engine) +var validation_anim = animation.palette_gradient(mock_engine) # Test valid parameter values validation_anim.shift_period = 500 @@ -144,7 +144,7 @@ class MockRainbowColorSource end var rainbow_color_source = MockRainbowColorSource() -var rich_anim = animation.palette_gradient_animation(mock_engine) +var rich_anim = animation.palette_gradient(mock_engine) rich_anim.color_source = rainbow_color_source rich_anim.shift_period = 1000 @@ -165,7 +165,7 @@ print("Test 6: Animation timing and synchronization") var sync_time = mock_engine.time_ms + 1000 # Create multiple animations -var anim1 = animation.palette_gradient_animation(mock_engine) +var anim1 = animation.palette_gradient(mock_engine) anim1.color_source = mock_color_source anim1.shift_period = 1000 anim1.spatial_period = 4 @@ -179,7 +179,7 @@ assert(anim1.start_time == sync_time, "Animation 1 should have correct start tim # Test 7: Animation without color source (should handle gracefully) print("Test 7: Animation without color source") -var no_color_anim = animation.palette_gradient_animation(mock_engine) +var no_color_anim = animation.palette_gradient(mock_engine) no_color_anim.shift_period = 1000 no_color_anim.spatial_period = 3 # Note: no color_source set @@ -193,7 +193,7 @@ assert(!result, "Render should return false when no color source is set") # Test 8: String representation (uses default from Berry) print("Test 8: String representation") -var str_anim = animation.palette_gradient_animation(mock_engine) +var str_anim = animation.palette_gradient(mock_engine) var str_repr = str(str_anim) print(f"String representation: {str_repr}") assert(str_repr != nil, "String representation should not be nil") diff --git a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be index be154fd82..68b29e63d 100644 --- a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be @@ -198,14 +198,14 @@ def test_dsl_parameter_validation() import animation_dsl # Test valid animation parameter - var valid_dsl = "animation red_eye = beacon_animation(color = red)\n" + + var valid_dsl = "animation red_eye = beacon(color = red)\n" + "red_eye.back_color = blue" var result = animation_dsl.compile(valid_dsl) assert(result != nil, "Valid parameter should compile successfully") # Test invalid animation parameter - var invalid_dsl = "animation red_eye = beacon_animation(color = red)\n" + + var invalid_dsl = "animation red_eye = beacon(color = red)\n" + "red_eye.invalid_param = 123" try @@ -250,14 +250,14 @@ def test_dsl_object_reference_validation() import animation_dsl # Test valid run statement - var valid_run = "animation red_eye = beacon_animation(color = red)\n" + + var valid_run = "animation red_eye = beacon(color = red)\n" + "run red_eye" var result = animation_dsl.compile(valid_run) assert(result != nil, "Valid run statement should compile successfully") # Test invalid run statement (undefined object) - var invalid_run = "animation red_eye = beacon_animation(color = red)\n" + + var invalid_run = "animation red_eye = beacon(color = red)\n" + "run undefined_animation" try @@ -269,7 +269,7 @@ def test_dsl_object_reference_validation() end # Test valid sequence with play statement - var valid_sequence = "animation red_eye = beacon_animation(color = red)\n" + + var valid_sequence = "animation red_eye = beacon(color = red)\n" + "sequence demo {\n" + " play red_eye for 5s\n" + " wait 1s\n" + @@ -279,7 +279,7 @@ def test_dsl_object_reference_validation() assert(result2 != nil, "Valid sequence should compile successfully") # Test invalid sequence with undefined play reference - var invalid_sequence = "animation red_eye = beacon_animation(color = red)\n" + + var invalid_sequence = "animation red_eye = beacon(color = red)\n" + "sequence demo {\n" + " play undefined_animation for 5s\n" + " wait 1s\n" + @@ -303,7 +303,7 @@ def test_dsl_sequence_symbol_table_registration() import animation_dsl # Test 1: Valid sequence should be registered and runnable - var valid_sequence_dsl = "animation red_anim = beacon_animation(color = red)\n" + + var valid_sequence_dsl = "animation red_anim = beacon(color = red)\n" + "sequence demo {\n" + " play red_anim for 2s\n" + "}\n" + @@ -351,7 +351,7 @@ def test_dsl_symbol_table_mixed_types() import animation_dsl # Test 1: Valid property assignment on animation (instance in symbol table) - var animation_property_dsl = "animation red_anim = beacon_animation(color = red)\n" + + var animation_property_dsl = "animation red_anim = beacon(color = red)\n" + "red_anim.back_color = blue" var result1 = animation_dsl.compile(animation_property_dsl) @@ -365,7 +365,7 @@ def test_dsl_symbol_table_mixed_types() assert(result2 != nil, "Color provider property assignment should work") # Test 3: Invalid property assignment on sequence (string in symbol table) - var sequence_property_dsl = "animation red_anim = beacon_animation(color = red)\n" + + var sequence_property_dsl = "animation red_anim = beacon(color = red)\n" + "sequence demo {\n" + " play red_anim for 2s\n" + "}\n" + @@ -380,7 +380,7 @@ def test_dsl_symbol_table_mixed_types() end # Test 4: Mixed symbol table with sequences and instances - var mixed_dsl = "animation red_anim = beacon_animation(color = red)\n" + + var mixed_dsl = "animation red_anim = beacon(color = red)\n" + "color solid_blue = static_color(color = blue)\n" + "sequence demo {\n" + " play red_anim for 2s\n" + diff --git a/lib/libesp32/berry_animation/src/tests/pull_lexer_test.be b/lib/libesp32/berry_animation/src/tests/pull_lexer_test.be index 92bbe3b50..a15b537ca 100644 --- a/lib/libesp32/berry_animation/src/tests/pull_lexer_test.be +++ b/lib/libesp32/berry_animation/src/tests/pull_lexer_test.be @@ -105,7 +105,7 @@ end def test_peek_functionality() print("Testing peek functionality...") - var dsl_code = "animation pulse = pulsating_animation(color=red_custom, period=2s)" + var dsl_code = "animation pulse = breathe(color=red_custom, period=2s)" var lexer = Lexer(dsl_code) # Test peek without consuming @@ -196,7 +196,7 @@ def test_position_information() print("Testing position information...") var dsl_code = "color red_custom = 0xFF0000\n" + - "animation pulse = pulsating_animation(color=red_custom)" + "animation pulse = breathe(color=red_custom)" var lexer = Lexer(dsl_code) @@ -264,7 +264,7 @@ def test_complex_dsl_scenarios() var complex_dsl = "color red_custom = 0xFF0000\n" + "color blue_custom = 0x0000FF\n" + "\n" + - "animation pulse_red = pulsating_animation(\n" + + "animation pulse_red = breathe(\n" + " color=red_custom,\n" + " period=2s,\n" + " min_brightness=50%,\n" + @@ -371,7 +371,7 @@ def test_dsl_integration() print("Testing DSL integration...") var dsl_code = "color red_custom = 0xFF0000\n" + - "animation pulse = pulsating_animation(color=red_custom, period=2s)\n" + + "animation pulse = breathe(color=red_custom, period=2s)\n" + "run pulse" var lexer = Lexer(dsl_code) @@ -449,7 +449,7 @@ def test_interleaved_lexer_operations() var dsl_code = "color red_custom = 0xFF0000\n" + "color blue_custom = 0x0000FF\n" + - "animation pulse = pulsating_animation(\n" + + "animation pulse = breathe(\n" + " color=red_custom,\n" + " period=2s\n" + ")\n" + @@ -635,7 +635,7 @@ def test_full_template_parsing() " \n" + " set strip_len = strip_length()\n" + "\n" + - " animation eye_animation = beacon_animation(\n" + + " animation eye_animation = beacon(\n" + " color = eye_color\n" + " back_color = back_color\n" + " pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = duration)\n" + @@ -813,7 +813,7 @@ def test_full_template_parsing() assert(is_type(anim_assign, 8 #-animation_dsl.Token.ASSIGN-#), "Should have assignment") var anim_func = lexer.next_token() - assert(is_identifier(anim_func, "beacon_animation"), "Should be 'beacon_animation' function") + assert(is_identifier(anim_func, "beacon"), "Should be 'beacon' function") # Test 6: Parse function parameters with peek ahead print(" Testing function parameter parsing...") diff --git a/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be index d1c7a8d93..57cc8d31f 100644 --- a/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be @@ -8,7 +8,7 @@ def test_pull_lexer_basic() var dsl_source = "# Simple DSL test\n" + "color my_red = 0xFF0000\n" + - "animation pulse = pulsating_animation(color=my_red, period=2s)\n" + + "animation pulse = breathe(color=my_red, period=2s)\n" + "run pulse" # Test with new create_lexer interface (uses pull lexer internally) @@ -75,7 +75,7 @@ def test_pull_lexer_position_info() print("=== Testing Pull Lexer Position Information ===") var dsl_source = "color red = 0xFF0000\n" + - "animation pulse = pulsating_animation(color=red)" + "animation pulse = breathe(color=red)" var pull_lexer = animation_dsl.create_lexer(dsl_source) diff --git a/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be b/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be index 89e27a631..c2a67de8b 100644 --- a/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be @@ -17,7 +17,7 @@ var engine = animation.create_engine(strip) print("Created engine and LED strip") # Create a pulse animation with new constructor (engine only) -var anim = animation.pulsating_animation(engine) +var anim = animation.breathe(engine) print("Created pulse animation with defaults") # Test default values @@ -28,7 +28,7 @@ print(f"Default period: {anim.period}") print(f"Default curve_factor: {anim.curve_factor}") # Should be 1 for pulsating # Test with custom parameters using virtual member assignment -var blue_pulse = animation.pulsating_animation(engine) +var blue_pulse = animation.breathe(engine) blue_pulse.color = 0xFF0000FF blue_pulse.min_brightness = 50 blue_pulse.max_brightness = 200 @@ -40,7 +40,7 @@ print(f"Blue pulse animation period: {blue_pulse.period}") print(f"Blue pulse animation curve_factor: {blue_pulse.curve_factor}") # Test creating another pulse with different parameters -var red_pulse = animation.pulsating_animation(engine) +var red_pulse = animation.breathe(engine) red_pulse.color = 0xFFFF0000 # Red color red_pulse.min_brightness = 20 red_pulse.max_brightness = 180 diff --git a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be index 2d257a843..20dd501fc 100644 --- a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be +++ b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be @@ -1,6 +1,6 @@ -# Test file for RichPaletteAnimation class +# Test file for rich_palette class # -# This file contains tests for the new RichPaletteAnimation class with parameter forwarding +# This file contains tests for the new rich_palette class with parameter forwarding # # Command to run test is: # ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/rich_palette_animation_class_test.be @@ -16,7 +16,7 @@ var engine = animation.create_engine(strip) print("Created test engine with 10 LEDs") # Test 1: Create a rich palette animation with engine-only constructor -var anim = animation.rich_palette_animation(engine) +var anim = animation.rich_palette(engine) print("Created rich palette animation with engine-only constructor") # Test that it's created successfully @@ -103,14 +103,14 @@ var rainbow_palette = bytes( "FFFF0000" # Red (value 255) ) -var rainbow_anim = animation.rich_palette_animation(engine) +var rainbow_anim = animation.rich_palette(engine) rainbow_anim.colors = rainbow_palette rainbow_anim.period = 5000 rainbow_anim.brightness = 255 print("Created rainbow animation with custom palette") # Test 9: Test static mode (period = 0) -var static_anim = animation.rich_palette_animation(engine) +var static_anim = animation.rich_palette(engine) static_anim.colors = rainbow_palette static_anim.period = 0 # Static mode static_anim.brightness = 150 @@ -155,5 +155,5 @@ assert(static_anim != nil, "Static animation should be created") assert(rainbow_anim.period == 5000, "Rainbow animation should have correct cycle period") assert(static_anim.period == 0, "Static animation should have cycle period 0") -print("All RichPaletteAnimation class tests completed successfully!") +print("All rich_palette class tests completed successfully!") return true \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/simplified_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/simplified_transpiler_test.be index b2fa0b87d..8cdb916ff 100644 --- a/lib/libesp32/berry_animation/src/tests/simplified_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/simplified_transpiler_test.be @@ -13,7 +13,7 @@ def test_basic_transpilation() "color my_red = 0xFF0000\n" "color my_blue = 0x0000FF\n" "animation solid_red = solid(color=my_red)\n" - "animation pulse_red = pulsating_animation(color=my_red, period=2000)\n" + "animation pulse_red = breathe(color=my_red, period=2000)\n" "sequence demo {\n" " play pulse_red for 3s\n" " wait 1s\n" @@ -66,7 +66,7 @@ def test_function_calls() var dsl_code = "# strip length 20 # TEMPORARILY DISABLED\n" "animation solid_red = solid(color=red)\n" - "animation test_anim = pulsating_animation(color=red, period=1000)\n" + "animation test_anim = breathe(color=red, period=1000)\n" "run test_anim" var berry_code = animation_dsl.compile(dsl_code) @@ -78,7 +78,7 @@ def test_function_calls() # Check that function calls are properly generated import string - if string.find(berry_code, "animation.pulsating_animation(engine)") == -1 + if string.find(berry_code, "animation.breathe(engine)") == -1 print("✗ Function call not properly generated") return false end diff --git a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be index 560186898..7c312ace0 100644 --- a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be +++ b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be @@ -91,7 +91,7 @@ def test_builtin_reference_handling() # DSL using built-in color names and animation functions var dsl_source = "animation red_pattern = solid(color=red)\n" + - "animation pulse_anim = pulsating_animation(color=red, period=2000)" + "animation pulse_anim = breathe(color=red, period=2000)" var lexer = animation_dsl.create_lexer(dsl_source) var transpiler = animation_dsl.SimpleDSLTranspiler(lexer) @@ -104,7 +104,7 @@ def test_builtin_reference_handling() # Check generated code assert(string.find(berry_code, "red_pattern_.color = 0xFFFF0000") >= 0, "Should use built-in red color") - assert(string.find(berry_code, "animation.pulsating_animation(engine)") >= 0, "Should use built-in pulsating_animation function") + assert(string.find(berry_code, "animation.breathe(engine)") >= 0, "Should use built-in breathe function") print("✓ Built-in reference handling test passed") return true @@ -139,7 +139,7 @@ def test_complex_symbol_dependencies() # Complex DSL with proper symbol ordering (no forward references) var dsl_source = "color primary_color = 0xFF8000\n" + - "animation complex_anim = pulsating_animation(color=primary_color, period=3000)\n" + + "animation complex_anim = breathe(color=primary_color, period=3000)\n" + "animation gradient_pattern = solid(color=primary_color)\n" + "sequence demo {\n" + " play complex_anim for 5s\n" + diff --git a/lib/libesp32/berry_animation/src/tests/test_all.be b/lib/libesp32/berry_animation/src/tests/test_all.be index ebbdf2ebb..5cd9e5a78 100644 --- a/lib/libesp32/berry_animation/src/tests/test_all.be +++ b/lib/libesp32/berry_animation/src/tests/test_all.be @@ -66,8 +66,8 @@ def run_all_tests() # "lib/libesp32/berry_animation/src/tests/pulse_animation_test.be", # "lib/libesp32/berry_animation/src/tests/breathe_animation_test.be", "lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be", - "lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be", # Tests ColorCycleColorProvider with bytes palette - "lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be", # Tests ColorCycleColorProvider palette_size read-only parameter + "lib/libesp32/berry_animation/src/tests/color_cycle_bytes_test.be", # Tests color_cycle with bytes palette + "lib/libesp32/berry_animation/src/tests/color_cycle_palette_size_test.be", # Tests color_cycle palette_size read-only parameter "lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be", "lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be", "lib/libesp32/berry_animation/src/tests/comet_animation_test.be", diff --git a/lib/libesp32/berry_animation/src/tests/test_beacon_direction.be b/lib/libesp32/berry_animation/src/tests/test_beacon_direction.be index 18446ae4d..d2a0873f9 100644 --- a/lib/libesp32/berry_animation/src/tests/test_beacon_direction.be +++ b/lib/libesp32/berry_animation/src/tests/test_beacon_direction.be @@ -31,7 +31,7 @@ def run_tests() # Test 1: right_edge=0 (default, left edge), pos=0, beacon_size=1 # Should show 1 pixel at position 0 (left edge) - var beacon1 = animation.beacon_animation(engine) + var beacon1 = animation.beacon(engine) beacon1.color = 0xFFFF0000 # Red beacon1.back_color = 0xFF000000 # Black beacon1.pos = 0 @@ -51,7 +51,7 @@ def run_tests() # Test 2: right_edge=1 (right edge), pos=0, beacon_size=1 # With right_edge=1: effective_pos = pos - beacon_size + 1 = 0 - 1 + 1 = 0 # So pixel 0 should be lit - var beacon2 = animation.beacon_animation(engine) + var beacon2 = animation.beacon(engine) beacon2.color = 0xFF00FF00 # Green beacon2.back_color = 0xFF000000 # Black beacon2.pos = 0 @@ -70,7 +70,7 @@ def run_tests() # Test 3: right_edge=1, pos=5, beacon_size=3 # With right_edge=1: effective_pos = pos - beacon_size + 1 = 5 - 3 + 1 = 3 # So pixels 3,4,5 should be lit (beacon from 3 to 5, with right edge at 5) - var beacon3 = animation.beacon_animation(engine) + var beacon3 = animation.beacon(engine) beacon3.color = 0xFF0000FF # Blue beacon3.back_color = 0xFF000000 # Black beacon3.pos = 5 @@ -90,7 +90,7 @@ def run_tests() # Test 4: right_edge=0, pos=2, beacon_size=3 (same params, different right_edge) # Should show pixels 2,3,4 lit - var beacon4 = animation.beacon_animation(engine) + var beacon4 = animation.beacon(engine) beacon4.color = 0xFFFFFF00 # Yellow beacon4.back_color = 0xFF000000 # Black beacon4.pos = 2 @@ -109,7 +109,7 @@ def run_tests() test_assert(frame.get_pixel_color(5) == 0xFF000000, "right_edge=0, pos=2, size=3: pixel 5 is black") # Test 5: Default right_edge should be 0 - var beacon5 = animation.beacon_animation(engine) + var beacon5 = animation.beacon(engine) test_assert(beacon5.right_edge == 0, "Default right_edge is 0") # Test 6: Invalid right_edge value should be rejected diff --git a/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be b/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be index 05038bc7c..912b700b2 100644 --- a/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be +++ b/lib/libesp32/berry_animation/src/tests/test_math_method_transpilation.be @@ -71,9 +71,9 @@ def test_non_math_functions(dsl_code) print(" ✅ Found 'animation._math.scale(' in generated code") end - # Check that animation functions like 'pulsating_animation' are NOT prefixed with animation._math. - if string.find(generated_code, "animation._math.pulsating_animation") >= 0 - print(" ❌ Found 'animation._math.pulsating_animation' - animation functions should NOT be prefixed") + # Check that animation functions like 'breathe' are NOT prefixed with animation._math. + if string.find(generated_code, "animation._math.breathe") >= 0 + print(" ❌ Found 'animation._math.breathe' - animation functions should NOT be prefixed") return false else print(" ✅ Animation functions correctly NOT prefixed with animation._math.") @@ -102,7 +102,7 @@ def test_is_math_method_function() end # Test non-mathematical methods - var non_math_methods = ["pulsating_animation", "solid", "color_cycle", "unknown_method"] + var non_math_methods = ["breathe", "solid", "color_cycle", "unknown_method"] for method : non_math_methods var entry = transpiler.symbol_table.get(method) if entry != nil && entry.type == animation_dsl._symbol_entry.TYPE_MATH_FUNCTION @@ -122,7 +122,7 @@ def test_math_method_transpilation() # Test case 1: Simple mathematical function in computed parameter var dsl_code1 = "set value = 50\n" - "animation test = pulsating_animation(color=red, period=2s)\n" + "animation test = breathe(color=red, period=2s)\n" "test.opacity = abs(value - 100)\n" "run test" @@ -135,9 +135,9 @@ def test_math_method_transpilation() var dsl_code2 = "set x = 10\n" "set y = 20\n" - "animation wave = pulsating_animation(color=blue, period=3s)\n" - "wave.min_brightness = max(min(x, y), sqrt(abs(x - y)))\n" - "run wave" + "animation w = breathe(color=blue, period=3s)\n" + "w.min_brightness = max(min(x, y), sqrt(abs(x - y)))\n" + "run w" var result2 = test_transpilation_case(dsl_code2, ["max", "min", "sqrt", "abs"], "Multiple math functions") if !result2 @@ -147,7 +147,7 @@ def test_math_method_transpilation() # Test case 3: Mathematical functions with complex expressions var dsl_code3 = "set angle = 45\n" - "animation rotate = pulsating_animation(color=green, period=2s)\n" + "animation rotate = breathe(color=green, period=2s)\n" "rotate.min_brightness = round(sin(angle) * 180 + cos(angle) * 90)\n" "run rotate" @@ -158,7 +158,7 @@ def test_math_method_transpilation() # Test case 4: Ensure non-math functions are NOT prefixed with animation._math. var dsl_code4 = - "animation pulse = pulsating_animation(color=red, period=2s)\n" + "animation pulse = breathe(color=red, period=2s)\n" "pulse.min_brightness = scale(50, 0, 100)\n" "run pulse" diff --git a/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be b/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be index 187edf47f..cc1fb70f6 100644 --- a/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be +++ b/lib/libesp32/berry_animation/src/tests/test_user_functions_in_computed_parameters.be @@ -58,7 +58,7 @@ def test_user_function_detection() end # Check that non-user functions are not detected as user functions - var non_user_functions = ["pulsating_animation", "solid", "abs", "min", "max", "breathing", "fire", "sparkle"] + var non_user_functions = ["breathe", "solid", "abs", "min", "max", "breathing", "fire", "sparkle"] for func_name : non_user_functions if animation.is_user_function(func_name) @@ -79,7 +79,7 @@ def test_user_function_in_computed_parameter() var dsl_code1 = "import user_functions\n" "set strip_len = strip_length()\n" - "animation test = pulsating_animation(color=red, period=2s)\n" + "animation test = breathe(color=red, period=2s)\n" "test.opacity = rand_demo()\n" "run test" diff --git a/lib/libesp32/berry_animation/src/tests/value_provider_integration_test.be b/lib/libesp32/berry_animation/src/tests/value_provider_integration_test.be index 3a40d3e9f..844c8d3e8 100644 --- a/lib/libesp32/berry_animation/src/tests/value_provider_integration_test.be +++ b/lib/libesp32/berry_animation/src/tests/value_provider_integration_test.be @@ -19,7 +19,7 @@ def test_auto_registration_with_animation() oscillator.duration = 2000 # Create an animation that uses the oscillator - var beacon = animation.beacon_animation(engine) + var beacon = animation.beacon(engine) beacon.color = 0xFFFF0000 beacon.pos = oscillator beacon.beacon_size = 3 @@ -70,7 +70,7 @@ def test_multiple_providers_coordination() color_cycle.period = 5000 # Create animation using all providers - var beacon = animation.beacon_animation(engine) + var beacon = animation.beacon(engine) beacon.color = color_cycle beacon.pos = position_osc beacon.opacity = brightness_osc @@ -122,12 +122,12 @@ def test_template_animation_scenario() sweep.duration = 4000 # Template creates animations using the provider - var beacon1 = animation.beacon_animation(engine) + var beacon1 = animation.beacon(engine) beacon1.color = 0xFFFF0000 beacon1.pos = sweep beacon1.beacon_size = 2 - var beacon2 = animation.beacon_animation(engine) + var beacon2 = animation.beacon(engine) beacon2.color = 0xFF0000FF beacon2.pos = sweep # Same provider used by multiple animations beacon2.beacon_size = 1 diff --git a/lib/libesp32/berry_animation/src/tests/wave_animation_test.be b/lib/libesp32/berry_animation/src/tests/wave_animation_test.be index a493a1dbc..c2e130267 100644 --- a/lib/libesp32/berry_animation/src/tests/wave_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/wave_animation_test.be @@ -1,21 +1,21 @@ -# Test suite for WaveAnimation +# Test suite for wave # -# This test verifies that the WaveAnimation works correctly +# This test verifies that the wave works correctly # with different parameters and color providers. import animation import string -# Test basic WaveAnimation creation and functionality +# Test basic wave creation and functionality def test_wave_animation_basic() - print("Testing basic WaveAnimation...") + print("Testing basic wave...") # Create engine and animation var strip = global.Leds(10) var engine = animation.create_engine(strip) - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) - assert(wave_anim != nil, "WaveAnimation should be created") + assert(wave_anim != nil, "wave should be created") assert(wave_anim.back_color == 0xFF000000, "Default background should be black") assert(wave_anim.wave_type == 0, "Default wave_type should be 0 (sine)") assert(wave_anim.amplitude == 128, "Default amplitude should be 128") @@ -25,17 +25,17 @@ def test_wave_animation_basic() assert(wave_anim.center_level == 128, "Default center_level should be 128") assert(wave_anim.is_running == false, "Animation should not be running initially") - print("✓ Basic WaveAnimation test passed") + print("✓ Basic wave test passed") end -# Test WaveAnimation with custom parameters +# Test wave with custom parameters def test_wave_animation_custom() - print("Testing WaveAnimation with custom parameters...") + print("Testing wave with custom parameters...") # Create engine and animation with custom parameters var strip = global.Leds(20) var engine = animation.create_engine(strip) - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) # Set custom parameters using virtual member access wave_anim.color = 0xFF00FF00 @@ -61,16 +61,16 @@ def test_wave_animation_custom() assert(wave_anim.duration == 5000, "Custom duration should be 5000") assert(wave_anim.loop == false, "Custom loop should be false") - print("✓ Custom WaveAnimation test passed") + print("✓ Custom wave test passed") end -# Test WaveAnimation parameter changes +# Test wave parameter changes def test_wave_animation_parameters() - print("Testing WaveAnimation parameter changes...") + print("Testing wave parameter changes...") var strip = global.Leds(15) var engine = animation.create_engine(strip) - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) # Test parameter changes using virtual member access wave_anim.wave_type = 1 @@ -88,16 +88,16 @@ def test_wave_animation_parameters() wave_anim.back_color = 0xFF222222 assert(wave_anim.back_color == 0xFF222222, "Background color should be updated") - print("✓ WaveAnimation parameter test passed") + print("✓ wave parameter test passed") end -# Test WaveAnimation update and render +# Test wave update and render def test_wave_animation_update_render() - print("Testing WaveAnimation update and render...") + print("Testing wave update and render...") var strip = global.Leds(10) var engine = animation.create_engine(strip) - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) # Set parameters wave_anim.color = 0xFFFF0000 @@ -135,7 +135,7 @@ def test_wave_animation_update_render() end assert(has_non_black == true, "Frame should have non-black pixels after render") - print("✓ WaveAnimation update/render test passed") + print("✓ wave update/render test passed") end # Test different wave types @@ -150,7 +150,7 @@ def test_wave_types() var wave_types = [0, 1, 2, 3] # sine, triangle, square, sawtooth var i = 0 while i < 4 - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) wave_anim.color = 0xFFFF0000 wave_anim.back_color = 0xFF000000 wave_anim.wave_type = wave_types[i] @@ -170,44 +170,13 @@ def test_wave_types() print("✓ Wave types test passed") end -# Test global constructor functions -def test_wave_constructors() - print("Testing wave constructor functions...") - - var strip = global.Leds(30) - var engine = animation.create_engine(strip) - - # Test wave_rainbow_sine - var rainbow_wave = animation.wave_rainbow_sine(engine) - assert(rainbow_wave != nil, "wave_rainbow_sine should create animation") - assert(rainbow_wave.frequency == 32, "Rainbow wave should have default frequency") - assert(rainbow_wave.wave_speed == 50, "Rainbow wave should have default wave_speed") - assert(rainbow_wave.wave_type == 0, "Rainbow wave should be sine type") - - # Test wave_single_sine - var single_wave = animation.wave_single_sine(engine) - assert(single_wave != nil, "wave_single_sine should create animation") - assert(single_wave.frequency == 32, "Single wave should have default frequency") - assert(single_wave.wave_speed == 50, "Single wave should have default wave_speed") - assert(single_wave.wave_type == 0, "Single wave should be sine type") - - # Test wave_custom - var custom_wave = animation.wave_custom(engine) - assert(custom_wave != nil, "wave_custom should create animation") - assert(custom_wave.wave_type == 2, "Custom wave should have square wave type") - assert(custom_wave.frequency == 40, "Custom wave should have correct frequency") - assert(custom_wave.wave_speed == 30, "Custom wave should have correct wave_speed") - - print("✓ Wave constructor functions test passed") -end - -# Test WaveAnimation string representation +# Test wave string representation def test_wave_tostring() - print("Testing WaveAnimation string representation...") + print("Testing wave string representation...") var strip = global.Leds(12) var engine = animation.create_engine(strip) - var wave_anim = animation.wave_animation(engine) + var wave_anim = animation.wave(engine) # Set parameters wave_anim.wave_type = 1 @@ -220,12 +189,12 @@ def test_wave_tostring() assert(type(str_repr) == "string", "String representation should be a string") - print("✓ WaveAnimation string representation test passed") + print("✓ wave string representation test passed") end # Run all tests def run_wave_animation_tests() - print("=== WaveAnimation Tests ===") + print("=== wave Tests ===") try test_wave_animation_basic() @@ -233,10 +202,9 @@ def run_wave_animation_tests() test_wave_animation_parameters() test_wave_animation_update_render() test_wave_types() - test_wave_constructors() test_wave_tostring() - print("=== All WaveAnimation tests passed! ===") + print("=== All wave tests passed! ===") return true except .. as e, msg print(f"Test failed: {e} - {msg}") diff --git a/lib/libesp32/berry_animation/src/webui/animation_web_ui.be b/lib/libesp32/berry_animation/src/webui/animation_web_ui.be index 94b01187c..761383566 100644 --- a/lib/libesp32/berry_animation/src/webui/animation_web_ui.be +++ b/lib/libesp32/berry_animation/src/webui/animation_web_ui.be @@ -16,7 +16,7 @@ class AnimationWebUI "\n" "set strip_len = strip_length()\n" "\n" - "animation red_eye = beacon_animation(\n" + "animation red_eye = beacon(\n" " color = red\n" " pos = smooth(min_value = 0, max_value = strip_len - 2, duration = 5s)\n" " beacon_size = 3 # small 3 pixels eye\n" diff --git a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/CHANGELOG.md b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/CHANGELOG.md index 5a6a21846..811c063ba 100644 --- a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/CHANGELOG.md +++ b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/CHANGELOG.md @@ -47,7 +47,7 @@ All notable changes to the Animation DSL extension will be documented in this fi - Initial release of Animation DSL syntax highlighting - Complete syntax highlighting for all DSL constructs: - Keywords (strip, color, palette, animation, sequence, etc.) - - Animation functions (solid, rich_palette_animation, beacon_animation, etc.) + - Animation functions (solid, rich_palette, beacon, etc.) - Oscillator functions (ramp, linear, smooth, square) - Colors (hex colors and 30+ named colors) - Time literals (ms, s, m, h) diff --git a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/README.md b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/README.md index be145503b..e4d56723b 100644 --- a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/README.md +++ b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/README.md @@ -6,7 +6,7 @@ This extension provides syntax highlighting, snippets, and language support for ### Syntax Highlighting - **Keywords**: `strip`, `color`, `palette`, `animation`, `sequence`, `template`, `import`, `set`, `play`, `run`, `if`, `repeat`, `reset`, `restart`, `log`, etc. -- **Animation Functions**: `solid`, `pulsating_animation`, `rich_palette_animation`, `beacon_animation`, `comet_animation`, etc. +- **Animation Functions**: `solid`, `breathe`, `rich_palette`, `beacon`, `comet`, etc. - **Value Providers**: `triangle`, `cosine_osc`, `sawtooth`, `color_cycle`, `strip_length`, `ramp`, `linear`, `smooth`, `square` - **Mathematical Functions**: `abs`, `max`, `min`, `round`, `sqrt`, `scale`, `sin`, `cos` - **User Functions**: `user.function_name()` syntax with proper highlighting diff --git a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/syntaxes/animation-dsl.tmLanguage.json b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/syntaxes/animation-dsl.tmLanguage.json index 48229f56e..39f5c6102 100644 --- a/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/syntaxes/animation-dsl.tmLanguage.json +++ b/lib/libesp32/berry_animation/tools/tasmota.animation-dsl-1.2.1/syntaxes/animation-dsl.tmLanguage.json @@ -192,7 +192,7 @@ "patterns": [ { "name": "entity.name.function.animation.animation-dsl", - "match": "\\b(solid|pulsating_animation|beacon_animation|comet_animation|rich_palette_animation|twinkle|breathe_animation|fire_animation|crenel_animation)\\b" + "match": "\\b(solid|beacon|comet|rich_palette|twinkle|breathe|fire|crenel)\\b" } ] },