From 5d9e62eebe7086a516497699f1d3f82efac9e611 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 26 Aug 2025 22:38:09 +0200 Subject: [PATCH] Berry animation simplify DSL output Berry code (#23839) --- .../anim_examples/compiled/aurora_borealis.be | 79 +- .../compiled/breathing_colors.be | 101 +- .../anim_examples/compiled/candy_cane.be | 219 +- .../anim_examples/compiled/christmas_tree.be | 139 +- .../anim_examples/compiled/comet_chase.be | 85 +- .../compiled/computed_values_demo.be | 72 +- .../anim_examples/compiled/cylon_red_eye.be | 47 + .../anim_examples/compiled/disco_strobe.be | 151 +- .../anim_examples/compiled/fire_flicker.be | 83 +- .../anim_examples/compiled/heartbeat_pulse.be | 145 +- .../anim_examples/compiled/lava_lamp.be | 169 +- .../anim_examples/compiled/lightning_storm.be | 145 +- .../anim_examples/compiled/matrix_rain.be | 123 +- .../anim_examples/compiled/meteor_shower.be | 131 +- .../anim_examples/compiled/neon_glow.be | 163 +- .../anim_examples/compiled/ocean_waves.be | 133 +- .../anim_examples/compiled/palette_demo.be | 87 +- .../compiled/palette_showcase.be | 169 +- .../anim_examples/compiled/plasma_wave.be | 169 +- .../anim_examples/compiled/police_lights.be | 123 +- .../compiled/property_assignment_demo.be | 93 +- .../anim_examples/compiled/rainbow_cycle.be | 35 +- .../anim_examples/compiled/scanner_larson.be | 105 +- .../anim_examples/compiled/simple_palette.be | 53 +- .../anim_examples/compiled/sunrise_sunset.be | 181 +- .../anim_examples/compiled/twinkle_stars.be | 65 +- .../compiled/user_functions_demo.be | 114 +- .../anim_examples/cylon_red_eye.anim | 14 + .../docs/ANIMATION_CLASS_HIERARCHY.md | 16 +- .../docs/ANIMATION_DEVELOPMENT.md | 8 +- .../berry_animation/docs/DSL_REFERENCE.md | 20 +- .../berry_animation/docs/DSL_TRANSPILATION.md | 12 +- .../docs/OSCILLATION_PATTERNS.md | 5 +- .../berry_animation/docs/USER_FUNCTIONS.md | 42 +- .../berry_animation/src/animations/beacon.be | 30 +- .../src/core/animation_engine.be | 32 + .../berry_animation/src/core/frame_buffer.be | 58 + .../berry_animation/src/dsl/transpiler.be | 171 +- .../src/providers/closure_value_provider.be | 4 +- .../providers/oscillator_value_provider.be | 33 +- .../src/solidify/solidified_animation.h | 21744 ++++++++-------- .../src/solidify/solidified_animation_dsl.h | 10569 ++++---- .../src/tests/animation_engine_test.be | 195 + .../src/tests/closure_value_provider_test.be | 74 +- .../src/tests/dsl_newline_syntax_test.be | 6 +- .../tests/oscillator_value_provider_test.be | 114 +- .../tests/test_math_method_transpilation.be | 6 +- 47 files changed, 18818 insertions(+), 17514 deletions(-) create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be create mode 100644 lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be index c7e4b56c2..5435a9eed 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be @@ -1,48 +1,9 @@ # Generated Berry code from Animation DSL # Source: aurora_borealis.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Aurora Borealis - Northern lights simulation -# # Flowing green and purple aurora colors -# -# #strip length 60 -# -# # Define aurora color palette -# palette aurora_colors = [ -# (0, 0x000022), # Dark night sky -# (64, 0x004400), # Dark green -# (128, 0x00AA44), # Aurora green -# (192, 0x44AA88), # Light green -# (255, 0x88FFAA) # Bright aurora -# ] -# -# # Secondary purple palette -# palette aurora_purple = [ -# (0, 0x220022), # Dark purple -# (64, 0x440044), # Medium purple -# (128, 0x8800AA), # Bright purple -# (192, 0xAA44CC), # Light purple -# (255, 0xCCAAFF) # Pale purple -# ] -# -# # Base aurora animation with slow flowing colors -# animation aurora_base = rich_palette_animation( -# palette=aurora_colors # palette -# cycle_period=10s # cycle period -# transition_type=SINE # transition type (explicit for clarity) -# brightness=180 # brightness (dimmed for aurora effect) -# ) -# -# sequence demo { -# play aurora_base # infinite duration (no 'for' clause) -# } -# -# run demo - import animation # Aurora Borealis - Northern lights simulation @@ -70,3 +31,43 @@ var demo_ = (def (engine) end)(engine) engine.add_sequence_manager(demo_) engine.start() + + +#- Original DSL source: +# Aurora Borealis - Northern lights simulation +# Flowing green and purple aurora colors + +#strip length 60 + +# Define aurora color palette +palette aurora_colors = [ + (0, 0x000022), # Dark night sky + (64, 0x004400), # Dark green + (128, 0x00AA44), # Aurora green + (192, 0x44AA88), # Light green + (255, 0x88FFAA) # Bright aurora +] + +# Secondary purple palette +palette aurora_purple = [ + (0, 0x220022), # Dark purple + (64, 0x440044), # Medium purple + (128, 0x8800AA), # Bright purple + (192, 0xAA44CC), # Light purple + (255, 0xCCAAFF) # Pale purple +] + +# Base aurora animation with slow flowing colors +animation aurora_base = rich_palette_animation( + palette=aurora_colors # palette + cycle_period=10s # cycle period + transition_type=SINE # transition type (explicit for clarity) + brightness=180 # brightness (dimmed for aurora effect) +) + +sequence demo { + play aurora_base # infinite duration (no 'for' clause) +} + +run demo +-# 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 0117af21a..51d1628b5 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be @@ -1,53 +1,9 @@ # Generated Berry code from Animation DSL # Source: breathing_colors.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Breathing Colors - Slow color breathing effect -# # Gentle pulsing through different colors -# -# #strip length 60 -# -# # Define breathing colors -# color breathe_red = 0xFF0000 -# color breathe_green = 0x00FF00 -# color breathe_blue = 0x0000FF -# color breathe_purple = 0x800080 -# color breathe_orange = 0xFF8000 -# -# # Create breathing animation that cycles through colors -# palette breathe_palette = [ -# (0, 0xFF0000), # Red -# (51, 0xFF8000), # Orange -# (102, 0xFFFF00), # Yellow -# (153, 0x00FF00), # Green -# (204, 0x0000FF), # Blue -# (255, 0x800080) # Purple -# ] -# -# # Create a rich palette color provider -# color palette_pattern = rich_palette( -# palette=breathe_palette # palette -# cycle_period=15s # cycle period (defaults: smooth transition, 255 brightness) -# ) -# -# # Create breathing animation using the palette -# animation breathing = breathe_animation( -# color=palette_pattern # base animation -# min_brightness=100 # min brightness -# max_brightness=255 # max brightness -# period=4s # breathing period (4 seconds) -# ) -# -# # Add gentle opacity breathing -# breathing.opacity = smooth(min_value=100, max_value=255, duration=4s) -# -# # Start the animation -# run breathing - import animation # Breathing Colors - Slow color breathing effect @@ -75,11 +31,58 @@ breathing_.min_brightness = 100 # min brightness breathing_.max_brightness = 255 # max brightness breathing_.period = 4000 # breathing period (4 seconds) # Add gentle opacity breathing -var temp_smooth_152 = animation.smooth(engine) -temp_smooth_152.min_value = 100 -temp_smooth_152.max_value = 255 -temp_smooth_152.duration = 4000 -breathing_.opacity = temp_smooth_152 +breathing_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 100 + provider.max_value = 255 + provider.duration = 4000 + return provider +end)(engine) # Start the animation engine.add_animation(breathing_) engine.start() + + +#- Original DSL source: +# Breathing Colors - Slow color breathing effect +# Gentle pulsing through different colors + +#strip length 60 + +# Define breathing colors +color breathe_red = 0xFF0000 +color breathe_green = 0x00FF00 +color breathe_blue = 0x0000FF +color breathe_purple = 0x800080 +color breathe_orange = 0xFF8000 + +# Create breathing animation that cycles through colors +palette breathe_palette = [ + (0, 0xFF0000), # Red + (51, 0xFF8000), # Orange + (102, 0xFFFF00), # Yellow + (153, 0x00FF00), # Green + (204, 0x0000FF), # Blue + (255, 0x800080) # Purple +] + +# Create a rich palette color provider +color palette_pattern = rich_palette( + palette=breathe_palette # palette + cycle_period=15s # cycle period (defaults: smooth transition, 255 brightness) +) + +# Create breathing animation using the palette +animation breathing = breathe_animation( + color=palette_pattern # base animation + min_brightness=100 # min brightness + max_brightness=255 # max brightness + period=4s # breathing period (4 seconds) +) + +# Add gentle opacity breathing +breathing.opacity = smooth(min_value=100, max_value=255, duration=4s) + +# Start the animation +run breathing +-# 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 6d5cec8a6..806043518 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be @@ -1,58 +1,9 @@ # Generated Berry code from Animation DSL # Source: candy_cane.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Candy Cane - Red and white stripes -# # Classic Christmas candy cane animation -# -# #strip length 60 -# -# # Define stripe colors -# color candy_red = 0xFF0000 -# 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) -# -# # Add gentle movement to make it more dynamic -# set move_speed = 8s -# stripe1.pos = sawtooth(min_value=3, max_value=63, duration=move_speed) -# stripe2.pos = sawtooth(min_value=9, max_value=69, duration=move_speed) -# stripe3.pos = sawtooth(min_value=15, max_value=75, duration=move_speed) -# stripe4.pos = sawtooth(min_value=21, max_value=81, duration=move_speed) -# stripe5.pos = sawtooth(min_value=27, max_value=87, duration=move_speed) -# stripe6.pos = sawtooth(min_value=33, max_value=93, duration=move_speed) -# stripe7.pos = sawtooth(min_value=39, max_value=99, duration=move_speed) -# stripe8.pos = sawtooth(min_value=45, max_value=105, duration=move_speed) -# stripe9.pos = sawtooth(min_value=51, max_value=111, duration=move_speed) -# stripe10.pos = sawtooth(min_value=57, max_value=117, duration=move_speed) -# -# # Start all stripes -# run stripe1 -# run stripe2 -# run stripe3 -# run stripe4 -# run stripe5 -# run stripe6 -# run stripe7 -# run stripe8 -# run stripe9 -# run stripe10 - import animation # Candy Cane - Red and white stripes @@ -118,56 +69,76 @@ stripe10_.beacon_size = 4 stripe10_.slew_size = 1 # Add gentle movement to make it more dynamic var move_speed_ = 8000 -var temp_sawtooth_258 = animation.sawtooth(engine) -temp_sawtooth_258.min_value = 3 -temp_sawtooth_258.max_value = 63 -temp_sawtooth_258.duration = move_speed_ -stripe1_.pos = temp_sawtooth_258 -var temp_sawtooth_277 = animation.sawtooth(engine) -temp_sawtooth_277.min_value = 9 -temp_sawtooth_277.max_value = 69 -temp_sawtooth_277.duration = move_speed_ -stripe2_.pos = temp_sawtooth_277 -var temp_sawtooth_296 = animation.sawtooth(engine) -temp_sawtooth_296.min_value = 15 -temp_sawtooth_296.max_value = 75 -temp_sawtooth_296.duration = move_speed_ -stripe3_.pos = temp_sawtooth_296 -var temp_sawtooth_315 = animation.sawtooth(engine) -temp_sawtooth_315.min_value = 21 -temp_sawtooth_315.max_value = 81 -temp_sawtooth_315.duration = move_speed_ -stripe4_.pos = temp_sawtooth_315 -var temp_sawtooth_334 = animation.sawtooth(engine) -temp_sawtooth_334.min_value = 27 -temp_sawtooth_334.max_value = 87 -temp_sawtooth_334.duration = move_speed_ -stripe5_.pos = temp_sawtooth_334 -var temp_sawtooth_353 = animation.sawtooth(engine) -temp_sawtooth_353.min_value = 33 -temp_sawtooth_353.max_value = 93 -temp_sawtooth_353.duration = move_speed_ -stripe6_.pos = temp_sawtooth_353 -var temp_sawtooth_372 = animation.sawtooth(engine) -temp_sawtooth_372.min_value = 39 -temp_sawtooth_372.max_value = 99 -temp_sawtooth_372.duration = move_speed_ -stripe7_.pos = temp_sawtooth_372 -var temp_sawtooth_391 = animation.sawtooth(engine) -temp_sawtooth_391.min_value = 45 -temp_sawtooth_391.max_value = 105 -temp_sawtooth_391.duration = move_speed_ -stripe8_.pos = temp_sawtooth_391 -var temp_sawtooth_410 = animation.sawtooth(engine) -temp_sawtooth_410.min_value = 51 -temp_sawtooth_410.max_value = 111 -temp_sawtooth_410.duration = move_speed_ -stripe9_.pos = temp_sawtooth_410 -var temp_sawtooth_429 = animation.sawtooth(engine) -temp_sawtooth_429.min_value = 57 -temp_sawtooth_429.max_value = 117 -temp_sawtooth_429.duration = move_speed_ -stripe10_.pos = temp_sawtooth_429 +stripe1_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 3 + provider.max_value = 63 + provider.duration = move_speed_ + return provider +end)(engine) +stripe2_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 9 + provider.max_value = 69 + provider.duration = move_speed_ + return provider +end)(engine) +stripe3_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 15 + provider.max_value = 75 + provider.duration = move_speed_ + return provider +end)(engine) +stripe4_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 21 + provider.max_value = 81 + provider.duration = move_speed_ + return provider +end)(engine) +stripe5_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 27 + provider.max_value = 87 + provider.duration = move_speed_ + return provider +end)(engine) +stripe6_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 33 + provider.max_value = 93 + provider.duration = move_speed_ + return provider +end)(engine) +stripe7_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 39 + provider.max_value = 99 + provider.duration = move_speed_ + return provider +end)(engine) +stripe8_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 45 + provider.max_value = 105 + provider.duration = move_speed_ + return provider +end)(engine) +stripe9_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 51 + provider.max_value = 111 + provider.duration = move_speed_ + return provider +end)(engine) +stripe10_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 57 + provider.max_value = 117 + provider.duration = move_speed_ + return provider +end)(engine) # Start all stripes engine.add_animation(stripe1_) engine.add_animation(stripe2_) @@ -180,3 +151,53 @@ engine.add_animation(stripe8_) engine.add_animation(stripe9_) engine.add_animation(stripe10_) engine.start() + + +#- Original DSL source: +# Candy Cane - Red and white stripes +# Classic Christmas candy cane animation + +#strip length 60 + +# Define stripe colors +color candy_red = 0xFF0000 +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) + +# Add gentle movement to make it more dynamic +set move_speed = 8s +stripe1.pos = sawtooth(min_value=3, max_value=63, duration=move_speed) +stripe2.pos = sawtooth(min_value=9, max_value=69, duration=move_speed) +stripe3.pos = sawtooth(min_value=15, max_value=75, duration=move_speed) +stripe4.pos = sawtooth(min_value=21, max_value=81, duration=move_speed) +stripe5.pos = sawtooth(min_value=27, max_value=87, duration=move_speed) +stripe6.pos = sawtooth(min_value=33, max_value=93, duration=move_speed) +stripe7.pos = sawtooth(min_value=39, max_value=99, duration=move_speed) +stripe8.pos = sawtooth(min_value=45, max_value=105, duration=move_speed) +stripe9.pos = sawtooth(min_value=51, max_value=111, duration=move_speed) +stripe10.pos = sawtooth(min_value=57, max_value=117, duration=move_speed) + +# Start all stripes +run stripe1 +run stripe2 +run stripe3 +run stripe4 +run stripe5 +run stripe6 +run stripe7 +run stripe8 +run stripe9 +run stripe10 +-# 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 c7913a567..debe5810b 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be @@ -1,72 +1,9 @@ # Generated Berry code from Animation DSL # Source: christmas_tree.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Christmas Tree - Festive holiday colors -# # Green base with colorful ornaments and twinkling -# -# #strip length 60 -# -# # Green tree base -# color tree_green = 0x006600 -# animation tree_base = solid(color=tree_green) -# -# # Define ornament colors -# palette ornament_colors = [ -# (0, 0xFF0000), # Red -# (64, 0xFFD700), # Gold -# (128, 0x0000FF), # Blue -# (192, 0xFFFFFF), # White -# (255, 0xFF00FF) # Magenta -# ] -# -# # Colorful ornaments as twinkling lights -# color ornament_pattern = rich_palette(palette=ornament_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) -# animation ornaments = twinkle_animation( -# color=ornament_pattern # color source -# density=15 # density (many ornaments) -# twinkle_speed=800ms # twinkle speed (slow twinkle) -# ) -# ornaments.priority = 10 -# -# # Star on top (bright yellow pulse) -# animation tree_star = beacon_animation( -# color=0xFFFF00 # Bright yellow -# pos=58 # position (near the top) -# beacon_size=3 # star size -# slew_size=1 # sharp edges -# ) -# tree_star.priority = 20 -# tree_star.opacity = smooth(min_value=200, max_value=255, duration=2s) # Gentle pulsing -# -# # Add some white sparkles for snow/magic -# animation snow_sparkles = twinkle_animation( -# color=0xFFFFFF # White snow -# density=8 # density (sparkle count) -# twinkle_speed=400ms # twinkle speed (quick sparkles) -# ) -# snow_sparkles.priority = 15 -# -# # Garland effect - moving colored lights -# color garland_pattern = rich_palette(palette=ornament_colors, cycle_period=2s, transition_type=LINEAR, brightness=200) -# animation garland = comet_animation( -# color=garland_pattern # color source -# tail_length=6 # garland length (tail length) -# speed=4s # slow movement (speed) -# ) -# garland.priority = 5 -# -# # Start all animations -# run tree_base -# run ornaments -# run tree_star -# run snow_sparkles -# run garland - import animation # Christmas Tree - Festive holiday colors @@ -99,11 +36,13 @@ tree_star_.pos = 58 # position (near the top) tree_star_.beacon_size = 3 # star size tree_star_.slew_size = 1 # sharp edges tree_star_.priority = 20 -var temp_smooth_170 = animation.smooth(engine) -temp_smooth_170.min_value = 200 -temp_smooth_170.max_value = 255 -temp_smooth_170.duration = 2000 -tree_star_.opacity = temp_smooth_170 # Gentle pulsing +tree_star_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 200 + provider.max_value = 255 + provider.duration = 2000 + return provider +end)(engine) # Gentle pulsing # Add some white sparkles for snow/magic var snow_sparkles_ = animation.twinkle_animation(engine) snow_sparkles_.color = 0xFFFFFFFF # White snow @@ -128,3 +67,67 @@ engine.add_animation(tree_star_) engine.add_animation(snow_sparkles_) engine.add_animation(garland_) engine.start() + + +#- Original DSL source: +# Christmas Tree - Festive holiday colors +# Green base with colorful ornaments and twinkling + +#strip length 60 + +# Green tree base +color tree_green = 0x006600 +animation tree_base = solid(color=tree_green) + +# Define ornament colors +palette ornament_colors = [ + (0, 0xFF0000), # Red + (64, 0xFFD700), # Gold + (128, 0x0000FF), # Blue + (192, 0xFFFFFF), # White + (255, 0xFF00FF) # Magenta +] + +# Colorful ornaments as twinkling lights +color ornament_pattern = rich_palette(palette=ornament_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) +animation ornaments = twinkle_animation( + color=ornament_pattern # color source + density=15 # density (many ornaments) + twinkle_speed=800ms # twinkle speed (slow twinkle) +) +ornaments.priority = 10 + +# Star on top (bright yellow pulse) +animation tree_star = beacon_animation( + color=0xFFFF00 # Bright yellow + pos=58 # position (near the top) + beacon_size=3 # star size + slew_size=1 # sharp edges +) +tree_star.priority = 20 +tree_star.opacity = smooth(min_value=200, max_value=255, duration=2s) # Gentle pulsing + +# Add some white sparkles for snow/magic +animation snow_sparkles = twinkle_animation( + color=0xFFFFFF # White snow + density=8 # density (sparkle count) + twinkle_speed=400ms # twinkle speed (quick sparkles) +) +snow_sparkles.priority = 15 + +# Garland effect - moving colored lights +color garland_pattern = rich_palette(palette=ornament_colors, cycle_period=2s, transition_type=LINEAR, brightness=200) +animation garland = comet_animation( + color=garland_pattern # color source + tail_length=6 # garland length (tail length) + speed=4s # slow movement (speed) +) +garland.priority = 5 + +# Start all animations +run tree_base +run ornaments +run tree_star +run snow_sparkles +run garland +-# 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 bbd431b9f..045214b9f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be @@ -1,51 +1,9 @@ # Generated Berry code from Animation DSL # Source: comet_chase.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Comet Chase - Moving comet with trailing tail -# # Bright head with fading tail -# -# #strip length 60 -# -# # Dark blue background -# color space_blue = 0x000066 # Note: opaque 0xFF alpha channel is implicitly added -# animation background = solid(color=space_blue) -# -# # Main comet with bright white head -# animation comet_main = comet_animation( -# color=0xFFFFFF # White head -# tail_length=10 # tail length -# speed=2s # speed -# priority = 7 -# ) -# -# # Secondary comet in different color, opposite direction -# animation comet_secondary = comet_animation( -# color=0xFF4500 # Orange head -# tail_length=8 # shorter tail -# speed=3s # slower speed -# direction=-1 # other direction -# priority = 5 -# ) -# -# # Add sparkle trail behind comets but on top of blue background -# animation comet_sparkles = twinkle_animation( -# color=0xAAAAFF # Light blue sparkles -# density=8 # density (moderate sparkles) -# twinkle_speed=400ms # twinkle speed (quick sparkle) -# priority = 8 -# ) -# -# # Start all animations -# run background -# run comet_main -# run comet_secondary -# run comet_sparkles - import animation # Comet Chase - Moving comet with trailing tail @@ -83,3 +41,46 @@ engine.add_animation(comet_main_) engine.add_animation(comet_secondary_) engine.add_animation(comet_sparkles_) engine.start() + + +#- Original DSL source: +# Comet Chase - Moving comet with trailing tail +# Bright head with fading tail + +#strip length 60 + +# Dark blue background +color space_blue = 0x000066 # Note: opaque 0xFF alpha channel is implicitly added +animation background = solid(color=space_blue) + +# Main comet with bright white head +animation comet_main = comet_animation( + color=0xFFFFFF # White head + tail_length=10 # tail length + speed=2s # speed + priority = 7 +) + +# Secondary comet in different color, opposite direction +animation comet_secondary = comet_animation( + color=0xFF4500 # Orange head + tail_length=8 # shorter tail + speed=3s # slower speed + direction=-1 # other direction + priority = 5 +) + +# Add sparkle trail behind comets but on top of blue background +animation comet_sparkles = twinkle_animation( + color=0xAAAAFF # Light blue sparkles + density=8 # density (moderate sparkles) + twinkle_speed=400ms # twinkle speed (quick sparkle) + priority = 8 +) + +# Start all animations +run background +run comet_main +run comet_secondary +run comet_sparkles +-# 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 bcc837bb9..3104cfde3 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 @@ -1,43 +1,9 @@ # Generated Berry code from Animation DSL # Source: computed_values_demo.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Computed Values Demo - Example from the original request -# # Shows how to use computed values from value providers -# -# # Get the current strip length -# set strip_len = strip_length() -# -# # Create animation with computed values -# animation stream1 = comet_animation( -# color=red -# tail_length=abs(strip_len / 4) # computed value -# speed=1.5 -# priority=10 -# ) -# -# # More complex computed values -# set base_speed = 2.0 -# animation stream2 = comet_animation( -# color=blue -# tail_length=strip_len / 8 + (2 * strip_len) -10 # computed with addition -# speed=base_speed * 1.5 # computed with multiplication -# direction=-1 -# priority=5 -# ) -# -# # Property assignment with computed values -# stream1.tail_length = strip_len / 5 -# stream2.opacity = strip_len * 4 -# -# # Run both animations -# run stream1 -# run stream2 - import animation # Computed Values Demo - Example from the original request @@ -46,8 +12,7 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var temp_strip_length_11 = animation.strip_length(engine) -var strip_len_ = temp_strip_length_11 +var strip_len_ = animation.strip_length(engine) # Create animation with computed values var stream1_ = animation.comet_animation(engine) stream1_.color = 0xFFFF0000 @@ -69,3 +34,38 @@ stream2_.opacity = animation.create_closure_value(engine, def (self, param_name, engine.add_animation(stream1_) engine.add_animation(stream2_) engine.start() + + +#- Original DSL source: +# Computed Values Demo - Example from the original request +# Shows how to use computed values from value providers + +# Get the current strip length +set strip_len = strip_length() + +# Create animation with computed values +animation stream1 = comet_animation( + color=red + tail_length=abs(strip_len / 4) # computed value + speed=1.5 + priority=10 +) + +# More complex computed values +set base_speed = 2.0 +animation stream2 = comet_animation( + color=blue + tail_length=strip_len / 8 + (2 * strip_len) -10 # computed with addition + speed=base_speed * 1.5 # computed with multiplication + direction=-1 + priority=5 +) + +# Property assignment with computed values +stream1.tail_length = strip_len / 5 +stream2.opacity = strip_len * 4 + +# Run both animations +run stream1 +run stream2 +-# 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 new file mode 100644 index 000000000..e2bb4e0d2 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be @@ -0,0 +1,47 @@ +# Generated Berry code from Animation DSL +# Source: cylon_red_eye.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Cylon Red Eye +# Automatically adapts to the length of the strip +# Auto-generated strip initialization (using Tasmota configuration) +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) +red_eye_.color = 0xFFFF0000 +red_eye_.pos = (def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (self, param_name, time_ms) return (self.resolve(strip_len_, param_name, time_ms) - 2) end) + provider.duration = 5000 + return provider +end)(engine) +red_eye_.beacon_size = 3 # small 3 pixels eye +red_eye_.slew_size = 2 # with 2 pixel shading around +engine.add_animation(red_eye_) +engine.start() + + +#- Original DSL source: +# Cylon Red Eye +# Automatically adapts to the length of the strip + +set strip_len = strip_length() + +# Base aurora animation with slow flowing colors +animation red_eye = beacon_animation( + color = red + pos = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s) + beacon_size = 3 # small 3 pixels eye + slew_size = 2 # with 2 pixel shading around +) + +run red_eye + +-# 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 3c1273b09..2c8f5280f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be @@ -1,64 +1,9 @@ # Generated Berry code from Animation DSL # Source: disco_strobe.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Disco Strobe - Fast colorful strobing -# # Rapid color changes with strobe effects -# -# #strip length 60 -# -# # Define disco color palette -# palette disco_colors = [ -# (0, 0xFF0000), # Red -# (42, 0xFF8000), # Orange -# (85, 0xFFFF00), # Yellow -# (128, 0x00FF00), # Green -# (170, 0x0000FF), # Blue -# (213, 0x8000FF), # Purple -# (255, 0xFF00FF) # Magenta -# ] -# -# # Fast color cycling base -# animation disco_base = rich_palette_animation(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) -# -# # Add strobe effect -# disco_base.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=30) # Fast strobe -# -# # Add white flash overlay -# animation white_flash = solid(color=0xFFFFFF) -# white_flash.opacity = square(min_value=0, max_value=255, duration=50ms, duty_cycle=10) # Quick white flashes -# white_flash.priority = 20 -# -# # Add colored sparkles -# color sparkle_pattern = rich_palette(palette=disco_colors, cycle_period=500ms, transition_type=LINEAR, brightness=255) -# animation disco_sparkles = twinkle_animation( -# color=sparkle_pattern # color source -# density=12 # density (many sparkles) -# twinkle_speed=80ms # twinkle speed (very quick) -# ) -# disco_sparkles.priority = 15 -# -# # Add moving pulse for extra effect -# color pulse_pattern = rich_palette(palette=disco_colors, cycle_period=800ms, transition_type=LINEAR, brightness=255) -# animation disco_pulse = beacon_animation( -# color=pulse_pattern # color source -# pos=4 # initial position -# beacon_size=8 # pulse width -# slew_size=2 # sharp edges (slew size) -# ) -# disco_pulse.priority = 10 -# disco_pulse.pos = sawtooth(min_value=4, max_value=56, duration=2s) # Fast movement -# -# # Start all animations -# run disco_base -# run white_flash -# run disco_sparkles -# run disco_pulse - import animation # Disco Strobe - Fast colorful strobing @@ -76,21 +21,25 @@ disco_base_.cycle_period = 1000 disco_base_.transition_type = animation.LINEAR disco_base_.brightness = 255 # Add strobe effect -var temp_square_105 = animation.square(engine) -temp_square_105.min_value = 0 -temp_square_105.max_value = 255 -temp_square_105.duration = 100 -temp_square_105.duty_cycle = 30 -disco_base_.opacity = temp_square_105 # Fast strobe +disco_base_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 100 + provider.duty_cycle = 30 + return provider +end)(engine) # Fast strobe # Add white flash overlay var white_flash_ = animation.solid(engine) white_flash_.color = 0xFFFFFFFF -var temp_square_142 = animation.square(engine) -temp_square_142.min_value = 0 -temp_square_142.max_value = 255 -temp_square_142.duration = 50 -temp_square_142.duty_cycle = 10 -white_flash_.opacity = temp_square_142 # Quick white flashes +white_flash_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 50 + provider.duty_cycle = 10 + return provider +end)(engine) # Quick white flashes white_flash_.priority = 20 # Add colored sparkles var sparkle_pattern_ = animation.rich_palette(engine) @@ -115,14 +64,72 @@ disco_pulse_.pos = 4 # initial position disco_pulse_.beacon_size = 8 # pulse width disco_pulse_.slew_size = 2 # sharp edges (slew size) disco_pulse_.priority = 10 -var temp_sawtooth_285 = animation.sawtooth(engine) -temp_sawtooth_285.min_value = 4 -temp_sawtooth_285.max_value = 56 -temp_sawtooth_285.duration = 2000 -disco_pulse_.pos = temp_sawtooth_285 # Fast movement +disco_pulse_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 4 + provider.max_value = 56 + provider.duration = 2000 + return provider +end)(engine) # Fast movement # Start all animations engine.add_animation(disco_base_) engine.add_animation(white_flash_) engine.add_animation(disco_sparkles_) engine.add_animation(disco_pulse_) engine.start() + + +#- Original DSL source: +# Disco Strobe - Fast colorful strobing +# Rapid color changes with strobe effects + +#strip length 60 + +# Define disco color palette +palette disco_colors = [ + (0, 0xFF0000), # Red + (42, 0xFF8000), # Orange + (85, 0xFFFF00), # Yellow + (128, 0x00FF00), # Green + (170, 0x0000FF), # Blue + (213, 0x8000FF), # Purple + (255, 0xFF00FF) # Magenta +] + +# Fast color cycling base +animation disco_base = rich_palette_animation(palette=disco_colors, cycle_period=1s, transition_type=LINEAR, brightness=255) + +# Add strobe effect +disco_base.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=30) # Fast strobe + +# Add white flash overlay +animation white_flash = solid(color=0xFFFFFF) +white_flash.opacity = square(min_value=0, max_value=255, duration=50ms, duty_cycle=10) # Quick white flashes +white_flash.priority = 20 + +# Add colored sparkles +color sparkle_pattern = rich_palette(palette=disco_colors, cycle_period=500ms, transition_type=LINEAR, brightness=255) +animation disco_sparkles = twinkle_animation( + color=sparkle_pattern # color source + density=12 # density (many sparkles) + twinkle_speed=80ms # twinkle speed (very quick) +) +disco_sparkles.priority = 15 + +# Add moving pulse for extra effect +color pulse_pattern = rich_palette(palette=disco_colors, cycle_period=800ms, transition_type=LINEAR, brightness=255) +animation disco_pulse = beacon_animation( + color=pulse_pattern # color source + pos=4 # initial position + beacon_size=8 # pulse width + slew_size=2 # sharp edges (slew size) +) +disco_pulse.priority = 10 +disco_pulse.pos = sawtooth(min_value=4, max_value=56, duration=2s) # Fast movement + +# Start all animations +run disco_base +run white_flash +run disco_sparkles +run disco_pulse +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be index e2084c9e9..2c1f72e91 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be @@ -1,44 +1,9 @@ # Generated Berry code from Animation DSL # Source: fire_flicker.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Fire Flicker - Realistic fire simulation -# # Warm colors with random flickering intensity -# -# #strip length 60 -# -# # Define fire palette from black to yellow -# palette fire_colors = [ -# (0, 0x000000), # Black -# (64, 0x800000), # Dark red -# (128, 0xFF0000), # Red -# (192, 0xFF4500), # Orange red -# (255, 0xFFFF00) # Yellow -# ] -# -# # Create base fire animation with palette -# animation fire_base = rich_palette_animation(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) -# -# # Add flickering effect with random intensity changes -# fire_base.opacity = smooth(min_value=180, max_value=255, duration=800ms) -# -# # Add subtle position variation for more realism -# color flicker_pattern = rich_palette(palette=fire_colors, cycle_period=2s, transition_type=LINEAR, brightness=255) -# animation fire_flicker = twinkle_animation( -# color=flicker_pattern # color source -# density=12 # density (number of flickers) -# twinkle_speed=200ms # twinkle speed (flicker duration) -# ) -# fire_flicker.priority = 10 -# -# # Start both animations -# run fire_base -# run fire_flicker - import animation # Fire Flicker - Realistic fire simulation @@ -56,11 +21,13 @@ fire_base_.cycle_period = 3000 fire_base_.transition_type = animation.LINEAR fire_base_.brightness = 255 # Add flickering effect with random intensity changes -var temp_smooth_89 = animation.smooth(engine) -temp_smooth_89.min_value = 180 -temp_smooth_89.max_value = 255 -temp_smooth_89.duration = 800 -fire_base_.opacity = temp_smooth_89 +fire_base_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 180 + provider.max_value = 255 + provider.duration = 800 + return provider +end)(engine) # Add subtle position variation for more realism var flicker_pattern_ = animation.rich_palette(engine) flicker_pattern_.palette = fire_colors_ @@ -76,3 +43,39 @@ fire_flicker_.priority = 10 engine.add_animation(fire_base_) engine.add_animation(fire_flicker_) engine.start() + + +#- Original DSL source: +# Fire Flicker - Realistic fire simulation +# Warm colors with random flickering intensity + +#strip length 60 + +# Define fire palette from black to yellow +palette fire_colors = [ + (0, 0x000000), # Black + (64, 0x800000), # Dark red + (128, 0xFF0000), # Red + (192, 0xFF4500), # Orange red + (255, 0xFFFF00) # Yellow +] + +# Create base fire animation with palette +animation fire_base = rich_palette_animation(palette=fire_colors, cycle_period=3s, transition_type=LINEAR, brightness=255) + +# Add flickering effect with random intensity changes +fire_base.opacity = smooth(min_value=180, max_value=255, duration=800ms) + +# Add subtle position variation for more realism +color flicker_pattern = rich_palette(palette=fire_colors, cycle_period=2s, transition_type=LINEAR, brightness=255) +animation fire_flicker = twinkle_animation( + color=flicker_pattern # color source + density=12 # density (number of flickers) + twinkle_speed=200ms # twinkle speed (flicker duration) +) +fire_flicker.priority = 10 + +# Start both animations +run fire_base +run fire_flicker +-# 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 b80829f21..1efb8efcc 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be @@ -1,54 +1,9 @@ # Generated Berry code from Animation DSL # Source: heartbeat_pulse.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Heartbeat Pulse - Rhythmic double pulse -# # Red pulsing like a heartbeat -# -# #strip length 60 -# -# # Dark background -# color heart_bg = 0x110000 -# animation background = solid(color=heart_bg) -# -# # Define heartbeat timing - double pulse animation -# # First pulse (stronger) -# animation heartbeat1 = solid(color=0xFF0000) # Bright red -# heartbeat1.opacity = square(min_value=0, max_value=255, duration=150ms, duty_cycle=20) # Quick strong pulse -# heartbeat1.priority = 10 -# -# # Second pulse (weaker, slightly delayed) -# animation heartbeat2 = solid(color=0xCC0000) # Slightly dimmer red -# # Delay the second pulse by adjusting the square wave phase -# heartbeat2.opacity = square(min_value=0, max_value=180, duration=150ms, duty_cycle=15) # Weaker pulse -# heartbeat2.priority = 8 -# -# # Add subtle glow effect -# animation heart_glow = solid(color=0x660000) # Dim red glow -# heart_glow.opacity = smooth(min_value=30, max_value=100, duration=1s) # Gentle breathing glow -# heart_glow.priority = 5 -# -# # Add center pulse for emphasis -# animation center_pulse = beacon_animation( -# color=0xFFFFFF # White center -# pos=30 # center of strip -# beacon_size=4 # small center -# slew_size=2 # soft edges -# ) -# center_pulse.priority = 20 -# center_pulse.opacity = square(min_value=0, max_value=200, duration=100ms, duty_cycle=10) # Quick white flash -# -# # Start all animations -# run background -# run heart_glow -# run heartbeat1 -# run heartbeat2 -# run center_pulse - import animation # Heartbeat Pulse - Rhythmic double pulse @@ -66,34 +21,40 @@ background_.color = heart_bg_ var heartbeat1_ = animation.solid(engine) heartbeat1_.color = 0xFFFF0000 # Bright red -var temp_square_46 = animation.square(engine) -temp_square_46.min_value = 0 -temp_square_46.max_value = 255 -temp_square_46.duration = 150 -temp_square_46.duty_cycle = 20 -heartbeat1_.opacity = temp_square_46 # Quick strong pulse +heartbeat1_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 150 + provider.duty_cycle = 20 + return provider +end)(engine) # Quick strong pulse heartbeat1_.priority = 10 # Second pulse (weaker, slightly delayed) var heartbeat2_ = animation.solid(engine) heartbeat2_.color = 0xFFCC0000 # Slightly dimmer red # Delay the second pulse by adjusting the square wave phase -var temp_square_92 = animation.square(engine) -temp_square_92.min_value = 0 -temp_square_92.max_value = 180 -temp_square_92.duration = 150 -temp_square_92.duty_cycle = 15 -heartbeat2_.opacity = temp_square_92 # Weaker pulse +heartbeat2_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 180 + provider.duration = 150 + provider.duty_cycle = 15 + return provider +end)(engine) # Weaker pulse heartbeat2_.priority = 8 # Add subtle glow effect var heart_glow_ = animation.solid(engine) heart_glow_.color = 0xFF660000 # Dim red glow -var temp_smooth_136 = animation.smooth(engine) -temp_smooth_136.min_value = 30 -temp_smooth_136.max_value = 100 -temp_smooth_136.duration = 1000 -heart_glow_.opacity = temp_smooth_136 # Gentle breathing glow +heart_glow_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 30 + provider.max_value = 100 + provider.duration = 1000 + return provider +end)(engine) # Gentle breathing glow heart_glow_.priority = 5 # Add center pulse for emphasis var center_pulse_ = animation.beacon_animation(engine) @@ -102,12 +63,14 @@ center_pulse_.pos = 30 # center of strip center_pulse_.beacon_size = 4 # small center center_pulse_.slew_size = 2 # soft edges center_pulse_.priority = 20 -var temp_square_199 = animation.square(engine) -temp_square_199.min_value = 0 -temp_square_199.max_value = 200 -temp_square_199.duration = 100 -temp_square_199.duty_cycle = 10 -center_pulse_.opacity = temp_square_199 # Quick white flash +center_pulse_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 200 + provider.duration = 100 + provider.duty_cycle = 10 + return provider +end)(engine) # Quick white flash # Start all animations engine.add_animation(background_) engine.add_animation(heart_glow_) @@ -115,3 +78,49 @@ engine.add_animation(heartbeat1_) engine.add_animation(heartbeat2_) engine.add_animation(center_pulse_) engine.start() + + +#- Original DSL source: +# Heartbeat Pulse - Rhythmic double pulse +# Red pulsing like a heartbeat + +#strip length 60 + +# Dark background +color heart_bg = 0x110000 +animation background = solid(color=heart_bg) + +# Define heartbeat timing - double pulse animation +# First pulse (stronger) +animation heartbeat1 = solid(color=0xFF0000) # Bright red +heartbeat1.opacity = square(min_value=0, max_value=255, duration=150ms, duty_cycle=20) # Quick strong pulse +heartbeat1.priority = 10 + +# Second pulse (weaker, slightly delayed) +animation heartbeat2 = solid(color=0xCC0000) # Slightly dimmer red +# Delay the second pulse by adjusting the square wave phase +heartbeat2.opacity = square(min_value=0, max_value=180, duration=150ms, duty_cycle=15) # Weaker pulse +heartbeat2.priority = 8 + +# Add subtle glow effect +animation heart_glow = solid(color=0x660000) # Dim red glow +heart_glow.opacity = smooth(min_value=30, max_value=100, duration=1s) # Gentle breathing glow +heart_glow.priority = 5 + +# Add center pulse for emphasis +animation center_pulse = beacon_animation( + color=0xFFFFFF # White center + pos=30 # center of strip + beacon_size=4 # small center + slew_size=2 # soft edges +) +center_pulse.priority = 20 +center_pulse.opacity = square(min_value=0, max_value=200, duration=100ms, duty_cycle=10) # Quick white flash + +# Start all animations +run background +run heart_glow +run heartbeat1 +run heartbeat2 +run center_pulse +-# 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 cb013a13d..a204b6a0f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be @@ -1,75 +1,9 @@ # Generated Berry code from Animation DSL # Source: lava_lamp.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Lava Lamp - Slow flowing warm colors -# # Organic movement like a lava lamp -# -# #strip length 60 -# -# # Define lava colors (warm oranges and reds) -# palette lava_colors = [ -# (0, 0x330000), # Dark red -# (64, 0x660000), # Medium red -# (128, 0xCC3300), # Bright red -# (192, 0xFF6600), # Orange -# (255, 0xFFAA00) # Yellow-orange -# ] -# -# # Base lava animation - very slow color changes -# animation lava_base = rich_palette_animation(palette=lava_colors, cycle_period=15s, transition_type=SINE, brightness=180) -# -# # Add slow-moving lava blobs -# color blob1_pattern = rich_palette(palette=lava_colors, cycle_period=12s, transition_type=SINE, brightness=255) -# animation lava_blob1 = beacon_animation( -# color=blob1_pattern # color source -# pos=9 # initial position -# beacon_size=18 # large blob -# slew_size=12 # very soft edges -# ) -# lava_blob1.priority = 10 -# lava_blob1.pos = smooth(min_value=9, max_value=51, duration=20s) # Very slow movement -# -# color blob2_pattern = rich_palette(palette=lava_colors, cycle_period=10s, transition_type=SINE, brightness=220) -# animation lava_blob2 = beacon_animation( -# color=blob2_pattern # color source -# pos=46 # initial position -# beacon_size=14 # medium blob -# slew_size=10 # soft edges -# ) -# lava_blob2.priority = 8 -# lava_blob2.pos = smooth(min_value=46, max_value=14, duration=25s) # Opposite direction, slower -# -# color blob3_pattern = rich_palette(palette=lava_colors, cycle_period=8s, transition_type=SINE, brightness=200) -# animation lava_blob3 = beacon_animation( -# color=blob3_pattern # color source -# pos=25 # initial position -# beacon_size=10 # smaller blob -# slew_size=8 # soft edges -# ) -# lava_blob3.priority = 6 -# lava_blob3.pos = smooth(min_value=25, max_value=35, duration=18s) # Small movement range -# -# # Add subtle heat shimmer effect -# color shimmer_pattern = rich_palette(palette=lava_colors, cycle_period=6s, transition_type=SINE, brightness=255) -# animation heat_shimmer = twinkle_animation( -# color=shimmer_pattern # color source -# density=6 # density (shimmer points) -# twinkle_speed=1.5s # twinkle speed (slow shimmer) -# ) -# heat_shimmer.priority = 15 -# -# # Start all animations -# run lava_base -# run lava_blob1 -# run lava_blob2 -# run lava_blob3 -# run heat_shimmer - import animation # Lava Lamp - Slow flowing warm colors @@ -98,11 +32,13 @@ lava_blob1_.pos = 9 # initial position lava_blob1_.beacon_size = 18 # large blob lava_blob1_.slew_size = 12 # very soft edges lava_blob1_.priority = 10 -var temp_smooth_145 = animation.smooth(engine) -temp_smooth_145.min_value = 9 -temp_smooth_145.max_value = 51 -temp_smooth_145.duration = 20000 -lava_blob1_.pos = temp_smooth_145 # Very slow movement +lava_blob1_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 9 + provider.max_value = 51 + provider.duration = 20000 + return provider +end)(engine) # Very slow movement var blob2_pattern_ = animation.rich_palette(engine) blob2_pattern_.palette = lava_colors_ blob2_pattern_.cycle_period = 10000 @@ -114,11 +50,13 @@ lava_blob2_.pos = 46 # initial position lava_blob2_.beacon_size = 14 # medium blob lava_blob2_.slew_size = 10 # soft edges lava_blob2_.priority = 8 -var temp_smooth_222 = animation.smooth(engine) -temp_smooth_222.min_value = 46 -temp_smooth_222.max_value = 14 -temp_smooth_222.duration = 25000 -lava_blob2_.pos = temp_smooth_222 # Opposite direction, slower +lava_blob2_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 46 + provider.max_value = 14 + provider.duration = 25000 + return provider +end)(engine) # Opposite direction, slower var blob3_pattern_ = animation.rich_palette(engine) blob3_pattern_.palette = lava_colors_ blob3_pattern_.cycle_period = 8000 @@ -130,11 +68,13 @@ lava_blob3_.pos = 25 # initial position lava_blob3_.beacon_size = 10 # smaller blob lava_blob3_.slew_size = 8 # soft edges lava_blob3_.priority = 6 -var temp_smooth_299 = animation.smooth(engine) -temp_smooth_299.min_value = 25 -temp_smooth_299.max_value = 35 -temp_smooth_299.duration = 18000 -lava_blob3_.pos = temp_smooth_299 # Small movement range +lava_blob3_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 25 + provider.max_value = 35 + provider.duration = 18000 + return provider +end)(engine) # Small movement range # Add subtle heat shimmer effect var shimmer_pattern_ = animation.rich_palette(engine) shimmer_pattern_.palette = lava_colors_ @@ -153,3 +93,70 @@ engine.add_animation(lava_blob2_) engine.add_animation(lava_blob3_) engine.add_animation(heat_shimmer_) engine.start() + + +#- Original DSL source: +# Lava Lamp - Slow flowing warm colors +# Organic movement like a lava lamp + +#strip length 60 + +# Define lava colors (warm oranges and reds) +palette lava_colors = [ + (0, 0x330000), # Dark red + (64, 0x660000), # Medium red + (128, 0xCC3300), # Bright red + (192, 0xFF6600), # Orange + (255, 0xFFAA00) # Yellow-orange +] + +# Base lava animation - very slow color changes +animation lava_base = rich_palette_animation(palette=lava_colors, cycle_period=15s, transition_type=SINE, brightness=180) + +# Add slow-moving lava blobs +color blob1_pattern = rich_palette(palette=lava_colors, cycle_period=12s, transition_type=SINE, brightness=255) +animation lava_blob1 = beacon_animation( + color=blob1_pattern # color source + pos=9 # initial position + beacon_size=18 # large blob + slew_size=12 # very soft edges +) +lava_blob1.priority = 10 +lava_blob1.pos = smooth(min_value=9, max_value=51, duration=20s) # Very slow movement + +color blob2_pattern = rich_palette(palette=lava_colors, cycle_period=10s, transition_type=SINE, brightness=220) +animation lava_blob2 = beacon_animation( + color=blob2_pattern # color source + pos=46 # initial position + beacon_size=14 # medium blob + slew_size=10 # soft edges +) +lava_blob2.priority = 8 +lava_blob2.pos = smooth(min_value=46, max_value=14, duration=25s) # Opposite direction, slower + +color blob3_pattern = rich_palette(palette=lava_colors, cycle_period=8s, transition_type=SINE, brightness=200) +animation lava_blob3 = beacon_animation( + color=blob3_pattern # color source + pos=25 # initial position + beacon_size=10 # smaller blob + slew_size=8 # soft edges +) +lava_blob3.priority = 6 +lava_blob3.pos = smooth(min_value=25, max_value=35, duration=18s) # Small movement range + +# Add subtle heat shimmer effect +color shimmer_pattern = rich_palette(palette=lava_colors, cycle_period=6s, transition_type=SINE, brightness=255) +animation heat_shimmer = twinkle_animation( + color=shimmer_pattern # color source + density=6 # density (shimmer points) + twinkle_speed=1.5s # twinkle speed (slow shimmer) +) +heat_shimmer.priority = 15 + +# Start all animations +run lava_base +run lava_blob1 +run lava_blob2 +run lava_blob3 +run heat_shimmer +-# 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 c6dc31f27..5b05593a5 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be @@ -1,60 +1,9 @@ # Generated Berry code from Animation DSL # Source: lightning_storm.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Lightning Storm - Random lightning flashes -# # Dark stormy background with bright lightning -# -# #strip length 60 -# -# # Dark stormy background with subtle purple/blue -# palette storm_colors = [ -# (0, 0x000011), # Very dark blue -# (128, 0x110022), # Dark purple -# (255, 0x220033) # Slightly lighter purple -# ] -# -# animation storm_bg = rich_palette_animation(palette=storm_colors, cycle_period=12s, transition_type=SINE, brightness=100) -# -# # Random lightning flashes - full strip -# animation lightning_main = solid(color=0xFFFFFF) # Bright white -# lightning_main.opacity = square(min_value=0, max_value=255, duration=80ms, duty_cycle=3) # Quick bright flashes -# lightning_main.priority = 20 -# -# # Secondary lightning - partial strip -# animation lightning_partial = beacon_animation( -# color=0xFFFFAA # Slightly yellow white -# pos=30 # center position -# beacon_size=20 # covers part of strip -# slew_size=5 # soft edges -# ) -# lightning_partial.priority = 15 -# lightning_partial.opacity = square(min_value=0, max_value=200, duration=120ms, duty_cycle=4) # Different timing -# -# # Add blue afterglow -# animation afterglow = solid(color=0x4444FF) # Blue glow -# afterglow.opacity = square(min_value=0, max_value=80, duration=200ms, duty_cycle=8) # Longer, dimmer glow -# afterglow.priority = 10 -# -# # Distant thunder (dim flashes) -# animation distant_flash = twinkle_animation( -# color=0x666699 # Dim blue-white -# density=4 # density (few flashes) -# twinkle_speed=300ms # twinkle speed (medium duration) -# ) -# distant_flash.priority = 5 -# -# # Start all animations -# run storm_bg -# run lightning_main -# run lightning_partial -# run afterglow -# run distant_flash - import animation # Lightning Storm - Random lightning flashes @@ -74,12 +23,14 @@ storm_bg_.brightness = 100 var lightning_main_ = animation.solid(engine) lightning_main_.color = 0xFFFFFFFF # Bright white -var temp_square_82 = animation.square(engine) -temp_square_82.min_value = 0 -temp_square_82.max_value = 255 -temp_square_82.duration = 80 -temp_square_82.duty_cycle = 3 -lightning_main_.opacity = temp_square_82 # Quick bright flashes +lightning_main_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 80 + provider.duty_cycle = 3 + return provider +end)(engine) # Quick bright flashes lightning_main_.priority = 20 # Secondary lightning - partial strip var lightning_partial_ = animation.beacon_animation(engine) @@ -88,22 +39,26 @@ lightning_partial_.pos = 30 # center position lightning_partial_.beacon_size = 20 # covers part of strip lightning_partial_.slew_size = 5 # soft edges lightning_partial_.priority = 15 -var temp_square_149 = animation.square(engine) -temp_square_149.min_value = 0 -temp_square_149.max_value = 200 -temp_square_149.duration = 120 -temp_square_149.duty_cycle = 4 -lightning_partial_.opacity = temp_square_149 # Different timing +lightning_partial_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 200 + provider.duration = 120 + provider.duty_cycle = 4 + return provider +end)(engine) # Different timing # Add blue afterglow var afterglow_ = animation.solid(engine) afterglow_.color = 0xFF4444FF # Blue glow -var temp_square_187 = animation.square(engine) -temp_square_187.min_value = 0 -temp_square_187.max_value = 80 -temp_square_187.duration = 200 -temp_square_187.duty_cycle = 8 -afterglow_.opacity = temp_square_187 # Longer, dimmer glow +afterglow_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 80 + provider.duration = 200 + provider.duty_cycle = 8 + return provider +end)(engine) # Longer, dimmer glow afterglow_.priority = 10 # Distant thunder (dim flashes) var distant_flash_ = animation.twinkle_animation(engine) @@ -118,3 +73,55 @@ engine.add_animation(lightning_partial_) engine.add_animation(afterglow_) engine.add_animation(distant_flash_) engine.start() + + +#- Original DSL source: +# Lightning Storm - Random lightning flashes +# Dark stormy background with bright lightning + +#strip length 60 + +# Dark stormy background with subtle purple/blue +palette storm_colors = [ + (0, 0x000011), # Very dark blue + (128, 0x110022), # Dark purple + (255, 0x220033) # Slightly lighter purple +] + +animation storm_bg = rich_palette_animation(palette=storm_colors, cycle_period=12s, transition_type=SINE, brightness=100) + +# Random lightning flashes - full strip +animation lightning_main = solid(color=0xFFFFFF) # Bright white +lightning_main.opacity = square(min_value=0, max_value=255, duration=80ms, duty_cycle=3) # Quick bright flashes +lightning_main.priority = 20 + +# Secondary lightning - partial strip +animation lightning_partial = beacon_animation( + color=0xFFFFAA # Slightly yellow white + pos=30 # center position + beacon_size=20 # covers part of strip + slew_size=5 # soft edges +) +lightning_partial.priority = 15 +lightning_partial.opacity = square(min_value=0, max_value=200, duration=120ms, duty_cycle=4) # Different timing + +# Add blue afterglow +animation afterglow = solid(color=0x4444FF) # Blue glow +afterglow.opacity = square(min_value=0, max_value=80, duration=200ms, duty_cycle=8) # Longer, dimmer glow +afterglow.priority = 10 + +# Distant thunder (dim flashes) +animation distant_flash = twinkle_animation( + color=0x666699 # Dim blue-white + density=4 # density (few flashes) + twinkle_speed=300ms # twinkle speed (medium duration) +) +distant_flash.priority = 5 + +# Start all animations +run storm_bg +run lightning_main +run lightning_partial +run afterglow +run distant_flash +-# 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 1cccf4d5f..9d2ed3dbb 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be @@ -1,70 +1,9 @@ # Generated Berry code from Animation DSL # Source: matrix_rain.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Matrix Rain - Digital rain effect -# # Green cascading code like The Matrix -# -# #strip length 60 -# -# # Dark background -# color matrix_bg = 0x000000 -# animation background = solid(color=matrix_bg, priority=50) -# -# # Define matrix green palette -# palette matrix_greens = [ -# (0, 0x000000), # Black -# (64, 0x003300), # Dark green -# (128, 0x006600), # Medium green -# (192, 0x00AA00), # Bright green -# (255, 0x00FF00) # Neon green -# ] -# -# # Create multiple cascading streams -# color stream1_pattern = rich_palette(palette=matrix_greens, cycle_period=2s, transition_type=LINEAR, brightness=255) -# animation stream1 = comet_animation( -# color=stream1_pattern # color source -# tail_length=15 # long tail -# speed=1.5s # speed -# priority = 10 -# ) -# -# -# color stream2_pattern = rich_palette(palette=matrix_greens, cycle_period=1.8s, transition_type=LINEAR, brightness=200) -# animation stream2 = comet_animation( -# color=stream2_pattern # color source -# tail_length=12 # medium tail -# speed=2.2s # different speed -# priority = 8 -# ) -# -# color stream3_pattern = rich_palette(palette=matrix_greens, cycle_period=2.5s, transition_type=LINEAR, brightness=180) -# animation stream3 = comet_animation( -# color=stream3_pattern # color source -# tail_length=10 # shorter tail -# speed=1.8s # another speed -# priority = 6 -# ) -# -# # Add random bright flashes (like code highlights) -# animation code_flash = twinkle_animation( -# color=0x00FFAA # Bright cyan-green -# density=3 # density (few flashes) -# twinkle_speed=150ms # twinkle speed (quick flash) -# priority = 20 -# ) -# -# # Start all animations -# run background -# run stream1 -# run stream2 -# run stream3 -# run code_flash - import animation # Matrix Rain - Digital rain effect @@ -124,3 +63,65 @@ engine.add_animation(stream2_) engine.add_animation(stream3_) engine.add_animation(code_flash_) engine.start() + + +#- Original DSL source: +# Matrix Rain - Digital rain effect +# Green cascading code like The Matrix + +#strip length 60 + +# Dark background +color matrix_bg = 0x000000 +animation background = solid(color=matrix_bg, priority=50) + +# Define matrix green palette +palette matrix_greens = [ + (0, 0x000000), # Black + (64, 0x003300), # Dark green + (128, 0x006600), # Medium green + (192, 0x00AA00), # Bright green + (255, 0x00FF00) # Neon green +] + +# Create multiple cascading streams +color stream1_pattern = rich_palette(palette=matrix_greens, cycle_period=2s, transition_type=LINEAR, brightness=255) +animation stream1 = comet_animation( + color=stream1_pattern # color source + tail_length=15 # long tail + speed=1.5s # speed + priority = 10 +) + + +color stream2_pattern = rich_palette(palette=matrix_greens, cycle_period=1.8s, transition_type=LINEAR, brightness=200) +animation stream2 = comet_animation( + color=stream2_pattern # color source + tail_length=12 # medium tail + speed=2.2s # different speed + priority = 8 +) + +color stream3_pattern = rich_palette(palette=matrix_greens, cycle_period=2.5s, transition_type=LINEAR, brightness=180) +animation stream3 = comet_animation( + color=stream3_pattern # color source + tail_length=10 # shorter tail + speed=1.8s # another speed + priority = 6 +) + +# Add random bright flashes (like code highlights) +animation code_flash = twinkle_animation( + color=0x00FFAA # Bright cyan-green + density=3 # density (few flashes) + twinkle_speed=150ms # twinkle speed (quick flash) + priority = 20 +) + +# Start all animations +run background +run stream1 +run stream2 +run stream3 +run code_flash +-# 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 5806fa54f..7dca7b1c4 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be @@ -1,74 +1,9 @@ # Generated Berry code from Animation DSL # Source: meteor_shower.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Meteor Shower - Multiple meteors with trails -# # Fast moving bright objects with fading trails -# -# #strip length 60 -# -# # Dark space background -# color space_bg = 0x000011 -# animation background = solid(color=space_bg) -# -# # Multiple meteors with different speeds and colors -# animation meteor1 = comet_animation( -# color=0xFFFFFF # Bright white -# tail_length=12 # long trail -# speed=1.5s # fast speed -# ) -# meteor1.priority = 15 -# -# animation meteor2 = comet_animation( -# color=0xFFAA00 # Orange -# tail_length=10 # medium trail -# speed=2s # medium speed -# ) -# meteor2.priority = 12 -# -# animation meteor3 = comet_animation( -# color=0xAAAAFF # Blue-white -# tail_length=8 # shorter trail -# speed=1.8s # fast speed -# ) -# meteor3.priority = 10 -# -# animation meteor4 = comet_animation( -# color=0xFFAAAA # Pink-white -# tail_length=14 # long trail -# speed=2.5s # slower speed -# ) -# meteor4.priority = 8 -# -# # Add distant stars -# animation stars = twinkle_animation( -# color=0xCCCCCC # Dim white -# density=12 # density (many stars) -# twinkle_speed=2s # twinkle speed (slow twinkle) -# ) -# stars.priority = 5 -# -# # Add occasional bright flash (meteor explosion) -# animation meteor_flash = twinkle_animation( -# color=0xFFFFFF # Bright white -# density=1 # density (single flash) -# twinkle_speed=100ms # twinkle speed (very quick) -# ) -# meteor_flash.priority = 25 -# -# # Start all animations -# run background -# run stars -# run meteor1 -# run meteor2 -# run meteor3 -# run meteor4 -# run meteor_flash - import animation # Meteor Shower - Multiple meteors with trails @@ -123,3 +58,69 @@ engine.add_animation(meteor3_) engine.add_animation(meteor4_) engine.add_animation(meteor_flash_) engine.start() + + +#- Original DSL source: +# Meteor Shower - Multiple meteors with trails +# Fast moving bright objects with fading trails + +#strip length 60 + +# Dark space background +color space_bg = 0x000011 +animation background = solid(color=space_bg) + +# Multiple meteors with different speeds and colors +animation meteor1 = comet_animation( + color=0xFFFFFF # Bright white + tail_length=12 # long trail + speed=1.5s # fast speed +) +meteor1.priority = 15 + +animation meteor2 = comet_animation( + color=0xFFAA00 # Orange + tail_length=10 # medium trail + speed=2s # medium speed +) +meteor2.priority = 12 + +animation meteor3 = comet_animation( + color=0xAAAAFF # Blue-white + tail_length=8 # shorter trail + speed=1.8s # fast speed +) +meteor3.priority = 10 + +animation meteor4 = comet_animation( + color=0xFFAAAA # Pink-white + tail_length=14 # long trail + speed=2.5s # slower speed +) +meteor4.priority = 8 + +# Add distant stars +animation stars = twinkle_animation( + color=0xCCCCCC # Dim white + density=12 # density (many stars) + twinkle_speed=2s # twinkle speed (slow twinkle) +) +stars.priority = 5 + +# Add occasional bright flash (meteor explosion) +animation meteor_flash = twinkle_animation( + color=0xFFFFFF # Bright white + density=1 # density (single flash) + twinkle_speed=100ms # twinkle speed (very quick) +) +meteor_flash.priority = 25 + +# Start all animations +run background +run stars +run meteor1 +run meteor2 +run meteor3 +run meteor4 +run meteor_flash +-# 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 4c4208c16..f4ebc9761 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be @@ -1,77 +1,9 @@ # Generated Berry code from Animation DSL # Source: neon_glow.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Neon Glow - Electric neon tube effect -# # Bright saturated colors with flickering -# -# #strip length 60 -# -# # Define neon colors -# palette neon_colors = [ -# (0, 0xFF0080), # Hot pink -# (85, 0x00FF80), # Neon green -# (170, 0x8000FF), # Electric purple -# (255, 0xFF8000) # Neon orange -# ] -# -# # Main neon glow with color cycling -# animation neon_main = rich_palette_animation(palette=neon_colors, cycle_period=4s, transition_type=LINEAR, brightness=255) -# -# # Add electrical flickering -# neon_main.opacity = smooth(min_value=220, max_value=255, duration=200ms) -# -# # Add occasional electrical surge -# animation neon_surge = solid(color=0xFFFFFF) # White surge -# neon_surge.opacity = square(min_value=0, max_value=255, duration=50ms, duty_cycle=2) # Quick bright surges -# neon_surge.priority = 20 -# -# # Add neon tube segments with gaps -# color segment_pattern = rich_palette(palette=neon_colors, cycle_period=4s, transition_type=LINEAR, brightness=255) -# animation segment1 = beacon_animation( -# color=segment_pattern # color source -# pos=6 # position -# beacon_size=12 # segment length -# slew_size=1 # sharp edges -# ) -# segment1.priority = 10 -# -# animation segment2 = beacon_animation( -# color=segment_pattern # color source -# pos=24 # position -# beacon_size=12 # segment length -# slew_size=1 # sharp edges -# ) -# segment2.priority = 10 -# -# animation segment3 = beacon_animation( -# color=segment_pattern # color source -# pos=42 # position -# beacon_size=12 # segment length -# slew_size=1 # sharp edges -# ) -# segment3.priority = 10 -# -# # Add electrical arcing between segments -# animation arc_sparkles = twinkle_animation( -# color=0xAAAAFF # Electric blue -# density=4 # density (few arcs) -# twinkle_speed=100ms # twinkle speed (quick arcs) -# ) -# arc_sparkles.priority = 15 -# -# # Start all animations -# run neon_main -# run neon_surge -# run segment1 -# run segment2 -# run segment3 -# run arc_sparkles - import animation # Neon Glow - Electric neon tube effect @@ -89,21 +21,25 @@ neon_main_.cycle_period = 4000 neon_main_.transition_type = animation.LINEAR neon_main_.brightness = 255 # Add electrical flickering -var temp_smooth_81 = animation.smooth(engine) -temp_smooth_81.min_value = 220 -temp_smooth_81.max_value = 255 -temp_smooth_81.duration = 200 -neon_main_.opacity = temp_smooth_81 +neon_main_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 220 + provider.max_value = 255 + provider.duration = 200 + return provider +end)(engine) # Add occasional electrical surge var neon_surge_ = animation.solid(engine) neon_surge_.color = 0xFFFFFFFF # White surge -var temp_square_114 = animation.square(engine) -temp_square_114.min_value = 0 -temp_square_114.max_value = 255 -temp_square_114.duration = 50 -temp_square_114.duty_cycle = 2 -neon_surge_.opacity = temp_square_114 # Quick bright surges +neon_surge_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 50 + provider.duty_cycle = 2 + return provider +end)(engine) # Quick bright surges neon_surge_.priority = 20 # Add neon tube segments with gaps var segment_pattern_ = animation.rich_palette(engine) @@ -143,3 +79,72 @@ engine.add_animation(segment2_) engine.add_animation(segment3_) engine.add_animation(arc_sparkles_) engine.start() + + +#- Original DSL source: +# Neon Glow - Electric neon tube effect +# Bright saturated colors with flickering + +#strip length 60 + +# Define neon colors +palette neon_colors = [ + (0, 0xFF0080), # Hot pink + (85, 0x00FF80), # Neon green + (170, 0x8000FF), # Electric purple + (255, 0xFF8000) # Neon orange +] + +# Main neon glow with color cycling +animation neon_main = rich_palette_animation(palette=neon_colors, cycle_period=4s, transition_type=LINEAR, brightness=255) + +# Add electrical flickering +neon_main.opacity = smooth(min_value=220, max_value=255, duration=200ms) + +# Add occasional electrical surge +animation neon_surge = solid(color=0xFFFFFF) # White surge +neon_surge.opacity = square(min_value=0, max_value=255, duration=50ms, duty_cycle=2) # Quick bright surges +neon_surge.priority = 20 + +# Add neon tube segments with gaps +color segment_pattern = rich_palette(palette=neon_colors, cycle_period=4s, transition_type=LINEAR, brightness=255) +animation segment1 = beacon_animation( + color=segment_pattern # color source + pos=6 # position + beacon_size=12 # segment length + slew_size=1 # sharp edges +) +segment1.priority = 10 + +animation segment2 = beacon_animation( + color=segment_pattern # color source + pos=24 # position + beacon_size=12 # segment length + slew_size=1 # sharp edges +) +segment2.priority = 10 + +animation segment3 = beacon_animation( + color=segment_pattern # color source + pos=42 # position + beacon_size=12 # segment length + slew_size=1 # sharp edges +) +segment3.priority = 10 + +# Add electrical arcing between segments +animation arc_sparkles = twinkle_animation( + color=0xAAAAFF # Electric blue + density=4 # density (few arcs) + twinkle_speed=100ms # twinkle speed (quick arcs) +) +arc_sparkles.priority = 15 + +# Start all animations +run neon_main +run neon_surge +run segment1 +run segment2 +run segment3 +run arc_sparkles +-# 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 d8fa98536..47777d2dc 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be @@ -1,63 +1,9 @@ # Generated Berry code from Animation DSL # Source: ocean_waves.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Ocean Waves - Blue-green wave simulation -# # Flowing water colors with wave motion -# -# #strip length 60 -# -# # Define ocean color palette -# palette ocean_colors = [ -# (0, 0x000080), # Deep blue -# (64, 0x0040C0), # Ocean blue -# (128, 0x0080FF), # Light blue -# (192, 0x40C0FF), # Cyan -# (255, 0x80FFFF) # Light cyan -# ] -# -# # Base ocean animation with slow color cycling -# animation ocean_base = rich_palette_animation(palette=ocean_colors, cycle_period=8s, transition_type=SINE, brightness=200) -# -# # Add wave motion with moving pulses -# color wave1_pattern = rich_palette(palette=ocean_colors, cycle_period=6s, transition_type=SINE, brightness=255) -# animation wave1 = beacon_animation( -# color=wave1_pattern # color source -# pos=0 # initial position -# beacon_size=12 # wave width -# slew_size=6 # soft edges -# ) -# wave1.priority = 10 -# wave1.pos = sawtooth(min_value=0, max_value=48, duration=5s) # 60-12 = 48 -# -# color wave2_pattern = rich_palette(palette=ocean_colors, cycle_period=4s, transition_type=SINE, brightness=180) -# animation wave2 = beacon_animation( -# color=wave2_pattern # color source -# pos=52 # initial position -# beacon_size=8 # smaller wave -# slew_size=4 # soft edges -# ) -# wave2.priority = 8 -# wave2.pos = sawtooth(min_value=52, max_value=8, duration=7s) # Opposite direction -# -# # Add foam sparkles -# animation foam = twinkle_animation( -# color=0xFFFFFF # White foam -# density=6 # density (sparkle count) -# twinkle_speed=300ms # twinkle speed (quick sparkles) -# ) -# foam.priority = 15 -# -# # Start all animations -# run ocean_base -# run wave1 -# run wave2 -# run foam - import animation # Ocean Waves - Blue-green wave simulation @@ -86,11 +32,13 @@ wave1_.pos = 0 # initial position wave1_.beacon_size = 12 # wave width wave1_.slew_size = 6 # soft edges wave1_.priority = 10 -var temp_sawtooth_145 = animation.sawtooth(engine) -temp_sawtooth_145.min_value = 0 -temp_sawtooth_145.max_value = 48 -temp_sawtooth_145.duration = 5000 -wave1_.pos = temp_sawtooth_145 # 60-12 = 48 +wave1_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = 48 + provider.duration = 5000 + return provider +end)(engine) # 60-12 = 48 var wave2_pattern_ = animation.rich_palette(engine) wave2_pattern_.palette = ocean_colors_ wave2_pattern_.cycle_period = 4000 @@ -102,11 +50,13 @@ wave2_.pos = 52 # initial position wave2_.beacon_size = 8 # smaller wave wave2_.slew_size = 4 # soft edges wave2_.priority = 8 -var temp_sawtooth_222 = animation.sawtooth(engine) -temp_sawtooth_222.min_value = 52 -temp_sawtooth_222.max_value = 8 -temp_sawtooth_222.duration = 7000 -wave2_.pos = temp_sawtooth_222 # Opposite direction +wave2_.pos = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 52 + provider.max_value = 8 + provider.duration = 7000 + return provider +end)(engine) # Opposite direction # Add foam sparkles var foam_ = animation.twinkle_animation(engine) foam_.color = 0xFFFFFFFF # White foam @@ -119,3 +69,58 @@ engine.add_animation(wave1_) engine.add_animation(wave2_) engine.add_animation(foam_) engine.start() + + +#- Original DSL source: +# Ocean Waves - Blue-green wave simulation +# Flowing water colors with wave motion + +#strip length 60 + +# Define ocean color palette +palette ocean_colors = [ + (0, 0x000080), # Deep blue + (64, 0x0040C0), # Ocean blue + (128, 0x0080FF), # Light blue + (192, 0x40C0FF), # Cyan + (255, 0x80FFFF) # Light cyan +] + +# Base ocean animation with slow color cycling +animation ocean_base = rich_palette_animation(palette=ocean_colors, cycle_period=8s, transition_type=SINE, brightness=200) + +# Add wave motion with moving pulses +color wave1_pattern = rich_palette(palette=ocean_colors, cycle_period=6s, transition_type=SINE, brightness=255) +animation wave1 = beacon_animation( + color=wave1_pattern # color source + pos=0 # initial position + beacon_size=12 # wave width + slew_size=6 # soft edges +) +wave1.priority = 10 +wave1.pos = sawtooth(min_value=0, max_value=48, duration=5s) # 60-12 = 48 + +color wave2_pattern = rich_palette(palette=ocean_colors, cycle_period=4s, transition_type=SINE, brightness=180) +animation wave2 = beacon_animation( + color=wave2_pattern # color source + pos=52 # initial position + beacon_size=8 # smaller wave + slew_size=4 # soft edges +) +wave2.priority = 8 +wave2.pos = sawtooth(min_value=52, max_value=8, duration=7s) # Opposite direction + +# Add foam sparkles +animation foam = twinkle_animation( + color=0xFFFFFF # White foam + density=6 # density (sparkle count) + twinkle_speed=300ms # twinkle speed (quick sparkles) +) +foam.priority = 15 + +# Start all animations +run ocean_base +run wave1 +run wave2 +run foam +-# 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 4898584ff..cecf445af 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be @@ -1,52 +1,9 @@ # Generated Berry code from Animation DSL # Source: palette_demo.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Palette Demo - Shows how to use custom palettes in DSL -# # This demonstrates the new palette syntax -# -# #strip length 30 -# -# # Define a fire palette -# palette fire_colors = [ -# (0, 0x000000), # Black -# (64, 0x800000), # Dark red -# (128, 0xFF0000), # Red -# (192, 0xFF8000), # Orange -# (255, 0xFFFF00) # Yellow -# ] -# -# # Define an ocean palette -# palette ocean_colors = [ -# (0, 0x000080), # Navy blue -# (64, 0x0000FF), # Blue -# (128, 0x00FFFF), # Cyan -# (192, 0x00FF80), # Spring green -# (255, 0x008000) # Green -# ] -# -# # Create animations using the palettes -# animation fire_anim = rich_palette_animation(palette=fire_colors, cycle_period=5s) -# -# animation ocean_anim = rich_palette_animation(palette=ocean_colors, cycle_period=8s) -# -# # Sequence to show both palettes -# sequence palette_demo { -# play fire_anim for 10s -# wait 1s -# play ocean_anim for 10s -# wait 1s -# repeat 2 times: -# play fire_anim for 3s -# play ocean_anim for 3s -# } -# -# run palette_demo - import animation # Palette Demo - Shows how to use custom palettes in DSL @@ -83,3 +40,47 @@ var palette_demo_ = (def (engine) end)(engine) engine.add_sequence_manager(palette_demo_) engine.start() + + +#- Original DSL source: +# Palette Demo - Shows how to use custom palettes in DSL +# This demonstrates the new palette syntax + +#strip length 30 + +# Define a fire palette +palette fire_colors = [ + (0, 0x000000), # Black + (64, 0x800000), # Dark red + (128, 0xFF0000), # Red + (192, 0xFF8000), # Orange + (255, 0xFFFF00) # Yellow +] + +# Define an ocean palette +palette ocean_colors = [ + (0, 0x000080), # Navy blue + (64, 0x0000FF), # Blue + (128, 0x00FFFF), # Cyan + (192, 0x00FF80), # Spring green + (255, 0x008000) # Green +] + +# Create animations using the palettes +animation fire_anim = rich_palette_animation(palette=fire_colors, cycle_period=5s) + +animation ocean_anim = rich_palette_animation(palette=ocean_colors, cycle_period=8s) + +# Sequence to show both palettes +sequence palette_demo { + play fire_anim for 10s + wait 1s + play ocean_anim for 10s + wait 1s + repeat 2 times: + play fire_anim for 3s + play ocean_anim for 3s +} + +run 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 fe77647f1..4707e6257 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be @@ -1,93 +1,9 @@ # Generated Berry code from Animation DSL # Source: palette_showcase.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Palette Showcase - Demonstrates all palette features -# # This example shows the full range of palette capabilities -# -# #strip length 60 -# -# # Example 1: Fire palette with hex colors -# palette fire_gradient = [ -# (0, 0x000000), # Black (no fire) -# (32, 0x330000), # Very dark red -# (64, 0x660000), # Dark red -# (96, 0xCC0000), # Red -# (128, 0xFF3300), # Red-orange -# (160, 0xFF6600), # Orange -# (192, 0xFF9900), # Light orange -# (224, 0xFFCC00), # Yellow-orange -# (255, 0xFFFF00) # Bright yellow -# ] -# -# # Example 2: Ocean palette with named colors -# palette ocean_depths = [ -# (0, black), # Deep ocean -# (64, navy), # Deep blue -# (128, blue), # Ocean blue -# (192, cyan), # Shallow water -# (255, white) # Foam/waves -# ] -# -# # Example 3: Aurora palette (from the original example) -# palette aurora_borealis = [ -# (0, 0x000022), # Dark night sky -# (64, 0x004400), # Dark green -# (128, 0x00AA44), # Aurora green -# (192, 0x44AA88), # Light green -# (255, 0x88FFAA) # Bright aurora -# ] -# -# # Example 4: Sunset palette mixing hex and named colors -# palette sunset_sky = [ -# (0, 0x191970), # Midnight blue -# (64, purple), # Purple twilight -# (128, 0xFF69B4), # Hot pink -# (192, orange), # Sunset orange -# (255, yellow) # Sun -# ] -# -# # Create animations using each palette -# animation fire_effect = rich_palette_animation(palette=fire_gradient, cycle_period=3s) -# -# animation ocean_waves = rich_palette_animation(palette=ocean_depths, cycle_period=8s, transition_type=SINE, brightness=200) -# -# animation aurora_lights = rich_palette_animation(palette=aurora_borealis, cycle_period=12s, transition_type=SINE, brightness=180) -# -# animation sunset_glow = rich_palette_animation(palette=sunset_sky, cycle_period=6s, transition_type=SINE, brightness=220) -# -# # Sequence to showcase all palettes -# sequence palette_showcase { -# # Fire effect -# play fire_effect for 8s -# wait 1s -# -# # Ocean waves -# play ocean_waves for 8s -# wait 1s -# -# # Aurora borealis -# play aurora_lights for 8s -# wait 1s -# -# # Sunset -# play sunset_glow for 8s -# wait 1s -# -# # Quick cycle through all -# repeat 3 times: -# play fire_effect for 2s -# play ocean_waves for 2s -# play aurora_lights for 2s -# play sunset_glow for 2s -# } -# -# run palette_showcase - import animation # Palette Showcase - Demonstrates all palette features @@ -151,3 +67,88 @@ var palette_showcase_ = (def (engine) end)(engine) engine.add_sequence_manager(palette_showcase_) engine.start() + + +#- Original DSL source: +# Palette Showcase - Demonstrates all palette features +# This example shows the full range of palette capabilities + +#strip length 60 + +# Example 1: Fire palette with hex colors +palette fire_gradient = [ + (0, 0x000000), # Black (no fire) + (32, 0x330000), # Very dark red + (64, 0x660000), # Dark red + (96, 0xCC0000), # Red + (128, 0xFF3300), # Red-orange + (160, 0xFF6600), # Orange + (192, 0xFF9900), # Light orange + (224, 0xFFCC00), # Yellow-orange + (255, 0xFFFF00) # Bright yellow +] + +# Example 2: Ocean palette with named colors +palette ocean_depths = [ + (0, black), # Deep ocean + (64, navy), # Deep blue + (128, blue), # Ocean blue + (192, cyan), # Shallow water + (255, white) # Foam/waves +] + +# Example 3: Aurora palette (from the original example) +palette aurora_borealis = [ + (0, 0x000022), # Dark night sky + (64, 0x004400), # Dark green + (128, 0x00AA44), # Aurora green + (192, 0x44AA88), # Light green + (255, 0x88FFAA) # Bright aurora +] + +# Example 4: Sunset palette mixing hex and named colors +palette sunset_sky = [ + (0, 0x191970), # Midnight blue + (64, purple), # Purple twilight + (128, 0xFF69B4), # Hot pink + (192, orange), # Sunset orange + (255, yellow) # Sun +] + +# Create animations using each palette +animation fire_effect = rich_palette_animation(palette=fire_gradient, cycle_period=3s) + +animation ocean_waves = rich_palette_animation(palette=ocean_depths, cycle_period=8s, transition_type=SINE, brightness=200) + +animation aurora_lights = rich_palette_animation(palette=aurora_borealis, cycle_period=12s, transition_type=SINE, brightness=180) + +animation sunset_glow = rich_palette_animation(palette=sunset_sky, cycle_period=6s, transition_type=SINE, brightness=220) + +# Sequence to showcase all palettes +sequence palette_showcase { + # Fire effect + play fire_effect for 8s + wait 1s + + # Ocean waves + play ocean_waves for 8s + wait 1s + + # Aurora borealis + play aurora_lights for 8s + wait 1s + + # Sunset + play sunset_glow for 8s + wait 1s + + # Quick cycle through all + repeat 3 times: + play fire_effect for 2s + play ocean_waves for 2s + play aurora_lights for 2s + play sunset_glow for 2s +} + +run 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 f497de974..fc7b399c9 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be @@ -1,69 +1,9 @@ # Generated Berry code from Animation DSL # Source: plasma_wave.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Plasma Wave - Smooth flowing plasma colors -# # Continuous color waves like plasma display -# -# #strip length 60 -# -# # Define plasma color palette with smooth transitions -# palette plasma_colors = [ -# (0, 0xFF0080), # Magenta -# (51, 0xFF8000), # Orange -# (102, 0xFFFF00), # Yellow -# (153, 0x80FF00), # Yellow-green -# (204, 0x00FF80), # Cyan-green -# (255, 0x0080FF) # Blue -# ] -# -# # Base plasma animation with medium speed -# animation plasma_base = rich_palette_animation(palette=plasma_colors, cycle_period=6s, transition_type=SINE, brightness=200) -# -# # Add multiple wave layers for complexity -# color wave1_pattern = rich_palette(palette=plasma_colors, cycle_period=4s, transition_type=SINE, brightness=255) -# animation plasma_wave1 = beacon_animation( -# color=wave1_pattern # color source -# pos=0 # initial position -# beacon_size=20 # wide wave -# slew_size=10 # very smooth -# ) -# plasma_wave1.priority = 10 -# plasma_wave1.pos = smooth(min_value=0, max_value=40, duration=8s) -# -# color wave2_pattern = rich_palette(palette=plasma_colors, cycle_period=5s, transition_type=SINE, brightness=180) -# animation plasma_wave2 = beacon_animation( -# color=wave2_pattern # color source -# pos=45 # initial position -# beacon_size=15 # medium wave -# slew_size=8 # smooth -# ) -# plasma_wave2.priority = 8 -# plasma_wave2.pos = smooth(min_value=45, max_value=15, duration=10s) # Opposite direction -# -# color wave3_pattern = rich_palette(palette=plasma_colors, cycle_period=3s, transition_type=SINE, brightness=220) -# animation plasma_wave3 = beacon_animation( -# color=wave3_pattern # color source -# pos=20 # initial position -# beacon_size=12 # smaller wave -# slew_size=6 # smooth -# ) -# plasma_wave3.priority = 12 -# plasma_wave3.pos = smooth(min_value=20, max_value=50, duration=6s) # Different speed -# -# # Add subtle intensity variation -# plasma_base.opacity = smooth(min_value=150, max_value=255, duration=12s) -# -# # Start all animations -# run plasma_base -# run plasma_wave1 -# run plasma_wave2 -# run plasma_wave3 - import animation # Plasma Wave - Smooth flowing plasma colors @@ -92,11 +32,13 @@ plasma_wave1_.pos = 0 # initial position plasma_wave1_.beacon_size = 20 # wide wave plasma_wave1_.slew_size = 10 # very smooth plasma_wave1_.priority = 10 -var temp_smooth_153 = animation.smooth(engine) -temp_smooth_153.min_value = 0 -temp_smooth_153.max_value = 40 -temp_smooth_153.duration = 8000 -plasma_wave1_.pos = temp_smooth_153 +plasma_wave1_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 40 + provider.duration = 8000 + return provider +end)(engine) var wave2_pattern_ = animation.rich_palette(engine) wave2_pattern_.palette = plasma_colors_ wave2_pattern_.cycle_period = 5000 @@ -108,11 +50,13 @@ plasma_wave2_.pos = 45 # initial position plasma_wave2_.beacon_size = 15 # medium wave plasma_wave2_.slew_size = 8 # smooth plasma_wave2_.priority = 8 -var temp_smooth_229 = animation.smooth(engine) -temp_smooth_229.min_value = 45 -temp_smooth_229.max_value = 15 -temp_smooth_229.duration = 10000 -plasma_wave2_.pos = temp_smooth_229 # Opposite direction +plasma_wave2_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 45 + provider.max_value = 15 + provider.duration = 10000 + return provider +end)(engine) # Opposite direction var wave3_pattern_ = animation.rich_palette(engine) wave3_pattern_.palette = plasma_colors_ wave3_pattern_.cycle_period = 3000 @@ -124,20 +68,85 @@ plasma_wave3_.pos = 20 # initial position plasma_wave3_.beacon_size = 12 # smaller wave plasma_wave3_.slew_size = 6 # smooth plasma_wave3_.priority = 12 -var temp_smooth_306 = animation.smooth(engine) -temp_smooth_306.min_value = 20 -temp_smooth_306.max_value = 50 -temp_smooth_306.duration = 6000 -plasma_wave3_.pos = temp_smooth_306 # Different speed +plasma_wave3_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 20 + provider.max_value = 50 + provider.duration = 6000 + return provider +end)(engine) # Different speed # Add subtle intensity variation -var temp_smooth_329 = animation.smooth(engine) -temp_smooth_329.min_value = 150 -temp_smooth_329.max_value = 255 -temp_smooth_329.duration = 12000 -plasma_base_.opacity = temp_smooth_329 +plasma_base_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 150 + provider.max_value = 255 + provider.duration = 12000 + return provider +end)(engine) # Start all animations engine.add_animation(plasma_base_) engine.add_animation(plasma_wave1_) engine.add_animation(plasma_wave2_) engine.add_animation(plasma_wave3_) engine.start() + + +#- Original DSL source: +# Plasma Wave - Smooth flowing plasma colors +# Continuous color waves like plasma display + +#strip length 60 + +# Define plasma color palette with smooth transitions +palette plasma_colors = [ + (0, 0xFF0080), # Magenta + (51, 0xFF8000), # Orange + (102, 0xFFFF00), # Yellow + (153, 0x80FF00), # Yellow-green + (204, 0x00FF80), # Cyan-green + (255, 0x0080FF) # Blue +] + +# Base plasma animation with medium speed +animation plasma_base = rich_palette_animation(palette=plasma_colors, cycle_period=6s, transition_type=SINE, brightness=200) + +# Add multiple wave layers for complexity +color wave1_pattern = rich_palette(palette=plasma_colors, cycle_period=4s, transition_type=SINE, brightness=255) +animation plasma_wave1 = beacon_animation( + color=wave1_pattern # color source + pos=0 # initial position + beacon_size=20 # wide wave + slew_size=10 # very smooth +) +plasma_wave1.priority = 10 +plasma_wave1.pos = smooth(min_value=0, max_value=40, duration=8s) + +color wave2_pattern = rich_palette(palette=plasma_colors, cycle_period=5s, transition_type=SINE, brightness=180) +animation plasma_wave2 = beacon_animation( + color=wave2_pattern # color source + pos=45 # initial position + beacon_size=15 # medium wave + slew_size=8 # smooth +) +plasma_wave2.priority = 8 +plasma_wave2.pos = smooth(min_value=45, max_value=15, duration=10s) # Opposite direction + +color wave3_pattern = rich_palette(palette=plasma_colors, cycle_period=3s, transition_type=SINE, brightness=220) +animation plasma_wave3 = beacon_animation( + color=wave3_pattern # color source + pos=20 # initial position + beacon_size=12 # smaller wave + slew_size=6 # smooth +) +plasma_wave3.priority = 12 +plasma_wave3.pos = smooth(min_value=20, max_value=50, duration=6s) # Different speed + +# Add subtle intensity variation +plasma_base.opacity = smooth(min_value=150, max_value=255, duration=12s) + +# Start all animations +run plasma_base +run plasma_wave1 +run plasma_wave2 +run plasma_wave3 +-# 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 ea006bf8d..3bc78aa88 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be @@ -1,49 +1,9 @@ # Generated Berry code from Animation DSL # Source: police_lights.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Police Lights - Red and blue alternating flashes -# # Emergency vehicle style lighting -# -# #strip length 60 -# -# # Define zones for left and right halves -# set half_length = 30 -# -# # Left side red flashing -# animation left_red = beacon_animation( -# color=0xFF0000 # Bright red -# pos=15 # center of left half -# beacon_size=15 # half the strip -# slew_size=2 # sharp edges -# ) -# 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( -# color=0x0000FF # Bright blue -# pos=45 # center of right half -# beacon_size=15 # half the strip -# slew_size=2 # sharp edges -# ) -# right_blue.priority = 10 -# right_blue.opacity = square(min_value=255, max_value=0, duration=400ms, duty_cycle=50) # Opposite phase -# -# # Add white strobe overlay occasionally -# animation white_strobe = solid(color=0xFFFFFF) -# white_strobe.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=5) # Quick bright flashes -# white_strobe.priority = 20 -# -# # Start all animations -# run left_red -# run right_blue -# run white_strobe - import animation # Police Lights - Red and blue alternating flashes @@ -61,12 +21,14 @@ left_red_.pos = 15 # center of left half left_red_.beacon_size = 15 # half the strip left_red_.slew_size = 2 # sharp edges left_red_.priority = 10 -var temp_square_57 = animation.square(engine) -temp_square_57.min_value = 0 -temp_square_57.max_value = 255 -temp_square_57.duration = 400 -temp_square_57.duty_cycle = 50 -left_red_.opacity = temp_square_57 # 50% duty cycle +left_red_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 400 + provider.duty_cycle = 50 + return provider +end)(engine) # 50% duty cycle # Right side blue flashing (opposite phase) var right_blue_ = animation.beacon_animation(engine) right_blue_.color = 0xFF0000FF # Bright blue @@ -74,24 +36,69 @@ right_blue_.pos = 45 # center of right half right_blue_.beacon_size = 15 # half the strip right_blue_.slew_size = 2 # sharp edges right_blue_.priority = 10 -var temp_square_118 = animation.square(engine) -temp_square_118.min_value = 255 -temp_square_118.max_value = 0 -temp_square_118.duration = 400 -temp_square_118.duty_cycle = 50 -right_blue_.opacity = temp_square_118 # Opposite phase +right_blue_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 255 + provider.max_value = 0 + provider.duration = 400 + provider.duty_cycle = 50 + return provider +end)(engine) # Opposite phase # Add white strobe overlay occasionally var white_strobe_ = animation.solid(engine) white_strobe_.color = 0xFFFFFFFF -var temp_square_155 = animation.square(engine) -temp_square_155.min_value = 0 -temp_square_155.max_value = 255 -temp_square_155.duration = 100 -temp_square_155.duty_cycle = 5 -white_strobe_.opacity = temp_square_155 # Quick bright flashes +white_strobe_.opacity = (def (engine) + var provider = animation.square(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 100 + provider.duty_cycle = 5 + return provider +end)(engine) # Quick bright flashes white_strobe_.priority = 20 # Start all animations engine.add_animation(left_red_) engine.add_animation(right_blue_) engine.add_animation(white_strobe_) engine.start() + + +#- Original DSL source: +# Police Lights - Red and blue alternating flashes +# Emergency vehicle style lighting + +#strip length 60 + +# Define zones for left and right halves +set half_length = 30 + +# Left side red flashing +animation left_red = beacon_animation( + color=0xFF0000 # Bright red + pos=15 # center of left half + beacon_size=15 # half the strip + slew_size=2 # sharp edges +) +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( + color=0x0000FF # Bright blue + pos=45 # center of right half + beacon_size=15 # half the strip + slew_size=2 # sharp edges +) +right_blue.priority = 10 +right_blue.opacity = square(min_value=255, max_value=0, duration=400ms, duty_cycle=50) # Opposite phase + +# Add white strobe overlay occasionally +animation white_strobe = solid(color=0xFFFFFF) +white_strobe.opacity = square(min_value=0, max_value=255, duration=100ms, duty_cycle=5) # Quick bright flashes +white_strobe.priority = 20 + +# Start all animations +run left_red +run right_blue +run white_strobe +-# 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 a15a7a830..8b77929f9 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 @@ -1,55 +1,9 @@ # Generated Berry code from Animation DSL # Source: property_assignment_demo.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Property Assignment Demo -# # Shows how to set animation properties after creation -# -# #strip length 60 -# -# # Define colors -# color red_custom = 0xFF0000 -# 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) -# -# # Set different opacities -# left_pulse.opacity = 255 # Full slew_size -# center_pulse.opacity = 200 # Slightly dimmed -# right_pulse.opacity = 150 # More dimmed -# -# # Set priorities (higher numbers have priority) -# left_pulse.priority = 10 -# center_pulse.priority = 15 # Center has highest priority -# right_pulse.priority = 5 -# -# # Create a sequence that shows all three -# sequence demo { -# play left_pulse for 3s -# wait 500ms -# play center_pulse for 3s -# wait 500ms -# play right_pulse for 3s -# wait 500ms -# -# # Play all together for final effect -# repeat 3 times: -# play left_pulse for 2s -# play center_pulse for 2s -# play right_pulse for 2s -# wait 1s -# } -# -# run demo - import animation # Property Assignment Demo @@ -108,3 +62,50 @@ var demo_ = (def (engine) end)(engine) engine.add_sequence_manager(demo_) engine.start() + + +#- Original DSL source: +# Property Assignment Demo +# Shows how to set animation properties after creation + +#strip length 60 + +# Define colors +color red_custom = 0xFF0000 +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) + +# Set different opacities +left_pulse.opacity = 255 # Full slew_size +center_pulse.opacity = 200 # Slightly dimmed +right_pulse.opacity = 150 # More dimmed + +# Set priorities (higher numbers have priority) +left_pulse.priority = 10 +center_pulse.priority = 15 # Center has highest priority +right_pulse.priority = 5 + +# Create a sequence that shows all three +sequence demo { + play left_pulse for 3s + wait 500ms + play center_pulse for 3s + wait 500ms + play right_pulse for 3s + wait 500ms + + # Play all together for final effect + repeat 3 times: + play left_pulse for 2s + play center_pulse for 2s + play right_pulse for 2s + wait 1s +} + +run demo +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be b/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be index 2c2145c4a..d4108e508 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be @@ -1,26 +1,9 @@ # Generated Berry code from Animation DSL # Source: rainbow_cycle.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Rainbow Cycle - Classic WLED effect -# # Smooth rainbow colors cycling across the strip -# -# #strip length 60 -# -# # Create smooth rainbow cycle animation -# color rainbow_cycle = color_cycle( -# palette=[0xFF0000, 0xFF8000, 0xFFFF00, 0x00FF00, 0x0000FF, 0x8000FF, 0xFF00FF] # rainbow colors -# cycle_period=5s # cycle period -# ) -# animation rainbow_animation = solid(color=rainbow_cycle) -# -# # Start the animation -# run rainbow_animation - import animation # Rainbow Cycle - Classic WLED effect @@ -38,3 +21,21 @@ rainbow_animation_.color = rainbow_cycle_ # Start the animation engine.add_animation(rainbow_animation_) engine.start() + + +#- Original DSL source: +# Rainbow Cycle - Classic WLED effect +# Smooth rainbow colors cycling across the strip + +#strip length 60 + +# Create smooth rainbow cycle animation +color rainbow_cycle = color_cycle( + palette=[0xFF0000, 0xFF8000, 0xFFFF00, 0x00FF00, 0x0000FF, 0x8000FF, 0xFF00FF] # rainbow colors + cycle_period=5s # cycle period +) +animation rainbow_animation = solid(color=rainbow_cycle) + +# Start the animation +run rainbow_animation +-# 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 0156ba5bb..fe37a2523 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be @@ -1,49 +1,9 @@ # Generated Berry code from Animation DSL # Source: scanner_larson.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Scanner (Larson) - Knight Rider style scanner -# # Red dot bouncing back and forth -# -# #strip length 60 -# -# # Dark background -# color scanner_bg = 0x110000 -# animation background = solid(color=scanner_bg) -# -# # Main scanner pulse that bounces -# animation scanner = beacon_animation( -# color=0xFF0000 # Bright red -# pos=2 # initial position -# beacon_size=3 # pulse width -# slew_size=2 # fade region -# ) -# scanner.priority = 10 -# -# # Bouncing position from left to right and back -# scanner.pos = triangle(min_value=2, max_value=57, duration=2s) -# -# # Add trailing glow effect -# animation scanner_trail = beacon_animation( -# color=0x660000 # Dim red trail -# pos=2 # initial position -# beacon_size=6 # wider trail -# slew_size=4 # more fade -# ) -# scanner_trail.priority = 5 -# set pos_test = triangle(min_value=2, max_value=57, duration=2s) -# scanner_trail.pos = pos_test -# scanner_trail.opacity = 128 # Half brightness -# -# # Start all animations -# run background -# run scanner_trail -# run scanner - import animation # Scanner (Larson) - Knight Rider style scanner @@ -64,11 +24,13 @@ scanner_.beacon_size = 3 # pulse width scanner_.slew_size = 2 # fade region scanner_.priority = 10 # Bouncing position from left to right and back -var temp_triangle_70 = animation.triangle(engine) -temp_triangle_70.min_value = 2 -temp_triangle_70.max_value = 57 -temp_triangle_70.duration = 2000 -scanner_.pos = temp_triangle_70 +scanner_.pos = (def (engine) + var provider = animation.triangle(engine) + provider.min_value = 2 + provider.max_value = 57 + provider.duration = 2000 + return provider +end)(engine) # Add trailing glow effect var scanner_trail_ = animation.beacon_animation(engine) scanner_trail_.color = 0xFF660000 # Dim red trail @@ -76,11 +38,13 @@ scanner_trail_.pos = 2 # initial position scanner_trail_.beacon_size = 6 # wider trail scanner_trail_.slew_size = 4 # more fade scanner_trail_.priority = 5 -var temp_triangle_125 = animation.triangle(engine) -temp_triangle_125.min_value = 2 -temp_triangle_125.max_value = 57 -temp_triangle_125.duration = 2000 -var pos_test_ = temp_triangle_125 +var pos_test_ = (def (engine) + var provider = animation.triangle(engine) + provider.min_value = 2 + provider.max_value = 57 + provider.duration = 2000 + return provider +end)(engine) scanner_trail_.pos = pos_test_ scanner_trail_.opacity = 128 # Half brightness # Start all animations @@ -88,3 +52,44 @@ engine.add_animation(background_) engine.add_animation(scanner_trail_) engine.add_animation(scanner_) engine.start() + + +#- Original DSL source: +# Scanner (Larson) - Knight Rider style scanner +# Red dot bouncing back and forth + +#strip length 60 + +# Dark background +color scanner_bg = 0x110000 +animation background = solid(color=scanner_bg) + +# Main scanner pulse that bounces +animation scanner = beacon_animation( + color=0xFF0000 # Bright red + pos=2 # initial position + beacon_size=3 # pulse width + slew_size=2 # fade region +) +scanner.priority = 10 + +# Bouncing position from left to right and back +scanner.pos = triangle(min_value=2, max_value=57, duration=2s) + +# Add trailing glow effect +animation scanner_trail = beacon_animation( + color=0x660000 # Dim red trail + pos=2 # initial position + beacon_size=6 # wider trail + slew_size=4 # more fade +) +scanner_trail.priority = 5 +set pos_test = triangle(min_value=2, max_value=57, duration=2s) +scanner_trail.pos = pos_test +scanner_trail.opacity = 128 # Half brightness + +# Start all animations +run background +run scanner_trail +run scanner +-# 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 a099e072a..ec0210612 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be @@ -1,35 +1,9 @@ # Generated Berry code from Animation DSL # Source: simple_palette.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Simple Palette Example -# # Demonstrates basic palette usage in the DSL -# -# #strip length 20 -# -# # Define a simple rainbow palette -# palette rainbow = [ -# (0, red), -# (64, orange), -# (128, yellow), -# (192, green), -# (255, blue) -# ] -# -# # Create an animation using the palette -# animation rainbow_cycle = rich_palette_animation(palette=rainbow, cycle_period=3s) -# -# # Simple sequence -# sequence demo { -# play rainbow_cycle for 15s -# } -# -# run demo - import animation # Simple Palette Example @@ -54,3 +28,30 @@ var demo_ = (def (engine) end)(engine) engine.add_sequence_manager(demo_) engine.start() + + +#- Original DSL source: +# Simple Palette Example +# Demonstrates basic palette usage in the DSL + +#strip length 20 + +# Define a simple rainbow palette +palette rainbow = [ + (0, red), + (64, orange), + (128, yellow), + (192, green), + (255, blue) +] + +# Create an animation using the palette +animation rainbow_cycle = rich_palette_animation(palette=rainbow, cycle_period=3s) + +# Simple sequence +sequence demo { + play rainbow_cycle for 15s +} + +run 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 01d8da839..7cb99fcb0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be @@ -1,69 +1,9 @@ # Generated Berry code from Animation DSL # Source: sunrise_sunset.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Sunrise Sunset - Warm color transition -# # Gradual transition from night to day colors -# -# #strip length 60 -# -# # Define time-of-day color palette -# palette daylight_colors = [ -# (0, 0x000011), # Night - dark blue -# (32, 0x001133), # Pre-dawn -# (64, 0xFF4400), # Sunrise orange -# (96, 0xFFAA00), # Morning yellow -# (128, 0xFFFF88), # Midday bright -# (160, 0xFFAA44), # Afternoon -# (192, 0xFF6600), # Sunset orange -# (224, 0xAA2200), # Dusk red -# (255, 0x220011) # Night - dark red -# ] -# -# # Main daylight cycle - very slow transition -# animation daylight_cycle = rich_palette_animation(palette=daylight_colors, cycle_period=60s) -# -# # Add sun position effect - bright spot that moves -# animation sun_position = beacon_animation( -# color=0xFFFFAA # Bright yellow sun -# pos=5 # initial position -# beacon_size=8 # sun size -# slew_size=4 # soft glow -# ) -# sun_position.priority = 10 -# sun_position.pos = smooth(min_value=5, max_value=55, duration=30s) # Sun arc across sky -# 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( -# color=0xFFCC88 # Warm glow -# pos=5 # initial position -# beacon_size=16 # larger glow -# slew_size=8 # very soft -# ) -# sun_glow.priority = 5 -# sun_glow.pos = smooth(min_value=5, max_value=55, duration=30s) # Follow sun -# sun_glow.opacity = smooth(min_value=0, max_value=150, duration=30s) # Dimmer glow -# -# # Add twinkling stars during night phases -# animation stars = twinkle_animation( -# color=0xFFFFFF # White stars -# density=6 # density (star count) -# twinkle_speed=1s # twinkle speed (slow twinkle) -# ) -# stars.priority = 15 -# stars.opacity = smooth(min_value=255, max_value=0, duration=30s) # Fade out during day -# -# # Start all animations -# run daylight_cycle -# run sun_position -# run sun_glow -# run stars - import animation # Sunrise Sunset - Warm color transition @@ -85,16 +25,20 @@ sun_position_.pos = 5 # initial position sun_position_.beacon_size = 8 # sun size sun_position_.slew_size = 4 # soft glow sun_position_.priority = 10 -var temp_smooth_147 = animation.smooth(engine) -temp_smooth_147.min_value = 5 -temp_smooth_147.max_value = 55 -temp_smooth_147.duration = 30000 -sun_position_.pos = temp_smooth_147 # Sun arc across sky -var temp_smooth_167 = animation.smooth(engine) -temp_smooth_167.min_value = 0 -temp_smooth_167.max_value = 255 -temp_smooth_167.duration = 30000 -sun_position_.opacity = temp_smooth_167 # Fade in and out +sun_position_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 5 + provider.max_value = 55 + provider.duration = 30000 + return provider +end)(engine) # Sun arc across sky +sun_position_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 255 + provider.duration = 30000 + return provider +end)(engine) # Fade in and out # Add atmospheric glow around sun var sun_glow_ = animation.beacon_animation(engine) sun_glow_.color = 0xFFFFCC88 # Warm glow @@ -102,30 +46,97 @@ sun_glow_.pos = 5 # initial position sun_glow_.beacon_size = 16 # larger glow sun_glow_.slew_size = 8 # very soft sun_glow_.priority = 5 -var temp_smooth_224 = animation.smooth(engine) -temp_smooth_224.min_value = 5 -temp_smooth_224.max_value = 55 -temp_smooth_224.duration = 30000 -sun_glow_.pos = temp_smooth_224 # Follow sun -var temp_smooth_244 = animation.smooth(engine) -temp_smooth_244.min_value = 0 -temp_smooth_244.max_value = 150 -temp_smooth_244.duration = 30000 -sun_glow_.opacity = temp_smooth_244 # Dimmer glow +sun_glow_.pos = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 5 + provider.max_value = 55 + provider.duration = 30000 + return provider +end)(engine) # Follow sun +sun_glow_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 0 + provider.max_value = 150 + provider.duration = 30000 + return provider +end)(engine) # Dimmer glow # Add twinkling stars during night phases var stars_ = animation.twinkle_animation(engine) stars_.color = 0xFFFFFFFF # White stars stars_.density = 6 # density (star count) stars_.twinkle_speed = 1000 # twinkle speed (slow twinkle) stars_.priority = 15 -var temp_smooth_296 = animation.smooth(engine) -temp_smooth_296.min_value = 255 -temp_smooth_296.max_value = 0 -temp_smooth_296.duration = 30000 -stars_.opacity = temp_smooth_296 # Fade out during day +stars_.opacity = (def (engine) + var provider = animation.smooth(engine) + provider.min_value = 255 + provider.max_value = 0 + provider.duration = 30000 + return provider +end)(engine) # Fade out during day # Start all animations engine.add_animation(daylight_cycle_) engine.add_animation(sun_position_) engine.add_animation(sun_glow_) engine.add_animation(stars_) engine.start() + + +#- Original DSL source: +# Sunrise Sunset - Warm color transition +# Gradual transition from night to day colors + +#strip length 60 + +# Define time-of-day color palette +palette daylight_colors = [ + (0, 0x000011), # Night - dark blue + (32, 0x001133), # Pre-dawn + (64, 0xFF4400), # Sunrise orange + (96, 0xFFAA00), # Morning yellow + (128, 0xFFFF88), # Midday bright + (160, 0xFFAA44), # Afternoon + (192, 0xFF6600), # Sunset orange + (224, 0xAA2200), # Dusk red + (255, 0x220011) # Night - dark red +] + +# Main daylight cycle - very slow transition +animation daylight_cycle = rich_palette_animation(palette=daylight_colors, cycle_period=60s) + +# Add sun position effect - bright spot that moves +animation sun_position = beacon_animation( + color=0xFFFFAA # Bright yellow sun + pos=5 # initial position + beacon_size=8 # sun size + slew_size=4 # soft glow +) +sun_position.priority = 10 +sun_position.pos = smooth(min_value=5, max_value=55, duration=30s) # Sun arc across sky +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( + color=0xFFCC88 # Warm glow + pos=5 # initial position + beacon_size=16 # larger glow + slew_size=8 # very soft +) +sun_glow.priority = 5 +sun_glow.pos = smooth(min_value=5, max_value=55, duration=30s) # Follow sun +sun_glow.opacity = smooth(min_value=0, max_value=150, duration=30s) # Dimmer glow + +# Add twinkling stars during night phases +animation stars = twinkle_animation( + color=0xFFFFFF # White stars + density=6 # density (star count) + twinkle_speed=1s # twinkle speed (slow twinkle) +) +stars.priority = 15 +stars.opacity = smooth(min_value=255, max_value=0, duration=30s) # Fade out during day + +# Start all animations +run daylight_cycle +run sun_position +run sun_glow +run stars +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be b/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be index 5f1926e16..8ecea3e86 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be @@ -1,41 +1,9 @@ # Generated Berry code from Animation DSL # Source: twinkle_stars.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # Twinkle Stars - Random sparkling white stars -# # White sparkles on dark blue background -# -# #strip length 60 -# -# # Dark blue background -# color night_sky = 0x000033 -# animation background = solid(color=night_sky) -# -# # White twinkling stars -# animation stars = twinkle_animation( -# color=0xFFFFFF # White stars -# density=8 # density (number of stars) -# twinkle_speed=500ms # twinkle speed (twinkle duration) -# ) -# stars.priority = 10 -# -# # Add occasional bright flash -# animation bright_flash = twinkle_animation( -# color=0xFFFFAA # Bright yellow-white -# density=2 # density (fewer bright flashes) -# twinkle_speed=300ms # twinkle speed (quick flash) -# ) -# bright_flash.priority = 15 -# -# # Start all animations -# run background -# run stars -# run bright_flash - import animation # Twinkle Stars - Random sparkling white stars @@ -65,3 +33,36 @@ engine.add_animation(background_) engine.add_animation(stars_) engine.add_animation(bright_flash_) engine.start() + + +#- Original DSL source: +# Twinkle Stars - Random sparkling white stars +# White sparkles on dark blue background + +#strip length 60 + +# Dark blue background +color night_sky = 0x000033 +animation background = solid(color=night_sky) + +# White twinkling stars +animation stars = twinkle_animation( + color=0xFFFFFF # White stars + density=8 # density (number of stars) + twinkle_speed=500ms # twinkle speed (twinkle duration) +) +stars.priority = 10 + +# Add occasional bright flash +animation bright_flash = twinkle_animation( + color=0xFFFFAA # Bright yellow-white + density=2 # density (fewer bright flashes) + twinkle_speed=300ms # twinkle speed (quick flash) +) +bright_flash.priority = 15 + +# Start all animations +run background +run stars +run bright_flash +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be index 9d0a0b5d9..24f876f7c 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be @@ -1,64 +1,9 @@ # Generated Berry code from Animation DSL # Source: user_functions_demo.anim -# Generated automatically # # This file was automatically generated by compile_all_examples.sh # Do not edit manually - changes will be overwritten -# Original DSL source: -# # User Functions Demo - Advanced Computed Parameters -# # Shows how to use user functions in computed parameters via property assignments -# -# # Get the current strip length for calculations -# set strip_len = strip_length() -# -# # Example 1: Simple user function in computed parameter -# animation random_base = solid( -# color=blue -# priority=10 -# ) -# # Use user function in property assignment -# random_base.opacity = rand_demo() -# -# # Example 2: User function with mathematical operations -# animation random_bounded = solid( -# color=orange -# priority=8 -# ) -# # User function with bounds using math functions -# random_bounded.opacity = max(50, min(255, rand_demo() + 100)) -# -# # Example 3: User function in arithmetic expressions -# animation random_variation = solid( -# color=purple -# priority=15 -# ) -# # Mix user function with arithmetic operations -# random_variation.opacity = abs(rand_demo() - 128) + 64 -# -# # Example 4: User function affecting different properties -# animation random_multi = solid( -# color=cyan -# priority=12 -# ) -# # Use user function for multiple properties -# random_multi.opacity = max(100, rand_demo()) -# -# # Example 5: Complex expression with user function -# animation random_complex = solid( -# color=white -# priority=20 -# ) -# # Complex expression with user function and math operations -# random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) -# -# # Run all animations to demonstrate the effects -# run random_base -# run random_bounded -# run random_variation -# run random_multi -# run random_complex - import animation # User Functions Demo - Advanced Computed Parameters @@ -67,8 +12,7 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var temp_strip_length_11 = animation.strip_length(engine) -var strip_len_ = temp_strip_length_11 +var strip_len_ = animation.strip_length(engine) # Example 1: Simple user function in computed parameter var random_base_ = animation.solid(engine) random_base_.color = 0xFF0000FF @@ -106,3 +50,59 @@ engine.add_animation(random_variation_) engine.add_animation(random_multi_) engine.add_animation(random_complex_) engine.start() + + +#- Original DSL source: +# User Functions Demo - Advanced Computed Parameters +# Shows how to use user functions in computed parameters via property assignments + +# Get the current strip length for calculations +set strip_len = strip_length() + +# Example 1: Simple user function in computed parameter +animation random_base = solid( + color=blue + priority=10 +) +# Use user function in property assignment +random_base.opacity = rand_demo() + +# Example 2: User function with mathematical operations +animation random_bounded = solid( + color=orange + priority=8 +) +# User function with bounds using math functions +random_bounded.opacity = max(50, min(255, rand_demo() + 100)) + +# Example 3: User function in arithmetic expressions +animation random_variation = solid( + color=purple + priority=15 +) +# Mix user function with arithmetic operations +random_variation.opacity = abs(rand_demo() - 128) + 64 + +# Example 4: User function affecting different properties +animation random_multi = solid( + color=cyan + priority=12 +) +# Use user function for multiple properties +random_multi.opacity = max(100, rand_demo()) + +# Example 5: Complex expression with user function +animation random_complex = solid( + color=white + priority=20 +) +# Complex expression with user function and math operations +random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) + +# Run all animations to demonstrate the effects +run random_base +run random_bounded +run random_variation +run random_multi +run random_complex +-# diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim b/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim new file mode 100644 index 000000000..2c6c24063 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/cylon_red_eye.anim @@ -0,0 +1,14 @@ +# Cylon Red Eye +# Automatically adapts to the length of the strip + +set strip_len = strip_length() + +# Base aurora animation with slow flowing colors +animation red_eye = beacon_animation( + color = red + pos = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s) + beacon_size = 3 # small 3 pixels eye + slew_size = 2 # with 2 pixel shading around +) + +run red_eye diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md index 023e33284..911942bb8 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md @@ -26,7 +26,7 @@ ParameterizedObject │ ├── NoiseAnimation │ ├── PlasmaAnimation │ ├── PulseAnimation -│ ├── PulsePositionAnimation +│ ├── BeaconAnimation │ ├── CrenelPositionAnimation │ ├── RichPaletteAnimation │ ├── TwinkleAnimation @@ -141,7 +141,7 @@ Generates oscillating values using various waveforms. Inherits from `ValueProvid - `8` (ELASTIC) - Spring-like overshoot and oscillation - `9` (BOUNCE) - Ball-like bouncing with decreasing amplitude -**Factories**: `animation.ramp(engine)`, `animation.sawtooth(engine)`, `animation.linear(engine)`, `animation.triangle(engine)`, `animation.smooth(engine)`, `animation.sine(engine)`, `animation.square(engine)`, `animation.ease_in(engine)`, `animation.ease_out(engine)`, `animation.elastic(engine)`, `animation.bounce(engine)`, `animation.oscillator_value(engine)` +**Factories**: `animation.ramp(engine)`, `animation.sawtooth(engine)`, `animation.linear(engine)`, `animation.triangle(engine)`, `animation.smooth(engine)`, `animation.sine_osc(engine)`, `animation.cosine_osc(engine)`, `animation.square(engine)`, `animation.ease_in(engine)`, `animation.ease_out(engine)`, `animation.elastic(engine)`, `animation.bounce(engine)`, `animation.oscillator_value(engine)` **See Also**: [Oscillation Patterns](OSCILLATION_PATTERNS.md) - Visual examples and usage patterns for oscillation waveforms @@ -169,13 +169,13 @@ The ClosureValueProvider includes built-in mathematical helper methods that can | `round(x)` | Round to nearest integer | `x: number` | `int` | `self.round(3.7)` → `4` | | `sqrt(x)` | Square root with integer handling | `x: number` | `number` | `self.sqrt(64)` → `128` (for 0-255 range) | | `scale(v, from_min, from_max, to_min, to_max)` | Scale value between ranges | `v, from_min, from_max, to_min, to_max: number` | `int` | `self.scale(50, 0, 100, 0, 255)` → `127` | -| `sine(angle)` | Sine function (0-255 input range) | `angle: number` | `int` | `self.sine(64)` → `255` (90°) | -| `cosine(angle)` | Cosine function (0-255 input range) | `angle: number` | `int` | `self.cosine(0)` → `-255` (matches oscillator behavior) | +| `sin(angle)` | Sine function (0-255 input range) | `angle: number` | `int` | `self.sin(64)` → `255` (90°) | +| `cos(angle)` | Cosine function (0-255 input range) | `angle: number` | `int` | `self.cos(0)` → `-255` (matches oscillator behavior) | **Mathematical Method Notes:** - **Integer Handling**: `sqrt()` treats integers in 0-255 range as normalized values (255 = 1.0) -- **Angle Range**: `sine()` and `cosine()` use 0-255 input range (0-360 degrees) +- **Angle Range**: `sin()` and `cos()` use 0-255 input range (0-360 degrees) - **Output Range**: Trigonometric functions return -255 to 255 (mapped from -1.0 to 1.0) - **Cosine Behavior**: Matches oscillator COSINE waveform (starts at minimum, not maximum) - **Scale Function**: Uses `tasmota.scale_int()` for efficient integer scaling @@ -787,7 +787,7 @@ Creates a pulsing effect oscillating between min and max brightness. Inherits fr **Factory**: `animation.pulsating_animation(engine)` -### PulsePositionAnimation +### BeaconAnimation Creates a pulse effect at a specific position with optional fade regions. Inherits from `Animation`. @@ -812,7 +812,7 @@ Where: The pulse consists of: - **Core pulse**: Full brightness region of `beacon_size` pixels - **Fade regions**: Optional `slew_size` pixels on each side with gradual fade -- **Total width**: `beacon_sizee + (2 * slew_size)` pixels +- **Total width**: `beacon_size + (2 * slew_size)` pixels #### Parameters @@ -840,7 +840,7 @@ The pulse consists of: animation sharp_pulse = beacon_animation( color=red, pos=10, - beacon_sizee=3, + beacon_size=3, slew_size=0 ) diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md index db5cdecee..5adac192c 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md @@ -331,12 +331,12 @@ for i: 0..(frame.width-1) end ``` -## Complete Example: PulsePositionAnimation +## Complete Example: BeaconAnimation Here's a complete example showing all concepts: ```berry -#@ solidify:PulsePositionAnimation,weak +#@ solidify:BeaconAnimation,weak class BeaconAnimation : animation.animation # NO instance variables for parameters - they are handled by the virtual parameter system @@ -466,12 +466,12 @@ class BeaconAnimation : animation.animation # String representation of the animation def tostring() - return f"PulsePositionAnimation(color=0x{self.color :08x}, pos={self.pos}, beacon_size={self.beacon_size}, slew_size={self.slew_size})" + return f"BeaconAnimation(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': PulsePositionAnimation} +return {'beacon_animation': BeaconAnimation} ``` ## Testing Your Animation diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index 1edc6c8b1..8539e38bf 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -399,8 +399,8 @@ The following mathematical functions are available in computed parameters and ar | `round(x)` | Rounds to nearest integer | One number | Rounded integer | | `sqrt(x)` | Returns the square root | One number | Square root (scaled for integers) | | `scale(v, from_min, from_max, to_min, to_max)` | Scales value from one range to another | Value and range parameters | Scaled integer | -| `sine(angle)` | Returns sine of angle | Angle in 0-255 range (0-360°) | Sine value in -255 to 255 range | -| `cosine(angle)` | Returns cosine of angle | Angle in 0-255 range (0-360°) | Cosine value in -255 to 255 range | +| `sin(angle)` | Returns sine of angle | Angle in 0-255 range (0-360°) | Sine value in -255 to 255 range | +| `cos(angle)` | Returns cosine of angle | Angle in 0-255 range (0-360°) | Cosine value in -255 to 255 range | **Mathematical Function Examples:** ```berry @@ -425,17 +425,17 @@ test.opacity = scale(strip_len, 10, 60, 50, 255) # Scale strip length to opacit # Trigonometric functions for wave patterns set angle = 128 # 180 degrees in 0-255 range -test.opacity = sine(angle) + 128 # Sine wave shifted to positive range -test.brightness = cosine(angle) + 128 # Cosine wave shifted to positive range +test.opacity = sin(angle) + 128 # Mathematical sine function (not oscillator) +test.brightness = cos(angle) + 128 # Mathematical cosine function (not oscillator) # Complex expressions combining multiple functions -test.position = max(0, round(abs(sine(strip_len * 2)) * (strip_len - 1) / 255)) +test.position = max(0, round(abs(sin(strip_len * 2)) * (strip_len - 1) / 255)) test.opacity = min(255, max(50, scale(sqrt(strip_len), 0, 16, 100, 255))) ``` **Special Notes:** - **Integer Optimization**: `sqrt()` function automatically handles integer scaling for 0-255 range values -- **Trigonometric Range**: `sine()` and `cosine()` use 0-255 input range (mapped to 0-360°) and return -255 to 255 output range +- **Trigonometric Range**: `sin()` and `cos()` use 0-255 input range (mapped to 0-360°) and return -255 to 255 output range - **Automatic Detection**: Mathematical functions are automatically detected at transpile time using dynamic introspection - **Closure Context**: In computed parameters, mathematical functions are called as `self.()` in the generated closure context @@ -672,7 +672,8 @@ Value providers create dynamic values that change over time: |----------|-------------| | `triangle` | Triangle wave oscillation (alias for oscillator with triangle waveform) | | `smooth` | Smooth cosine wave (alias for oscillator with smooth waveform) | -| `sine` | Pure sine wave oscillation (alias for oscillator with sine waveform) | +| `cosine_osc` | Cosine wave oscillation (alias for smooth - cosine waveform) | +| `sine_osc` | Pure sine wave oscillation (alias for oscillator with sine waveform) | | `linear` | Linear progression (alias for oscillator with linear waveform) | | `ramp` | Sawtooth wave (alias for oscillator with ramp waveform) | | `sawtooth` | Sawtooth wave (alias for ramp) | @@ -686,7 +687,8 @@ Value providers create dynamic values that change over time: # Direct oscillator usage triangle(min_value=0, max_value=255, period=2s) # Triangle wave smooth(min_value=50, max_value=200, period=3s) # Smooth cosine -sine(min_value=0, max_value=255, period=2s) # Pure sine wave +cosine_osc(min_value=3, max_value=1, period=5s) # Cosine wave (alias for smooth) +sine_osc(min_value=0, max_value=255, period=2s) # Pure sine wave linear(min_value=0, max_value=100, period=1s) # Linear progression ramp(min_value=0, max_value=255, period=2s) # Sawtooth wave square(min_value=0, max_value=255, period=1s) # Square wave @@ -699,6 +701,8 @@ bounce(min_value=0, max_value=255, period=2s) # Bouncing ball effect set brightness_oscillator = smooth(min_value=50, max_value=255, period=3s) set position_sweep = triangle(min_value=0, max_value=29, period=5s) set elastic_movement = elastic(min_value=0, max_value=30, period=4s) +set sine_wave = sine_osc(min_value=0, max_value=255, period=2s) +set cosine_wave = cosine_osc(min_value=50, max_value=200, period=3s) set strip_len = strip_length() # Get the current strip length ``` diff --git a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md index a840f96a1..ea7f951f7 100644 --- a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md +++ b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md @@ -355,12 +355,12 @@ run nonexistent_animation 2. **Use programmatic API for performance-critical code**: ```berry # DSL for high-level structure - animation_dsl.execute(''' - sequence main { - play performance_critical_anim for 10s - } - run main - ''') + animation_dsl.execute( + "sequence main {\n" + "play performance_critical_anim for 10s\n" + "}\n" + "run main" + ) # Programmatic for performance-critical animations var performance_critical_anim = animation.create_optimized_animation() diff --git a/lib/libesp32/berry_animation/docs/OSCILLATION_PATTERNS.md b/lib/libesp32/berry_animation/docs/OSCILLATION_PATTERNS.md index 29fbd3252..3b4a64e08 100644 --- a/lib/libesp32/berry_animation/docs/OSCILLATION_PATTERNS.md +++ b/lib/libesp32/berry_animation/docs/OSCILLATION_PATTERNS.md @@ -32,7 +32,8 @@ set bouncing = oscillator_value(min_value=10, max_value=240, duration=4000, form ```berry # These are equivalent to oscillator_value with specific forms set smooth_fade = smooth(min_value=50, max_value=255, duration=3000) # form=COSINE -set sine_wave = sine(min_value=50, max_value=255, duration=3000) # form=SINE +set sine_wave = sine_osc(min_value=50, max_value=255, duration=3000) # form=SINE +set cosine_wave = cosine_osc(min_value=50, max_value=255, duration=3000) # form=COSINE (alias for smooth) set linear_sweep = linear(min_value=0, max_value=255, duration=2000) # form=SAWTOOTH set triangle_wave = triangle(min_value=10, max_value=240, duration=4000) # form=TRIANGLE ``` @@ -100,7 +101,7 @@ Value ``` ```berry -set wave_motion = sine(min_value=0, max_value=255, duration=2000) +set wave_motion = sine_osc(min_value=0, max_value=255, duration=2000) ``` ### TRIANGLE diff --git a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md index ad7e8c62e..b4eee9d63 100644 --- a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md +++ b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md @@ -379,17 +379,16 @@ import animation load("user_animations.be") # Now they're available in DSL -var dsl_code = ''' -animation my_fire = fire(200, 1500ms) -animation my_sparkles = sparkle(white, 8, 400ms) - -sequence show { - play my_fire for 10s - play my_sparkles for 5s -} - -run show -''' +var dsl_code = + "animation my_fire = fire(200, 1500ms)\n" + "animation my_sparkles = sparkle(white, 8, 400ms)\n" + "\n" + "sequence show {\n" + " play my_fire for 10s\n" + " play my_sparkles for 5s\n" + "}\n" + "\n + "run show" animation_dsl.execute(dsl_code) ``` @@ -398,17 +397,16 @@ animation_dsl.execute(dsl_code) ```berry # Save DSL with custom functions -var my_show = ''' -animation campfire = fire(180, 2s) -animation stars = sparkle(#FFFFFF, 6, 600ms) - -sequence night_scene { - play campfire for 30s - play stars for 10s -} - -run night_scene -''' +var my_show = + "animation campfire = fire(180, 2s)\n" + "animation stars = sparkle(#FFFFFF, 6, 600ms)\n" + "\n" + "sequence night_scene {\n" + " play campfire for 30s\n" + " play stars for 10s\n" + "}\n" + "\n" + "run night_scene" # Save to file var f = open("night_scene.anim", "w") diff --git a/lib/libesp32/berry_animation/src/animations/beacon.be b/lib/libesp32/berry_animation/src/animations/beacon.be index 55a52f974..15be2bcc5 100644 --- a/lib/libesp32/berry_animation/src/animations/beacon.be +++ b/lib/libesp32/berry_animation/src/animations/beacon.be @@ -92,18 +92,9 @@ class BeaconAnimation : animation.animation i = left_slew_min while i < left_slew_max - # Calculate blend factor (255 = background, 0 = beacon color) - var blend_factor - if slew_size == 1 - # For single pixel slew, use 50% blend - blend_factor = 128 - else - blend_factor = tasmota.scale_uint(i, pos - slew_size, pos - 1, 255, 0) - end - # Create color with appropriate alpha for blending - var alpha = 255 - blend_factor # Invert so 0 = transparent, 255 = opaque - var blend_color = (alpha << 24) | (color & 0x00FFFFFF) - var blended_color = frame.blend(back_color, blend_color) + # Calculate blend factor - blend from 255 (back) to 0 (fore) like original + var blend_factor = tasmota.scale_int(i, pos - slew_size - 1, pos, 255, 0) + var blended_color = frame.blend_linear(back_color, color, blend_factor) frame.set_pixel_color(i, blended_color) i += 1 end @@ -121,18 +112,9 @@ class BeaconAnimation : animation.animation i = right_slew_min while i < right_slew_max - # Calculate blend factor (0 = beacon color, 255 = background) - var blend_factor - if slew_size == 1 - # For single pixel slew, use 50% blend - blend_factor = 128 - else - blend_factor = tasmota.scale_uint(i, pos + beacon_size, pos + beacon_size + slew_size - 1, 0, 255) - end - # Create color with appropriate alpha for blending - var alpha = 255 - blend_factor # Start opaque, fade to transparent - var blend_color = (alpha << 24) | (color & 0x00FFFFFF) - var blended_color = frame.blend(back_color, blend_color) + # Calculate blend factor - blend from 0 (fore) to 255 (back) like original + var blend_factor = tasmota.scale_int(i, pos + beacon_size - 1, pos + beacon_size + slew_size, 0, 255) + var blended_color = frame.blend_linear(back_color, color, blend_factor) frame.set_pixel_color(i, blended_color) i += 1 end diff --git a/lib/libesp32/berry_animation/src/core/animation_engine.be b/lib/libesp32/berry_animation/src/core/animation_engine.be index 0988583a0..bb56a2a83 100644 --- a/lib/libesp32/berry_animation/src/core/animation_engine.be +++ b/lib/libesp32/berry_animation/src/core/animation_engine.be @@ -168,6 +168,9 @@ class AnimationEngine current_time = tasmota.millis() end + # Check if strip length changed since last time + self.check_strip_length() + # Update engine time self.time_ms = current_time @@ -356,6 +359,7 @@ class AnimationEngine end def get_strip_length() + self.check_strip_length() return self.width end @@ -371,6 +375,34 @@ class AnimationEngine return self.animations end + # Check if the length of the strip changes + # + # @return bool - True if strip lengtj was changed, false otherwise + def check_strip_length() + var current_length = self.strip.length() + if current_length != self.width + self._handle_strip_length_change(current_length) + return true # Length changed + end + return false # No change + end + + # Handle strip length changes by resizing buffers + def _handle_strip_length_change(new_length) + if new_length <= 0 + return # Invalid length, ignore + end + + self.width = new_length + + # Resize existing frame buffers instead of creating new ones + self.frame_buffer.resize(new_length) + self.temp_buffer.resize(new_length) + + # Force a render to clear any stale pixels + self.render_needed = true + end + # Cleanup method for proper resource management def cleanup() self.stop() diff --git a/lib/libesp32/berry_animation/src/core/frame_buffer.be b/lib/libesp32/berry_animation/src/core/frame_buffer.be index 3f8c6240b..321c5b90c 100644 --- a/lib/libesp32/berry_animation/src/core/frame_buffer.be +++ b/lib/libesp32/berry_animation/src/core/frame_buffer.be @@ -73,6 +73,24 @@ class FrameBuffer self.pixels.resize(self.width * 4) # resize to full size filled with transparent black (all zeroes) end + # Resize the frame buffer to a new width + # This is more efficient than creating a new frame buffer object + def resize(new_width) + if new_width <= 0 + raise "value_error", "width must be positive" + end + + if new_width == self.width + return # No change needed + end + + self.width = new_width + # Resize the underlying bytes buffer + self.pixels.resize(self.width * 4) + # Clear to ensure all new pixels are transparent black + self.clear() + end + # Convert separate a, r, g, b components to a 32-bit color value # r: red component (0-255) # g: green component (0-255) @@ -157,6 +175,46 @@ class FrameBuffer # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) return (int(a) << 24) | (int(r) << 16) | (int(g) << 8) | int(b) end + + # Linear interpolation between two colors using explicit blend factor + # Returns the blended color as a 32-bit integer (ARGB format - 0xAARRGGBB) + # + # This function matches the original berry_animate frame.blend(color1, color2, blend_factor) behavior + # Used for creating smooth gradients like beacon slew regions + # + # color1: destination/background color (ARGB format - 0xAARRGGBB) + # color2: source/foreground color (ARGB format - 0xAARRGGBB) + # blend_factor: blend factor (0-255 integer) + # - 0 = full color2 (foreground) + # - 255 = full color1 (background) + def blend_linear(color1, color2, blend_factor) + # Extract components from color1 (background/destination) + var back_a = (color1 >> 24) & 0xFF + var back_r = (color1 >> 16) & 0xFF + var back_g = (color1 >> 8) & 0xFF + var back_b = color1 & 0xFF + + # Extract components from color2 (foreground/source) + var fore_a = (color2 >> 24) & 0xFF + var fore_r = (color2 >> 16) & 0xFF + var fore_g = (color2 >> 8) & 0xFF + var fore_b = color2 & 0xFF + + # Linear interpolation: result = fore + (back - fore) * blend_factor / 255 + var result_a = fore_a + (back_a - fore_a) * blend_factor / 255 + var result_r = fore_r + (back_r - fore_r) * blend_factor / 255 + var result_g = fore_g + (back_g - fore_g) * blend_factor / 255 + var result_b = fore_b + (back_b - fore_b) * blend_factor / 255 + + # Ensure values are in valid range + result_a = result_a < 0 ? 0 : (result_a > 255 ? 255 : result_a) + result_r = result_r < 0 ? 0 : (result_r > 255 ? 255 : result_r) + result_g = result_g < 0 ? 0 : (result_g > 255 ? 255 : result_g) + result_b = result_b < 0 ? 0 : (result_b > 255 ? 255 : result_b) + + # Combine components into a 32-bit value (ARGB format) + return (int(result_a) << 24) | (int(result_r) << 16) | (int(result_g) << 8) | int(result_b) + end # Blend this frame buffer with another frame buffer using per-pixel alpha # other_buffer: the other frame buffer to blend with diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index 9c58c08b9..685a33ba5 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -585,8 +585,8 @@ class SimpleDSLTranspiler end end - # Only create closures at the top level - if is_top_level && self.is_computed_expression_string(left) + # Only create closures at the top level, but not for anonymous functions + if is_top_level && self.is_computed_expression_string(left) && !self.is_anonymous_function(left) return self.create_computation_closure_from_string(left) else return left @@ -656,8 +656,12 @@ class SimpleDSLTranspiler if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN + # Check if this is a simple function call first + var func_name = tok.value + if self._is_simple_function_call(func_name) + return self.process_function_call(context) # Check if this is a nested function call or a variable assignment with named parameters - if context == "argument" || context == "property" || context == "variable" + elif context == "argument" || context == "property" || context == "variable" return self.process_nested_function_call() else return self.process_function_call(context) @@ -745,6 +749,13 @@ class SimpleDSLTranspiler return "nil" end + # Check if an expression is already an anonymous function + def is_anonymous_function(expr_str) + import string + # Check if the expression starts with "(def " and ends with ")(engine)" + return string.find(expr_str, "(def ") == 0 && string.find(expr_str, ")(engine)") >= 0 + end + # Check if an expression string contains computed values that need a closure def is_computed_expression_string(expr_str) import string @@ -758,14 +769,25 @@ class SimpleDSLTranspiler ) # Check for function calls (parentheses with identifiers before them) - # This excludes simple parenthesized literals like (-1) + # This excludes simple parenthesized literals like (-1) and simple function calls var has_function_calls = false var paren_pos = string.find(expr_str, "(") if paren_pos > 0 # Check if there's an identifier before the parenthesis (indicating a function call) var char_before = expr_str[paren_pos-1] if self.is_identifier_char(char_before) - has_function_calls = true + # Extract the function name to check if it's a simple function + var func_start = paren_pos - 1 + while func_start >= 0 && self.is_identifier_char(expr_str[func_start]) + func_start -= 1 + end + func_start += 1 + var func_name = expr_str[func_start..paren_pos-1] + + # Only mark as needing closure if it's NOT a simple function + if !self._is_simple_function_call(func_name) + has_function_calls = true + end end end @@ -1032,9 +1054,12 @@ class SimpleDSLTranspiler var full_args = args != "" ? f"engine, {args}" : "engine" return f"animation.get_user_function('{func_name}')({full_args})" else - # All functions are resolved from the animation module - # No context-specific mapping needed with unified architecture - return f"animation.{func_name}({args})" + # All functions are resolved from the animation module and need engine as first parameter + if args != "" + return f"animation.{func_name}(engine, {args})" + else + return f"animation.{func_name}(engine)" + end end end @@ -1416,25 +1441,27 @@ class SimpleDSLTranspiler var full_args = args != "" ? f"self.engine, {args}" : "self.engine" return f"animation.get_user_function('{func_name}')({full_args})" else - # Built-in functions use the new engine-first + named parameters pattern - # Validate that the factory function exists at transpilation time - if !self._validate_animation_factory_exists(func_name) - self.error(f"Animation factory function '{func_name}' does not exist. Check the function name and ensure it's available in the animation module.") - self.skip_function_arguments() # Skip the arguments to avoid parsing errors - return "nil" + # Check if this is a simple function call without named parameters + if self._is_simple_function_call(func_name) + # For simple functions like strip_length(), do direct assignment + var args = self.process_function_arguments() + if args != "" + return f"animation.{func_name}(engine, {args})" + else + return f"animation.{func_name}(engine)" + end + else + # Built-in functions use the new engine-first + named parameters pattern + # Validate that the factory function exists at transpilation time + if !self._validate_animation_factory_exists(func_name) + self.error(f"Animation factory function '{func_name}' does not exist. Check the function name and ensure it's available in the animation module.") + self.skip_function_arguments() # Skip the arguments to avoid parsing errors + return "nil" + end + + # Generate anonymous function that creates and configures the provider + return self._generate_anonymous_function_call(func_name) end - - # Generate unique temporary variable name using position - var temp_var = f"temp_{func_name}_{self.pos}" - - # Generate the base function call - self.add(f"var {temp_var} = animation.{func_name}(engine)") - - # Process named arguments for the temporary variable with validation - self._process_named_arguments_for_animation(temp_var, func_name) - - # Return the temporary variable name - return temp_var end end @@ -2169,6 +2196,98 @@ class SimpleDSLTranspiler self._process_named_arguments_generic(var_name, func_name) end + # Check if this is a simple function call that doesn't need anonymous function treatment + def _is_simple_function_call(func_name) + # Functions that return simple values and don't use named parameters + var simple_functions = [ + "strip_length", + "static_value" + ] + + for simple_func : simple_functions + if func_name == simple_func + return true + end + end + return false + end + + # Generate anonymous function call that creates and configures a provider without temporary variables + def _generate_anonymous_function_call(func_name) + # Start building the anonymous function + var lines = [] + lines.push("(def (engine)") + lines.push(f" var provider = animation.{func_name}(engine)") + + # Process named arguments and collect them + self.expect_left_paren() + + # Create animation instance once for parameter validation + var animation_instance = self._create_animation_instance_for_validation(func_name) + + while !self.at_end() && !self.check_right_paren() + self.skip_whitespace_including_newlines() + + if self.check_right_paren() + break + end + + # Parse named argument: param_name=value + var param_name = self.expect_identifier() + + # Validate parameter immediately as it's parsed + if animation_instance != nil + self._validate_single_parameter(func_name, param_name, animation_instance) + end + + self.expect_assign() + var param_value = self.process_value("argument") + var inline_comment = self.collect_inline_comment() + + # Add parameter assignment to the anonymous function + lines.push(f" provider.{param_name} = {param_value}{inline_comment}") + + # Skip whitespace but preserve newlines for separator detection + while !self.at_end() + var tok = self.current() + if tok != nil && tok.type == animation_dsl.Token.COMMENT + self.next() + else + break + end + end + + # Check for parameter separator: comma OR newline OR end of parameters + if self.current() != nil && self.current().type == animation_dsl.Token.COMMA + self.next() # skip comma + self.skip_whitespace_including_newlines() + elif self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE + # Newline acts as parameter separator - skip it and continue + self.next() # skip newline + self.skip_whitespace_including_newlines() + elif !self.check_right_paren() + self.error("Expected ',' or ')' in function arguments") + break + end + end + + self.expect_right_paren() + + # Complete the anonymous function + lines.push(" return provider") + lines.push("end)(engine)") + + # Join all lines into a single expression + var result = "" + for i : 0..size(lines)-1 + if i > 0 + result += "\n" + end + result += lines[i] + end + return result + end + end # DSL compilation function diff --git a/lib/libesp32/berry_animation/src/providers/closure_value_provider.be b/lib/libesp32/berry_animation/src/providers/closure_value_provider.be index d25e72c38..2eec0034a 100644 --- a/lib/libesp32/berry_animation/src/providers/closure_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/closure_value_provider.be @@ -142,7 +142,7 @@ class ClosureValueProvider : animation.value_provider # # @param angle: number - Angle in 0-255 range (0-360 degrees) # @return int - Sine value in -255 to 255 range - def sine(angle) + def sin(angle) # Map angle from 0-255 to 0-32767 (tasmota.sine_int input range) var tasmota_angle = tasmota.scale_int(angle, 0, 255, 0, 32767) @@ -160,7 +160,7 @@ class ClosureValueProvider : animation.value_provider # # @param angle: number - Angle in 0-255 range (0-360 degrees) # @return int - Cosine value in -255 to 255 range - def cosine(angle) + def cos(angle) # Map angle from 0-255 to 0-32767 (tasmota.sine_int input range) var tasmota_angle = tasmota.scale_int(angle, 0, 255, 0, 32767) diff --git a/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be b/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be index b428a9e6f..7171565cf 100644 --- a/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be @@ -108,12 +108,12 @@ class OscillatorValueProvider : animation.value_provider # Calculate value based on waveform if form == animation.SAWTOOTH - self.value = tasmota.scale_uint(past_with_phase, 0, duration - 1, min_value, max_value) + self.value = tasmota.scale_int(past_with_phase, 0, duration - 1, min_value, max_value) elif form == animation.TRIANGLE if past_with_phase < duration_ms_mid - self.value = tasmota.scale_uint(past_with_phase, 0, duration_ms_mid - 1, min_value, max_value) + self.value = tasmota.scale_int(past_with_phase, 0, duration_ms_mid - 1, min_value, max_value) else - self.value = tasmota.scale_uint(past_with_phase, duration_ms_mid, duration - 1, max_value, min_value) + self.value = tasmota.scale_int(past_with_phase, duration_ms_mid, duration - 1, max_value, min_value) end elif form == animation.SQUARE if past_with_phase < duration_ms_mid @@ -125,22 +125,22 @@ class OscillatorValueProvider : animation.value_provider # Map timing to 0..32767 for sine calculation var angle = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 32767) var x = tasmota.sine_int(angle - 8192) # -4096 .. 4096, dephase from cosine to sine - self.value = tasmota.scale_uint(x, -4096, 4096, min_value, max_value) + self.value = tasmota.scale_int(x, -4096, 4096, min_value, max_value) elif form == animation.SINE # Map timing to 0..32767 for sine calculation var angle = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 32767) var x = tasmota.sine_int(angle) # -4096 .. 4096, pure sine wave - self.value = tasmota.scale_uint(x, -4096, 4096, min_value, max_value) + self.value = tasmota.scale_int(x, -4096, 4096, min_value, max_value) elif form == animation.EASE_IN # Quadratic ease-in: starts slow, accelerates var t = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 255) # 0..255 var eased = (t * t) / 255 # t^2 scaled back to 0..255 - self.value = tasmota.scale_uint(eased, 0, 255, min_value, max_value) + self.value = tasmota.scale_int(eased, 0, 255, min_value, max_value) elif form == animation.EASE_OUT # Quadratic ease-out: starts fast, decelerates var t = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 255) # 0..255 var eased = 255 - ((255 - t) * (255 - t)) / 255 # 1 - (1-t)^2 scaled to 0..255 - self.value = tasmota.scale_uint(eased, 0, 255, min_value, max_value) + self.value = tasmota.scale_int(eased, 0, 255, min_value, max_value) elif form == animation.ELASTIC # Elastic easing: overshoots and oscillates like a spring var t = tasmota.scale_uint(past_with_phase, 0, duration - 1, 0, 255) # 0..255 @@ -155,7 +155,7 @@ class OscillatorValueProvider : animation.value_provider var freq_angle = tasmota.scale_uint(t, 0, 255, 0, 32767 * 6) # High frequency oscillation var oscillation = tasmota.sine_int(freq_angle % 32767) # -4096 to 4096 var elastic_offset = (oscillation * decay) / 4096 # Scale oscillation by decay - var base_progress = tasmota.scale_uint(t, 0, 255, 0, max_value - min_value) + var base_progress = tasmota.scale_int(t, 0, 255, 0, max_value - min_value) self.value = min_value + base_progress + elastic_offset # Clamp to reasonable bounds to prevent extreme overshoots var value_range = max_value - min_value @@ -182,7 +182,7 @@ class OscillatorValueProvider : animation.value_provider bounced_t = 255 - ((255 - bounce_val) * 64) / 255 # Settle towards full value end - self.value = tasmota.scale_uint(bounced_t, 0, 255, min_value, max_value) + self.value = tasmota.scale_int(bounced_t, 0, 255, min_value, max_value) end return self.value @@ -232,11 +232,21 @@ def smooth(engine) return osc end +# Create a cosine oscillator (alias for smooth - cosine wave) +# +# @param engine: AnimationEngine - Animation engine reference +# @return OscillatorValueProvider - New cosine oscillator instance +def cosine_osc(engine) + var osc = animation.oscillator_value(engine) + osc.form = animation.COSINE + return osc +end + # Create a sine wave oscillator # # @param engine: AnimationEngine - Animation engine reference # @return OscillatorValueProvider - New sine wave instance -def sine(engine) +def sine_osc(engine) var osc = animation.oscillator_value(engine) osc.form = animation.SINE return osc @@ -317,7 +327,8 @@ return {'ramp': ramp, 'linear': linear, 'triangle': triangle, 'smooth': smooth, - 'sine': sine, + 'cosine_osc': cosine_osc, + 'sine_osc': sine_osc, 'square': square, 'ease_in': ease_in, 'ease_out': ease_out, diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index 094852ab5..ca3327b2b 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -346,48 +346,32 @@ be_local_closure(triangle, /* name */ /******************************************************************** -** Solidified function: twinkle_classic +** Solidified function: create_closure_value ********************************************************************/ -be_local_closure(twinkle_classic, /* name */ +be_local_closure(create_closure_value, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 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[ 8]) { /* constants */ + ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(twinkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(density), - /* K4 */ be_nested_str_weak(twinkle_speed), - /* K5 */ be_nested_str_weak(fade_speed), - /* K6 */ be_nested_str_weak(min_brightness), - /* K7 */ be_nested_str_weak(max_brightness), + /* K1 */ be_nested_str_weak(closure_value), + /* K2 */ be_nested_str_weak(closure), }), - be_str_weak(twinkle_classic), + be_str_weak(create_closure_value), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0095, // 0006 LDINT R2 150 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A0005, // 0008 LDINT R2 6 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x540A00B3, // 000A LDINT R2 180 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x540A001F, // 000C LDINT R2 32 - 0x90060C02, // 000D SETMBR R1 K6 R2 - 0x540A00FE, // 000E LDINT R2 255 - 0x90060E02, // 000F SETMBR R1 K7 R2 - 0x80040200, // 0010 RET 1 R1 + ( &(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 }) ) ); @@ -395,9 +379,9 @@ be_local_closure(twinkle_classic, /* name */ /******************************************************************** -** Solidified function: bounce_constrained +** Solidified function: bounce_gravity ********************************************************************/ -be_local_closure(bounce_constrained, /* name */ +be_local_closure(bounce_gravity, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -412,26 +396,26 @@ be_local_closure(bounce_constrained, /* name */ /* K1 */ be_nested_str_weak(bounce_animation), /* K2 */ be_nested_str_weak(bounce_speed), /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_nested_str_weak(damping), - /* K5 */ be_nested_str_weak(gravity), - /* K6 */ be_const_int(0), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(damping), + /* K6 */ be_nested_str_weak(gravity), /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_constrained), + /* K8 */ be_nested_str_weak(bounce_gravity), }), - be_str_weak(bounce_constrained), + be_str_weak(bounce_gravity), &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 - 0x540A0095, // 0004 LDINT R2 150 + 0x540A0063, // 0004 LDINT R2 100 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A000E, // 0006 LDINT R2 15 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A00F9, // 0008 LDINT R2 250 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x90060B06, // 000A SETMBR R1 K5 K6 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x540A00EF, // 0007 LDINT R2 240 + 0x90060A02, // 0008 SETMBR R1 K5 R2 + 0x540A007F, // 0009 LDINT R2 128 + 0x90060C02, // 000A SETMBR R1 K6 R2 0x90060F08, // 000B SETMBR R1 K7 K8 0x80040200, // 000C RET 1 R1 }) @@ -510,106 +494,6 @@ be_local_closure(animation_init_strip, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: set_event_active -********************************************************************/ -be_local_closure(set_event_active, /* name */ - be_nested_proto( - 6, /* 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(event_manager), - /* K2 */ be_nested_str_weak(set_event_active), - }), - be_str_weak(set_event_active), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x5C100000, // 0003 MOVE R4 R0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C080600, // 0005 CALL R2 3 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: noise_rainbow -********************************************************************/ -be_local_closure(noise_rainbow, /* 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[16]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(noise_animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(range_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(range_max), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(scale), - /* K14 */ be_nested_str_weak(speed), - /* K15 */ be_nested_str_weak(octaves), - }), - be_str_weak(noise_rainbow), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* 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 - 0x900A130A, // 0010 SETMBR R2 K9 K10 - 0x540E00FE, // 0011 LDINT R3 255 - 0x900A1603, // 0012 SETMBR R2 K11 R3 - 0x90061802, // 0013 SETMBR R1 K12 R2 - 0x540E0031, // 0014 LDINT R3 50 - 0x90061A03, // 0015 SETMBR R1 K13 R3 - 0x540E001D, // 0016 LDINT R3 30 - 0x90061C03, // 0017 SETMBR R1 K14 R3 - 0x90061F07, // 0018 SETMBR R1 K15 K7 - 0x80040200, // 0019 RET 1 R1 - }) - ) -); -/*******************************************************************/ - // compact class 'RichPaletteAnimation' ktab size: 18, total: 23 (saved 40 bytes) static const bvalue be_ktab_class_RichPaletteAnimation[18] = { /* K0 */ be_nested_str_weak(palette), @@ -859,6 +743,151 @@ be_local_class(RichPaletteAnimation, be_str_weak(RichPaletteAnimation) ); +/******************************************************************** +** Solidified function: set_event_active +********************************************************************/ +be_local_closure(set_event_active, /* name */ + be_nested_proto( + 6, /* 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(event_manager), + /* K2 */ be_nested_str_weak(set_event_active), + }), + be_str_weak(set_event_active), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x5C100000, // 0003 MOVE R4 R0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: noise_rainbow +********************************************************************/ +be_local_closure(noise_rainbow, /* 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[16]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(noise_animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(transition_type), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(brightness), + /* K9 */ be_nested_str_weak(range_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(scale), + /* K14 */ be_nested_str_weak(speed), + /* K15 */ be_nested_str_weak(octaves), + }), + be_str_weak(noise_rainbow), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* 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 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x540E0031, // 0014 LDINT R3 50 + 0x90061A03, // 0015 SETMBR R1 K13 R3 + 0x540E001D, // 0016 LDINT R3 30 + 0x90061C03, // 0017 SETMBR R1 K14 R3 + 0x90061F07, // 0018 SETMBR R1 K15 K7 + 0x80040200, // 0019 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: bounce_basic +********************************************************************/ +be_local_closure(bounce_basic, /* 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[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(bounce_animation), + /* K2 */ be_nested_str_weak(bounce_speed), + /* K3 */ be_nested_str_weak(bounce_range), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(damping), + /* K6 */ be_nested_str_weak(gravity), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(bounce_basic), + }), + be_str_weak(bounce_basic), + &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 + 0x540A007F, // 0004 LDINT R2 128 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x540A00F9, // 0007 LDINT R2 250 + 0x90060A02, // 0008 SETMBR R1 K5 R2 + 0x90060D04, // 0009 SETMBR R1 K6 K4 + 0x90060F08, // 000A SETMBR R1 K7 K8 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: create_wait_step ********************************************************************/ @@ -924,792 +953,6 @@ be_local_closure(create_play_step, /* name */ ); /*******************************************************************/ -// compact class 'ScaleAnimation' ktab size: 42, total: 83 (saved 328 bytes) -static const bvalue be_ktab_class_ScaleAnimation[42] = { - /* K0 */ be_nested_str_weak(scale_mode), - /* K1 */ be_nested_str_weak(scale_factor), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(_sine), - /* K5 */ be_nested_str_weak(scale_phase), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(2), - /* K9 */ be_nested_str_weak(engine), - /* K10 */ be_nested_str_weak(get_strip_length), - /* K11 */ be_nested_str_weak(current_colors), - /* K12 */ be_nested_str_weak(_initialize_buffers), - /* K13 */ be_nested_str_weak(source_animation), - /* K14 */ be_nested_str_weak(scale_center), - /* K15 */ be_nested_str_weak(interpolation), - /* K16 */ be_nested_str_weak(source_frame), - /* K17 */ be_nested_str_weak(clear), - /* K18 */ be_nested_str_weak(render), - /* K19 */ be_nested_str_weak(_get_current_scale_factor), - /* K20 */ be_nested_str_weak(get_pixel_color), - /* K21 */ be_const_int(-16777216), - /* K22 */ be_nested_str_weak(_interpolate_colors), - /* K23 */ be_nested_str_weak(scale_speed), - /* K24 */ be_nested_str_weak(start_time), - /* K25 */ be_nested_str_weak(is_running), - /* K26 */ be_nested_str_weak(start), - /* K27 */ be_nested_str_weak(update), - /* K28 */ be_nested_str_weak(_calculate_scale), - /* K29 */ be_nested_str_weak(static), - /* K30 */ be_nested_str_weak(oscillate), - /* K31 */ be_nested_str_weak(grow), - /* K32 */ be_nested_str_weak(shrink), - /* K33 */ be_nested_str_weak(unknown), - /* K34 */ be_nested_str_weak(ScaleAnimation_X28_X25s_X2C_X20factor_X3D_X25s_X2C_X20speed_X3D_X25s_X29), - /* K35 */ be_nested_str_weak(init), - /* K36 */ be_nested_str_weak(time_ms), - /* K37 */ be_nested_str_weak(animation), - /* K38 */ be_nested_str_weak(frame_buffer), - /* K39 */ be_nested_str_weak(resize), - /* K40 */ be_nested_str_weak(width), - /* K41 */ be_nested_str_weak(set_pixel_color), -}; - - -extern const bclass be_class_ScaleAnimation; - -/******************************************************************** -** Solidified function: _get_current_scale_factor -********************************************************************/ -be_local_closure(class_ScaleAnimation__get_current_scale_factor, /* name */ - be_nested_proto( - 11, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(_get_current_scale_factor), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x1C0C0302, // 0002 EQ R3 R1 K2 - 0x780E0001, // 0003 JMPF R3 #0006 - 0x80040400, // 0004 RET 1 R2 - 0x70020025, // 0005 JMP #002C - 0x1C0C0303, // 0006 EQ R3 R1 K3 - 0x780E000C, // 0007 JMPF R3 #0015 - 0x8C0C0104, // 0008 GETMET R3 R0 K4 - 0x88140105, // 0009 GETMBR R5 R0 K5 - 0x7C0C0400, // 000A CALL R3 2 - 0xB8120C00, // 000B GETNGBL R4 K6 - 0x8C100907, // 000C GETMET R4 R4 K7 - 0x5C180600, // 000D MOVE R6 R3 - 0x581C0002, // 000E LDCONST R7 K2 - 0x542200FE, // 000F LDINT R8 255 - 0x5426003F, // 0010 LDINT R9 64 - 0x542A00FE, // 0011 LDINT R10 255 - 0x7C100C00, // 0012 CALL R4 6 - 0x80040800, // 0013 RET 1 R4 - 0x70020016, // 0014 JMP #002C - 0x1C0C0308, // 0015 EQ R3 R1 K8 - 0x780E0009, // 0016 JMPF R3 #0021 - 0xB80E0C00, // 0017 GETNGBL R3 K6 - 0x8C0C0707, // 0018 GETMET R3 R3 K7 - 0x88140105, // 0019 GETMBR R5 R0 K5 - 0x58180002, // 001A LDCONST R6 K2 - 0x541E00FE, // 001B LDINT R7 255 - 0x5422003F, // 001C LDINT R8 64 - 0x542600FE, // 001D LDINT R9 255 - 0x7C0C0C00, // 001E CALL R3 6 - 0x80040600, // 001F RET 1 R3 - 0x7002000A, // 0020 JMP #002C - 0xB80E0C00, // 0021 GETNGBL R3 K6 - 0x8C0C0707, // 0022 GETMET R3 R3 K7 - 0x541600FE, // 0023 LDINT R5 255 - 0x88180105, // 0024 GETMBR R6 R0 K5 - 0x04140A06, // 0025 SUB R5 R5 R6 - 0x58180002, // 0026 LDCONST R6 K2 - 0x541E00FE, // 0027 LDINT R7 255 - 0x5422003F, // 0028 LDINT R8 64 - 0x542600FE, // 0029 LDINT R9 255 - 0x7C0C0C00, // 002A CALL R3 6 - 0x80040600, // 002B RET 1 R3 - 0x80000000, // 002C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_scale -********************************************************************/ -be_local_closure(class_ScaleAnimation__calculate_scale, /* name */ - be_nested_proto( - 21, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(_calculate_scale), - &be_const_str_solidified, - ( &(const binstruction[110]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04030A, // 0001 GETMET R1 R1 K10 - 0x7C040200, // 0002 CALL R1 1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C010B, // 0004 GETMBR R3 R0 K11 - 0x7C080200, // 0005 CALL R2 1 - 0x20080401, // 0006 NE R2 R2 R1 - 0x780A0001, // 0007 JMPF R2 #000A - 0x8C08010C, // 0008 GETMET R2 R0 K12 - 0x7C080200, // 0009 CALL R2 1 - 0x8808010D, // 000A GETMBR R2 R0 K13 - 0x880C010E, // 000B GETMBR R3 R0 K14 - 0x8810010F, // 000C GETMBR R4 R0 K15 - 0x88140110, // 000D GETMBR R5 R0 K16 - 0x8C140B11, // 000E GETMET R5 R5 K17 - 0x7C140200, // 000F CALL R5 1 - 0x4C140000, // 0010 LDNIL R5 - 0x20140405, // 0011 NE R5 R2 R5 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140512, // 0013 GETMET R5 R2 K18 - 0x881C0110, // 0014 GETMBR R7 R0 K16 - 0x58200002, // 0015 LDCONST R8 K2 - 0x7C140600, // 0016 CALL R5 3 - 0x8C140113, // 0017 GETMET R5 R0 K19 - 0x7C140200, // 0018 CALL R5 1 - 0xB81A0C00, // 0019 GETNGBL R6 K6 - 0x8C180D07, // 001A GETMET R6 R6 K7 - 0x5C200600, // 001B MOVE R8 R3 - 0x58240002, // 001C LDCONST R9 K2 - 0x542A00FE, // 001D LDINT R10 255 - 0x582C0002, // 001E LDCONST R11 K2 - 0x04300303, // 001F SUB R12 R1 K3 - 0x7C180C00, // 0020 CALL R6 6 - 0x581C0002, // 0021 LDCONST R7 K2 - 0x14200E01, // 0022 LT R8 R7 R1 - 0x78220048, // 0023 JMPF R8 #006D - 0x04200E06, // 0024 SUB R8 R7 R6 - 0xB8260C00, // 0025 GETNGBL R9 K6 - 0x8C241307, // 0026 GETMET R9 R9 K7 - 0x542E007F, // 0027 LDINT R11 128 - 0x082C100B, // 0028 MUL R11 R8 R11 - 0x58300002, // 0029 LDCONST R12 K2 - 0x5436007F, // 002A LDINT R13 128 - 0x543A007F, // 002B LDINT R14 128 - 0x08341A0E, // 002C MUL R13 R13 R14 - 0x58380002, // 002D LDCONST R14 K2 - 0x543E007F, // 002E LDINT R15 128 - 0x083C0A0F, // 002F MUL R15 R5 R15 - 0x7C240C00, // 0030 CALL R9 6 - 0x542A007F, // 0031 LDINT R10 128 - 0x0C24120A, // 0032 DIV R9 R9 R10 - 0x00280C09, // 0033 ADD R10 R6 R9 - 0x1C2C0902, // 0034 EQ R11 R4 K2 - 0x782E000D, // 0035 JMPF R11 #0044 - 0x282C1502, // 0036 GE R11 R10 K2 - 0x782E0008, // 0037 JMPF R11 #0041 - 0x142C1401, // 0038 LT R11 R10 R1 - 0x782E0006, // 0039 JMPF R11 #0041 - 0x882C010B, // 003A GETMBR R11 R0 K11 - 0x88300110, // 003B GETMBR R12 R0 K16 - 0x8C301914, // 003C GETMET R12 R12 K20 - 0x5C381400, // 003D MOVE R14 R10 - 0x7C300400, // 003E CALL R12 2 - 0x982C0E0C, // 003F SETIDX R11 R7 R12 - 0x70020001, // 0040 JMP #0043 - 0x882C010B, // 0041 GETMBR R11 R0 K11 - 0x982C0F15, // 0042 SETIDX R11 R7 K21 - 0x70020026, // 0043 JMP #006B - 0x282C1502, // 0044 GE R11 R10 K2 - 0x782E0022, // 0045 JMPF R11 #0069 - 0x042C0303, // 0046 SUB R11 R1 K3 - 0x142C140B, // 0047 LT R11 R10 R11 - 0x782E001F, // 0048 JMPF R11 #0069 - 0x602C0009, // 0049 GETGBL R11 G9 - 0x5C301400, // 004A MOVE R12 R10 - 0x7C2C0200, // 004B CALL R11 1 - 0x60300009, // 004C GETGBL R12 G9 - 0x0434140B, // 004D SUB R13 R10 R11 - 0x543A00FF, // 004E LDINT R14 256 - 0x08341A0E, // 004F MUL R13 R13 R14 - 0x7C300200, // 0050 CALL R12 1 - 0x28341702, // 0051 GE R13 R11 K2 - 0x78360012, // 0052 JMPF R13 #0066 - 0x04340303, // 0053 SUB R13 R1 K3 - 0x1434160D, // 0054 LT R13 R11 R13 - 0x7836000F, // 0055 JMPF R13 #0066 - 0x88340110, // 0056 GETMBR R13 R0 K16 - 0x8C341B14, // 0057 GETMET R13 R13 K20 - 0x5C3C1600, // 0058 MOVE R15 R11 - 0x7C340400, // 0059 CALL R13 2 - 0x88380110, // 005A GETMBR R14 R0 K16 - 0x8C381D14, // 005B GETMET R14 R14 K20 - 0x00401703, // 005C ADD R16 R11 K3 - 0x7C380400, // 005D CALL R14 2 - 0x883C010B, // 005E GETMBR R15 R0 K11 - 0x8C400116, // 005F GETMET R16 R0 K22 - 0x5C481A00, // 0060 MOVE R18 R13 - 0x5C4C1C00, // 0061 MOVE R19 R14 - 0x5C501800, // 0062 MOVE R20 R12 - 0x7C400800, // 0063 CALL R16 4 - 0x983C0E10, // 0064 SETIDX R15 R7 R16 - 0x70020001, // 0065 JMP #0068 - 0x8834010B, // 0066 GETMBR R13 R0 K11 - 0x98340F15, // 0067 SETIDX R13 R7 K21 - 0x70020001, // 0068 JMP #006B - 0x882C010B, // 0069 GETMBR R11 R0 K11 - 0x982C0F15, // 006A SETIDX R11 R7 K21 - 0x001C0F03, // 006B ADD R7 R7 K3 - 0x7001FFB4, // 006C JMP #0022 - 0x80000000, // 006D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_ScaleAnimation_update, /* name */ - be_nested_proto( - 13, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x88080117, // 0000 GETMBR R2 R0 K23 - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x8810010D, // 0002 GETMBR R4 R0 K13 - 0x24140502, // 0003 GT R5 R2 K2 - 0x78160013, // 0004 JMPF R5 #0019 - 0x24140702, // 0005 GT R5 R3 K2 - 0x78160011, // 0006 JMPF R5 #0019 - 0x88140118, // 0007 GETMBR R5 R0 K24 - 0x04140205, // 0008 SUB R5 R1 R5 - 0xB81A0C00, // 0009 GETNGBL R6 K6 - 0x8C180D07, // 000A GETMET R6 R6 K7 - 0x5C200400, // 000B MOVE R8 R2 - 0x58240002, // 000C LDCONST R9 K2 - 0x542A00FE, // 000D LDINT R10 255 - 0x582C0002, // 000E LDCONST R11 K2 - 0x58300008, // 000F LDCONST R12 K8 - 0x7C180C00, // 0010 CALL R6 6 - 0x241C0D02, // 0011 GT R7 R6 K2 - 0x781E0005, // 0012 JMPF R7 #0019 - 0x081C0A06, // 0013 MUL R7 R5 R6 - 0x542203E7, // 0014 LDINT R8 1000 - 0x0C1C0E08, // 0015 DIV R7 R7 R8 - 0x542200FF, // 0016 LDINT R8 256 - 0x101C0E08, // 0017 MOD R7 R7 R8 - 0x90020A07, // 0018 SETMBR R0 K5 R7 - 0x4C140000, // 0019 LDNIL R5 - 0x20140805, // 001A NE R5 R4 R5 - 0x78160007, // 001B JMPF R5 #0024 - 0x88140919, // 001C GETMBR R5 R4 K25 - 0x74160002, // 001D JMPT R5 #0021 - 0x8C14091A, // 001E GETMET R5 R4 K26 - 0x881C0118, // 001F GETMBR R7 R0 K24 - 0x7C140400, // 0020 CALL R5 2 - 0x8C14091B, // 0021 GETMET R5 R4 K27 - 0x5C1C0200, // 0022 MOVE R7 R1 - 0x7C140400, // 0023 CALL R5 2 - 0x8C14011C, // 0024 GETMET R5 R0 K28 - 0x7C140200, // 0025 CALL R5 1 - 0x50140200, // 0026 LDBOOL R5 1 0 - 0x80040A00, // 0027 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ScaleAnimation_tostring, /* name */ - be_nested_proto( - 11, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x4008031D, // 0002 CONNECT R2 R1 K29 - 0x4008031E, // 0003 CONNECT R2 R1 K30 - 0x4008031F, // 0004 CONNECT R2 R1 K31 - 0x40080320, // 0005 CONNECT R2 R1 K32 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x88100117, // 0008 GETMBR R4 R0 K23 - 0x94140202, // 0009 GETIDX R5 R1 R2 - 0x4C180000, // 000A LDNIL R6 - 0x20140A06, // 000B NE R5 R5 R6 - 0x78160001, // 000C JMPF R5 #000F - 0x94140202, // 000D GETIDX R5 R1 R2 - 0x70020000, // 000E JMP #0010 - 0x58140021, // 000F LDCONST R5 K33 - 0x60180018, // 0010 GETGBL R6 G24 - 0x581C0022, // 0011 LDCONST R7 K34 - 0x5C200A00, // 0012 MOVE R8 R5 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280800, // 0014 MOVE R10 R4 - 0x7C180800, // 0015 CALL R6 4 - 0x80040C00, // 0016 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080523, // 0003 GETMET R2 R2 K35 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020B02, // 0006 SETMBR R0 K5 K2 - 0x88080109, // 0007 GETMBR R2 R0 K9 - 0x88080524, // 0008 GETMBR R2 R2 K36 - 0x90023002, // 0009 SETMBR R0 K24 R2 - 0x8C08010C, // 000A GETMET R2 R0 K12 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sine -********************************************************************/ -be_local_closure(class_ScaleAnimation__sine, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(_sine), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x540A003F, // 0000 LDINT R2 64 - 0x10080202, // 0001 MOD R2 R1 R2 - 0x540E003F, // 0002 LDINT R3 64 - 0x140C0203, // 0003 LT R3 R1 R3 - 0x780E0009, // 0004 JMPF R3 #000F - 0xB80E0C00, // 0005 GETNGBL R3 K6 - 0x8C0C0707, // 0006 GETMET R3 R3 K7 - 0x5C140400, // 0007 MOVE R5 R2 - 0x58180002, // 0008 LDCONST R6 K2 - 0x541E003F, // 0009 LDINT R7 64 - 0x5422007F, // 000A LDINT R8 128 - 0x542600FE, // 000B LDINT R9 255 - 0x7C0C0C00, // 000C CALL R3 6 - 0x80040600, // 000D RET 1 R3 - 0x70020025, // 000E JMP #0035 - 0x540E007F, // 000F LDINT R3 128 - 0x140C0203, // 0010 LT R3 R1 R3 - 0x780E000A, // 0011 JMPF R3 #001D - 0xB80E0C00, // 0012 GETNGBL R3 K6 - 0x8C0C0707, // 0013 GETMET R3 R3 K7 - 0x5416007F, // 0014 LDINT R5 128 - 0x04140A01, // 0015 SUB R5 R5 R1 - 0x58180002, // 0016 LDCONST R6 K2 - 0x541E003F, // 0017 LDINT R7 64 - 0x5422007F, // 0018 LDINT R8 128 - 0x542600FE, // 0019 LDINT R9 255 - 0x7C0C0C00, // 001A CALL R3 6 - 0x80040600, // 001B RET 1 R3 - 0x70020017, // 001C JMP #0035 - 0x540E00BF, // 001D LDINT R3 192 - 0x140C0203, // 001E LT R3 R1 R3 - 0x780E000A, // 001F JMPF R3 #002B - 0xB80E0C00, // 0020 GETNGBL R3 K6 - 0x8C0C0707, // 0021 GETMET R3 R3 K7 - 0x5416007F, // 0022 LDINT R5 128 - 0x04140205, // 0023 SUB R5 R1 R5 - 0x58180002, // 0024 LDCONST R6 K2 - 0x541E003F, // 0025 LDINT R7 64 - 0x5422007F, // 0026 LDINT R8 128 - 0x58240002, // 0027 LDCONST R9 K2 - 0x7C0C0C00, // 0028 CALL R3 6 - 0x80040600, // 0029 RET 1 R3 - 0x70020009, // 002A JMP #0035 - 0xB80E0C00, // 002B GETNGBL R3 K6 - 0x8C0C0707, // 002C GETMET R3 R3 K7 - 0x541600FF, // 002D LDINT R5 256 - 0x04140A01, // 002E SUB R5 R5 R1 - 0x58180002, // 002F LDCONST R6 K2 - 0x541E003F, // 0030 LDINT R7 64 - 0x5422007F, // 0031 LDINT R8 128 - 0x58240002, // 0032 LDCONST R9 K2 - 0x7C0C0C00, // 0033 CALL R3 6 - 0x80040600, // 0034 RET 1 R3 - 0x80000000, // 0035 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_ScaleAnimation__initialize_buffers, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04030A, // 0001 GETMET R1 R1 K10 - 0x7C040200, // 0002 CALL R1 1 - 0xB80A4A00, // 0003 GETNGBL R2 K37 - 0x8C080526, // 0004 GETMET R2 R2 K38 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x90022002, // 0007 SETMBR R0 K16 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90021602, // 000A SETMBR R0 K11 R2 - 0x8808010B, // 000B GETMBR R2 R0 K11 - 0x8C080527, // 000C GETMET R2 R2 K39 - 0x5C100200, // 000D MOVE R4 R1 - 0x7C080400, // 000E CALL R2 2 - 0x58080002, // 000F LDCONST R2 K2 - 0x140C0401, // 0010 LT R3 R2 R1 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x880C010B, // 0012 GETMBR R3 R0 K11 - 0x980C0515, // 0013 SETIDX R3 R2 K21 - 0x00080503, // 0014 ADD R2 R2 K3 - 0x7001FFF9, // 0015 JMP #0010 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_ScaleAnimation_render, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0001, // 0002 JMPF R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x880C0109, // 0005 GETMBR R3 R0 K9 - 0x8C0C070A, // 0006 GETMET R3 R3 K10 - 0x7C0C0200, // 0007 CALL R3 1 - 0x58100002, // 0008 LDCONST R4 K2 - 0x14140803, // 0009 LT R5 R4 R3 - 0x78160009, // 000A JMPF R5 #0015 - 0x88140328, // 000B GETMBR R5 R1 K40 - 0x14140805, // 000C LT R5 R4 R5 - 0x78160004, // 000D JMPF R5 #0013 - 0x8C140329, // 000E GETMET R5 R1 K41 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x8820010B, // 0010 GETMBR R8 R0 K11 - 0x94201004, // 0011 GETIDX R8 R8 R4 - 0x7C140600, // 0012 CALL R5 3 - 0x00100903, // 0013 ADD R4 R4 K3 - 0x7001FFF3, // 0014 JMP #0009 - 0x50140200, // 0015 LDBOOL R5 1 0 - 0x80040A00, // 0016 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _interpolate_colors -********************************************************************/ -be_local_closure(class_ScaleAnimation__interpolate_colors, /* name */ - be_nested_proto( - 18, /* 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_ScaleAnimation, /* shared constants */ - be_str_weak(_interpolate_colors), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x18100702, // 0000 LE R4 R3 K2 - 0x78120001, // 0001 JMPF R4 #0004 - 0x80040200, // 0002 RET 1 R1 - 0x70020003, // 0003 JMP #0008 - 0x541200FF, // 0004 LDINT R4 256 - 0x28100604, // 0005 GE R4 R3 R4 - 0x78120000, // 0006 JMPF R4 #0008 - 0x80040400, // 0007 RET 1 R2 - 0x54120017, // 0008 LDINT R4 24 - 0x3C100204, // 0009 SHR R4 R1 R4 - 0x541600FE, // 000A LDINT R5 255 - 0x2C100805, // 000B AND R4 R4 R5 - 0x5416000F, // 000C LDINT R5 16 - 0x3C140205, // 000D SHR R5 R1 R5 - 0x541A00FE, // 000E LDINT R6 255 - 0x2C140A06, // 000F AND R5 R5 R6 - 0x541A0007, // 0010 LDINT R6 8 - 0x3C180206, // 0011 SHR R6 R1 R6 - 0x541E00FE, // 0012 LDINT R7 255 - 0x2C180C07, // 0013 AND R6 R6 R7 - 0x541E00FE, // 0014 LDINT R7 255 - 0x2C1C0207, // 0015 AND R7 R1 R7 - 0x54220017, // 0016 LDINT R8 24 - 0x3C200408, // 0017 SHR R8 R2 R8 - 0x542600FE, // 0018 LDINT R9 255 - 0x2C201009, // 0019 AND R8 R8 R9 - 0x5426000F, // 001A LDINT R9 16 - 0x3C240409, // 001B SHR R9 R2 R9 - 0x542A00FE, // 001C LDINT R10 255 - 0x2C24120A, // 001D AND R9 R9 R10 - 0x542A0007, // 001E LDINT R10 8 - 0x3C28040A, // 001F SHR R10 R2 R10 - 0x542E00FE, // 0020 LDINT R11 255 - 0x2C28140B, // 0021 AND R10 R10 R11 - 0x542E00FE, // 0022 LDINT R11 255 - 0x2C2C040B, // 0023 AND R11 R2 R11 - 0x04301004, // 0024 SUB R12 R8 R4 - 0x08301803, // 0025 MUL R12 R12 R3 - 0x543600FF, // 0026 LDINT R13 256 - 0x0C30180D, // 0027 DIV R12 R12 R13 - 0x0030080C, // 0028 ADD R12 R4 R12 - 0x04341205, // 0029 SUB R13 R9 R5 - 0x08341A03, // 002A MUL R13 R13 R3 - 0x543A00FF, // 002B LDINT R14 256 - 0x0C341A0E, // 002C DIV R13 R13 R14 - 0x00340A0D, // 002D ADD R13 R5 R13 - 0x04381406, // 002E SUB R14 R10 R6 - 0x08381C03, // 002F MUL R14 R14 R3 - 0x543E00FF, // 0030 LDINT R15 256 - 0x0C381C0F, // 0031 DIV R14 R14 R15 - 0x00380C0E, // 0032 ADD R14 R6 R14 - 0x043C1607, // 0033 SUB R15 R11 R7 - 0x083C1E03, // 0034 MUL R15 R15 R3 - 0x544200FF, // 0035 LDINT R16 256 - 0x0C3C1E10, // 0036 DIV R15 R15 R16 - 0x003C0E0F, // 0037 ADD R15 R7 R15 - 0x54420017, // 0038 LDINT R16 24 - 0x38401810, // 0039 SHL R16 R12 R16 - 0x5446000F, // 003A LDINT R17 16 - 0x38441A11, // 003B SHL R17 R13 R17 - 0x30402011, // 003C OR R16 R16 R17 - 0x54460007, // 003D LDINT R17 8 - 0x38441C11, // 003E SHL R17 R14 R17 - 0x30402011, // 003F OR R16 R16 R17 - 0x3040200F, // 0040 OR R16 R16 R15 - 0x80042000, // 0041 RET 1 R16 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020B02, // 0006 SETMBR R0 K5 K2 - 0x4C080000, // 0007 LDNIL R2 - 0x1C080202, // 0008 EQ R2 R1 R2 - 0x780A0001, // 0009 JMPF R2 #000C - 0x88080109, // 000A GETMBR R2 R0 K9 - 0x88040524, // 000B GETMBR R1 R2 K36 - 0x90023001, // 000C SETMBR R0 K24 R1 - 0x80040000, // 000D RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ScaleAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(ScaleAnimation, - 4, - &be_class_Animation, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_calculate_scale, -1), be_const_closure(class_ScaleAnimation__calculate_scale_closure) }, - { be_const_key_weak(scale_phase, -1), be_const_var(0) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ScaleAnimation_tostring_closure) }, - { be_const_key_weak(PARAMS, 10), 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(scale_center, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(scale_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(source_animation, 4), 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(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(scale_factor, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(scale_mode, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(3) }, - })) ) } )) }, - { be_const_key_weak(interpolation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(1) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(update, -1), be_const_closure(class_ScaleAnimation_update_closure) }, - { be_const_key_weak(_get_current_scale_factor, 2), be_const_closure(class_ScaleAnimation__get_current_scale_factor_closure) }, - { be_const_key_weak(source_frame, -1), be_const_var(1) }, - { be_const_key_weak(current_colors, -1), be_const_var(2) }, - { be_const_key_weak(render, -1), be_const_closure(class_ScaleAnimation_render_closure) }, - { be_const_key_weak(start_time, -1), be_const_var(3) }, - { be_const_key_weak(init, 0), be_const_closure(class_ScaleAnimation_init_closure) }, - { be_const_key_weak(_sine, -1), be_const_closure(class_ScaleAnimation__sine_closure) }, - { be_const_key_weak(_initialize_buffers, -1), be_const_closure(class_ScaleAnimation__initialize_buffers_closure) }, - { be_const_key_weak(on_param_changed, 8), be_const_closure(class_ScaleAnimation_on_param_changed_closure) }, - { be_const_key_weak(_interpolate_colors, -1), be_const_closure(class_ScaleAnimation__interpolate_colors_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_ScaleAnimation_start_closure) }, - })), - be_str_weak(ScaleAnimation) -); /******************************************************************** ** Solidified function: twinkle_solid @@ -1759,476 +1002,40 @@ be_local_closure(twinkle_solid, /* name */ ); /*******************************************************************/ -// compact class 'CompositeColorProvider' ktab size: 15, total: 25 (saved 80 bytes) -static const bvalue be_ktab_class_CompositeColorProvider[15] = { - /* K0 */ be_nested_str_weak(providers), - /* K1 */ be_nested_str_weak(push), - /* K2 */ be_const_int(0), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(get_color_for_value), - /* K5 */ be_nested_str_weak(_blend_colors), - /* K6 */ be_nested_str_weak(produce_value), - /* K7 */ be_nested_str_weak(CompositeColorProvider_X28providers_X3D_X25s_X2C_X20blend_mode_X3D_X25s_X29), - /* K8 */ be_nested_str_weak(blend_mode), - /* K9 */ be_nested_str_weak(CompositeColorProvider_X28uninitialized_X29), - /* K10 */ be_const_real_hex(0x437F0000), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(scale_uint), - /* K14 */ be_nested_str_weak(init), -}; - - -extern const bclass be_class_CompositeColorProvider; /******************************************************************** -** Solidified function: add_provider +** Solidified function: get_user_function ********************************************************************/ -be_local_closure(class_CompositeColorProvider_add_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_CompositeColorProvider, /* shared constants */ - be_str_weak(add_provider), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040000, // 0004 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_CompositeColorProvider_get_color_for_value, /* name */ - be_nested_proto( - 10, /* 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_CompositeColorProvider, /* shared constants */ - be_str_weak(get_color_for_value), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x600C000C, // 0000 GETGBL R3 G12 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x1C0C0702, // 0003 EQ R3 R3 K2 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x540DFFFE, // 0005 LDINT R3 -1 - 0x80040600, // 0006 RET 1 R3 - 0x600C000C, // 0007 GETGBL R3 G12 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x7C0C0200, // 0009 CALL R3 1 - 0x1C0C0703, // 000A EQ R3 R3 K3 - 0x780E0006, // 000B JMPF R3 #0013 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x940C0702, // 000D GETIDX R3 R3 K2 - 0x8C0C0704, // 000E GETMET R3 R3 K4 - 0x5C140200, // 000F MOVE R5 R1 - 0x5C180400, // 0010 MOVE R6 R2 - 0x7C0C0600, // 0011 CALL R3 3 - 0x80040600, // 0012 RET 1 R3 - 0x880C0100, // 0013 GETMBR R3 R0 K0 - 0x940C0702, // 0014 GETIDX R3 R3 K2 - 0x8C0C0704, // 0015 GETMET R3 R3 K4 - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C0C0600, // 0018 CALL R3 3 - 0x58100003, // 0019 LDCONST R4 K3 - 0x6014000C, // 001A GETGBL R5 G12 - 0x88180100, // 001B GETMBR R6 R0 K0 - 0x7C140200, // 001C CALL R5 1 - 0x14140805, // 001D LT R5 R4 R5 - 0x7816000C, // 001E JMPF R5 #002C - 0x88140100, // 001F GETMBR R5 R0 K0 - 0x94140A04, // 0020 GETIDX R5 R5 R4 - 0x8C140B04, // 0021 GETMET R5 R5 K4 - 0x5C1C0200, // 0022 MOVE R7 R1 - 0x5C200400, // 0023 MOVE R8 R2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C180105, // 0025 GETMET R6 R0 K5 - 0x5C200600, // 0026 MOVE R8 R3 - 0x5C240A00, // 0027 MOVE R9 R5 - 0x7C180600, // 0028 CALL R6 3 - 0x5C0C0C00, // 0029 MOVE R3 R6 - 0x00100903, // 002A ADD R4 R4 K3 - 0x7001FFED, // 002B JMP #001A - 0x80040600, // 002C RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_CompositeColorProvider_produce_value, /* name */ - be_nested_proto( - 10, /* 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_CompositeColorProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x600C000C, // 0000 GETGBL R3 G12 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x1C0C0702, // 0003 EQ R3 R3 K2 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x540DFFFE, // 0005 LDINT R3 -1 - 0x80040600, // 0006 RET 1 R3 - 0x600C000C, // 0007 GETGBL R3 G12 - 0x88100100, // 0008 GETMBR R4 R0 K0 - 0x7C0C0200, // 0009 CALL R3 1 - 0x1C0C0703, // 000A EQ R3 R3 K3 - 0x780E0006, // 000B JMPF R3 #0013 - 0x880C0100, // 000C GETMBR R3 R0 K0 - 0x940C0702, // 000D GETIDX R3 R3 K2 - 0x8C0C0706, // 000E GETMET R3 R3 K6 - 0x5C140200, // 000F MOVE R5 R1 - 0x5C180400, // 0010 MOVE R6 R2 - 0x7C0C0600, // 0011 CALL R3 3 - 0x80040600, // 0012 RET 1 R3 - 0x880C0100, // 0013 GETMBR R3 R0 K0 - 0x940C0702, // 0014 GETIDX R3 R3 K2 - 0x8C0C0706, // 0015 GETMET R3 R3 K6 - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C0C0600, // 0018 CALL R3 3 - 0x58100003, // 0019 LDCONST R4 K3 - 0x6014000C, // 001A GETGBL R5 G12 - 0x88180100, // 001B GETMBR R6 R0 K0 - 0x7C140200, // 001C CALL R5 1 - 0x14140805, // 001D LT R5 R4 R5 - 0x7816000C, // 001E JMPF R5 #002C - 0x88140100, // 001F GETMBR R5 R0 K0 - 0x94140A04, // 0020 GETIDX R5 R5 R4 - 0x8C140B06, // 0021 GETMET R5 R5 K6 - 0x5C1C0200, // 0022 MOVE R7 R1 - 0x5C200400, // 0023 MOVE R8 R2 - 0x7C140600, // 0024 CALL R5 3 - 0x8C180105, // 0025 GETMET R6 R0 K5 - 0x5C200600, // 0026 MOVE R8 R3 - 0x5C240A00, // 0027 MOVE R9 R5 - 0x7C180600, // 0028 CALL R6 3 - 0x5C0C0C00, // 0029 MOVE R3 R6 - 0x00100903, // 002A ADD R4 R4 K3 - 0x7001FFED, // 002B JMP #001A - 0x80040600, // 002C RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_CompositeColorProvider_tostring, /* name */ +be_local_closure(get_user_function, /* name */ be_nested_proto( 5, /* 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_CompositeColorProvider, /* shared constants */ - be_str_weak(tostring), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K2 */ be_nested_str_weak(find), + }), + be_str_weak(get_user_function), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0xA802000A, // 0000 EXBLK 0 #000C - 0x60040018, // 0001 GETGBL R1 G24 - 0x58080007, // 0002 LDCONST R2 K7 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100100, // 0004 GETMBR R4 R0 K0 - 0x7C0C0200, // 0005 CALL R3 1 - 0x88100108, // 0006 GETMBR R4 R0 K8 - 0x7C040600, // 0007 CALL R1 3 - 0xA8040001, // 0008 EXBLK 1 1 - 0x80040200, // 0009 RET 1 R1 - 0xA8040001, // 000A EXBLK 1 1 - 0x70020004, // 000B JMP #0011 - 0xAC040000, // 000C CATCH R1 0 0 - 0x70020001, // 000D JMP #0010 - 0x80061200, // 000E RET 1 K9 - 0x70020000, // 000F JMP #0011 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080301, // 0001 GETMBR R2 R1 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C080400, // 0004 CALL R2 2 + 0x80040400, // 0005 RET 1 R2 }) ) ); /*******************************************************************/ -/******************************************************************** -** Solidified function: _blend_colors -********************************************************************/ -be_local_closure(class_CompositeColorProvider__blend_colors, /* name */ - be_nested_proto( - 23, /* 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_CompositeColorProvider, /* shared constants */ - be_str_weak(_blend_colors), - &be_const_str_solidified, - ( &(const binstruction[151]) { /* code */ - 0x880C0108, // 0000 GETMBR R3 R0 K8 - 0x54120017, // 0001 LDINT R4 24 - 0x3C100204, // 0002 SHR R4 R1 R4 - 0x541600FE, // 0003 LDINT R5 255 - 0x2C100805, // 0004 AND R4 R4 R5 - 0x5416000F, // 0005 LDINT R5 16 - 0x3C140205, // 0006 SHR R5 R1 R5 - 0x541A00FE, // 0007 LDINT R6 255 - 0x2C140A06, // 0008 AND R5 R5 R6 - 0x541A0007, // 0009 LDINT R6 8 - 0x3C180206, // 000A SHR R6 R1 R6 - 0x541E00FE, // 000B LDINT R7 255 - 0x2C180C07, // 000C AND R6 R6 R7 - 0x541E00FE, // 000D LDINT R7 255 - 0x2C1C0207, // 000E AND R7 R1 R7 - 0x54220017, // 000F LDINT R8 24 - 0x3C200408, // 0010 SHR R8 R2 R8 - 0x542600FE, // 0011 LDINT R9 255 - 0x2C201009, // 0012 AND R8 R8 R9 - 0x5426000F, // 0013 LDINT R9 16 - 0x3C240409, // 0014 SHR R9 R2 R9 - 0x542A00FE, // 0015 LDINT R10 255 - 0x2C24120A, // 0016 AND R9 R9 R10 - 0x542A0007, // 0017 LDINT R10 8 - 0x3C28040A, // 0018 SHR R10 R2 R10 - 0x542E00FE, // 0019 LDINT R11 255 - 0x2C28140B, // 001A AND R10 R10 R11 - 0x542E00FE, // 001B LDINT R11 255 - 0x2C2C040B, // 001C AND R11 R2 R11 - 0x4C300000, // 001D LDNIL R12 - 0x4C340000, // 001E LDNIL R13 - 0x4C380000, // 001F LDNIL R14 - 0x4C3C0000, // 0020 LDNIL R15 - 0x1C400702, // 0021 EQ R16 R3 K2 - 0x7842001C, // 0022 JMPF R16 #0040 - 0x0C40110A, // 0023 DIV R16 R8 K10 - 0x60440009, // 0024 GETGBL R17 G9 - 0x044A0610, // 0025 SUB R18 K3 R16 - 0x08480E12, // 0026 MUL R18 R7 R18 - 0x084C1610, // 0027 MUL R19 R11 R16 - 0x00482413, // 0028 ADD R18 R18 R19 - 0x7C440200, // 0029 CALL R17 1 - 0x5C342200, // 002A MOVE R13 R17 - 0x60440009, // 002B GETGBL R17 G9 - 0x044A0610, // 002C SUB R18 K3 R16 - 0x08480C12, // 002D MUL R18 R6 R18 - 0x084C1410, // 002E MUL R19 R10 R16 - 0x00482413, // 002F ADD R18 R18 R19 - 0x7C440200, // 0030 CALL R17 1 - 0x5C382200, // 0031 MOVE R14 R17 - 0x60440009, // 0032 GETGBL R17 G9 - 0x044A0610, // 0033 SUB R18 K3 R16 - 0x08480A12, // 0034 MUL R18 R5 R18 - 0x084C1210, // 0035 MUL R19 R9 R16 - 0x00482413, // 0036 ADD R18 R18 R19 - 0x7C440200, // 0037 CALL R17 1 - 0x5C3C2200, // 0038 MOVE R15 R17 - 0x24440808, // 0039 GT R17 R4 R8 - 0x78460001, // 003A JMPF R17 #003D - 0x5C440800, // 003B MOVE R17 R4 - 0x70020000, // 003C JMP #003E - 0x5C441000, // 003D MOVE R17 R8 - 0x5C302200, // 003E MOVE R12 R17 - 0x7002004C, // 003F JMP #008D - 0x1C400703, // 0040 EQ R16 R3 K3 - 0x78420021, // 0041 JMPF R16 #0064 - 0x00400E0B, // 0042 ADD R16 R7 R11 - 0x5C342000, // 0043 MOVE R13 R16 - 0x00400C0A, // 0044 ADD R16 R6 R10 - 0x5C382000, // 0045 MOVE R14 R16 - 0x00400A09, // 0046 ADD R16 R5 R9 - 0x5C3C2000, // 0047 MOVE R15 R16 - 0x24400808, // 0048 GT R16 R4 R8 - 0x78420001, // 0049 JMPF R16 #004C - 0x5C400800, // 004A MOVE R16 R4 - 0x70020000, // 004B JMP #004D - 0x5C401000, // 004C MOVE R16 R8 - 0x5C302000, // 004D MOVE R12 R16 - 0x544200FE, // 004E LDINT R16 255 - 0x24401A10, // 004F GT R16 R13 R16 - 0x78420001, // 0050 JMPF R16 #0053 - 0x544200FE, // 0051 LDINT R16 255 - 0x70020000, // 0052 JMP #0054 - 0x5C401A00, // 0053 MOVE R16 R13 - 0x5C342000, // 0054 MOVE R13 R16 - 0x544200FE, // 0055 LDINT R16 255 - 0x24401C10, // 0056 GT R16 R14 R16 - 0x78420001, // 0057 JMPF R16 #005A - 0x544200FE, // 0058 LDINT R16 255 - 0x70020000, // 0059 JMP #005B - 0x5C401C00, // 005A MOVE R16 R14 - 0x5C382000, // 005B MOVE R14 R16 - 0x544200FE, // 005C LDINT R16 255 - 0x24401E10, // 005D GT R16 R15 R16 - 0x78420001, // 005E JMPF R16 #0061 - 0x544200FE, // 005F LDINT R16 255 - 0x70020000, // 0060 JMP #0062 - 0x5C401E00, // 0061 MOVE R16 R15 - 0x5C3C2000, // 0062 MOVE R15 R16 - 0x70020028, // 0063 JMP #008D - 0x1C40070B, // 0064 EQ R16 R3 K11 - 0x78420026, // 0065 JMPF R16 #008D - 0xB8421800, // 0066 GETNGBL R16 K12 - 0x8C40210D, // 0067 GETMET R16 R16 K13 - 0x08480E0B, // 0068 MUL R18 R7 R11 - 0x584C0002, // 0069 LDCONST R19 K2 - 0x545200FE, // 006A LDINT R20 255 - 0x545600FE, // 006B LDINT R21 255 - 0x08502815, // 006C MUL R20 R20 R21 - 0x58540002, // 006D LDCONST R21 K2 - 0x545A00FE, // 006E LDINT R22 255 - 0x7C400C00, // 006F CALL R16 6 - 0x5C342000, // 0070 MOVE R13 R16 - 0xB8421800, // 0071 GETNGBL R16 K12 - 0x8C40210D, // 0072 GETMET R16 R16 K13 - 0x08480C0A, // 0073 MUL R18 R6 R10 - 0x584C0002, // 0074 LDCONST R19 K2 - 0x545200FE, // 0075 LDINT R20 255 - 0x545600FE, // 0076 LDINT R21 255 - 0x08502815, // 0077 MUL R20 R20 R21 - 0x58540002, // 0078 LDCONST R21 K2 - 0x545A00FE, // 0079 LDINT R22 255 - 0x7C400C00, // 007A CALL R16 6 - 0x5C382000, // 007B MOVE R14 R16 - 0xB8421800, // 007C GETNGBL R16 K12 - 0x8C40210D, // 007D GETMET R16 R16 K13 - 0x08480A09, // 007E MUL R18 R5 R9 - 0x584C0002, // 007F LDCONST R19 K2 - 0x545200FE, // 0080 LDINT R20 255 - 0x545600FE, // 0081 LDINT R21 255 - 0x08502815, // 0082 MUL R20 R20 R21 - 0x58540002, // 0083 LDCONST R21 K2 - 0x545A00FE, // 0084 LDINT R22 255 - 0x7C400C00, // 0085 CALL R16 6 - 0x5C3C2000, // 0086 MOVE R15 R16 - 0x24400808, // 0087 GT R16 R4 R8 - 0x78420001, // 0088 JMPF R16 #008B - 0x5C400800, // 0089 MOVE R16 R4 - 0x70020000, // 008A JMP #008C - 0x5C401000, // 008B MOVE R16 R8 - 0x5C302000, // 008C MOVE R12 R16 - 0x54420017, // 008D LDINT R16 24 - 0x38401810, // 008E SHL R16 R12 R16 - 0x5446000F, // 008F LDINT R17 16 - 0x38441E11, // 0090 SHL R17 R15 R17 - 0x30402011, // 0091 OR R16 R16 R17 - 0x54460007, // 0092 LDINT R17 8 - 0x38441C11, // 0093 SHL R17 R14 R17 - 0x30402011, // 0094 OR R16 R16 R17 - 0x3040200D, // 0095 OR R16 R16 R13 - 0x80042000, // 0096 RET 1 R16 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_CompositeColorProvider_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_CompositeColorProvider, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050E, // 0003 GETMET R2 R2 K14 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: CompositeColorProvider -********************************************************************/ -extern const bclass be_class_ColorProvider; -be_local_class(CompositeColorProvider, - 1, - &be_class_ColorProvider, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(add_provider, -1), be_const_closure(class_CompositeColorProvider_add_provider_closure) }, - { be_const_key_weak(get_color_for_value, 7), be_const_closure(class_CompositeColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_CompositeColorProvider_init_closure) }, - { be_const_key_weak(PARAMS, 2), 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(blend_mode, -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(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(3, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(0), - be_const_int(1), - be_const_int(2), - })) ) } )) }, - { be_const_key_weak(default, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_CompositeColorProvider_tostring_closure) }, - { be_const_key_weak(providers, 4), be_const_var(0) }, - { be_const_key_weak(_blend_colors, -1), be_const_closure(class_CompositeColorProvider__blend_colors_closure) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_CompositeColorProvider_produce_value_closure) }, - })), - be_str_weak(CompositeColorProvider) -); - /******************************************************************** ** Solidified function: animation_controller ********************************************************************/ @@ -2717,6 +1524,704 @@ be_local_closure(scale_static, /* name */ ); /*******************************************************************/ +// compact class 'GradientAnimation' ktab size: 43, total: 82 (saved 312 bytes) +static const bvalue be_ktab_class_GradientAnimation[43] = { + /* K0 */ be_nested_str_weak(update), + /* K1 */ be_nested_str_weak(movement_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(phase_offset), + /* K7 */ be_nested_str_weak(_calculate_gradient), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(direction), + /* K10 */ be_nested_str_weak(spread), + /* K11 */ be_nested_str_weak(gradient_type), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(priority), + /* K14 */ be_nested_str_weak(linear), + /* K15 */ be_nested_str_weak(radial), + /* K16 */ be_nested_str_weak(animation), + /* K17 */ be_nested_str_weak(is_value_provider), + /* K18 */ be_nested_str_weak(rainbow), + /* K19 */ be_nested_str_weak(0x_X2508x), + /* K20 */ be_nested_str_weak(GradientAnimation_X28_X25s_X2C_X20color_X3D_X25s_X2C_X20movement_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K21 */ be_nested_str_weak(is_running), + /* K22 */ be_nested_str_weak(engine), + /* K23 */ be_nested_str_weak(get_strip_length), + /* K24 */ be_nested_str_weak(width), + /* K25 */ be_nested_str_weak(current_colors), + /* K26 */ be_nested_str_weak(set_pixel_color), + /* K27 */ be_nested_str_weak(resize), + /* K28 */ be_const_int(-16777216), + /* K29 */ be_nested_str_weak(_calculate_linear_position), + /* K30 */ be_nested_str_weak(_calculate_radial_position), + /* K31 */ be_nested_str_weak(light_state), + /* K32 */ be_const_int(3), + /* K33 */ be_nested_str_weak(HsToRgb), + /* K34 */ be_nested_str_weak(r), + /* K35 */ be_nested_str_weak(g), + /* K36 */ be_nested_str_weak(b), + /* K37 */ be_nested_str_weak(is_color_provider), + /* K38 */ be_nested_str_weak(get_color_for_value), + /* K39 */ be_nested_str_weak(resolve_value), + /* K40 */ be_nested_str_weak(int), + /* K41 */ be_nested_str_weak(init), + /* K42 */ be_nested_str_weak(center_pos), +}; + + +extern const bclass be_class_GradientAnimation; + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_GradientAnimation_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_GradientAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* 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 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x240C0502, // 000A GT R3 R2 K2 + 0x780E0011, // 000B JMPF R3 #001E + 0x880C0103, // 000C GETMBR R3 R0 K3 + 0x040C0203, // 000D SUB R3 R1 R3 + 0xB8120800, // 000E GETNGBL R4 K4 + 0x8C100905, // 000F GETMET R4 R4 K5 + 0x5C180400, // 0010 MOVE R6 R2 + 0x581C0002, // 0011 LDCONST R7 K2 + 0x542200FE, // 0012 LDINT R8 255 + 0x58240002, // 0013 LDCONST R9 K2 + 0x542A0009, // 0014 LDINT R10 10 + 0x7C100C00, // 0015 CALL R4 6 + 0x24140902, // 0016 GT R5 R4 K2 + 0x78160005, // 0017 JMPF R5 #001E + 0x08140604, // 0018 MUL R5 R3 R4 + 0x541A03E7, // 0019 LDINT R6 1000 + 0x0C140A06, // 001A DIV R5 R5 R6 + 0x541A00FF, // 001B LDINT R6 256 + 0x10140A06, // 001C MOD R5 R5 R6 + 0x90020C05, // 001D SETMBR R0 K6 R5 + 0x8C0C0107, // 001E GETMET R3 R0 K7 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x500C0200, // 0021 LDBOOL R3 1 0 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_linear_position +********************************************************************/ +be_local_closure(class_GradientAnimation__calculate_linear_position, /* name */ + be_nested_proto( + 13, /* 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_GradientAnimation, /* shared constants */ + be_str_weak(_calculate_linear_position), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0xB80E0800, // 0000 GETNGBL R3 K4 + 0x8C0C0705, // 0001 GETMET R3 R3 K5 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x041C0508, // 0004 SUB R7 R2 K8 + 0x58200002, // 0005 LDCONST R8 K2 + 0x542600FE, // 0006 LDINT R9 255 + 0x7C0C0C00, // 0007 CALL R3 6 + 0x88100109, // 0008 GETMBR R4 R0 K9 + 0x8814010A, // 0009 GETMBR R5 R0 K10 + 0x541A007F, // 000A LDINT R6 128 + 0x18180806, // 000B LE R6 R4 R6 + 0x781A000C, // 000C JMPF R6 #001A + 0xB81A0800, // 000D GETNGBL R6 K4 + 0x8C180D05, // 000E GETMET R6 R6 K5 + 0x5C200800, // 000F MOVE R8 R4 + 0x58240002, // 0010 LDCONST R9 K2 + 0x542A007F, // 0011 LDINT R10 128 + 0x582C0002, // 0012 LDCONST R11 K2 + 0x5432007F, // 0013 LDINT R12 128 + 0x7C180C00, // 0014 CALL R6 6 + 0x001C0606, // 0015 ADD R7 R3 R6 + 0x542200FF, // 0016 LDINT R8 256 + 0x101C0E08, // 0017 MOD R7 R7 R8 + 0x5C0C0E00, // 0018 MOVE R3 R7 + 0x7002000D, // 0019 JMP #0028 + 0xB81A0800, // 001A GETNGBL R6 K4 + 0x8C180D05, // 001B GETMET R6 R6 K5 + 0x5C200800, // 001C MOVE R8 R4 + 0x5426007F, // 001D LDINT R9 128 + 0x542A00FE, // 001E LDINT R10 255 + 0x582C0002, // 001F LDCONST R11 K2 + 0x543200FE, // 0020 LDINT R12 255 + 0x7C180C00, // 0021 CALL R6 6 + 0x541E00FE, // 0022 LDINT R7 255 + 0x00200606, // 0023 ADD R8 R3 R6 + 0x542600FF, // 0024 LDINT R9 256 + 0x10201009, // 0025 MOD R8 R8 R9 + 0x041C0E08, // 0026 SUB R7 R7 R8 + 0x5C0C0E00, // 0027 MOVE R3 R7 + 0xB81A0800, // 0028 GETNGBL R6 K4 + 0x8C180D05, // 0029 GETMET R6 R6 K5 + 0x5C200600, // 002A MOVE R8 R3 + 0x58240002, // 002B LDCONST R9 K2 + 0x542A00FE, // 002C LDINT R10 255 + 0x582C0002, // 002D LDCONST R11 K2 + 0x5C300A00, // 002E MOVE R12 R5 + 0x7C180C00, // 002F CALL R6 6 + 0x5C0C0C00, // 0030 MOVE R3 R6 + 0x80040600, // 0031 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_GradientAnimation_tostring, /* name */ + be_nested_proto( + 14, /* 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_GradientAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x8804010B, // 0000 GETMBR R1 R0 K11 + 0x8808010C, // 0001 GETMBR R2 R0 K12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x8810010D, // 0003 GETMBR R4 R0 K13 + 0x1C140302, // 0004 EQ R5 R1 K2 + 0x78160001, // 0005 JMPF R5 #0008 + 0x5814000E, // 0006 LDCONST R5 K14 + 0x70020000, // 0007 JMP #0009 + 0x5814000F, // 0008 LDCONST R5 K15 + 0x4C180000, // 0009 LDNIL R6 + 0xB81E2000, // 000A GETNGBL R7 K16 + 0x8C1C0F11, // 000B GETMET R7 R7 K17 + 0x5C240400, // 000C MOVE R9 R2 + 0x7C1C0400, // 000D CALL R7 2 + 0x781E0004, // 000E JMPF R7 #0014 + 0x601C0008, // 000F GETGBL R7 G8 + 0x5C200400, // 0010 MOVE R8 R2 + 0x7C1C0200, // 0011 CALL R7 1 + 0x5C180E00, // 0012 MOVE R6 R7 + 0x70020009, // 0013 JMP #001E + 0x4C1C0000, // 0014 LDNIL R7 + 0x1C1C0407, // 0015 EQ R7 R2 R7 + 0x781E0001, // 0016 JMPF R7 #0019 + 0x58180012, // 0017 LDCONST R6 K18 + 0x70020004, // 0018 JMP #001E + 0x601C0018, // 0019 GETGBL R7 G24 + 0x58200013, // 001A LDCONST R8 K19 + 0x5C240400, // 001B MOVE R9 R2 + 0x7C1C0400, // 001C CALL R7 2 + 0x5C180E00, // 001D MOVE R6 R7 + 0x601C0018, // 001E GETGBL R7 G24 + 0x58200014, // 001F LDCONST R8 K20 + 0x5C240A00, // 0020 MOVE R9 R5 + 0x5C280C00, // 0021 MOVE R10 R6 + 0x5C2C0600, // 0022 MOVE R11 R3 + 0x5C300800, // 0023 MOVE R12 R4 + 0x88340115, // 0024 GETMBR R13 R0 K21 + 0x7C1C0C00, // 0025 CALL R7 6 + 0x80040E00, // 0026 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_GradientAnimation_render, /* 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_GradientAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x880C0115, // 0000 GETMBR R3 R0 K21 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x880C0116, // 0007 GETMBR R3 R0 K22 + 0x8C0C0717, // 0008 GETMET R3 R3 K23 + 0x7C0C0200, // 0009 CALL R3 1 + 0x58100002, // 000A LDCONST R4 K2 + 0x14140803, // 000B LT R5 R4 R3 + 0x7816000E, // 000C JMPF R5 #001C + 0x88140318, // 000D GETMBR R5 R1 K24 + 0x14140805, // 000E LT R5 R4 R5 + 0x7816000B, // 000F JMPF R5 #001C + 0x6014000C, // 0010 GETGBL R5 G12 + 0x88180119, // 0011 GETMBR R6 R0 K25 + 0x7C140200, // 0012 CALL R5 1 + 0x14140805, // 0013 LT R5 R4 R5 + 0x78160004, // 0014 JMPF R5 #001A + 0x8C14031A, // 0015 GETMET R5 R1 K26 + 0x5C1C0800, // 0016 MOVE R7 R4 + 0x88200119, // 0017 GETMBR R8 R0 K25 + 0x94201004, // 0018 GETIDX R8 R8 R4 + 0x7C140600, // 0019 CALL R5 3 + 0x00100908, // 001A ADD R4 R4 K8 + 0x7001FFEE, // 001B JMP #000B + 0x50140200, // 001C LDBOOL R5 1 0 + 0x80040A00, // 001D RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_GradientAnimation_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_GradientAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x880C0116, // 0000 GETMBR R3 R0 K22 + 0x8C0C0717, // 0001 GETMET R3 R3 K23 + 0x7C0C0200, // 0002 CALL R3 1 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x88140119, // 0004 GETMBR R5 R0 K25 + 0x7C100200, // 0005 CALL R4 1 + 0x20100803, // 0006 NE R4 R4 R3 + 0x7812001B, // 0007 JMPF R4 #0024 + 0x88100119, // 0008 GETMBR R4 R0 K25 + 0x8C10091B, // 0009 GETMET R4 R4 K27 + 0x5C180600, // 000A MOVE R6 R3 + 0x7C100400, // 000B CALL R4 2 + 0x6010000C, // 000C GETGBL R4 G12 + 0x88140119, // 000D GETMBR R5 R0 K25 + 0x7C100200, // 000E CALL R4 1 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160012, // 0010 JMPF R5 #0024 + 0x6014000C, // 0011 GETGBL R5 G12 + 0x88180119, // 0012 GETMBR R6 R0 K25 + 0x7C140200, // 0013 CALL R5 1 + 0x28140805, // 0014 GE R5 R4 R5 + 0x74160004, // 0015 JMPT R5 #001B + 0x88140119, // 0016 GETMBR R5 R0 K25 + 0x94140A04, // 0017 GETIDX R5 R5 R4 + 0x4C180000, // 0018 LDNIL R6 + 0x1C140A06, // 0019 EQ R5 R5 R6 + 0x78160006, // 001A JMPF R5 #0022 + 0x6014000C, // 001B GETGBL R5 G12 + 0x88180119, // 001C GETMBR R6 R0 K25 + 0x7C140200, // 001D CALL R5 1 + 0x14140805, // 001E LT R5 R4 R5 + 0x78160001, // 001F JMPF R5 #0022 + 0x88140119, // 0020 GETMBR R5 R0 K25 + 0x9814091C, // 0021 SETIDX R5 R4 K28 + 0x00100908, // 0022 ADD R4 R4 K8 + 0x7001FFEA, // 0023 JMP #000F + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_gradient +********************************************************************/ +be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ + be_nested_proto( + 18, /* 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_GradientAnimation, /* shared constants */ + be_str_weak(_calculate_gradient), + &be_const_str_solidified, + ( &(const binstruction[149]) { /* code */ + 0x8808010B, // 0000 GETMBR R2 R0 K11 + 0x880C010C, // 0001 GETMBR R3 R0 K12 + 0x88100116, // 0002 GETMBR R4 R0 K22 + 0x8C100917, // 0003 GETMET R4 R4 K23 + 0x7C100200, // 0004 CALL R4 1 + 0x6014000C, // 0005 GETGBL R5 G12 + 0x88180119, // 0006 GETMBR R6 R0 K25 + 0x7C140200, // 0007 CALL R5 1 + 0x20140A04, // 0008 NE R5 R5 R4 + 0x78160003, // 0009 JMPF R5 #000E + 0x88140119, // 000A GETMBR R5 R0 K25 + 0x8C140B1B, // 000B GETMET R5 R5 K27 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x7C140400, // 000D CALL R5 2 + 0x58140002, // 000E LDCONST R5 K2 + 0x14180A04, // 000F LT R6 R5 R4 + 0x781A0082, // 0010 JMPF R6 #0094 + 0x58180002, // 0011 LDCONST R6 K2 + 0x1C1C0502, // 0012 EQ R7 R2 K2 + 0x781E0005, // 0013 JMPF R7 #001A + 0x8C1C011D, // 0014 GETMET R7 R0 K29 + 0x5C240A00, // 0015 MOVE R9 R5 + 0x5C280800, // 0016 MOVE R10 R4 + 0x7C1C0600, // 0017 CALL R7 3 + 0x5C180E00, // 0018 MOVE R6 R7 + 0x70020004, // 0019 JMP #001F + 0x8C1C011E, // 001A GETMET R7 R0 K30 + 0x5C240A00, // 001B MOVE R9 R5 + 0x5C280800, // 001C MOVE R10 R4 + 0x7C1C0600, // 001D CALL R7 3 + 0x5C180E00, // 001E MOVE R6 R7 + 0x881C0106, // 001F GETMBR R7 R0 K6 + 0x001C0C07, // 0020 ADD R7 R6 R7 + 0x542200FF, // 0021 LDINT R8 256 + 0x101C0E08, // 0022 MOD R7 R7 R8 + 0x5C180E00, // 0023 MOVE R6 R7 + 0x581C001C, // 0024 LDCONST R7 K28 + 0x4C200000, // 0025 LDNIL R8 + 0x1C200608, // 0026 EQ R8 R3 R8 + 0x7822001B, // 0027 JMPF R8 #0044 + 0xB8220800, // 0028 GETNGBL R8 K4 + 0x8C201105, // 0029 GETMET R8 R8 K5 + 0x5C280C00, // 002A MOVE R10 R6 + 0x582C0002, // 002B LDCONST R11 K2 + 0x543200FE, // 002C LDINT R12 255 + 0x58340002, // 002D LDCONST R13 K2 + 0x543A0166, // 002E LDINT R14 359 + 0x7C200C00, // 002F CALL R8 6 + 0xA4263E00, // 0030 IMPORT R9 K31 + 0x5C281200, // 0031 MOVE R10 R9 + 0x582C0020, // 0032 LDCONST R11 K32 + 0x7C280200, // 0033 CALL R10 1 + 0x8C2C1521, // 0034 GETMET R11 R10 K33 + 0x5C341000, // 0035 MOVE R13 R8 + 0x543A00FE, // 0036 LDINT R14 255 + 0x7C2C0600, // 0037 CALL R11 3 + 0x882C1522, // 0038 GETMBR R11 R10 K34 + 0x5432000F, // 0039 LDINT R12 16 + 0x382C160C, // 003A SHL R11 R11 R12 + 0x302E380B, // 003B OR R11 K28 R11 + 0x88301523, // 003C GETMBR R12 R10 K35 + 0x54360007, // 003D LDINT R13 8 + 0x3830180D, // 003E SHL R12 R12 R13 + 0x302C160C, // 003F OR R11 R11 R12 + 0x88301524, // 0040 GETMBR R12 R10 K36 + 0x302C160C, // 0041 OR R11 R11 R12 + 0x5C1C1600, // 0042 MOVE R7 R11 + 0x7002004B, // 0043 JMP #0090 + 0xB8222000, // 0044 GETNGBL R8 K16 + 0x8C201125, // 0045 GETMET R8 R8 K37 + 0x5C280600, // 0046 MOVE R10 R3 + 0x7C200400, // 0047 CALL R8 2 + 0x78220009, // 0048 JMPF R8 #0053 + 0x88200726, // 0049 GETMBR R8 R3 K38 + 0x4C240000, // 004A LDNIL R9 + 0x20201009, // 004B NE R8 R8 R9 + 0x78220005, // 004C JMPF R8 #0053 + 0x8C200726, // 004D GETMET R8 R3 K38 + 0x5C280C00, // 004E MOVE R10 R6 + 0x582C0002, // 004F LDCONST R11 K2 + 0x7C200600, // 0050 CALL R8 3 + 0x5C1C1000, // 0051 MOVE R7 R8 + 0x7002003C, // 0052 JMP #0090 + 0xB8222000, // 0053 GETNGBL R8 K16 + 0x8C201111, // 0054 GETMET R8 R8 K17 + 0x5C280600, // 0055 MOVE R10 R3 + 0x7C200400, // 0056 CALL R8 2 + 0x78220008, // 0057 JMPF R8 #0061 + 0x8C200127, // 0058 GETMET R8 R0 K39 + 0x5C280600, // 0059 MOVE R10 R3 + 0x582C000C, // 005A LDCONST R11 K12 + 0x54320009, // 005B LDINT R12 10 + 0x08300C0C, // 005C MUL R12 R6 R12 + 0x0030020C, // 005D ADD R12 R1 R12 + 0x7C200800, // 005E CALL R8 4 + 0x5C1C1000, // 005F MOVE R7 R8 + 0x7002002E, // 0060 JMP #0090 + 0x60200004, // 0061 GETGBL R8 G4 + 0x5C240600, // 0062 MOVE R9 R3 + 0x7C200200, // 0063 CALL R8 1 + 0x1C201128, // 0064 EQ R8 R8 K40 + 0x78220028, // 0065 JMPF R8 #008F + 0x5C200C00, // 0066 MOVE R8 R6 + 0xB8260800, // 0067 GETNGBL R9 K4 + 0x8C241305, // 0068 GETMET R9 R9 K5 + 0x5C2C1000, // 0069 MOVE R11 R8 + 0x58300002, // 006A LDCONST R12 K2 + 0x543600FE, // 006B LDINT R13 255 + 0x58380002, // 006C LDCONST R14 K2 + 0x543E000F, // 006D LDINT R15 16 + 0x3C3C060F, // 006E SHR R15 R3 R15 + 0x544200FE, // 006F LDINT R16 255 + 0x2C3C1E10, // 0070 AND R15 R15 R16 + 0x7C240C00, // 0071 CALL R9 6 + 0xB82A0800, // 0072 GETNGBL R10 K4 + 0x8C281505, // 0073 GETMET R10 R10 K5 + 0x5C301000, // 0074 MOVE R12 R8 + 0x58340002, // 0075 LDCONST R13 K2 + 0x543A00FE, // 0076 LDINT R14 255 + 0x583C0002, // 0077 LDCONST R15 K2 + 0x54420007, // 0078 LDINT R16 8 + 0x3C400610, // 0079 SHR R16 R3 R16 + 0x544600FE, // 007A LDINT R17 255 + 0x2C402011, // 007B AND R16 R16 R17 + 0x7C280C00, // 007C CALL R10 6 + 0xB82E0800, // 007D GETNGBL R11 K4 + 0x8C2C1705, // 007E GETMET R11 R11 K5 + 0x5C341000, // 007F MOVE R13 R8 + 0x58380002, // 0080 LDCONST R14 K2 + 0x543E00FE, // 0081 LDINT R15 255 + 0x58400002, // 0082 LDCONST R16 K2 + 0x544600FE, // 0083 LDINT R17 255 + 0x2C440611, // 0084 AND R17 R3 R17 + 0x7C2C0C00, // 0085 CALL R11 6 + 0x5432000F, // 0086 LDINT R12 16 + 0x3830120C, // 0087 SHL R12 R9 R12 + 0x3032380C, // 0088 OR R12 K28 R12 + 0x54360007, // 0089 LDINT R13 8 + 0x3834140D, // 008A SHL R13 R10 R13 + 0x3030180D, // 008B OR R12 R12 R13 + 0x3030180B, // 008C OR R12 R12 R11 + 0x5C1C1800, // 008D MOVE R7 R12 + 0x70020000, // 008E JMP #0090 + 0x5C1C0600, // 008F MOVE R7 R3 + 0x88200119, // 0090 GETMBR R8 R0 K25 + 0x98200A07, // 0091 SETIDX R8 R5 R7 + 0x00140B08, // 0092 ADD R5 R5 K8 + 0x7001FF7A, // 0093 JMP #000F + 0x80000000, // 0094 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_GradientAnimation_init, /* 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_GradientAnimation, /* 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 + 0x8C080529, // 0003 GETMET R2 R2 K41 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90023202, // 0008 SETMBR R0 K25 R2 + 0x90020D02, // 0009 SETMBR R0 K6 K2 + 0x88080116, // 000A GETMBR R2 R0 K22 + 0x8C080517, // 000B GETMET R2 R2 K23 + 0x7C080200, // 000C CALL R2 1 + 0x880C0119, // 000D GETMBR R3 R0 K25 + 0x8C0C071B, // 000E GETMET R3 R3 K27 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x580C0002, // 0011 LDCONST R3 K2 + 0x14100602, // 0012 LT R4 R3 R2 + 0x78120003, // 0013 JMPF R4 #0018 + 0x88100119, // 0014 GETMBR R4 R0 K25 + 0x9810071C, // 0015 SETIDX R4 R3 K28 + 0x000C0708, // 0016 ADD R3 R3 K8 + 0x7001FFF9, // 0017 JMP #0012 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_radial_position +********************************************************************/ +be_local_closure(class_GradientAnimation__calculate_radial_position, /* name */ + be_nested_proto( + 14, /* 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_GradientAnimation, /* shared constants */ + be_str_weak(_calculate_radial_position), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0xB80E0800, // 0000 GETNGBL R3 K4 + 0x8C0C0705, // 0001 GETMET R3 R3 K5 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x041C0508, // 0004 SUB R7 R2 K8 + 0x58200002, // 0005 LDCONST R8 K2 + 0x542600FE, // 0006 LDINT R9 255 + 0x7C0C0C00, // 0007 CALL R3 6 + 0x8810012A, // 0008 GETMBR R4 R0 K42 + 0x8814010A, // 0009 GETMBR R5 R0 K10 + 0x58180002, // 000A LDCONST R6 K2 + 0x281C0604, // 000B GE R7 R3 R4 + 0x781E0002, // 000C JMPF R7 #0010 + 0x041C0604, // 000D SUB R7 R3 R4 + 0x5C180E00, // 000E MOVE R6 R7 + 0x70020001, // 000F JMP #0012 + 0x041C0803, // 0010 SUB R7 R4 R3 + 0x5C180E00, // 0011 MOVE R6 R7 + 0xB81E0800, // 0012 GETNGBL R7 K4 + 0x8C1C0F05, // 0013 GETMET R7 R7 K5 + 0x5C240C00, // 0014 MOVE R9 R6 + 0x58280002, // 0015 LDCONST R10 K2 + 0x542E007F, // 0016 LDINT R11 128 + 0x58300002, // 0017 LDCONST R12 K2 + 0x5C340A00, // 0018 MOVE R13 R5 + 0x7C1C0C00, // 0019 CALL R7 6 + 0x5C180E00, // 001A MOVE R6 R7 + 0x541E00FE, // 001B LDINT R7 255 + 0x241C0C07, // 001C GT R7 R6 R7 + 0x781E0000, // 001D JMPF R7 #001F + 0x541A00FE, // 001E LDINT R6 255 + 0x80040C00, // 001F RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: GradientAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(GradientAnimation, + 2, + &be_class_Animation, + be_nested_map(11, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(current_colors, -1), be_const_var(0) }, + { be_const_key_weak(render, -1), be_const_closure(class_GradientAnimation_render_closure) }, + { be_const_key_weak(_calculate_linear_position, -1), be_const_closure(class_GradientAnimation__calculate_linear_position_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_GradientAnimation_tostring_closure) }, + { be_const_key_weak(update, 1), be_const_closure(class_GradientAnimation_update_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_GradientAnimation_on_param_changed_closure) }, + { be_const_key_weak(phase_offset, -1), be_const_var(1) }, + { be_const_key_weak(_calculate_gradient, -1), be_const_closure(class_GradientAnimation__calculate_gradient_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(direction, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(center_pos, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(gradient_type, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(color, -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(default, 1), be_const_nil() }, + { be_const_key_weak(nillable, -1), be_const_bool(1) }, + })) ) } )) }, + { be_const_key_weak(movement_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(spread, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_GradientAnimation_init_closure) }, + { be_const_key_weak(_calculate_radial_position, -1), be_const_closure(class_GradientAnimation__calculate_radial_position_closure) }, + })), + be_str_weak(GradientAnimation) +); /******************************************************************** ** Solidified function: twinkle_intense @@ -2850,6 +2355,42 @@ be_local_closure(gradient_two_color_linear, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: sawtooth +********************************************************************/ +be_local_closure(sawtooth, /* 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_nested_str_weak(SAWTOOTH), + }), + be_str_weak(sawtooth), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + // compact class 'CometAnimation' ktab size: 24, total: 45 (saved 168 bytes) static const bvalue be_ktab_class_CometAnimation[24] = { /* K0 */ be_nested_str_weak(update), @@ -3275,9 +2816,9 @@ be_local_class(CometAnimation, ); /******************************************************************** -** Solidified function: sawtooth +** Solidified function: jitter_position ********************************************************************/ -be_local_closure(sawtooth, /* name */ +be_local_closure(jitter_position, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -3287,22 +2828,23 @@ be_local_closure(sawtooth, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(SAWTOOTH), + /* K1 */ be_nested_str_weak(jitter_animation), + /* K2 */ be_nested_str_weak(jitter_type), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(position_range), }), - be_str_weak(sawtooth), + be_str_weak(jitter_position), &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 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x90060503, // 0004 SETMBR R1 K2 K3 + 0x540A0031, // 0005 LDINT R2 50 + 0x90060802, // 0006 SETMBR R1 K4 R2 0x80040200, // 0007 RET 1 R1 }) ) @@ -3998,43 +3540,6 @@ be_local_class(FireAnimation, be_str_weak(FireAnimation) ); -/******************************************************************** -** Solidified function: jitter_position -********************************************************************/ -be_local_closure(jitter_position, /* 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(jitter_animation), - /* K2 */ be_nested_str_weak(jitter_type), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(position_range), - }), - be_str_weak(jitter_position), - &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 - 0x540A0031, // 0005 LDINT R2 50 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: wave_rainbow_sine ********************************************************************/ @@ -4908,43 +4413,6 @@ be_local_closure(jitter_brightness, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: scale_grow -********************************************************************/ -be_local_closure(scale_grow, /* 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(scale_animation), - /* K2 */ be_nested_str_weak(scale_mode), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_str_weak(scale_speed), - }), - be_str_weak(scale_grow), - &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 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: scale_oscillate ********************************************************************/ @@ -4981,6 +4449,829 @@ be_local_closure(scale_oscillate, /* name */ ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: scale_grow +********************************************************************/ +be_local_closure(scale_grow, /* 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(scale_animation), + /* K2 */ be_nested_str_weak(scale_mode), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_str_weak(scale_speed), + }), + be_str_weak(scale_grow), + &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 + 0x540A007F, // 0005 LDINT R2 128 + 0x90060802, // 0006 SETMBR R1 K4 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'ScaleAnimation' ktab size: 42, total: 83 (saved 328 bytes) +static const bvalue be_ktab_class_ScaleAnimation[42] = { + /* K0 */ be_nested_str_weak(scale_mode), + /* K1 */ be_nested_str_weak(scale_factor), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(_sine), + /* K5 */ be_nested_str_weak(scale_phase), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_uint), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_str_weak(engine), + /* K10 */ be_nested_str_weak(get_strip_length), + /* K11 */ be_nested_str_weak(current_colors), + /* K12 */ be_nested_str_weak(_initialize_buffers), + /* K13 */ be_nested_str_weak(source_animation), + /* K14 */ be_nested_str_weak(scale_center), + /* K15 */ be_nested_str_weak(interpolation), + /* K16 */ be_nested_str_weak(source_frame), + /* K17 */ be_nested_str_weak(clear), + /* K18 */ be_nested_str_weak(render), + /* K19 */ be_nested_str_weak(_get_current_scale_factor), + /* K20 */ be_nested_str_weak(get_pixel_color), + /* K21 */ be_const_int(-16777216), + /* K22 */ be_nested_str_weak(_interpolate_colors), + /* K23 */ be_nested_str_weak(scale_speed), + /* K24 */ be_nested_str_weak(start_time), + /* K25 */ be_nested_str_weak(is_running), + /* K26 */ be_nested_str_weak(start), + /* K27 */ be_nested_str_weak(update), + /* K28 */ be_nested_str_weak(_calculate_scale), + /* K29 */ be_nested_str_weak(static), + /* K30 */ be_nested_str_weak(oscillate), + /* K31 */ be_nested_str_weak(grow), + /* K32 */ be_nested_str_weak(shrink), + /* K33 */ be_nested_str_weak(unknown), + /* K34 */ be_nested_str_weak(ScaleAnimation_X28_X25s_X2C_X20factor_X3D_X25s_X2C_X20speed_X3D_X25s_X29), + /* K35 */ be_nested_str_weak(init), + /* K36 */ be_nested_str_weak(time_ms), + /* K37 */ be_nested_str_weak(animation), + /* K38 */ be_nested_str_weak(frame_buffer), + /* K39 */ be_nested_str_weak(resize), + /* K40 */ be_nested_str_weak(width), + /* K41 */ be_nested_str_weak(set_pixel_color), +}; + + +extern const bclass be_class_ScaleAnimation; + +/******************************************************************** +** Solidified function: _get_current_scale_factor +********************************************************************/ +be_local_closure(class_ScaleAnimation__get_current_scale_factor, /* name */ + be_nested_proto( + 11, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(_get_current_scale_factor), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x1C0C0302, // 0002 EQ R3 R1 K2 + 0x780E0001, // 0003 JMPF R3 #0006 + 0x80040400, // 0004 RET 1 R2 + 0x70020025, // 0005 JMP #002C + 0x1C0C0303, // 0006 EQ R3 R1 K3 + 0x780E000C, // 0007 JMPF R3 #0015 + 0x8C0C0104, // 0008 GETMET R3 R0 K4 + 0x88140105, // 0009 GETMBR R5 R0 K5 + 0x7C0C0400, // 000A CALL R3 2 + 0xB8120C00, // 000B GETNGBL R4 K6 + 0x8C100907, // 000C GETMET R4 R4 K7 + 0x5C180600, // 000D MOVE R6 R3 + 0x581C0002, // 000E LDCONST R7 K2 + 0x542200FE, // 000F LDINT R8 255 + 0x5426003F, // 0010 LDINT R9 64 + 0x542A00FE, // 0011 LDINT R10 255 + 0x7C100C00, // 0012 CALL R4 6 + 0x80040800, // 0013 RET 1 R4 + 0x70020016, // 0014 JMP #002C + 0x1C0C0308, // 0015 EQ R3 R1 K8 + 0x780E0009, // 0016 JMPF R3 #0021 + 0xB80E0C00, // 0017 GETNGBL R3 K6 + 0x8C0C0707, // 0018 GETMET R3 R3 K7 + 0x88140105, // 0019 GETMBR R5 R0 K5 + 0x58180002, // 001A LDCONST R6 K2 + 0x541E00FE, // 001B LDINT R7 255 + 0x5422003F, // 001C LDINT R8 64 + 0x542600FE, // 001D LDINT R9 255 + 0x7C0C0C00, // 001E CALL R3 6 + 0x80040600, // 001F RET 1 R3 + 0x7002000A, // 0020 JMP #002C + 0xB80E0C00, // 0021 GETNGBL R3 K6 + 0x8C0C0707, // 0022 GETMET R3 R3 K7 + 0x541600FE, // 0023 LDINT R5 255 + 0x88180105, // 0024 GETMBR R6 R0 K5 + 0x04140A06, // 0025 SUB R5 R5 R6 + 0x58180002, // 0026 LDCONST R6 K2 + 0x541E00FE, // 0027 LDINT R7 255 + 0x5422003F, // 0028 LDINT R8 64 + 0x542600FE, // 0029 LDINT R9 255 + 0x7C0C0C00, // 002A CALL R3 6 + 0x80040600, // 002B RET 1 R3 + 0x80000000, // 002C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_scale +********************************************************************/ +be_local_closure(class_ScaleAnimation__calculate_scale, /* name */ + be_nested_proto( + 21, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(_calculate_scale), + &be_const_str_solidified, + ( &(const binstruction[110]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C010B, // 0004 GETMBR R3 R0 K11 + 0x7C080200, // 0005 CALL R2 1 + 0x20080401, // 0006 NE R2 R2 R1 + 0x780A0001, // 0007 JMPF R2 #000A + 0x8C08010C, // 0008 GETMET R2 R0 K12 + 0x7C080200, // 0009 CALL R2 1 + 0x8808010D, // 000A GETMBR R2 R0 K13 + 0x880C010E, // 000B GETMBR R3 R0 K14 + 0x8810010F, // 000C GETMBR R4 R0 K15 + 0x88140110, // 000D GETMBR R5 R0 K16 + 0x8C140B11, // 000E GETMET R5 R5 K17 + 0x7C140200, // 000F CALL R5 1 + 0x4C140000, // 0010 LDNIL R5 + 0x20140405, // 0011 NE R5 R2 R5 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140512, // 0013 GETMET R5 R2 K18 + 0x881C0110, // 0014 GETMBR R7 R0 K16 + 0x58200002, // 0015 LDCONST R8 K2 + 0x7C140600, // 0016 CALL R5 3 + 0x8C140113, // 0017 GETMET R5 R0 K19 + 0x7C140200, // 0018 CALL R5 1 + 0xB81A0C00, // 0019 GETNGBL R6 K6 + 0x8C180D07, // 001A GETMET R6 R6 K7 + 0x5C200600, // 001B MOVE R8 R3 + 0x58240002, // 001C LDCONST R9 K2 + 0x542A00FE, // 001D LDINT R10 255 + 0x582C0002, // 001E LDCONST R11 K2 + 0x04300303, // 001F SUB R12 R1 K3 + 0x7C180C00, // 0020 CALL R6 6 + 0x581C0002, // 0021 LDCONST R7 K2 + 0x14200E01, // 0022 LT R8 R7 R1 + 0x78220048, // 0023 JMPF R8 #006D + 0x04200E06, // 0024 SUB R8 R7 R6 + 0xB8260C00, // 0025 GETNGBL R9 K6 + 0x8C241307, // 0026 GETMET R9 R9 K7 + 0x542E007F, // 0027 LDINT R11 128 + 0x082C100B, // 0028 MUL R11 R8 R11 + 0x58300002, // 0029 LDCONST R12 K2 + 0x5436007F, // 002A LDINT R13 128 + 0x543A007F, // 002B LDINT R14 128 + 0x08341A0E, // 002C MUL R13 R13 R14 + 0x58380002, // 002D LDCONST R14 K2 + 0x543E007F, // 002E LDINT R15 128 + 0x083C0A0F, // 002F MUL R15 R5 R15 + 0x7C240C00, // 0030 CALL R9 6 + 0x542A007F, // 0031 LDINT R10 128 + 0x0C24120A, // 0032 DIV R9 R9 R10 + 0x00280C09, // 0033 ADD R10 R6 R9 + 0x1C2C0902, // 0034 EQ R11 R4 K2 + 0x782E000D, // 0035 JMPF R11 #0044 + 0x282C1502, // 0036 GE R11 R10 K2 + 0x782E0008, // 0037 JMPF R11 #0041 + 0x142C1401, // 0038 LT R11 R10 R1 + 0x782E0006, // 0039 JMPF R11 #0041 + 0x882C010B, // 003A GETMBR R11 R0 K11 + 0x88300110, // 003B GETMBR R12 R0 K16 + 0x8C301914, // 003C GETMET R12 R12 K20 + 0x5C381400, // 003D MOVE R14 R10 + 0x7C300400, // 003E CALL R12 2 + 0x982C0E0C, // 003F SETIDX R11 R7 R12 + 0x70020001, // 0040 JMP #0043 + 0x882C010B, // 0041 GETMBR R11 R0 K11 + 0x982C0F15, // 0042 SETIDX R11 R7 K21 + 0x70020026, // 0043 JMP #006B + 0x282C1502, // 0044 GE R11 R10 K2 + 0x782E0022, // 0045 JMPF R11 #0069 + 0x042C0303, // 0046 SUB R11 R1 K3 + 0x142C140B, // 0047 LT R11 R10 R11 + 0x782E001F, // 0048 JMPF R11 #0069 + 0x602C0009, // 0049 GETGBL R11 G9 + 0x5C301400, // 004A MOVE R12 R10 + 0x7C2C0200, // 004B CALL R11 1 + 0x60300009, // 004C GETGBL R12 G9 + 0x0434140B, // 004D SUB R13 R10 R11 + 0x543A00FF, // 004E LDINT R14 256 + 0x08341A0E, // 004F MUL R13 R13 R14 + 0x7C300200, // 0050 CALL R12 1 + 0x28341702, // 0051 GE R13 R11 K2 + 0x78360012, // 0052 JMPF R13 #0066 + 0x04340303, // 0053 SUB R13 R1 K3 + 0x1434160D, // 0054 LT R13 R11 R13 + 0x7836000F, // 0055 JMPF R13 #0066 + 0x88340110, // 0056 GETMBR R13 R0 K16 + 0x8C341B14, // 0057 GETMET R13 R13 K20 + 0x5C3C1600, // 0058 MOVE R15 R11 + 0x7C340400, // 0059 CALL R13 2 + 0x88380110, // 005A GETMBR R14 R0 K16 + 0x8C381D14, // 005B GETMET R14 R14 K20 + 0x00401703, // 005C ADD R16 R11 K3 + 0x7C380400, // 005D CALL R14 2 + 0x883C010B, // 005E GETMBR R15 R0 K11 + 0x8C400116, // 005F GETMET R16 R0 K22 + 0x5C481A00, // 0060 MOVE R18 R13 + 0x5C4C1C00, // 0061 MOVE R19 R14 + 0x5C501800, // 0062 MOVE R20 R12 + 0x7C400800, // 0063 CALL R16 4 + 0x983C0E10, // 0064 SETIDX R15 R7 R16 + 0x70020001, // 0065 JMP #0068 + 0x8834010B, // 0066 GETMBR R13 R0 K11 + 0x98340F15, // 0067 SETIDX R13 R7 K21 + 0x70020001, // 0068 JMP #006B + 0x882C010B, // 0069 GETMBR R11 R0 K11 + 0x982C0F15, // 006A SETIDX R11 R7 K21 + 0x001C0F03, // 006B ADD R7 R7 K3 + 0x7001FFB4, // 006C JMP #0022 + 0x80000000, // 006D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_ScaleAnimation_update, /* name */ + be_nested_proto( + 13, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x88080117, // 0000 GETMBR R2 R0 K23 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x8810010D, // 0002 GETMBR R4 R0 K13 + 0x24140502, // 0003 GT R5 R2 K2 + 0x78160013, // 0004 JMPF R5 #0019 + 0x24140702, // 0005 GT R5 R3 K2 + 0x78160011, // 0006 JMPF R5 #0019 + 0x88140118, // 0007 GETMBR R5 R0 K24 + 0x04140205, // 0008 SUB R5 R1 R5 + 0xB81A0C00, // 0009 GETNGBL R6 K6 + 0x8C180D07, // 000A GETMET R6 R6 K7 + 0x5C200400, // 000B MOVE R8 R2 + 0x58240002, // 000C LDCONST R9 K2 + 0x542A00FE, // 000D LDINT R10 255 + 0x582C0002, // 000E LDCONST R11 K2 + 0x58300008, // 000F LDCONST R12 K8 + 0x7C180C00, // 0010 CALL R6 6 + 0x241C0D02, // 0011 GT R7 R6 K2 + 0x781E0005, // 0012 JMPF R7 #0019 + 0x081C0A06, // 0013 MUL R7 R5 R6 + 0x542203E7, // 0014 LDINT R8 1000 + 0x0C1C0E08, // 0015 DIV R7 R7 R8 + 0x542200FF, // 0016 LDINT R8 256 + 0x101C0E08, // 0017 MOD R7 R7 R8 + 0x90020A07, // 0018 SETMBR R0 K5 R7 + 0x4C140000, // 0019 LDNIL R5 + 0x20140805, // 001A NE R5 R4 R5 + 0x78160007, // 001B JMPF R5 #0024 + 0x88140919, // 001C GETMBR R5 R4 K25 + 0x74160002, // 001D JMPT R5 #0021 + 0x8C14091A, // 001E GETMET R5 R4 K26 + 0x881C0118, // 001F GETMBR R7 R0 K24 + 0x7C140400, // 0020 CALL R5 2 + 0x8C14091B, // 0021 GETMET R5 R4 K27 + 0x5C1C0200, // 0022 MOVE R7 R1 + 0x7C140400, // 0023 CALL R5 2 + 0x8C14011C, // 0024 GETMET R5 R0 K28 + 0x7C140200, // 0025 CALL R5 1 + 0x50140200, // 0026 LDBOOL R5 1 0 + 0x80040A00, // 0027 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ScaleAnimation_tostring, /* name */ + be_nested_proto( + 11, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x4008031D, // 0002 CONNECT R2 R1 K29 + 0x4008031E, // 0003 CONNECT R2 R1 K30 + 0x4008031F, // 0004 CONNECT R2 R1 K31 + 0x40080320, // 0005 CONNECT R2 R1 K32 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x880C0101, // 0007 GETMBR R3 R0 K1 + 0x88100117, // 0008 GETMBR R4 R0 K23 + 0x94140202, // 0009 GETIDX R5 R1 R2 + 0x4C180000, // 000A LDNIL R6 + 0x20140A06, // 000B NE R5 R5 R6 + 0x78160001, // 000C JMPF R5 #000F + 0x94140202, // 000D GETIDX R5 R1 R2 + 0x70020000, // 000E JMP #0010 + 0x58140021, // 000F LDCONST R5 K33 + 0x60180018, // 0010 GETGBL R6 G24 + 0x581C0022, // 0011 LDCONST R7 K34 + 0x5C200A00, // 0012 MOVE R8 R5 + 0x5C240600, // 0013 MOVE R9 R3 + 0x5C280800, // 0014 MOVE R10 R4 + 0x7C180800, // 0015 CALL R6 4 + 0x80040C00, // 0016 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080523, // 0003 GETMET R2 R2 K35 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020B02, // 0006 SETMBR R0 K5 K2 + 0x88080109, // 0007 GETMBR R2 R0 K9 + 0x88080524, // 0008 GETMBR R2 R2 K36 + 0x90023002, // 0009 SETMBR R0 K24 R2 + 0x8C08010C, // 000A GETMET R2 R0 K12 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _sine +********************************************************************/ +be_local_closure(class_ScaleAnimation__sine, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(_sine), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x540A003F, // 0000 LDINT R2 64 + 0x10080202, // 0001 MOD R2 R1 R2 + 0x540E003F, // 0002 LDINT R3 64 + 0x140C0203, // 0003 LT R3 R1 R3 + 0x780E0009, // 0004 JMPF R3 #000F + 0xB80E0C00, // 0005 GETNGBL R3 K6 + 0x8C0C0707, // 0006 GETMET R3 R3 K7 + 0x5C140400, // 0007 MOVE R5 R2 + 0x58180002, // 0008 LDCONST R6 K2 + 0x541E003F, // 0009 LDINT R7 64 + 0x5422007F, // 000A LDINT R8 128 + 0x542600FE, // 000B LDINT R9 255 + 0x7C0C0C00, // 000C CALL R3 6 + 0x80040600, // 000D RET 1 R3 + 0x70020025, // 000E JMP #0035 + 0x540E007F, // 000F LDINT R3 128 + 0x140C0203, // 0010 LT R3 R1 R3 + 0x780E000A, // 0011 JMPF R3 #001D + 0xB80E0C00, // 0012 GETNGBL R3 K6 + 0x8C0C0707, // 0013 GETMET R3 R3 K7 + 0x5416007F, // 0014 LDINT R5 128 + 0x04140A01, // 0015 SUB R5 R5 R1 + 0x58180002, // 0016 LDCONST R6 K2 + 0x541E003F, // 0017 LDINT R7 64 + 0x5422007F, // 0018 LDINT R8 128 + 0x542600FE, // 0019 LDINT R9 255 + 0x7C0C0C00, // 001A CALL R3 6 + 0x80040600, // 001B RET 1 R3 + 0x70020017, // 001C JMP #0035 + 0x540E00BF, // 001D LDINT R3 192 + 0x140C0203, // 001E LT R3 R1 R3 + 0x780E000A, // 001F JMPF R3 #002B + 0xB80E0C00, // 0020 GETNGBL R3 K6 + 0x8C0C0707, // 0021 GETMET R3 R3 K7 + 0x5416007F, // 0022 LDINT R5 128 + 0x04140205, // 0023 SUB R5 R1 R5 + 0x58180002, // 0024 LDCONST R6 K2 + 0x541E003F, // 0025 LDINT R7 64 + 0x5422007F, // 0026 LDINT R8 128 + 0x58240002, // 0027 LDCONST R9 K2 + 0x7C0C0C00, // 0028 CALL R3 6 + 0x80040600, // 0029 RET 1 R3 + 0x70020009, // 002A JMP #0035 + 0xB80E0C00, // 002B GETNGBL R3 K6 + 0x8C0C0707, // 002C GETMET R3 R3 K7 + 0x541600FF, // 002D LDINT R5 256 + 0x04140A01, // 002E SUB R5 R5 R1 + 0x58180002, // 002F LDCONST R6 K2 + 0x541E003F, // 0030 LDINT R7 64 + 0x5422007F, // 0031 LDINT R8 128 + 0x58240002, // 0032 LDCONST R9 K2 + 0x7C0C0C00, // 0033 CALL R3 6 + 0x80040600, // 0034 RET 1 R3 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_buffers +********************************************************************/ +be_local_closure(class_ScaleAnimation__initialize_buffers, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(_initialize_buffers), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0xB80A4A00, // 0003 GETNGBL R2 K37 + 0x8C080526, // 0004 GETMET R2 R2 K38 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x90022002, // 0007 SETMBR R0 K16 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90021602, // 000A SETMBR R0 K11 R2 + 0x8808010B, // 000B GETMBR R2 R0 K11 + 0x8C080527, // 000C GETMET R2 R2 K39 + 0x5C100200, // 000D MOVE R4 R1 + 0x7C080400, // 000E CALL R2 2 + 0x58080002, // 000F LDCONST R2 K2 + 0x140C0401, // 0010 LT R3 R2 R1 + 0x780E0003, // 0011 JMPF R3 #0016 + 0x880C010B, // 0012 GETMBR R3 R0 K11 + 0x980C0515, // 0013 SETIDX R3 R2 K21 + 0x00080503, // 0014 ADD R2 R2 K3 + 0x7001FFF9, // 0015 JMP #0010 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_ScaleAnimation_render, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0203, // 0001 EQ R3 R1 R3 + 0x780E0001, // 0002 JMPF R3 #0005 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x80040600, // 0004 RET 1 R3 + 0x880C0109, // 0005 GETMBR R3 R0 K9 + 0x8C0C070A, // 0006 GETMET R3 R3 K10 + 0x7C0C0200, // 0007 CALL R3 1 + 0x58100002, // 0008 LDCONST R4 K2 + 0x14140803, // 0009 LT R5 R4 R3 + 0x78160009, // 000A JMPF R5 #0015 + 0x88140328, // 000B GETMBR R5 R1 K40 + 0x14140805, // 000C LT R5 R4 R5 + 0x78160004, // 000D JMPF R5 #0013 + 0x8C140329, // 000E GETMET R5 R1 K41 + 0x5C1C0800, // 000F MOVE R7 R4 + 0x8820010B, // 0010 GETMBR R8 R0 K11 + 0x94201004, // 0011 GETIDX R8 R8 R4 + 0x7C140600, // 0012 CALL R5 3 + 0x00100903, // 0013 ADD R4 R4 K3 + 0x7001FFF3, // 0014 JMP #0009 + 0x50140200, // 0015 LDBOOL R5 1 0 + 0x80040A00, // 0016 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _interpolate_colors +********************************************************************/ +be_local_closure(class_ScaleAnimation__interpolate_colors, /* name */ + be_nested_proto( + 18, /* 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_ScaleAnimation, /* shared constants */ + be_str_weak(_interpolate_colors), + &be_const_str_solidified, + ( &(const binstruction[66]) { /* code */ + 0x18100702, // 0000 LE R4 R3 K2 + 0x78120001, // 0001 JMPF R4 #0004 + 0x80040200, // 0002 RET 1 R1 + 0x70020003, // 0003 JMP #0008 + 0x541200FF, // 0004 LDINT R4 256 + 0x28100604, // 0005 GE R4 R3 R4 + 0x78120000, // 0006 JMPF R4 #0008 + 0x80040400, // 0007 RET 1 R2 + 0x54120017, // 0008 LDINT R4 24 + 0x3C100204, // 0009 SHR R4 R1 R4 + 0x541600FE, // 000A LDINT R5 255 + 0x2C100805, // 000B AND R4 R4 R5 + 0x5416000F, // 000C LDINT R5 16 + 0x3C140205, // 000D SHR R5 R1 R5 + 0x541A00FE, // 000E LDINT R6 255 + 0x2C140A06, // 000F AND R5 R5 R6 + 0x541A0007, // 0010 LDINT R6 8 + 0x3C180206, // 0011 SHR R6 R1 R6 + 0x541E00FE, // 0012 LDINT R7 255 + 0x2C180C07, // 0013 AND R6 R6 R7 + 0x541E00FE, // 0014 LDINT R7 255 + 0x2C1C0207, // 0015 AND R7 R1 R7 + 0x54220017, // 0016 LDINT R8 24 + 0x3C200408, // 0017 SHR R8 R2 R8 + 0x542600FE, // 0018 LDINT R9 255 + 0x2C201009, // 0019 AND R8 R8 R9 + 0x5426000F, // 001A LDINT R9 16 + 0x3C240409, // 001B SHR R9 R2 R9 + 0x542A00FE, // 001C LDINT R10 255 + 0x2C24120A, // 001D AND R9 R9 R10 + 0x542A0007, // 001E LDINT R10 8 + 0x3C28040A, // 001F SHR R10 R2 R10 + 0x542E00FE, // 0020 LDINT R11 255 + 0x2C28140B, // 0021 AND R10 R10 R11 + 0x542E00FE, // 0022 LDINT R11 255 + 0x2C2C040B, // 0023 AND R11 R2 R11 + 0x04301004, // 0024 SUB R12 R8 R4 + 0x08301803, // 0025 MUL R12 R12 R3 + 0x543600FF, // 0026 LDINT R13 256 + 0x0C30180D, // 0027 DIV R12 R12 R13 + 0x0030080C, // 0028 ADD R12 R4 R12 + 0x04341205, // 0029 SUB R13 R9 R5 + 0x08341A03, // 002A MUL R13 R13 R3 + 0x543A00FF, // 002B LDINT R14 256 + 0x0C341A0E, // 002C DIV R13 R13 R14 + 0x00340A0D, // 002D ADD R13 R5 R13 + 0x04381406, // 002E SUB R14 R10 R6 + 0x08381C03, // 002F MUL R14 R14 R3 + 0x543E00FF, // 0030 LDINT R15 256 + 0x0C381C0F, // 0031 DIV R14 R14 R15 + 0x00380C0E, // 0032 ADD R14 R6 R14 + 0x043C1607, // 0033 SUB R15 R11 R7 + 0x083C1E03, // 0034 MUL R15 R15 R3 + 0x544200FF, // 0035 LDINT R16 256 + 0x0C3C1E10, // 0036 DIV R15 R15 R16 + 0x003C0E0F, // 0037 ADD R15 R7 R15 + 0x54420017, // 0038 LDINT R16 24 + 0x38401810, // 0039 SHL R16 R12 R16 + 0x5446000F, // 003A LDINT R17 16 + 0x38441A11, // 003B SHL R17 R13 R17 + 0x30402011, // 003C OR R16 R16 R17 + 0x54460007, // 003D LDINT R17 8 + 0x38441C11, // 003E SHL R17 R14 R17 + 0x30402011, // 003F OR R16 R16 R17 + 0x3040200F, // 0040 OR R16 R16 R15 + 0x80042000, // 0041 RET 1 R16 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_ScaleAnimation_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_ScaleAnimation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051A, // 0003 GETMET R2 R2 K26 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020B02, // 0006 SETMBR R0 K5 K2 + 0x4C080000, // 0007 LDNIL R2 + 0x1C080202, // 0008 EQ R2 R1 R2 + 0x780A0001, // 0009 JMPF R2 #000C + 0x88080109, // 000A GETMBR R2 R0 K9 + 0x88040524, // 000B GETMBR R1 R2 K36 + 0x90023001, // 000C SETMBR R0 K24 R1 + 0x80040000, // 000D RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ScaleAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(ScaleAnimation, + 4, + &be_class_Animation, + be_nested_map(16, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_calculate_scale, -1), be_const_closure(class_ScaleAnimation__calculate_scale_closure) }, + { be_const_key_weak(scale_phase, -1), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_ScaleAnimation_tostring_closure) }, + { be_const_key_weak(PARAMS, 10), 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(scale_center, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(scale_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(source_animation, 4), 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(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, + })) ) } )) }, + { be_const_key_weak(scale_factor, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(scale_mode, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(3) }, + })) ) } )) }, + { be_const_key_weak(interpolation, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(1) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(1) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(update, -1), be_const_closure(class_ScaleAnimation_update_closure) }, + { be_const_key_weak(_get_current_scale_factor, 2), be_const_closure(class_ScaleAnimation__get_current_scale_factor_closure) }, + { be_const_key_weak(source_frame, -1), be_const_var(1) }, + { be_const_key_weak(current_colors, -1), be_const_var(2) }, + { be_const_key_weak(render, -1), be_const_closure(class_ScaleAnimation_render_closure) }, + { be_const_key_weak(start_time, -1), be_const_var(3) }, + { be_const_key_weak(init, 0), be_const_closure(class_ScaleAnimation_init_closure) }, + { be_const_key_weak(_sine, -1), be_const_closure(class_ScaleAnimation__sine_closure) }, + { be_const_key_weak(_initialize_buffers, -1), be_const_closure(class_ScaleAnimation__initialize_buffers_closure) }, + { be_const_key_weak(on_param_changed, 8), be_const_closure(class_ScaleAnimation_on_param_changed_closure) }, + { be_const_key_weak(_interpolate_colors, -1), be_const_closure(class_ScaleAnimation__interpolate_colors_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_ScaleAnimation_start_closure) }, + })), + be_str_weak(ScaleAnimation) +); // compact class 'RichPaletteColorProvider' ktab size: 47, total: 109 (saved 496 bytes) static const bvalue be_ktab_class_RichPaletteColorProvider[47] = { /* K0 */ be_nested_str_weak(RichPaletteColorProvider_X28slots_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X29), @@ -6131,372 +6422,6 @@ be_local_class(RichPaletteColorProvider, })), be_str_weak(RichPaletteColorProvider) ); -// compact class 'PalettePatternAnimation' ktab size: 21, total: 40 (saved 152 bytes) -static const bvalue be_ktab_class_PalettePatternAnimation[21] = { - /* K0 */ be_nested_str_weak(pattern_func), - /* K1 */ be_nested_str_weak(color_source), - /* K2 */ be_nested_str_weak(_initialize_value_buffer), - /* K3 */ be_nested_str_weak(is_running), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(time_ms), - /* K6 */ be_nested_str_weak(start_time), - /* K7 */ be_nested_str_weak(get_strip_length), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(width), - /* K10 */ be_nested_str_weak(value_buffer), - /* K11 */ be_nested_str_weak(get_color_for_value), - /* K12 */ be_nested_str_weak(current_color), - /* K13 */ be_nested_str_weak(set_pixel_color), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(resize), - /* K16 */ be_nested_str_weak(init), - /* K17 */ be_nested_str_weak(PalettePatternAnimation_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K18 */ be_nested_str_weak(priority), - /* K19 */ be_nested_str_weak(update), - /* K20 */ be_nested_str_weak(_update_value_buffer), -}; - - -extern const bclass be_class_PalettePatternAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_on_param_changed, /* name */ - be_nested_proto( - 5, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x740E0001, // 0001 JMPT R3 #0004 - 0x1C0C0301, // 0002 EQ R3 R1 K1 - 0x780E0001, // 0003 JMPF R3 #0006 - 0x8C0C0102, // 0004 GETMET R3 R0 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_render, /* name */ - be_nested_proto( - 13, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0x880C0103, // 0000 GETMBR R3 R0 K3 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0001, // 0009 JMPF R3 #000C - 0x880C0104, // 000A GETMBR R3 R0 K4 - 0x88080705, // 000B GETMBR R2 R3 K5 - 0x880C0101, // 000C GETMBR R3 R0 K1 - 0x4C100000, // 000D LDNIL R4 - 0x1C100604, // 000E EQ R4 R3 R4 - 0x78120001, // 000F JMPF R4 #0012 - 0x50100000, // 0010 LDBOOL R4 0 0 - 0x80040800, // 0011 RET 1 R4 - 0x88100106, // 0012 GETMBR R4 R0 K6 - 0x04100404, // 0013 SUB R4 R2 R4 - 0x88140104, // 0014 GETMBR R5 R0 K4 - 0x8C140B07, // 0015 GETMET R5 R5 K7 - 0x7C140200, // 0016 CALL R5 1 - 0x58180008, // 0017 LDCONST R6 K8 - 0x141C0C05, // 0018 LT R7 R6 R5 - 0x781E0016, // 0019 JMPF R7 #0031 - 0x881C0309, // 001A GETMBR R7 R1 K9 - 0x141C0C07, // 001B LT R7 R6 R7 - 0x781E0013, // 001C JMPF R7 #0031 - 0x881C010A, // 001D GETMBR R7 R0 K10 - 0x941C0E06, // 001E GETIDX R7 R7 R6 - 0x4C200000, // 001F LDNIL R8 - 0x8824070B, // 0020 GETMBR R9 R3 K11 - 0x4C280000, // 0021 LDNIL R10 - 0x2024120A, // 0022 NE R9 R9 R10 - 0x78260005, // 0023 JMPF R9 #002A - 0x8C24070B, // 0024 GETMET R9 R3 K11 - 0x5C2C0E00, // 0025 MOVE R11 R7 - 0x5C300800, // 0026 MOVE R12 R4 - 0x7C240600, // 0027 CALL R9 3 - 0x5C201200, // 0028 MOVE R8 R9 - 0x70020000, // 0029 JMP #002B - 0x8820070C, // 002A GETMBR R8 R3 K12 - 0x8C24030D, // 002B GETMET R9 R1 K13 - 0x5C2C0C00, // 002C MOVE R11 R6 - 0x5C301000, // 002D MOVE R12 R8 - 0x7C240600, // 002E CALL R9 3 - 0x00180D0E, // 002F ADD R6 R6 K14 - 0x7001FFE6, // 0030 JMP #0018 - 0x501C0200, // 0031 LDBOOL R7 1 0 - 0x80040E00, // 0032 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_value_buffer -********************************************************************/ -be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C0C0403, // 0002 EQ R3 R2 R3 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80000600, // 0004 RET 0 - 0x880C0104, // 0005 GETMBR R3 R0 K4 - 0x8C0C0707, // 0006 GETMET R3 R3 K7 - 0x7C0C0200, // 0007 CALL R3 1 - 0x6010000C, // 0008 GETGBL R4 G12 - 0x8814010A, // 0009 GETMBR R5 R0 K10 - 0x7C100200, // 000A CALL R4 1 - 0x20100803, // 000B NE R4 R4 R3 - 0x78120003, // 000C JMPF R4 #0011 - 0x8810010A, // 000D GETMBR R4 R0 K10 - 0x8C10090F, // 000E GETMET R4 R4 K15 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x58100008, // 0011 LDCONST R4 K8 - 0x14140803, // 0012 LT R5 R4 R3 - 0x78160008, // 0013 JMPF R5 #001D - 0x8814010A, // 0014 GETMBR R5 R0 K10 - 0x5C180400, // 0015 MOVE R6 R2 - 0x5C1C0800, // 0016 MOVE R7 R4 - 0x5C200200, // 0017 MOVE R8 R1 - 0x5C240000, // 0018 MOVE R9 R0 - 0x7C180600, // 0019 CALL R6 3 - 0x98140806, // 001A SETIDX R5 R4 R6 - 0x0010090E, // 001B ADD R4 R4 K14 - 0x7001FFF4, // 001C JMP #0012 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_value_buffer -********************************************************************/ -be_local_closure(class_PalettePatternAnimation__initialize_value_buffer, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(_initialize_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040307, // 0001 GETMET R1 R1 K7 - 0x7C040200, // 0002 CALL R1 1 - 0x8808010A, // 0003 GETMBR R2 R0 K10 - 0x8C08050F, // 0004 GETMET R2 R2 K15 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x58080008, // 0007 LDCONST R2 K8 - 0x140C0401, // 0008 LT R3 R2 R1 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C010A, // 000A GETMBR R3 R0 K10 - 0x980C0508, // 000B SETIDX R3 R2 K8 - 0x0008050E, // 000C ADD R2 R2 K14 - 0x7001FFF9, // 000D JMP #0008 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_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_PalettePatternAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080510, // 0003 GETMET R2 R2 K16 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90021402, // 0008 SETMBR R0 K10 R2 - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_tostring, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040307, // 0001 GETMET R1 R1 K7 - 0x7C040200, // 0002 CALL R1 1 - 0x60080018, // 0003 GETGBL R2 G24 - 0x580C0011, // 0004 LDCONST R3 K17 - 0x5C100200, // 0005 MOVE R4 R1 - 0x88140112, // 0006 GETMBR R5 R0 K18 - 0x88180103, // 0007 GETMBR R6 R0 K3 - 0x7C080800, // 0008 CALL R2 4 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_PalettePatternAnimation_update, /* 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080513, // 0003 GETMET R2 R2 K19 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080106, // 0009 GETMBR R2 R0 K6 - 0x04080202, // 000A SUB R2 R1 R2 - 0x8C0C0114, // 000B GETMET R3 R0 K20 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x80040600, // 000F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PalettePatternAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(PalettePatternAnimation, - 1, - &be_class_Animation, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update, 1), be_const_closure(class_PalettePatternAnimation_update_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_PalettePatternAnimation_tostring_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__update_value_buffer_closure) }, - { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__initialize_value_buffer_closure) }, - { be_const_key_weak(on_param_changed, 8), be_const_closure(class_PalettePatternAnimation_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(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(color_source, 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(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - { be_const_key_weak(pattern_func, -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(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(function) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, 5), be_const_closure(class_PalettePatternAnimation_init_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_PalettePatternAnimation_render_closure) }, - { be_const_key_weak(value_buffer, -1), be_const_var(0) }, - })), - be_str_weak(PalettePatternAnimation) -); /******************************************************************** ** Solidified function: color_cycle_from_palette @@ -6622,9 +6547,9 @@ be_local_closure(trigger_event, /* name */ /******************************************************************** -** Solidified function: bounce_basic +** Solidified function: bounce_constrained ********************************************************************/ -be_local_closure(bounce_basic, /* name */ +be_local_closure(bounce_constrained, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -6639,27 +6564,28 @@ be_local_closure(bounce_basic, /* name */ /* K1 */ be_nested_str_weak(bounce_animation), /* K2 */ be_nested_str_weak(bounce_speed), /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(damping), - /* K6 */ be_nested_str_weak(gravity), + /* K4 */ be_nested_str_weak(damping), + /* K5 */ be_nested_str_weak(gravity), + /* K6 */ be_const_int(0), /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_basic), + /* K8 */ be_nested_str_weak(bounce_constrained), }), - be_str_weak(bounce_basic), + be_str_weak(bounce_constrained), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 - 0x540A007F, // 0004 LDINT R2 128 + 0x540A0095, // 0004 LDINT R2 150 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A00F9, // 0007 LDINT R2 250 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x90060D04, // 0009 SETMBR R1 K6 K4 - 0x90060F08, // 000A SETMBR R1 K7 K8 - 0x80040200, // 000B RET 1 R1 + 0x540A000E, // 0006 LDINT R2 15 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A00F9, // 0008 LDINT R2 250 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x90060B06, // 000A SETMBR R1 K5 K6 + 0x90060F08, // 000B SETMBR R1 K7 K8 + 0x80040200, // 000C RET 1 R1 }) ) ); @@ -6723,9 +6649,9 @@ be_local_closure(animation_global, /* name */ /******************************************************************** -** Solidified function: unregister_event_handler +** Solidified function: smooth ********************************************************************/ -be_local_closure(unregister_event_handler, /* name */ +be_local_closure(smooth, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -6735,93 +6661,23 @@ be_local_closure(unregister_event_handler, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 4]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(event_manager), - /* K2 */ be_nested_str_weak(unregister_handler), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(COSINE), }), - be_str_weak(unregister_event_handler), + be_str_weak(smooth), &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 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: shift_fast_scroll -********************************************************************/ -be_local_closure(shift_fast_scroll, /* 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[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(shift_animation), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(shift_speed), - /* K5 */ be_nested_str_weak(wrap_around), - }), - be_str_weak(shift_fast_scroll), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(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 - 0x540A00C7, // 0005 LDINT R2 200 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x50080200, // 0007 LDBOOL R2 1 0 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 }) ) ); @@ -7450,6 +7306,741 @@ be_local_class(BounceAnimation, })), be_str_weak(BounceAnimation) ); +// compact class 'ColorCycleColorProvider' ktab size: 17, total: 36 (saved 152 bytes) +static const bvalue be_ktab_class_ColorCycleColorProvider[17] = { + /* K0 */ be_nested_str_weak(palette), + /* K1 */ be_const_int(0), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(tasmota), + /* K4 */ be_nested_str_weak(scale_uint), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(current_color), + /* K7 */ be_nested_str_weak(current_index), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(set_param), + /* K10 */ be_nested_str_weak(init), + /* K11 */ be_nested_str_weak(manual), + /* K12 */ be_nested_str_weak(auto), + /* K13 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), + /* K14 */ be_nested_str_weak(ColorCycleColorProvider_X28uninitialized_X29), + /* K15 */ be_nested_str_weak(copy), + /* K16 */ be_nested_str_weak(push), +}; + + +extern const bclass be_class_ColorCycleColorProvider; + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ + be_nested_proto( + 12, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x6010000C, // 0001 GETGBL R4 G12 + 0x5C140600, // 0002 MOVE R5 R3 + 0x7C100200, // 0003 CALL R4 1 + 0x1C140901, // 0004 EQ R5 R4 K1 + 0x78160001, // 0005 JMPF R5 #0008 + 0x5415FFFE, // 0006 LDINT R5 -1 + 0x80040A00, // 0007 RET 1 R5 + 0x1C140902, // 0008 EQ R5 R4 K2 + 0x78160001, // 0009 JMPF R5 #000C + 0x94140701, // 000A GETIDX R5 R3 K1 + 0x80040A00, // 000B RET 1 R5 + 0x14140301, // 000C LT R5 R1 K1 + 0x78160001, // 000D JMPF R5 #0010 + 0x58040001, // 000E LDCONST R1 K1 + 0x70020003, // 000F JMP #0014 + 0x54160063, // 0010 LDINT R5 100 + 0x24140205, // 0011 GT R5 R1 R5 + 0x78160000, // 0012 JMPF R5 #0014 + 0x54060063, // 0013 LDINT R1 100 + 0xB8160600, // 0014 GETNGBL R5 K3 + 0x8C140B04, // 0015 GETMET R5 R5 K4 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x58200001, // 0017 LDCONST R8 K1 + 0x54260063, // 0018 LDINT R9 100 + 0x58280001, // 0019 LDCONST R10 K1 + 0x042C0902, // 001A SUB R11 R4 K2 + 0x7C140C00, // 001B CALL R5 6 + 0x28180A04, // 001C GE R6 R5 R4 + 0x781A0001, // 001D JMPF R6 #0020 + 0x04180902, // 001E SUB R6 R4 K2 + 0x5C140C00, // 001F MOVE R5 R6 + 0x94180605, // 0020 GETIDX R6 R3 R5 + 0x80040C00, // 0021 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ + be_nested_proto( + 14, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x88100105, // 0001 GETMBR R4 R0 K5 + 0x6014000C, // 0002 GETGBL R5 G12 + 0x5C180600, // 0003 MOVE R6 R3 + 0x7C140200, // 0004 CALL R5 1 + 0x1C180B01, // 0005 EQ R6 R5 K1 + 0x781A0001, // 0006 JMPF R6 #0009 + 0x5419FFFE, // 0007 LDINT R6 -1 + 0x80040C00, // 0008 RET 1 R6 + 0x1C180B02, // 0009 EQ R6 R5 K2 + 0x781A0003, // 000A JMPF R6 #000F + 0x94180701, // 000B GETIDX R6 R3 K1 + 0x90020C06, // 000C SETMBR R0 K6 R6 + 0x88180106, // 000D GETMBR R6 R0 K6 + 0x80040C00, // 000E RET 1 R6 + 0x1C180901, // 000F EQ R6 R4 K1 + 0x781A0001, // 0010 JMPF R6 #0013 + 0x88180106, // 0011 GETMBR R6 R0 K6 + 0x80040C00, // 0012 RET 1 R6 + 0x10180404, // 0013 MOD R6 R2 R4 + 0xB81E0600, // 0014 GETNGBL R7 K3 + 0x8C1C0F04, // 0015 GETMET R7 R7 K4 + 0x5C240C00, // 0016 MOVE R9 R6 + 0x58280001, // 0017 LDCONST R10 K1 + 0x042C0902, // 0018 SUB R11 R4 K2 + 0x58300001, // 0019 LDCONST R12 K1 + 0x04340B02, // 001A SUB R13 R5 K2 + 0x7C1C0C00, // 001B CALL R7 6 + 0x28200E05, // 001C GE R8 R7 R5 + 0x78220001, // 001D JMPF R8 #0020 + 0x04200B02, // 001E SUB R8 R5 K2 + 0x5C1C1000, // 001F MOVE R7 R8 + 0x90020E07, // 0020 SETMBR R0 K7 R7 + 0x94200607, // 0021 GETIDX R8 R3 R7 + 0x90020C08, // 0022 SETMBR R0 K6 R8 + 0x88200106, // 0023 GETMBR R8 R0 K6 + 0x80041000, // 0024 RET 1 R8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[44]) { /* code */ + 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x780E0010, // 0001 JMPF R3 #0013 + 0x5C0C0400, // 0002 MOVE R3 R2 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x5C140600, // 0004 MOVE R5 R3 + 0x7C100200, // 0005 CALL R4 1 + 0x24100901, // 0006 GT R4 R4 K1 + 0x78120009, // 0007 JMPF R4 #0012 + 0x88100107, // 0008 GETMBR R4 R0 K7 + 0x6014000C, // 0009 GETGBL R5 G12 + 0x5C180600, // 000A MOVE R6 R3 + 0x7C140200, // 000B CALL R5 1 + 0x28100805, // 000C GE R4 R4 R5 + 0x78120000, // 000D JMPF R4 #000F + 0x90020F01, // 000E SETMBR R0 K7 K1 + 0x88100107, // 000F GETMBR R4 R0 K7 + 0x94100604, // 0010 GETIDX R4 R3 R4 + 0x90020C04, // 0011 SETMBR R0 K6 R4 + 0x70020017, // 0012 JMP #002B + 0x1C0C0308, // 0013 EQ R3 R1 K8 + 0x780E0015, // 0014 JMPF R3 #002B + 0x1C0C0502, // 0015 EQ R3 R2 K2 + 0x780E0013, // 0016 JMPF R3 #002B + 0x880C0100, // 0017 GETMBR R3 R0 K0 + 0x6010000C, // 0018 GETGBL R4 G12 + 0x5C140600, // 0019 MOVE R5 R3 + 0x7C100200, // 001A CALL R4 1 + 0x24100901, // 001B GT R4 R4 K1 + 0x78120009, // 001C JMPF R4 #0027 + 0x88100107, // 001D GETMBR R4 R0 K7 + 0x00100902, // 001E ADD R4 R4 K2 + 0x6014000C, // 001F GETGBL R5 G12 + 0x5C180600, // 0020 MOVE R6 R3 + 0x7C140200, // 0021 CALL R5 1 + 0x10100805, // 0022 MOD R4 R4 R5 + 0x90020E04, // 0023 SETMBR R0 K7 R4 + 0x88100107, // 0024 GETMBR R4 R0 K7 + 0x94100604, // 0025 GETIDX R4 R3 R4 + 0x90020C04, // 0026 SETMBR R0 K6 R4 + 0x8C100109, // 0027 GETMET R4 R0 K9 + 0x58180008, // 0028 LDCONST R6 K8 + 0x581C0001, // 0029 LDCONST R7 K1 + 0x7C100600, // 002A CALL R4 3 + 0x80000000, // 002B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_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_ColorCycleColorProvider, /* 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 + 0x8C08050A, // 0003 GETMET R2 R2 K10 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x940C0501, // 0007 GETIDX R3 R2 K1 + 0x90020C03, // 0008 SETMBR R0 K6 R3 + 0x90020F01, // 0009 SETMBR R0 K7 K1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_tostring, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA8020012, // 0000 EXBLK 0 #0014 + 0x88040105, // 0001 GETMBR R1 R0 K5 + 0x1C040301, // 0002 EQ R1 R1 K1 + 0x78060001, // 0003 JMPF R1 #0006 + 0x5804000B, // 0004 LDCONST R1 K11 + 0x70020000, // 0005 JMP #0007 + 0x5804000C, // 0006 LDCONST R1 K12 + 0x60080018, // 0007 GETGBL R2 G24 + 0x580C000D, // 0008 LDCONST R3 K13 + 0x6010000C, // 0009 GETGBL R4 G12 + 0x88140100, // 000A GETMBR R5 R0 K0 + 0x7C100200, // 000B CALL R4 1 + 0x88140105, // 000C GETMBR R5 R0 K5 + 0x5C180200, // 000D MOVE R6 R1 + 0x881C0107, // 000E GETMBR R7 R0 K7 + 0x7C080A00, // 000F CALL R2 5 + 0xA8040001, // 0010 EXBLK 1 1 + 0x80040400, // 0011 RET 1 R2 + 0xA8040001, // 0012 EXBLK 1 1 + 0x70020004, // 0013 JMP #0019 + 0xAC040000, // 0014 CATCH R1 0 0 + 0x70020001, // 0015 JMP #0018 + 0x80061C00, // 0016 RET 1 K14 + 0x70020000, // 0017 JMP #0019 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_color +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_add_color, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(add_color), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C0C050F, // 0001 GETMET R3 R2 K15 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C100710, // 0003 GETMET R4 R3 K16 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x90020003, // 0006 SETMBR R0 K0 R3 + 0x80040000, // 0007 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ColorCycleColorProvider +********************************************************************/ +extern const bclass be_class_ColorProvider; +be_local_class(ColorCycleColorProvider, + 2, + &be_class_ColorProvider, + be_nested_map(9, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(current_color, -1), be_const_var(0) }, + { be_const_key_weak(current_index, 0), be_const_var(1) }, + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorCycleColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_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(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(cycle_period, -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(default, -1), be_const_int(5000) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(next, -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(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(palette, 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(default, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(-16776961), + be_const_int(-16711936), + be_const_int(-65536), + })) ) } )) }, + { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, 5), be_const_closure(class_ColorCycleColorProvider_init_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, + { be_const_key_weak(add_color, -1), be_const_closure(class_ColorCycleColorProvider_add_color_closure) }, + })), + be_str_weak(ColorCycleColorProvider) +); +// compact class 'PalettePatternAnimation' ktab size: 21, total: 40 (saved 152 bytes) +static const bvalue be_ktab_class_PalettePatternAnimation[21] = { + /* K0 */ be_nested_str_weak(pattern_func), + /* K1 */ be_nested_str_weak(color_source), + /* K2 */ be_nested_str_weak(_initialize_value_buffer), + /* K3 */ be_nested_str_weak(is_running), + /* K4 */ be_nested_str_weak(engine), + /* K5 */ be_nested_str_weak(time_ms), + /* K6 */ be_nested_str_weak(start_time), + /* K7 */ be_nested_str_weak(get_strip_length), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(width), + /* K10 */ be_nested_str_weak(value_buffer), + /* K11 */ be_nested_str_weak(get_color_for_value), + /* K12 */ be_nested_str_weak(current_color), + /* K13 */ be_nested_str_weak(set_pixel_color), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(resize), + /* K16 */ be_nested_str_weak(init), + /* K17 */ be_nested_str_weak(PalettePatternAnimation_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K18 */ be_nested_str_weak(priority), + /* K19 */ be_nested_str_weak(update), + /* K20 */ be_nested_str_weak(_update_value_buffer), +}; + + +extern const bclass be_class_PalettePatternAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_on_param_changed, /* name */ + be_nested_proto( + 5, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x740E0001, // 0001 JMPT R3 #0004 + 0x1C0C0301, // 0002 EQ R3 R1 K1 + 0x780E0001, // 0003 JMPF R3 #0006 + 0x8C0C0102, // 0004 GETMET R3 R0 K2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_render, /* name */ + be_nested_proto( + 13, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[51]) { /* code */ + 0x880C0103, // 0000 GETMBR R3 R0 K3 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0001, // 0009 JMPF R3 #000C + 0x880C0104, // 000A GETMBR R3 R0 K4 + 0x88080705, // 000B GETMBR R2 R3 K5 + 0x880C0101, // 000C GETMBR R3 R0 K1 + 0x4C100000, // 000D LDNIL R4 + 0x1C100604, // 000E EQ R4 R3 R4 + 0x78120001, // 000F JMPF R4 #0012 + 0x50100000, // 0010 LDBOOL R4 0 0 + 0x80040800, // 0011 RET 1 R4 + 0x88100106, // 0012 GETMBR R4 R0 K6 + 0x04100404, // 0013 SUB R4 R2 R4 + 0x88140104, // 0014 GETMBR R5 R0 K4 + 0x8C140B07, // 0015 GETMET R5 R5 K7 + 0x7C140200, // 0016 CALL R5 1 + 0x58180008, // 0017 LDCONST R6 K8 + 0x141C0C05, // 0018 LT R7 R6 R5 + 0x781E0016, // 0019 JMPF R7 #0031 + 0x881C0309, // 001A GETMBR R7 R1 K9 + 0x141C0C07, // 001B LT R7 R6 R7 + 0x781E0013, // 001C JMPF R7 #0031 + 0x881C010A, // 001D GETMBR R7 R0 K10 + 0x941C0E06, // 001E GETIDX R7 R7 R6 + 0x4C200000, // 001F LDNIL R8 + 0x8824070B, // 0020 GETMBR R9 R3 K11 + 0x4C280000, // 0021 LDNIL R10 + 0x2024120A, // 0022 NE R9 R9 R10 + 0x78260005, // 0023 JMPF R9 #002A + 0x8C24070B, // 0024 GETMET R9 R3 K11 + 0x5C2C0E00, // 0025 MOVE R11 R7 + 0x5C300800, // 0026 MOVE R12 R4 + 0x7C240600, // 0027 CALL R9 3 + 0x5C201200, // 0028 MOVE R8 R9 + 0x70020000, // 0029 JMP #002B + 0x8820070C, // 002A GETMBR R8 R3 K12 + 0x8C24030D, // 002B GETMET R9 R1 K13 + 0x5C2C0C00, // 002C MOVE R11 R6 + 0x5C301000, // 002D MOVE R12 R8 + 0x7C240600, // 002E CALL R9 3 + 0x00180D0E, // 002F ADD R6 R6 K14 + 0x7001FFE6, // 0030 JMP #0018 + 0x501C0200, // 0031 LDBOOL R7 1 0 + 0x80040E00, // 0032 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_value_buffer +********************************************************************/ +be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C0C0403, // 0002 EQ R3 R2 R3 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x880C0104, // 0005 GETMBR R3 R0 K4 + 0x8C0C0707, // 0006 GETMET R3 R3 K7 + 0x7C0C0200, // 0007 CALL R3 1 + 0x6010000C, // 0008 GETGBL R4 G12 + 0x8814010A, // 0009 GETMBR R5 R0 K10 + 0x7C100200, // 000A CALL R4 1 + 0x20100803, // 000B NE R4 R4 R3 + 0x78120003, // 000C JMPF R4 #0011 + 0x8810010A, // 000D GETMBR R4 R0 K10 + 0x8C10090F, // 000E GETMET R4 R4 K15 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x58100008, // 0011 LDCONST R4 K8 + 0x14140803, // 0012 LT R5 R4 R3 + 0x78160008, // 0013 JMPF R5 #001D + 0x8814010A, // 0014 GETMBR R5 R0 K10 + 0x5C180400, // 0015 MOVE R6 R2 + 0x5C1C0800, // 0016 MOVE R7 R4 + 0x5C200200, // 0017 MOVE R8 R1 + 0x5C240000, // 0018 MOVE R9 R0 + 0x7C180600, // 0019 CALL R6 3 + 0x98140806, // 001A SETIDX R5 R4 R6 + 0x0010090E, // 001B ADD R4 R4 K14 + 0x7001FFF4, // 001C JMP #0012 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_value_buffer +********************************************************************/ +be_local_closure(class_PalettePatternAnimation__initialize_value_buffer, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(_initialize_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040307, // 0001 GETMET R1 R1 K7 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010A, // 0003 GETMBR R2 R0 K10 + 0x8C08050F, // 0004 GETMET R2 R2 K15 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x58080008, // 0007 LDCONST R2 K8 + 0x140C0401, // 0008 LT R3 R2 R1 + 0x780E0003, // 0009 JMPF R3 #000E + 0x880C010A, // 000A GETMBR R3 R0 K10 + 0x980C0508, // 000B SETIDX R3 R2 K8 + 0x0008050E, // 000C ADD R2 R2 K14 + 0x7001FFF9, // 000D JMP #0008 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_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_PalettePatternAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080510, // 0003 GETMET R2 R2 K16 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90021402, // 0008 SETMBR R0 K10 R2 + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_tostring, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040307, // 0001 GETMET R1 R1 K7 + 0x7C040200, // 0002 CALL R1 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0011, // 0004 LDCONST R3 K17 + 0x5C100200, // 0005 MOVE R4 R1 + 0x88140112, // 0006 GETMBR R5 R0 K18 + 0x88180103, // 0007 GETMBR R6 R0 K3 + 0x7C080800, // 0008 CALL R2 4 + 0x80040400, // 0009 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_PalettePatternAnimation_update, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080513, // 0003 GETMET R2 R2 K19 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x88080106, // 0009 GETMBR R2 R0 K6 + 0x04080202, // 000A SUB R2 R1 R2 + 0x8C0C0114, // 000B GETMET R3 R0 K20 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PalettePatternAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(PalettePatternAnimation, + 1, + &be_class_Animation, + be_nested_map(9, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(update, 1), be_const_closure(class_PalettePatternAnimation_update_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_PalettePatternAnimation_tostring_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__update_value_buffer_closure) }, + { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PalettePatternAnimation__initialize_value_buffer_closure) }, + { be_const_key_weak(on_param_changed, 8), be_const_closure(class_PalettePatternAnimation_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(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(color_source, 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(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, + })) ) } )) }, + { be_const_key_weak(pattern_func, -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(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(function) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, 5), be_const_closure(class_PalettePatternAnimation_init_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_PalettePatternAnimation_render_closure) }, + { be_const_key_weak(value_buffer, -1), be_const_var(0) }, + })), + be_str_weak(PalettePatternAnimation) +); // compact class 'StaticColorProvider' ktab size: 3, total: 5 (saved 16 bytes) static const bvalue be_ktab_class_StaticColorProvider[3] = { /* K0 */ be_nested_str_weak(color), @@ -7604,1342 +8195,6 @@ be_local_closure(get_registered_events, /* name */ ); /*******************************************************************/ -// compact class 'PlasmaAnimation' ktab size: 46, total: 93 (saved 376 bytes) -static const bvalue be_ktab_class_PlasmaAnimation[46] = { - /* K0 */ be_nested_str_weak(start), - /* K1 */ be_nested_str_weak(color), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(rich_palette), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(palette), - /* K6 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K7 */ be_nested_str_weak(cycle_period), - /* K8 */ be_nested_str_weak(transition_type), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(brightness), - /* K11 */ be_nested_str_weak(range_min), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str_weak(range_max), - /* K14 */ be_nested_str_weak(time_phase), - /* K15 */ be_nested_str_weak(is_value_provider), - /* K16 */ be_nested_str_weak(0x_X2508x), - /* K17 */ be_nested_str_weak(PlasmaAnimation_X28color_X3D_X25s_X2C_X20freq_x_X3D_X25s_X2C_X20freq_y_X3D_X25s_X2C_X20time_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K18 */ be_nested_str_weak(freq_x), - /* K19 */ be_nested_str_weak(freq_y), - /* K20 */ be_nested_str_weak(time_speed), - /* K21 */ be_nested_str_weak(priority), - /* K22 */ be_nested_str_weak(is_running), - /* K23 */ be_nested_str_weak(init), - /* K24 */ be_nested_str_weak(current_colors), - /* K25 */ be_nested_str_weak(_initialize_colors), - /* K26 */ be_nested_str_weak(update), - /* K27 */ be_nested_str_weak(start_time), - /* K28 */ be_nested_str_weak(tasmota), - /* K29 */ be_nested_str_weak(scale_uint), - /* K30 */ be_nested_str_weak(_calculate_plasma), - /* K31 */ be_nested_str_weak(get_strip_length), - /* K32 */ be_nested_str_weak(resize), - /* K33 */ be_const_int(-16777216), - /* K34 */ be_nested_str_weak(set_param), - /* K35 */ be_nested_str_weak(phase_x), - /* K36 */ be_nested_str_weak(phase_y), - /* K37 */ be_nested_str_weak(blend_mode), - /* K38 */ be_nested_str_weak(_sine), - /* K39 */ be_const_int(2), - /* K40 */ be_nested_str_weak(is_color_provider), - /* K41 */ be_nested_str_weak(get_color_for_value), - /* K42 */ be_nested_str_weak(resolve_value), - /* K43 */ be_nested_str_weak(width), - /* K44 */ be_nested_str_weak(set_pixel_color), - /* K45 */ be_nested_str_weak(sine_int), -}; - - -extern const bclass be_class_PlasmaAnimation; - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* 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 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C080403, // 0008 EQ R2 R2 R3 - 0x780A000F, // 0009 JMPF R2 #001A - 0xB80A0400, // 000A GETNGBL R2 K2 - 0x8C080503, // 000B GETMET R2 R2 K3 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x7C080400, // 000D CALL R2 2 - 0xB80E0400, // 000E GETNGBL R3 K2 - 0x880C0706, // 000F GETMBR R3 R3 K6 - 0x900A0A03, // 0010 SETMBR R2 K5 R3 - 0x540E1387, // 0011 LDINT R3 5000 - 0x900A0E03, // 0012 SETMBR R2 K7 R3 - 0x900A1109, // 0013 SETMBR R2 K8 K9 - 0x540E00FE, // 0014 LDINT R3 255 - 0x900A1403, // 0015 SETMBR R2 K10 R3 - 0x900A170C, // 0016 SETMBR R2 K11 K12 - 0x540E00FE, // 0017 LDINT R3 255 - 0x900A1A03, // 0018 SETMBR R2 K13 R3 - 0x90020202, // 0019 SETMBR R0 K1 R2 - 0x90021D0C, // 001A SETMBR R0 K14 K12 - 0x80040000, // 001B RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_PlasmaAnimation_tostring, /* name */ - be_nested_proto( - 11, /* 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_PlasmaAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x8C0C070F, // 0003 GETMET R3 R3 K15 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x780E0004, // 0006 JMPF R3 #000C - 0x600C0008, // 0007 GETGBL R3 G8 - 0x5C100400, // 0008 MOVE R4 R2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x5C040600, // 000A MOVE R1 R3 - 0x70020004, // 000B JMP #0011 - 0x600C0018, // 000C GETGBL R3 G24 - 0x58100010, // 000D LDCONST R4 K16 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x5C040600, // 0010 MOVE R1 R3 - 0x600C0018, // 0011 GETGBL R3 G24 - 0x58100011, // 0012 LDCONST R4 K17 - 0x5C140200, // 0013 MOVE R5 R1 - 0x88180112, // 0014 GETMBR R6 R0 K18 - 0x881C0113, // 0015 GETMBR R7 R0 K19 - 0x88200114, // 0016 GETMBR R8 R0 K20 - 0x88240115, // 0017 GETMBR R9 R0 K21 - 0x88280116, // 0018 GETMBR R10 R0 K22 - 0x7C0C0E00, // 0019 CALL R3 7 - 0x80040600, // 001A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080517, // 0003 GETMET R2 R2 K23 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90021D0C, // 0006 SETMBR R0 K14 K12 - 0x60080012, // 0007 GETGBL R2 G18 - 0x7C080000, // 0008 CALL R2 0 - 0x90023002, // 0009 SETMBR R0 K24 R2 - 0x8C080119, // 000A GETMET R2 R0 K25 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080114, // 0009 GETMBR R2 R0 K20 - 0x240C050C, // 000A GT R3 R2 K12 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C011B, // 000C GETMBR R3 R0 K27 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8123800, // 000E GETNGBL R4 K28 - 0x8C10091D, // 000F GETMET R4 R4 K29 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C000C, // 0011 LDCONST R7 K12 - 0x542200FE, // 0012 LDINT R8 255 - 0x5824000C, // 0013 LDCONST R9 K12 - 0x542A0007, // 0014 LDINT R10 8 - 0x7C100C00, // 0015 CALL R4 6 - 0x2414090C, // 0016 GT R5 R4 K12 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 0x90021C05, // 001D SETMBR R0 K14 R5 - 0x8C0C011E, // 001E GETMET R3 R0 K30 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_colors -********************************************************************/ -be_local_closure(class_PlasmaAnimation__initialize_colors, /* 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_PlasmaAnimation, /* shared constants */ - be_str_weak(_initialize_colors), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C04031F, // 0001 GETMET R1 R1 K31 - 0x7C040200, // 0002 CALL R1 1 - 0x88080118, // 0003 GETMBR R2 R0 K24 - 0x8C080520, // 0004 GETMET R2 R2 K32 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x5808000C, // 0007 LDCONST R2 K12 - 0x140C0401, // 0008 LT R3 R2 R1 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C0118, // 000A GETMBR R3 R0 K24 - 0x980C0521, // 000B SETIDX R3 R2 K33 - 0x00080509, // 000C ADD R2 R2 K9 - 0x7001FFF9, // 000D JMP #0008 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x1C0C0301, // 0000 EQ R3 R1 K1 - 0x780E0015, // 0001 JMPF R3 #0018 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0403, // 0003 EQ R3 R2 R3 - 0x780E0012, // 0004 JMPF R3 #0018 - 0xB80E0400, // 0005 GETNGBL R3 K2 - 0x8C0C0703, // 0006 GETMET R3 R3 K3 - 0x88140104, // 0007 GETMBR R5 R0 K4 - 0x7C0C0400, // 0008 CALL R3 2 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x88100906, // 000A GETMBR R4 R4 K6 - 0x900E0A04, // 000B SETMBR R3 K5 R4 - 0x54121387, // 000C LDINT R4 5000 - 0x900E0E04, // 000D SETMBR R3 K7 R4 - 0x900E1109, // 000E SETMBR R3 K8 K9 - 0x541200FE, // 000F LDINT R4 255 - 0x900E1404, // 0010 SETMBR R3 K10 R4 - 0x900E170C, // 0011 SETMBR R3 K11 K12 - 0x541200FE, // 0012 LDINT R4 255 - 0x900E1A04, // 0013 SETMBR R3 K13 R4 - 0x8C100122, // 0014 GETMET R4 R0 K34 - 0x58180001, // 0015 LDCONST R6 K1 - 0x5C1C0600, // 0016 MOVE R7 R3 - 0x7C100600, // 0017 CALL R4 3 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_plasma -********************************************************************/ -be_local_closure(class_PlasmaAnimation__calculate_plasma, /* name */ - be_nested_proto( - 21, /* 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_PlasmaAnimation, /* shared constants */ - be_str_weak(_calculate_plasma), - &be_const_str_solidified, - ( &(const binstruction[103]) { /* code */ - 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x8C08051F, // 0001 GETMET R2 R2 K31 - 0x7C080200, // 0002 CALL R2 1 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100118, // 0004 GETMBR R4 R0 K24 - 0x7C0C0200, // 0005 CALL R3 1 - 0x200C0602, // 0006 NE R3 R3 R2 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0119, // 0008 GETMET R3 R0 K25 - 0x7C0C0200, // 0009 CALL R3 1 - 0x880C0112, // 000A GETMBR R3 R0 K18 - 0x88100113, // 000B GETMBR R4 R0 K19 - 0x88140123, // 000C GETMBR R5 R0 K35 - 0x88180124, // 000D GETMBR R6 R0 K36 - 0x881C0125, // 000E GETMBR R7 R0 K37 - 0x88200101, // 000F GETMBR R8 R0 K1 - 0x5824000C, // 0010 LDCONST R9 K12 - 0x14281202, // 0011 LT R10 R9 R2 - 0x782A0052, // 0012 JMPF R10 #0066 - 0xB82A3800, // 0013 GETNGBL R10 K28 - 0x8C28151D, // 0014 GETMET R10 R10 K29 - 0x5C301200, // 0015 MOVE R12 R9 - 0x5834000C, // 0016 LDCONST R13 K12 - 0x04380509, // 0017 SUB R14 R2 K9 - 0x583C000C, // 0018 LDCONST R15 K12 - 0x544200FE, // 0019 LDINT R16 255 - 0x7C280C00, // 001A CALL R10 6 - 0x8C2C0126, // 001B GETMET R11 R0 K38 - 0x08341403, // 001C MUL R13 R10 R3 - 0x543A001F, // 001D LDINT R14 32 - 0x0C341A0E, // 001E DIV R13 R13 R14 - 0x00341A05, // 001F ADD R13 R13 R5 - 0x8838010E, // 0020 GETMBR R14 R0 K14 - 0x00341A0E, // 0021 ADD R13 R13 R14 - 0x7C2C0400, // 0022 CALL R11 2 - 0x8C300126, // 0023 GETMET R12 R0 K38 - 0x08381404, // 0024 MUL R14 R10 R4 - 0x543E001F, // 0025 LDINT R15 32 - 0x0C381C0F, // 0026 DIV R14 R14 R15 - 0x00381C06, // 0027 ADD R14 R14 R6 - 0x883C010E, // 0028 GETMBR R15 R0 K14 - 0x083C1F27, // 0029 MUL R15 R15 K39 - 0x00381C0F, // 002A ADD R14 R14 R15 - 0x7C300400, // 002B CALL R12 2 - 0x5834000C, // 002C LDCONST R13 K12 - 0x1C380F0C, // 002D EQ R14 R7 K12 - 0x783A0003, // 002E JMPF R14 #0033 - 0x0038160C, // 002F ADD R14 R11 R12 - 0x0C381D27, // 0030 DIV R14 R14 K39 - 0x5C341C00, // 0031 MOVE R13 R14 - 0x7002000E, // 0032 JMP #0042 - 0x1C380F09, // 0033 EQ R14 R7 K9 - 0x783A0009, // 0034 JMPF R14 #003F - 0xB83A3800, // 0035 GETNGBL R14 K28 - 0x8C381D1D, // 0036 GETMET R14 R14 K29 - 0x5C401600, // 0037 MOVE R16 R11 - 0x5844000C, // 0038 LDCONST R17 K12 - 0x544A00FE, // 0039 LDINT R18 255 - 0x584C000C, // 003A LDCONST R19 K12 - 0x5C501800, // 003B MOVE R20 R12 - 0x7C380C00, // 003C CALL R14 6 - 0x5C341C00, // 003D MOVE R13 R14 - 0x70020002, // 003E JMP #0042 - 0x0038160C, // 003F ADD R14 R11 R12 - 0x0C381D27, // 0040 DIV R14 R14 K39 - 0x5C341C00, // 0041 MOVE R13 R14 - 0x543A00FE, // 0042 LDINT R14 255 - 0x24381A0E, // 0043 GT R14 R13 R14 - 0x783A0001, // 0044 JMPF R14 #0047 - 0x543600FE, // 0045 LDINT R13 255 - 0x70020002, // 0046 JMP #004A - 0x14381B0C, // 0047 LT R14 R13 K12 - 0x783A0000, // 0048 JMPF R14 #004A - 0x5834000C, // 0049 LDCONST R13 K12 - 0x58380021, // 004A LDCONST R14 K33 - 0xB83E0400, // 004B GETNGBL R15 K2 - 0x8C3C1F28, // 004C GETMET R15 R15 K40 - 0x5C441000, // 004D MOVE R17 R8 - 0x7C3C0400, // 004E CALL R15 2 - 0x783E0009, // 004F JMPF R15 #005A - 0x883C1129, // 0050 GETMBR R15 R8 K41 - 0x4C400000, // 0051 LDNIL R16 - 0x203C1E10, // 0052 NE R15 R15 R16 - 0x783E0005, // 0053 JMPF R15 #005A - 0x8C3C1129, // 0054 GETMET R15 R8 K41 - 0x5C441A00, // 0055 MOVE R17 R13 - 0x5848000C, // 0056 LDCONST R18 K12 - 0x7C3C0600, // 0057 CALL R15 3 - 0x5C381E00, // 0058 MOVE R14 R15 - 0x70020007, // 0059 JMP #0062 - 0x8C3C012A, // 005A GETMET R15 R0 K42 - 0x5C441000, // 005B MOVE R17 R8 - 0x58480001, // 005C LDCONST R18 K1 - 0x544E0009, // 005D LDINT R19 10 - 0x084C1A13, // 005E MUL R19 R13 R19 - 0x004C0213, // 005F ADD R19 R1 R19 - 0x7C3C0800, // 0060 CALL R15 4 - 0x5C381E00, // 0061 MOVE R14 R15 - 0x883C0118, // 0062 GETMBR R15 R0 K24 - 0x983C120E, // 0063 SETIDX R15 R9 R14 - 0x00241309, // 0064 ADD R9 R9 K9 - 0x7001FFAA, // 0065 JMP #0011 - 0x80000000, // 0066 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_PlasmaAnimation_render, /* 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_PlasmaAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C0116, // 0000 GETMBR R3 R0 K22 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x8C0C071F, // 0008 GETMET R3 R3 K31 - 0x7C0C0200, // 0009 CALL R3 1 - 0x5810000C, // 000A LDCONST R4 K12 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x8814032B, // 000D GETMBR R5 R1 K43 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C14032C, // 0010 GETMET R5 R1 K44 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200118, // 0012 GETMBR R8 R0 K24 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x00100909, // 0015 ADD R4 R4 K9 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sine -********************************************************************/ -be_local_closure(class_PlasmaAnimation__sine, /* 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_PlasmaAnimation, /* shared constants */ - be_str_weak(_sine), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0xB80A3800, // 0000 GETNGBL R2 K28 - 0x8C08051D, // 0001 GETMET R2 R2 K29 - 0x5C100200, // 0002 MOVE R4 R1 - 0x5814000C, // 0003 LDCONST R5 K12 - 0x541A00FE, // 0004 LDINT R6 255 - 0x581C000C, // 0005 LDCONST R7 K12 - 0x54227FFE, // 0006 LDINT R8 32767 - 0x7C080C00, // 0007 CALL R2 6 - 0xB80E3800, // 0008 GETNGBL R3 K28 - 0x8C0C072D, // 0009 GETMET R3 R3 K45 - 0x5C140400, // 000A MOVE R5 R2 - 0x7C0C0400, // 000B CALL R3 2 - 0xB8123800, // 000C GETNGBL R4 K28 - 0x8C10091D, // 000D GETMET R4 R4 K29 - 0x5C180600, // 000E MOVE R6 R3 - 0x541DEFFF, // 000F LDINT R7 -4096 - 0x54220FFF, // 0010 LDINT R8 4096 - 0x5824000C, // 0011 LDCONST R9 K12 - 0x542A00FE, // 0012 LDINT R10 255 - 0x7C100C00, // 0013 CALL R4 6 - 0x80040800, // 0014 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PlasmaAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(PlasmaAnimation, - 2, - &be_class_Animation, - be_nested_map(12, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_sine, -1), be_const_closure(class_PlasmaAnimation__sine_closure) }, - { be_const_key_weak(tostring, 2), be_const_closure(class_PlasmaAnimation_tostring_closure) }, - { be_const_key_weak(render, 5), be_const_closure(class_PlasmaAnimation_render_closure) }, - { be_const_key_weak(init, 9), be_const_closure(class_PlasmaAnimation_init_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_PlasmaAnimation_update_closure) }, - { be_const_key_weak(_calculate_plasma, 7), be_const_closure(class_PlasmaAnimation__calculate_plasma_closure) }, - { be_const_key_weak(_initialize_colors, -1), be_const_closure(class_PlasmaAnimation__initialize_colors_closure) }, - { be_const_key_weak(on_param_changed, 6), be_const_closure(class_PlasmaAnimation_on_param_changed_closure) }, - { be_const_key_weak(time_phase, -1), be_const_var(1) }, - { be_const_key_weak(current_colors, 10), 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(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(phase_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(64) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(freq_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(32) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(blend_mode, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(2) }, - })) ) } )) }, - { be_const_key_weak(time_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, 3), 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(default, -1), be_const_nil() }, - })) ) } )) }, - { be_const_key_weak(phase_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(freq_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(23) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(start, 0), be_const_closure(class_PlasmaAnimation_start_closure) }, - })), - be_str_weak(PlasmaAnimation) -); - -/******************************************************************** -** Solidified function: gradient_rainbow_radial -********************************************************************/ -be_local_closure(gradient_rainbow_radial, /* 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(gradient_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(gradient_type), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(center_pos), - /* K6 */ be_nested_str_weak(movement_speed), - }), - be_str_weak(gradient_rainbow_radial), - &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 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A007F, // 0007 LDINT R2 128 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A001D, // 0009 LDINT R2 30 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'OscillatorValueProvider' ktab size: 29, total: 38 (saved 72 bytes) -static const bvalue be_ktab_class_OscillatorValueProvider[29] = { - /* K0 */ be_nested_str_weak(duration), - /* K1 */ be_nested_str_weak(min_value), - /* K2 */ be_nested_str_weak(max_value), - /* K3 */ be_nested_str_weak(form), - /* K4 */ be_nested_str_weak(phase), - /* K5 */ be_nested_str_weak(duty_cycle), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(origin), - /* K8 */ be_nested_str_weak(tasmota), - /* K9 */ be_nested_str_weak(scale_uint), - /* K10 */ be_nested_str_weak(animation), - /* K11 */ be_nested_str_weak(SAWTOOTH), - /* K12 */ be_nested_str_weak(value), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(TRIANGLE), - /* K15 */ be_nested_str_weak(SQUARE), - /* K16 */ be_nested_str_weak(COSINE), - /* K17 */ be_nested_str_weak(sine_int), - /* K18 */ be_nested_str_weak(SINE), - /* K19 */ be_nested_str_weak(EASE_IN), - /* K20 */ be_nested_str_weak(EASE_OUT), - /* K21 */ be_nested_str_weak(ELASTIC), - /* K22 */ be_nested_str_weak(BOUNCE), - /* K23 */ be_nested_str_weak(form_names), - /* K24 */ be_nested_str_weak(UNKNOWN), - /* K25 */ be_nested_str_weak(OscillatorValueProvider_X28min_value_X3D_X25s_X2C_X20max_value_X3D_X25s_X2C_X20duration_X3D_X25sms_X2C_X20form_X3D_X25s_X29), - /* K26 */ be_nested_str_weak(init), - /* K27 */ be_nested_str_weak(engine), - /* K28 */ be_nested_str_weak(time_ms), -}; - - -extern const bclass be_class_OscillatorValueProvider; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_OscillatorValueProvider_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_OscillatorValueProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[382]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x88140102, // 0002 GETMBR R5 R0 K2 - 0x88180103, // 0003 GETMBR R6 R0 K3 - 0x881C0104, // 0004 GETMBR R7 R0 K4 - 0x88200105, // 0005 GETMBR R8 R0 K5 - 0x4C240000, // 0006 LDNIL R9 - 0x1C240609, // 0007 EQ R9 R3 R9 - 0x74260001, // 0008 JMPT R9 #000B - 0x18240706, // 0009 LE R9 R3 K6 - 0x78260000, // 000A JMPF R9 #000C - 0x80040800, // 000B RET 1 R4 - 0x88240107, // 000C GETMBR R9 R0 K7 - 0x04240409, // 000D SUB R9 R2 R9 - 0x14281306, // 000E LT R10 R9 K6 - 0x782A0000, // 000F JMPF R10 #0011 - 0x58240006, // 0010 LDCONST R9 K6 - 0xB82A1000, // 0011 GETNGBL R10 K8 - 0x8C281509, // 0012 GETMET R10 R10 K9 - 0x5C301000, // 0013 MOVE R12 R8 - 0x58340006, // 0014 LDCONST R13 K6 - 0x543A0063, // 0015 LDINT R14 100 - 0x583C0006, // 0016 LDCONST R15 K6 - 0x5C400600, // 0017 MOVE R16 R3 - 0x7C280C00, // 0018 CALL R10 6 - 0x282C1203, // 0019 GE R11 R9 R3 - 0x782E0005, // 001A JMPF R11 #0021 - 0x0C2C1203, // 001B DIV R11 R9 R3 - 0x08341603, // 001C MUL R13 R11 R3 - 0x88300107, // 001D GETMBR R12 R0 K7 - 0x0030180D, // 001E ADD R12 R12 R13 - 0x90020E0C, // 001F SETMBR R0 K7 R12 - 0x10241203, // 0020 MOD R9 R9 R3 - 0x5C2C1200, // 0021 MOVE R11 R9 - 0x24300F06, // 0022 GT R12 R7 K6 - 0x7832000B, // 0023 JMPF R12 #0030 - 0xB8321000, // 0024 GETNGBL R12 K8 - 0x8C301909, // 0025 GETMET R12 R12 K9 - 0x5C380E00, // 0026 MOVE R14 R7 - 0x583C0006, // 0027 LDCONST R15 K6 - 0x54420063, // 0028 LDINT R16 100 - 0x58440006, // 0029 LDCONST R17 K6 - 0x5C480600, // 002A MOVE R18 R3 - 0x7C300C00, // 002B CALL R12 6 - 0x002C160C, // 002C ADD R11 R11 R12 - 0x28301603, // 002D GE R12 R11 R3 - 0x78320000, // 002E JMPF R12 #0030 - 0x042C1603, // 002F SUB R11 R11 R3 - 0xB8321400, // 0030 GETNGBL R12 K10 - 0x8830190B, // 0031 GETMBR R12 R12 K11 - 0x1C300C0C, // 0032 EQ R12 R6 R12 - 0x78320009, // 0033 JMPF R12 #003E - 0xB8321000, // 0034 GETNGBL R12 K8 - 0x8C301909, // 0035 GETMET R12 R12 K9 - 0x5C381600, // 0036 MOVE R14 R11 - 0x583C0006, // 0037 LDCONST R15 K6 - 0x0440070D, // 0038 SUB R16 R3 K13 - 0x5C440800, // 0039 MOVE R17 R4 - 0x5C480A00, // 003A MOVE R18 R5 - 0x7C300C00, // 003B CALL R12 6 - 0x9002180C, // 003C SETMBR R0 K12 R12 - 0x7002013D, // 003D JMP #017C - 0xB8321400, // 003E GETNGBL R12 K10 - 0x8830190E, // 003F GETMBR R12 R12 K14 - 0x1C300C0C, // 0040 EQ R12 R6 R12 - 0x78320015, // 0041 JMPF R12 #0058 - 0x1430160A, // 0042 LT R12 R11 R10 - 0x78320009, // 0043 JMPF R12 #004E - 0xB8321000, // 0044 GETNGBL R12 K8 - 0x8C301909, // 0045 GETMET R12 R12 K9 - 0x5C381600, // 0046 MOVE R14 R11 - 0x583C0006, // 0047 LDCONST R15 K6 - 0x0440150D, // 0048 SUB R16 R10 K13 - 0x5C440800, // 0049 MOVE R17 R4 - 0x5C480A00, // 004A MOVE R18 R5 - 0x7C300C00, // 004B CALL R12 6 - 0x9002180C, // 004C SETMBR R0 K12 R12 - 0x70020008, // 004D JMP #0057 - 0xB8321000, // 004E GETNGBL R12 K8 - 0x8C301909, // 004F GETMET R12 R12 K9 - 0x5C381600, // 0050 MOVE R14 R11 - 0x5C3C1400, // 0051 MOVE R15 R10 - 0x0440070D, // 0052 SUB R16 R3 K13 - 0x5C440A00, // 0053 MOVE R17 R5 - 0x5C480800, // 0054 MOVE R18 R4 - 0x7C300C00, // 0055 CALL R12 6 - 0x9002180C, // 0056 SETMBR R0 K12 R12 - 0x70020123, // 0057 JMP #017C - 0xB8321400, // 0058 GETNGBL R12 K10 - 0x8830190F, // 0059 GETMBR R12 R12 K15 - 0x1C300C0C, // 005A EQ R12 R6 R12 - 0x78320005, // 005B JMPF R12 #0062 - 0x1430160A, // 005C LT R12 R11 R10 - 0x78320001, // 005D JMPF R12 #0060 - 0x90021804, // 005E SETMBR R0 K12 R4 - 0x70020000, // 005F JMP #0061 - 0x90021805, // 0060 SETMBR R0 K12 R5 - 0x70020119, // 0061 JMP #017C - 0xB8321400, // 0062 GETNGBL R12 K10 - 0x88301910, // 0063 GETMBR R12 R12 K16 - 0x1C300C0C, // 0064 EQ R12 R6 R12 - 0x78320016, // 0065 JMPF R12 #007D - 0xB8321000, // 0066 GETNGBL R12 K8 - 0x8C301909, // 0067 GETMET R12 R12 K9 - 0x5C381600, // 0068 MOVE R14 R11 - 0x583C0006, // 0069 LDCONST R15 K6 - 0x0440070D, // 006A SUB R16 R3 K13 - 0x58440006, // 006B LDCONST R17 K6 - 0x544A7FFE, // 006C LDINT R18 32767 - 0x7C300C00, // 006D CALL R12 6 - 0xB8361000, // 006E GETNGBL R13 K8 - 0x8C341B11, // 006F GETMET R13 R13 K17 - 0x543E1FFF, // 0070 LDINT R15 8192 - 0x043C180F, // 0071 SUB R15 R12 R15 - 0x7C340400, // 0072 CALL R13 2 - 0xB83A1000, // 0073 GETNGBL R14 K8 - 0x8C381D09, // 0074 GETMET R14 R14 K9 - 0x5C401A00, // 0075 MOVE R16 R13 - 0x5445EFFF, // 0076 LDINT R17 -4096 - 0x544A0FFF, // 0077 LDINT R18 4096 - 0x5C4C0800, // 0078 MOVE R19 R4 - 0x5C500A00, // 0079 MOVE R20 R5 - 0x7C380C00, // 007A CALL R14 6 - 0x9002180E, // 007B SETMBR R0 K12 R14 - 0x700200FE, // 007C JMP #017C - 0xB8321400, // 007D GETNGBL R12 K10 - 0x88301912, // 007E GETMBR R12 R12 K18 - 0x1C300C0C, // 007F EQ R12 R6 R12 - 0x78320015, // 0080 JMPF R12 #0097 - 0xB8321000, // 0081 GETNGBL R12 K8 - 0x8C301909, // 0082 GETMET R12 R12 K9 - 0x5C381600, // 0083 MOVE R14 R11 - 0x583C0006, // 0084 LDCONST R15 K6 - 0x0440070D, // 0085 SUB R16 R3 K13 - 0x58440006, // 0086 LDCONST R17 K6 - 0x544A7FFE, // 0087 LDINT R18 32767 - 0x7C300C00, // 0088 CALL R12 6 - 0xB8361000, // 0089 GETNGBL R13 K8 - 0x8C341B11, // 008A GETMET R13 R13 K17 - 0x5C3C1800, // 008B MOVE R15 R12 - 0x7C340400, // 008C CALL R13 2 - 0xB83A1000, // 008D GETNGBL R14 K8 - 0x8C381D09, // 008E GETMET R14 R14 K9 - 0x5C401A00, // 008F MOVE R16 R13 - 0x5445EFFF, // 0090 LDINT R17 -4096 - 0x544A0FFF, // 0091 LDINT R18 4096 - 0x5C4C0800, // 0092 MOVE R19 R4 - 0x5C500A00, // 0093 MOVE R20 R5 - 0x7C380C00, // 0094 CALL R14 6 - 0x9002180E, // 0095 SETMBR R0 K12 R14 - 0x700200E4, // 0096 JMP #017C - 0xB8321400, // 0097 GETNGBL R12 K10 - 0x88301913, // 0098 GETMBR R12 R12 K19 - 0x1C300C0C, // 0099 EQ R12 R6 R12 - 0x78320014, // 009A JMPF R12 #00B0 - 0xB8321000, // 009B GETNGBL R12 K8 - 0x8C301909, // 009C GETMET R12 R12 K9 - 0x5C381600, // 009D MOVE R14 R11 - 0x583C0006, // 009E LDCONST R15 K6 - 0x0440070D, // 009F SUB R16 R3 K13 - 0x58440006, // 00A0 LDCONST R17 K6 - 0x544A00FE, // 00A1 LDINT R18 255 - 0x7C300C00, // 00A2 CALL R12 6 - 0x0834180C, // 00A3 MUL R13 R12 R12 - 0x543A00FE, // 00A4 LDINT R14 255 - 0x0C341A0E, // 00A5 DIV R13 R13 R14 - 0xB83A1000, // 00A6 GETNGBL R14 K8 - 0x8C381D09, // 00A7 GETMET R14 R14 K9 - 0x5C401A00, // 00A8 MOVE R16 R13 - 0x58440006, // 00A9 LDCONST R17 K6 - 0x544A00FE, // 00AA LDINT R18 255 - 0x5C4C0800, // 00AB MOVE R19 R4 - 0x5C500A00, // 00AC MOVE R20 R5 - 0x7C380C00, // 00AD CALL R14 6 - 0x9002180E, // 00AE SETMBR R0 K12 R14 - 0x700200CB, // 00AF JMP #017C - 0xB8321400, // 00B0 GETNGBL R12 K10 - 0x88301914, // 00B1 GETMBR R12 R12 K20 - 0x1C300C0C, // 00B2 EQ R12 R6 R12 - 0x7832001A, // 00B3 JMPF R12 #00CF - 0xB8321000, // 00B4 GETNGBL R12 K8 - 0x8C301909, // 00B5 GETMET R12 R12 K9 - 0x5C381600, // 00B6 MOVE R14 R11 - 0x583C0006, // 00B7 LDCONST R15 K6 - 0x0440070D, // 00B8 SUB R16 R3 K13 - 0x58440006, // 00B9 LDCONST R17 K6 - 0x544A00FE, // 00BA LDINT R18 255 - 0x7C300C00, // 00BB CALL R12 6 - 0x543600FE, // 00BC LDINT R13 255 - 0x543A00FE, // 00BD LDINT R14 255 - 0x04381C0C, // 00BE SUB R14 R14 R12 - 0x543E00FE, // 00BF LDINT R15 255 - 0x043C1E0C, // 00C0 SUB R15 R15 R12 - 0x08381C0F, // 00C1 MUL R14 R14 R15 - 0x543E00FE, // 00C2 LDINT R15 255 - 0x0C381C0F, // 00C3 DIV R14 R14 R15 - 0x04341A0E, // 00C4 SUB R13 R13 R14 - 0xB83A1000, // 00C5 GETNGBL R14 K8 - 0x8C381D09, // 00C6 GETMET R14 R14 K9 - 0x5C401A00, // 00C7 MOVE R16 R13 - 0x58440006, // 00C8 LDCONST R17 K6 - 0x544A00FE, // 00C9 LDINT R18 255 - 0x5C4C0800, // 00CA MOVE R19 R4 - 0x5C500A00, // 00CB MOVE R20 R5 - 0x7C380C00, // 00CC CALL R14 6 - 0x9002180E, // 00CD SETMBR R0 K12 R14 - 0x700200AC, // 00CE JMP #017C - 0xB8321400, // 00CF GETNGBL R12 K10 - 0x88301915, // 00D0 GETMBR R12 R12 K21 - 0x1C300C0C, // 00D1 EQ R12 R6 R12 - 0x78320046, // 00D2 JMPF R12 #011A - 0xB8321000, // 00D3 GETNGBL R12 K8 - 0x8C301909, // 00D4 GETMET R12 R12 K9 - 0x5C381600, // 00D5 MOVE R14 R11 - 0x583C0006, // 00D6 LDCONST R15 K6 - 0x0440070D, // 00D7 SUB R16 R3 K13 - 0x58440006, // 00D8 LDCONST R17 K6 - 0x544A00FE, // 00D9 LDINT R18 255 - 0x7C300C00, // 00DA CALL R12 6 - 0x1C341906, // 00DB EQ R13 R12 K6 - 0x78360001, // 00DC JMPF R13 #00DF - 0x90021804, // 00DD SETMBR R0 K12 R4 - 0x70020039, // 00DE JMP #0119 - 0x543600FE, // 00DF LDINT R13 255 - 0x1C34180D, // 00E0 EQ R13 R12 R13 - 0x78360001, // 00E1 JMPF R13 #00E4 - 0x90021805, // 00E2 SETMBR R0 K12 R5 - 0x70020034, // 00E3 JMP #0119 - 0xB8361000, // 00E4 GETNGBL R13 K8 - 0x8C341B09, // 00E5 GETMET R13 R13 K9 - 0x543E00FE, // 00E6 LDINT R15 255 - 0x043C1E0C, // 00E7 SUB R15 R15 R12 - 0x58400006, // 00E8 LDCONST R16 K6 - 0x544600FE, // 00E9 LDINT R17 255 - 0x544A00FE, // 00EA LDINT R18 255 - 0x544E001F, // 00EB LDINT R19 32 - 0x7C340C00, // 00EC CALL R13 6 - 0xB83A1000, // 00ED GETNGBL R14 K8 - 0x8C381D09, // 00EE GETMET R14 R14 K9 - 0x5C401800, // 00EF MOVE R16 R12 - 0x58440006, // 00F0 LDCONST R17 K6 - 0x544A00FE, // 00F1 LDINT R18 255 - 0x584C0006, // 00F2 LDCONST R19 K6 - 0x54527FFE, // 00F3 LDINT R20 32767 - 0x54560005, // 00F4 LDINT R21 6 - 0x08502815, // 00F5 MUL R20 R20 R21 - 0x7C380C00, // 00F6 CALL R14 6 - 0xB83E1000, // 00F7 GETNGBL R15 K8 - 0x8C3C1F11, // 00F8 GETMET R15 R15 K17 - 0x54467FFE, // 00F9 LDINT R17 32767 - 0x10441C11, // 00FA MOD R17 R14 R17 - 0x7C3C0400, // 00FB CALL R15 2 - 0x08401E0D, // 00FC MUL R16 R15 R13 - 0x54460FFF, // 00FD LDINT R17 4096 - 0x0C402011, // 00FE DIV R16 R16 R17 - 0xB8461000, // 00FF GETNGBL R17 K8 - 0x8C442309, // 0100 GETMET R17 R17 K9 - 0x5C4C1800, // 0101 MOVE R19 R12 - 0x58500006, // 0102 LDCONST R20 K6 - 0x545600FE, // 0103 LDINT R21 255 - 0x58580006, // 0104 LDCONST R22 K6 - 0x045C0A04, // 0105 SUB R23 R5 R4 - 0x7C440C00, // 0106 CALL R17 6 - 0x00480811, // 0107 ADD R18 R4 R17 - 0x00482410, // 0108 ADD R18 R18 R16 - 0x90021812, // 0109 SETMBR R0 K12 R18 - 0x04480A04, // 010A SUB R18 R5 R4 - 0x544E0003, // 010B LDINT R19 4 - 0x0C4C2413, // 010C DIV R19 R18 R19 - 0x8850010C, // 010D GETMBR R20 R0 K12 - 0x00540A13, // 010E ADD R21 R5 R19 - 0x24502815, // 010F GT R20 R20 R21 - 0x78520001, // 0110 JMPF R20 #0113 - 0x00500A13, // 0111 ADD R20 R5 R19 - 0x90021814, // 0112 SETMBR R0 K12 R20 - 0x8850010C, // 0113 GETMBR R20 R0 K12 - 0x04540813, // 0114 SUB R21 R4 R19 - 0x14502815, // 0115 LT R20 R20 R21 - 0x78520001, // 0116 JMPF R20 #0119 - 0x04500813, // 0117 SUB R20 R4 R19 - 0x90021814, // 0118 SETMBR R0 K12 R20 - 0x70020061, // 0119 JMP #017C - 0xB8321400, // 011A GETNGBL R12 K10 - 0x88301916, // 011B GETMBR R12 R12 K22 - 0x1C300C0C, // 011C EQ R12 R6 R12 - 0x7832005D, // 011D JMPF R12 #017C - 0xB8321000, // 011E GETNGBL R12 K8 - 0x8C301909, // 011F GETMET R12 R12 K9 - 0x5C381600, // 0120 MOVE R14 R11 - 0x583C0006, // 0121 LDCONST R15 K6 - 0x0440070D, // 0122 SUB R16 R3 K13 - 0x58440006, // 0123 LDCONST R17 K6 - 0x544A00FE, // 0124 LDINT R18 255 - 0x7C300C00, // 0125 CALL R12 6 - 0x58340006, // 0126 LDCONST R13 K6 - 0x543A007F, // 0127 LDINT R14 128 - 0x1438180E, // 0128 LT R14 R12 R14 - 0x783A0012, // 0129 JMPF R14 #013D - 0xB83A1000, // 012A GETNGBL R14 K8 - 0x8C381D09, // 012B GETMET R14 R14 K9 - 0x5C401800, // 012C MOVE R16 R12 - 0x58440006, // 012D LDCONST R17 K6 - 0x544A007E, // 012E LDINT R18 127 - 0x584C0006, // 012F LDCONST R19 K6 - 0x545200FE, // 0130 LDINT R20 255 - 0x7C380C00, // 0131 CALL R14 6 - 0x543E00FE, // 0132 LDINT R15 255 - 0x544200FE, // 0133 LDINT R16 255 - 0x0440200E, // 0134 SUB R16 R16 R14 - 0x544600FE, // 0135 LDINT R17 255 - 0x0444220E, // 0136 SUB R17 R17 R14 - 0x08402011, // 0137 MUL R16 R16 R17 - 0x544600FE, // 0138 LDINT R17 255 - 0x0C402011, // 0139 DIV R16 R16 R17 - 0x043C1E10, // 013A SUB R15 R15 R16 - 0x5C341E00, // 013B MOVE R13 R15 - 0x70020035, // 013C JMP #0173 - 0x543A00BF, // 013D LDINT R14 192 - 0x1438180E, // 013E LT R14 R12 R14 - 0x783A0017, // 013F JMPF R14 #0158 - 0xB83A1000, // 0140 GETNGBL R14 K8 - 0x8C381D09, // 0141 GETMET R14 R14 K9 - 0x5442007F, // 0142 LDINT R16 128 - 0x04401810, // 0143 SUB R16 R12 R16 - 0x58440006, // 0144 LDCONST R17 K6 - 0x544A003E, // 0145 LDINT R18 63 - 0x584C0006, // 0146 LDCONST R19 K6 - 0x545200FE, // 0147 LDINT R20 255 - 0x7C380C00, // 0148 CALL R14 6 - 0x543E00FE, // 0149 LDINT R15 255 - 0x544200FE, // 014A LDINT R16 255 - 0x0440200E, // 014B SUB R16 R16 R14 - 0x544600FE, // 014C LDINT R17 255 - 0x0444220E, // 014D SUB R17 R17 R14 - 0x08402011, // 014E MUL R16 R16 R17 - 0x544600FE, // 014F LDINT R17 255 - 0x0C402011, // 0150 DIV R16 R16 R17 - 0x043C1E10, // 0151 SUB R15 R15 R16 - 0x5442007F, // 0152 LDINT R16 128 - 0x08401E10, // 0153 MUL R16 R15 R16 - 0x544600FE, // 0154 LDINT R17 255 - 0x0C402011, // 0155 DIV R16 R16 R17 - 0x5C342000, // 0156 MOVE R13 R16 - 0x7002001A, // 0157 JMP #0173 - 0xB83A1000, // 0158 GETNGBL R14 K8 - 0x8C381D09, // 0159 GETMET R14 R14 K9 - 0x544200BF, // 015A LDINT R16 192 - 0x04401810, // 015B SUB R16 R12 R16 - 0x58440006, // 015C LDCONST R17 K6 - 0x544A003E, // 015D LDINT R18 63 - 0x584C0006, // 015E LDCONST R19 K6 - 0x545200FE, // 015F LDINT R20 255 - 0x7C380C00, // 0160 CALL R14 6 - 0x543E00FE, // 0161 LDINT R15 255 - 0x544200FE, // 0162 LDINT R16 255 - 0x0440200E, // 0163 SUB R16 R16 R14 - 0x544600FE, // 0164 LDINT R17 255 - 0x0444220E, // 0165 SUB R17 R17 R14 - 0x08402011, // 0166 MUL R16 R16 R17 - 0x544600FE, // 0167 LDINT R17 255 - 0x0C402011, // 0168 DIV R16 R16 R17 - 0x043C1E10, // 0169 SUB R15 R15 R16 - 0x544200FE, // 016A LDINT R16 255 - 0x544600FE, // 016B LDINT R17 255 - 0x0444220F, // 016C SUB R17 R17 R15 - 0x544A003F, // 016D LDINT R18 64 - 0x08442212, // 016E MUL R17 R17 R18 - 0x544A00FE, // 016F LDINT R18 255 - 0x0C442212, // 0170 DIV R17 R17 R18 - 0x04402011, // 0171 SUB R16 R16 R17 - 0x5C342000, // 0172 MOVE R13 R16 - 0xB83A1000, // 0173 GETNGBL R14 K8 - 0x8C381D09, // 0174 GETMET R14 R14 K9 - 0x5C401A00, // 0175 MOVE R16 R13 - 0x58440006, // 0176 LDCONST R17 K6 - 0x544A00FE, // 0177 LDINT R18 255 - 0x5C4C0800, // 0178 MOVE R19 R4 - 0x5C500A00, // 0179 MOVE R20 R5 - 0x7C380C00, // 017A CALL R14 6 - 0x9002180E, // 017B SETMBR R0 K12 R14 - 0x8830010C, // 017C GETMBR R12 R0 K12 - 0x80041800, // 017D RET 1 R12 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_OscillatorValueProvider_tostring, /* 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_OscillatorValueProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x88040103, // 0000 GETMBR R1 R0 K3 - 0x2804030D, // 0001 GE R1 R1 K13 - 0x78060007, // 0002 JMPF R1 #000B - 0x88040103, // 0003 GETMBR R1 R0 K3 - 0x540A0008, // 0004 LDINT R2 9 - 0x18040202, // 0005 LE R1 R1 R2 - 0x78060003, // 0006 JMPF R1 #000B - 0x88040117, // 0007 GETMBR R1 R0 K23 - 0x88080103, // 0008 GETMBR R2 R0 K3 - 0x94040202, // 0009 GETIDX R1 R1 R2 - 0x70020000, // 000A JMP #000C - 0x58040018, // 000B LDCONST R1 K24 - 0x60080018, // 000C GETGBL R2 G24 - 0x580C0019, // 000D LDCONST R3 K25 - 0x88100101, // 000E GETMBR R4 R0 K1 - 0x88140102, // 000F GETMBR R5 R0 K2 - 0x88180100, // 0010 GETMBR R6 R0 K0 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x7C080A00, // 0012 CALL R2 5 - 0x80040400, // 0013 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_OscillatorValueProvider_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_OscillatorValueProvider, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020F06, // 0006 SETMBR R0 K7 K6 - 0x90021906, // 0007 SETMBR R0 K12 K6 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_OscillatorValueProvider_start, /* 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_OscillatorValueProvider, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808011B, // 0003 GETMBR R2 R0 K27 - 0x8804051C, // 0004 GETMBR R1 R2 K28 - 0x90020E01, // 0005 SETMBR R0 K7 R1 - 0x80040000, // 0006 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: OscillatorValueProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(OscillatorValueProvider, - 2, - &be_class_ValueProvider, - be_nested_map(8, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(form_names, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, - ( (struct bvalue*) &(const bvalue[]) { - be_nested_str_weak(), - be_nested_str_weak(SAWTOOTH), - be_nested_str_weak(TRIANGLE), - be_nested_str_weak(SQUARE), - be_nested_str_weak(COSINE), - be_nested_str_weak(SINE), - be_nested_str_weak(EASE_IN), - be_nested_str_weak(EASE_OUT), - be_nested_str_weak(ELASTIC), - be_nested_str_weak(BOUNCE), - })) ) } )) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_OscillatorValueProvider_produce_value_closure) }, - { be_const_key_weak(value, -1), be_const_var(1) }, - { 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(phase, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(100) }, - })) ) } )) }, - { be_const_key_weak(form, 4), 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(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(9, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(1), - be_const_int(2), - be_const_int(3), - be_const_int(4), - be_const_int(5), - be_const_int(6), - be_const_int(7), - be_const_int(8), - be_const_int(9), - })) ) } )) }, - { be_const_key_weak(default, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(duty_cycle, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(100) }, - })) ) } )) }, - { be_const_key_weak(min_value, -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(default, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(duration, -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(default, -1), be_const_int(1000) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(max_value, 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(default, -1), be_const_int(100) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(start, -1), be_const_closure(class_OscillatorValueProvider_start_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_OscillatorValueProvider_tostring_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_OscillatorValueProvider_init_closure) }, - { be_const_key_weak(origin, 4), be_const_var(0) }, - })), - be_str_weak(OscillatorValueProvider) -); - -/******************************************************************** -** Solidified function: rich_palette_rainbow -********************************************************************/ -be_local_closure(rich_palette_rainbow, /* 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - }), - be_str_weak(rich_palette_rainbow), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x58080000, // 0001 LDCONST R2 K0 - 0x7C040200, // 0002 CALL R1 1 - 0xB80A0200, // 0003 GETNGBL R2 K1 - 0x8C080502, // 0004 GETMET R2 R2 K2 - 0x5C100000, // 0005 MOVE R4 R0 - 0x7C080400, // 0006 CALL R2 2 - 0x900A0601, // 0007 SETMBR R2 K3 R1 - 0x80040400, // 0008 RET 1 R2 - }) - ) -); -/*******************************************************************/ - // compact class 'ShiftAnimation' ktab size: 33, total: 62 (saved 232 bytes) static const bvalue be_ktab_class_ShiftAnimation[33] = { /* K0 */ be_nested_str_weak(engine), @@ -9403,9 +8658,9 @@ be_local_class(ShiftAnimation, ); /******************************************************************** -** Solidified function: bounce_gravity +** Solidified function: gradient_rainbow_radial ********************************************************************/ -be_local_closure(bounce_gravity, /* name */ +be_local_closure(gradient_rainbow_radial, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -9415,33 +8670,774 @@ be_local_closure(bounce_gravity, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(bounce_animation), - /* K2 */ be_nested_str_weak(bounce_speed), - /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(damping), - /* K6 */ be_nested_str_weak(gravity), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_gravity), + /* K1 */ be_nested_str_weak(gradient_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(gradient_type), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(center_pos), + /* K6 */ be_nested_str_weak(movement_speed), }), - be_str_weak(bounce_gravity), + be_str_weak(gradient_rainbow_radial), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(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 - 0x540A0063, // 0004 LDINT R2 100 + 0x4C080000, // 0004 LDNIL R2 0x90060402, // 0005 SETMBR R1 K2 R2 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A00EF, // 0007 LDINT R2 240 + 0x540A007F, // 0007 LDINT R2 128 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x540A007F, // 0009 LDINT R2 128 + 0x540A001D, // 0009 LDINT R2 30 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x90060F08, // 000B SETMBR R1 K7 K8 - 0x80040200, // 000C RET 1 R1 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'OscillatorValueProvider' ktab size: 30, total: 39 (saved 72 bytes) +static const bvalue be_ktab_class_OscillatorValueProvider[30] = { + /* K0 */ be_nested_str_weak(duration), + /* K1 */ be_nested_str_weak(min_value), + /* K2 */ be_nested_str_weak(max_value), + /* K3 */ be_nested_str_weak(form), + /* K4 */ be_nested_str_weak(phase), + /* K5 */ be_nested_str_weak(duty_cycle), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(origin), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(animation), + /* K11 */ be_nested_str_weak(SAWTOOTH), + /* K12 */ be_nested_str_weak(value), + /* K13 */ be_nested_str_weak(scale_int), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(TRIANGLE), + /* K16 */ be_nested_str_weak(SQUARE), + /* K17 */ be_nested_str_weak(COSINE), + /* K18 */ be_nested_str_weak(sine_int), + /* K19 */ be_nested_str_weak(SINE), + /* K20 */ be_nested_str_weak(EASE_IN), + /* K21 */ be_nested_str_weak(EASE_OUT), + /* K22 */ be_nested_str_weak(ELASTIC), + /* K23 */ be_nested_str_weak(BOUNCE), + /* K24 */ be_nested_str_weak(form_names), + /* K25 */ be_nested_str_weak(UNKNOWN), + /* K26 */ be_nested_str_weak(OscillatorValueProvider_X28min_value_X3D_X25s_X2C_X20max_value_X3D_X25s_X2C_X20duration_X3D_X25sms_X2C_X20form_X3D_X25s_X29), + /* K27 */ be_nested_str_weak(init), + /* K28 */ be_nested_str_weak(engine), + /* K29 */ be_nested_str_weak(time_ms), +}; + + +extern const bclass be_class_OscillatorValueProvider; + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_OscillatorValueProvider_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_OscillatorValueProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[382]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x88180103, // 0003 GETMBR R6 R0 K3 + 0x881C0104, // 0004 GETMBR R7 R0 K4 + 0x88200105, // 0005 GETMBR R8 R0 K5 + 0x4C240000, // 0006 LDNIL R9 + 0x1C240609, // 0007 EQ R9 R3 R9 + 0x74260001, // 0008 JMPT R9 #000B + 0x18240706, // 0009 LE R9 R3 K6 + 0x78260000, // 000A JMPF R9 #000C + 0x80040800, // 000B RET 1 R4 + 0x88240107, // 000C GETMBR R9 R0 K7 + 0x04240409, // 000D SUB R9 R2 R9 + 0x14281306, // 000E LT R10 R9 K6 + 0x782A0000, // 000F JMPF R10 #0011 + 0x58240006, // 0010 LDCONST R9 K6 + 0xB82A1000, // 0011 GETNGBL R10 K8 + 0x8C281509, // 0012 GETMET R10 R10 K9 + 0x5C301000, // 0013 MOVE R12 R8 + 0x58340006, // 0014 LDCONST R13 K6 + 0x543A0063, // 0015 LDINT R14 100 + 0x583C0006, // 0016 LDCONST R15 K6 + 0x5C400600, // 0017 MOVE R16 R3 + 0x7C280C00, // 0018 CALL R10 6 + 0x282C1203, // 0019 GE R11 R9 R3 + 0x782E0005, // 001A JMPF R11 #0021 + 0x0C2C1203, // 001B DIV R11 R9 R3 + 0x08341603, // 001C MUL R13 R11 R3 + 0x88300107, // 001D GETMBR R12 R0 K7 + 0x0030180D, // 001E ADD R12 R12 R13 + 0x90020E0C, // 001F SETMBR R0 K7 R12 + 0x10241203, // 0020 MOD R9 R9 R3 + 0x5C2C1200, // 0021 MOVE R11 R9 + 0x24300F06, // 0022 GT R12 R7 K6 + 0x7832000B, // 0023 JMPF R12 #0030 + 0xB8321000, // 0024 GETNGBL R12 K8 + 0x8C301909, // 0025 GETMET R12 R12 K9 + 0x5C380E00, // 0026 MOVE R14 R7 + 0x583C0006, // 0027 LDCONST R15 K6 + 0x54420063, // 0028 LDINT R16 100 + 0x58440006, // 0029 LDCONST R17 K6 + 0x5C480600, // 002A MOVE R18 R3 + 0x7C300C00, // 002B CALL R12 6 + 0x002C160C, // 002C ADD R11 R11 R12 + 0x28301603, // 002D GE R12 R11 R3 + 0x78320000, // 002E JMPF R12 #0030 + 0x042C1603, // 002F SUB R11 R11 R3 + 0xB8321400, // 0030 GETNGBL R12 K10 + 0x8830190B, // 0031 GETMBR R12 R12 K11 + 0x1C300C0C, // 0032 EQ R12 R6 R12 + 0x78320009, // 0033 JMPF R12 #003E + 0xB8321000, // 0034 GETNGBL R12 K8 + 0x8C30190D, // 0035 GETMET R12 R12 K13 + 0x5C381600, // 0036 MOVE R14 R11 + 0x583C0006, // 0037 LDCONST R15 K6 + 0x0440070E, // 0038 SUB R16 R3 K14 + 0x5C440800, // 0039 MOVE R17 R4 + 0x5C480A00, // 003A MOVE R18 R5 + 0x7C300C00, // 003B CALL R12 6 + 0x9002180C, // 003C SETMBR R0 K12 R12 + 0x7002013D, // 003D JMP #017C + 0xB8321400, // 003E GETNGBL R12 K10 + 0x8830190F, // 003F GETMBR R12 R12 K15 + 0x1C300C0C, // 0040 EQ R12 R6 R12 + 0x78320015, // 0041 JMPF R12 #0058 + 0x1430160A, // 0042 LT R12 R11 R10 + 0x78320009, // 0043 JMPF R12 #004E + 0xB8321000, // 0044 GETNGBL R12 K8 + 0x8C30190D, // 0045 GETMET R12 R12 K13 + 0x5C381600, // 0046 MOVE R14 R11 + 0x583C0006, // 0047 LDCONST R15 K6 + 0x0440150E, // 0048 SUB R16 R10 K14 + 0x5C440800, // 0049 MOVE R17 R4 + 0x5C480A00, // 004A MOVE R18 R5 + 0x7C300C00, // 004B CALL R12 6 + 0x9002180C, // 004C SETMBR R0 K12 R12 + 0x70020008, // 004D JMP #0057 + 0xB8321000, // 004E GETNGBL R12 K8 + 0x8C30190D, // 004F GETMET R12 R12 K13 + 0x5C381600, // 0050 MOVE R14 R11 + 0x5C3C1400, // 0051 MOVE R15 R10 + 0x0440070E, // 0052 SUB R16 R3 K14 + 0x5C440A00, // 0053 MOVE R17 R5 + 0x5C480800, // 0054 MOVE R18 R4 + 0x7C300C00, // 0055 CALL R12 6 + 0x9002180C, // 0056 SETMBR R0 K12 R12 + 0x70020123, // 0057 JMP #017C + 0xB8321400, // 0058 GETNGBL R12 K10 + 0x88301910, // 0059 GETMBR R12 R12 K16 + 0x1C300C0C, // 005A EQ R12 R6 R12 + 0x78320005, // 005B JMPF R12 #0062 + 0x1430160A, // 005C LT R12 R11 R10 + 0x78320001, // 005D JMPF R12 #0060 + 0x90021804, // 005E SETMBR R0 K12 R4 + 0x70020000, // 005F JMP #0061 + 0x90021805, // 0060 SETMBR R0 K12 R5 + 0x70020119, // 0061 JMP #017C + 0xB8321400, // 0062 GETNGBL R12 K10 + 0x88301911, // 0063 GETMBR R12 R12 K17 + 0x1C300C0C, // 0064 EQ R12 R6 R12 + 0x78320016, // 0065 JMPF R12 #007D + 0xB8321000, // 0066 GETNGBL R12 K8 + 0x8C301909, // 0067 GETMET R12 R12 K9 + 0x5C381600, // 0068 MOVE R14 R11 + 0x583C0006, // 0069 LDCONST R15 K6 + 0x0440070E, // 006A SUB R16 R3 K14 + 0x58440006, // 006B LDCONST R17 K6 + 0x544A7FFE, // 006C LDINT R18 32767 + 0x7C300C00, // 006D CALL R12 6 + 0xB8361000, // 006E GETNGBL R13 K8 + 0x8C341B12, // 006F GETMET R13 R13 K18 + 0x543E1FFF, // 0070 LDINT R15 8192 + 0x043C180F, // 0071 SUB R15 R12 R15 + 0x7C340400, // 0072 CALL R13 2 + 0xB83A1000, // 0073 GETNGBL R14 K8 + 0x8C381D0D, // 0074 GETMET R14 R14 K13 + 0x5C401A00, // 0075 MOVE R16 R13 + 0x5445EFFF, // 0076 LDINT R17 -4096 + 0x544A0FFF, // 0077 LDINT R18 4096 + 0x5C4C0800, // 0078 MOVE R19 R4 + 0x5C500A00, // 0079 MOVE R20 R5 + 0x7C380C00, // 007A CALL R14 6 + 0x9002180E, // 007B SETMBR R0 K12 R14 + 0x700200FE, // 007C JMP #017C + 0xB8321400, // 007D GETNGBL R12 K10 + 0x88301913, // 007E GETMBR R12 R12 K19 + 0x1C300C0C, // 007F EQ R12 R6 R12 + 0x78320015, // 0080 JMPF R12 #0097 + 0xB8321000, // 0081 GETNGBL R12 K8 + 0x8C301909, // 0082 GETMET R12 R12 K9 + 0x5C381600, // 0083 MOVE R14 R11 + 0x583C0006, // 0084 LDCONST R15 K6 + 0x0440070E, // 0085 SUB R16 R3 K14 + 0x58440006, // 0086 LDCONST R17 K6 + 0x544A7FFE, // 0087 LDINT R18 32767 + 0x7C300C00, // 0088 CALL R12 6 + 0xB8361000, // 0089 GETNGBL R13 K8 + 0x8C341B12, // 008A GETMET R13 R13 K18 + 0x5C3C1800, // 008B MOVE R15 R12 + 0x7C340400, // 008C CALL R13 2 + 0xB83A1000, // 008D GETNGBL R14 K8 + 0x8C381D0D, // 008E GETMET R14 R14 K13 + 0x5C401A00, // 008F MOVE R16 R13 + 0x5445EFFF, // 0090 LDINT R17 -4096 + 0x544A0FFF, // 0091 LDINT R18 4096 + 0x5C4C0800, // 0092 MOVE R19 R4 + 0x5C500A00, // 0093 MOVE R20 R5 + 0x7C380C00, // 0094 CALL R14 6 + 0x9002180E, // 0095 SETMBR R0 K12 R14 + 0x700200E4, // 0096 JMP #017C + 0xB8321400, // 0097 GETNGBL R12 K10 + 0x88301914, // 0098 GETMBR R12 R12 K20 + 0x1C300C0C, // 0099 EQ R12 R6 R12 + 0x78320014, // 009A JMPF R12 #00B0 + 0xB8321000, // 009B GETNGBL R12 K8 + 0x8C301909, // 009C GETMET R12 R12 K9 + 0x5C381600, // 009D MOVE R14 R11 + 0x583C0006, // 009E LDCONST R15 K6 + 0x0440070E, // 009F SUB R16 R3 K14 + 0x58440006, // 00A0 LDCONST R17 K6 + 0x544A00FE, // 00A1 LDINT R18 255 + 0x7C300C00, // 00A2 CALL R12 6 + 0x0834180C, // 00A3 MUL R13 R12 R12 + 0x543A00FE, // 00A4 LDINT R14 255 + 0x0C341A0E, // 00A5 DIV R13 R13 R14 + 0xB83A1000, // 00A6 GETNGBL R14 K8 + 0x8C381D0D, // 00A7 GETMET R14 R14 K13 + 0x5C401A00, // 00A8 MOVE R16 R13 + 0x58440006, // 00A9 LDCONST R17 K6 + 0x544A00FE, // 00AA LDINT R18 255 + 0x5C4C0800, // 00AB MOVE R19 R4 + 0x5C500A00, // 00AC MOVE R20 R5 + 0x7C380C00, // 00AD CALL R14 6 + 0x9002180E, // 00AE SETMBR R0 K12 R14 + 0x700200CB, // 00AF JMP #017C + 0xB8321400, // 00B0 GETNGBL R12 K10 + 0x88301915, // 00B1 GETMBR R12 R12 K21 + 0x1C300C0C, // 00B2 EQ R12 R6 R12 + 0x7832001A, // 00B3 JMPF R12 #00CF + 0xB8321000, // 00B4 GETNGBL R12 K8 + 0x8C301909, // 00B5 GETMET R12 R12 K9 + 0x5C381600, // 00B6 MOVE R14 R11 + 0x583C0006, // 00B7 LDCONST R15 K6 + 0x0440070E, // 00B8 SUB R16 R3 K14 + 0x58440006, // 00B9 LDCONST R17 K6 + 0x544A00FE, // 00BA LDINT R18 255 + 0x7C300C00, // 00BB CALL R12 6 + 0x543600FE, // 00BC LDINT R13 255 + 0x543A00FE, // 00BD LDINT R14 255 + 0x04381C0C, // 00BE SUB R14 R14 R12 + 0x543E00FE, // 00BF LDINT R15 255 + 0x043C1E0C, // 00C0 SUB R15 R15 R12 + 0x08381C0F, // 00C1 MUL R14 R14 R15 + 0x543E00FE, // 00C2 LDINT R15 255 + 0x0C381C0F, // 00C3 DIV R14 R14 R15 + 0x04341A0E, // 00C4 SUB R13 R13 R14 + 0xB83A1000, // 00C5 GETNGBL R14 K8 + 0x8C381D0D, // 00C6 GETMET R14 R14 K13 + 0x5C401A00, // 00C7 MOVE R16 R13 + 0x58440006, // 00C8 LDCONST R17 K6 + 0x544A00FE, // 00C9 LDINT R18 255 + 0x5C4C0800, // 00CA MOVE R19 R4 + 0x5C500A00, // 00CB MOVE R20 R5 + 0x7C380C00, // 00CC CALL R14 6 + 0x9002180E, // 00CD SETMBR R0 K12 R14 + 0x700200AC, // 00CE JMP #017C + 0xB8321400, // 00CF GETNGBL R12 K10 + 0x88301916, // 00D0 GETMBR R12 R12 K22 + 0x1C300C0C, // 00D1 EQ R12 R6 R12 + 0x78320046, // 00D2 JMPF R12 #011A + 0xB8321000, // 00D3 GETNGBL R12 K8 + 0x8C301909, // 00D4 GETMET R12 R12 K9 + 0x5C381600, // 00D5 MOVE R14 R11 + 0x583C0006, // 00D6 LDCONST R15 K6 + 0x0440070E, // 00D7 SUB R16 R3 K14 + 0x58440006, // 00D8 LDCONST R17 K6 + 0x544A00FE, // 00D9 LDINT R18 255 + 0x7C300C00, // 00DA CALL R12 6 + 0x1C341906, // 00DB EQ R13 R12 K6 + 0x78360001, // 00DC JMPF R13 #00DF + 0x90021804, // 00DD SETMBR R0 K12 R4 + 0x70020039, // 00DE JMP #0119 + 0x543600FE, // 00DF LDINT R13 255 + 0x1C34180D, // 00E0 EQ R13 R12 R13 + 0x78360001, // 00E1 JMPF R13 #00E4 + 0x90021805, // 00E2 SETMBR R0 K12 R5 + 0x70020034, // 00E3 JMP #0119 + 0xB8361000, // 00E4 GETNGBL R13 K8 + 0x8C341B09, // 00E5 GETMET R13 R13 K9 + 0x543E00FE, // 00E6 LDINT R15 255 + 0x043C1E0C, // 00E7 SUB R15 R15 R12 + 0x58400006, // 00E8 LDCONST R16 K6 + 0x544600FE, // 00E9 LDINT R17 255 + 0x544A00FE, // 00EA LDINT R18 255 + 0x544E001F, // 00EB LDINT R19 32 + 0x7C340C00, // 00EC CALL R13 6 + 0xB83A1000, // 00ED GETNGBL R14 K8 + 0x8C381D09, // 00EE GETMET R14 R14 K9 + 0x5C401800, // 00EF MOVE R16 R12 + 0x58440006, // 00F0 LDCONST R17 K6 + 0x544A00FE, // 00F1 LDINT R18 255 + 0x584C0006, // 00F2 LDCONST R19 K6 + 0x54527FFE, // 00F3 LDINT R20 32767 + 0x54560005, // 00F4 LDINT R21 6 + 0x08502815, // 00F5 MUL R20 R20 R21 + 0x7C380C00, // 00F6 CALL R14 6 + 0xB83E1000, // 00F7 GETNGBL R15 K8 + 0x8C3C1F12, // 00F8 GETMET R15 R15 K18 + 0x54467FFE, // 00F9 LDINT R17 32767 + 0x10441C11, // 00FA MOD R17 R14 R17 + 0x7C3C0400, // 00FB CALL R15 2 + 0x08401E0D, // 00FC MUL R16 R15 R13 + 0x54460FFF, // 00FD LDINT R17 4096 + 0x0C402011, // 00FE DIV R16 R16 R17 + 0xB8461000, // 00FF GETNGBL R17 K8 + 0x8C44230D, // 0100 GETMET R17 R17 K13 + 0x5C4C1800, // 0101 MOVE R19 R12 + 0x58500006, // 0102 LDCONST R20 K6 + 0x545600FE, // 0103 LDINT R21 255 + 0x58580006, // 0104 LDCONST R22 K6 + 0x045C0A04, // 0105 SUB R23 R5 R4 + 0x7C440C00, // 0106 CALL R17 6 + 0x00480811, // 0107 ADD R18 R4 R17 + 0x00482410, // 0108 ADD R18 R18 R16 + 0x90021812, // 0109 SETMBR R0 K12 R18 + 0x04480A04, // 010A SUB R18 R5 R4 + 0x544E0003, // 010B LDINT R19 4 + 0x0C4C2413, // 010C DIV R19 R18 R19 + 0x8850010C, // 010D GETMBR R20 R0 K12 + 0x00540A13, // 010E ADD R21 R5 R19 + 0x24502815, // 010F GT R20 R20 R21 + 0x78520001, // 0110 JMPF R20 #0113 + 0x00500A13, // 0111 ADD R20 R5 R19 + 0x90021814, // 0112 SETMBR R0 K12 R20 + 0x8850010C, // 0113 GETMBR R20 R0 K12 + 0x04540813, // 0114 SUB R21 R4 R19 + 0x14502815, // 0115 LT R20 R20 R21 + 0x78520001, // 0116 JMPF R20 #0119 + 0x04500813, // 0117 SUB R20 R4 R19 + 0x90021814, // 0118 SETMBR R0 K12 R20 + 0x70020061, // 0119 JMP #017C + 0xB8321400, // 011A GETNGBL R12 K10 + 0x88301917, // 011B GETMBR R12 R12 K23 + 0x1C300C0C, // 011C EQ R12 R6 R12 + 0x7832005D, // 011D JMPF R12 #017C + 0xB8321000, // 011E GETNGBL R12 K8 + 0x8C301909, // 011F GETMET R12 R12 K9 + 0x5C381600, // 0120 MOVE R14 R11 + 0x583C0006, // 0121 LDCONST R15 K6 + 0x0440070E, // 0122 SUB R16 R3 K14 + 0x58440006, // 0123 LDCONST R17 K6 + 0x544A00FE, // 0124 LDINT R18 255 + 0x7C300C00, // 0125 CALL R12 6 + 0x58340006, // 0126 LDCONST R13 K6 + 0x543A007F, // 0127 LDINT R14 128 + 0x1438180E, // 0128 LT R14 R12 R14 + 0x783A0012, // 0129 JMPF R14 #013D + 0xB83A1000, // 012A GETNGBL R14 K8 + 0x8C381D09, // 012B GETMET R14 R14 K9 + 0x5C401800, // 012C MOVE R16 R12 + 0x58440006, // 012D LDCONST R17 K6 + 0x544A007E, // 012E LDINT R18 127 + 0x584C0006, // 012F LDCONST R19 K6 + 0x545200FE, // 0130 LDINT R20 255 + 0x7C380C00, // 0131 CALL R14 6 + 0x543E00FE, // 0132 LDINT R15 255 + 0x544200FE, // 0133 LDINT R16 255 + 0x0440200E, // 0134 SUB R16 R16 R14 + 0x544600FE, // 0135 LDINT R17 255 + 0x0444220E, // 0136 SUB R17 R17 R14 + 0x08402011, // 0137 MUL R16 R16 R17 + 0x544600FE, // 0138 LDINT R17 255 + 0x0C402011, // 0139 DIV R16 R16 R17 + 0x043C1E10, // 013A SUB R15 R15 R16 + 0x5C341E00, // 013B MOVE R13 R15 + 0x70020035, // 013C JMP #0173 + 0x543A00BF, // 013D LDINT R14 192 + 0x1438180E, // 013E LT R14 R12 R14 + 0x783A0017, // 013F JMPF R14 #0158 + 0xB83A1000, // 0140 GETNGBL R14 K8 + 0x8C381D09, // 0141 GETMET R14 R14 K9 + 0x5442007F, // 0142 LDINT R16 128 + 0x04401810, // 0143 SUB R16 R12 R16 + 0x58440006, // 0144 LDCONST R17 K6 + 0x544A003E, // 0145 LDINT R18 63 + 0x584C0006, // 0146 LDCONST R19 K6 + 0x545200FE, // 0147 LDINT R20 255 + 0x7C380C00, // 0148 CALL R14 6 + 0x543E00FE, // 0149 LDINT R15 255 + 0x544200FE, // 014A LDINT R16 255 + 0x0440200E, // 014B SUB R16 R16 R14 + 0x544600FE, // 014C LDINT R17 255 + 0x0444220E, // 014D SUB R17 R17 R14 + 0x08402011, // 014E MUL R16 R16 R17 + 0x544600FE, // 014F LDINT R17 255 + 0x0C402011, // 0150 DIV R16 R16 R17 + 0x043C1E10, // 0151 SUB R15 R15 R16 + 0x5442007F, // 0152 LDINT R16 128 + 0x08401E10, // 0153 MUL R16 R15 R16 + 0x544600FE, // 0154 LDINT R17 255 + 0x0C402011, // 0155 DIV R16 R16 R17 + 0x5C342000, // 0156 MOVE R13 R16 + 0x7002001A, // 0157 JMP #0173 + 0xB83A1000, // 0158 GETNGBL R14 K8 + 0x8C381D09, // 0159 GETMET R14 R14 K9 + 0x544200BF, // 015A LDINT R16 192 + 0x04401810, // 015B SUB R16 R12 R16 + 0x58440006, // 015C LDCONST R17 K6 + 0x544A003E, // 015D LDINT R18 63 + 0x584C0006, // 015E LDCONST R19 K6 + 0x545200FE, // 015F LDINT R20 255 + 0x7C380C00, // 0160 CALL R14 6 + 0x543E00FE, // 0161 LDINT R15 255 + 0x544200FE, // 0162 LDINT R16 255 + 0x0440200E, // 0163 SUB R16 R16 R14 + 0x544600FE, // 0164 LDINT R17 255 + 0x0444220E, // 0165 SUB R17 R17 R14 + 0x08402011, // 0166 MUL R16 R16 R17 + 0x544600FE, // 0167 LDINT R17 255 + 0x0C402011, // 0168 DIV R16 R16 R17 + 0x043C1E10, // 0169 SUB R15 R15 R16 + 0x544200FE, // 016A LDINT R16 255 + 0x544600FE, // 016B LDINT R17 255 + 0x0444220F, // 016C SUB R17 R17 R15 + 0x544A003F, // 016D LDINT R18 64 + 0x08442212, // 016E MUL R17 R17 R18 + 0x544A00FE, // 016F LDINT R18 255 + 0x0C442212, // 0170 DIV R17 R17 R18 + 0x04402011, // 0171 SUB R16 R16 R17 + 0x5C342000, // 0172 MOVE R13 R16 + 0xB83A1000, // 0173 GETNGBL R14 K8 + 0x8C381D0D, // 0174 GETMET R14 R14 K13 + 0x5C401A00, // 0175 MOVE R16 R13 + 0x58440006, // 0176 LDCONST R17 K6 + 0x544A00FE, // 0177 LDINT R18 255 + 0x5C4C0800, // 0178 MOVE R19 R4 + 0x5C500A00, // 0179 MOVE R20 R5 + 0x7C380C00, // 017A CALL R14 6 + 0x9002180E, // 017B SETMBR R0 K12 R14 + 0x8830010C, // 017C GETMBR R12 R0 K12 + 0x80041800, // 017D RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_OscillatorValueProvider_tostring, /* 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_OscillatorValueProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x88040103, // 0000 GETMBR R1 R0 K3 + 0x2804030E, // 0001 GE R1 R1 K14 + 0x78060007, // 0002 JMPF R1 #000B + 0x88040103, // 0003 GETMBR R1 R0 K3 + 0x540A0008, // 0004 LDINT R2 9 + 0x18040202, // 0005 LE R1 R1 R2 + 0x78060003, // 0006 JMPF R1 #000B + 0x88040118, // 0007 GETMBR R1 R0 K24 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x94040202, // 0009 GETIDX R1 R1 R2 + 0x70020000, // 000A JMP #000C + 0x58040019, // 000B LDCONST R1 K25 + 0x60080018, // 000C GETGBL R2 G24 + 0x580C001A, // 000D LDCONST R3 K26 + 0x88100101, // 000E GETMBR R4 R0 K1 + 0x88140102, // 000F GETMBR R5 R0 K2 + 0x88180100, // 0010 GETMBR R6 R0 K0 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x7C080A00, // 0012 CALL R2 5 + 0x80040400, // 0013 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_OscillatorValueProvider_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_OscillatorValueProvider, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051B, // 0003 GETMET R2 R2 K27 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020F06, // 0006 SETMBR R0 K7 K6 + 0x90021906, // 0007 SETMBR R0 K12 K6 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_OscillatorValueProvider_start, /* 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_OscillatorValueProvider, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x8808011C, // 0003 GETMBR R2 R0 K28 + 0x8804051D, // 0004 GETMBR R1 R2 K29 + 0x90020E01, // 0005 SETMBR R0 K7 R1 + 0x80040000, // 0006 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: OscillatorValueProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(OscillatorValueProvider, + 2, + &be_class_ValueProvider, + be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(form_names, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_nested_str_weak(), + be_nested_str_weak(SAWTOOTH), + be_nested_str_weak(TRIANGLE), + be_nested_str_weak(SQUARE), + be_nested_str_weak(COSINE), + be_nested_str_weak(SINE), + be_nested_str_weak(EASE_IN), + be_nested_str_weak(EASE_OUT), + be_nested_str_weak(ELASTIC), + be_nested_str_weak(BOUNCE), + })) ) } )) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_OscillatorValueProvider_produce_value_closure) }, + { be_const_key_weak(value, -1), be_const_var(1) }, + { 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(phase, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(100) }, + })) ) } )) }, + { be_const_key_weak(form, 4), 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(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(9, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(6), + be_const_int(7), + be_const_int(8), + be_const_int(9), + })) ) } )) }, + { be_const_key_weak(default, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(duty_cycle, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(50) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(100) }, + })) ) } )) }, + { be_const_key_weak(min_value, -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(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(duration, -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(default, -1), be_const_int(1000) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(max_value, 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(default, -1), be_const_int(100) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(start, -1), be_const_closure(class_OscillatorValueProvider_start_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_OscillatorValueProvider_tostring_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_OscillatorValueProvider_init_closure) }, + { be_const_key_weak(origin, 4), be_const_var(0) }, + })), + be_str_weak(OscillatorValueProvider) +); + +/******************************************************************** +** Solidified function: rich_palette_rainbow +********************************************************************/ +be_local_closure(rich_palette_rainbow, /* 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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + }), + be_str_weak(rich_palette_rainbow), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x58080000, // 0001 LDCONST R2 K0 + 0x7C040200, // 0002 CALL R1 1 + 0xB80A0200, // 0003 GETNGBL R2 K1 + 0x8C080502, // 0004 GETMET R2 R2 K2 + 0x5C100000, // 0005 MOVE R4 R0 + 0x7C080400, // 0006 CALL R2 2 + 0x900A0601, // 0007 SETMBR R2 K3 R1 + 0x80040400, // 0008 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: shift_fast_scroll +********************************************************************/ +be_local_closure(shift_fast_scroll, /* 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[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(shift_animation), + /* K2 */ be_nested_str_weak(direction), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(shift_speed), + /* K5 */ be_nested_str_weak(wrap_around), + }), + be_str_weak(shift_fast_scroll), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* 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 + 0x540A00C7, // 0005 LDINT R2 200 + 0x90060802, // 0006 SETMBR R1 K4 R2 + 0x50080200, // 0007 LDBOOL R2 1 0 + 0x90060A02, // 0008 SETMBR R1 K5 R2 + 0x80040200, // 0009 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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(SINE), + }), + be_str_weak(sine_osc), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 }) ) ); @@ -9602,60 +9598,28 @@ be_local_closure(linear, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: is_value_provider -********************************************************************/ -be_local_closure(is_value_provider, /* 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(value_provider), - }), - be_str_weak(is_value_provider), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x6004000F, // 0000 GETGBL R1 G15 - 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x880C0701, // 0003 GETMBR R3 R3 K1 - 0x7C040400, // 0004 CALL R1 2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - // compact class 'ClosureValueProvider' ktab size: 20, total: 33 (saved 104 bytes) static const bvalue be_ktab_class_ClosureValueProvider[20] = { /* K0 */ be_nested_str_weak(closure), /* K1 */ be_nested_str_weak(_closure), /* K2 */ be_nested_str_weak(math), /* K3 */ be_nested_str_weak(abs), - /* K4 */ be_nested_str_weak(animation), - /* K5 */ be_nested_str_weak(is_value_provider), - /* K6 */ be_nested_str_weak(produce_value), - /* K7 */ be_nested_str_weak(ClosureValueProvider_X28_X25s_X29), - /* K8 */ be_nested_str_weak(closure_X20set), - /* K9 */ be_nested_str_weak(no_X20closure), - /* K10 */ be_nested_str_weak(int), - /* K11 */ be_const_int(0), - /* K12 */ be_const_real_hex(0x437F0000), - /* K13 */ be_nested_str_weak(sqrt), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(scale_int), - /* K16 */ be_nested_str_weak(sine_int), - /* K17 */ be_nested_str_weak(round), - /* K18 */ be_nested_str_weak(min), - /* K19 */ be_nested_str_weak(max), + /* K4 */ be_nested_str_weak(int), + /* K5 */ be_const_int(0), + /* K6 */ be_const_real_hex(0x437F0000), + /* K7 */ be_nested_str_weak(sqrt), + /* K8 */ be_nested_str_weak(ClosureValueProvider_X28_X25s_X29), + /* K9 */ be_nested_str_weak(closure_X20set), + /* K10 */ be_nested_str_weak(no_X20closure), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(scale_int), + /* K13 */ be_nested_str_weak(sine_int), + /* K14 */ be_nested_str_weak(min), + /* K15 */ be_nested_str_weak(round), + /* K16 */ be_nested_str_weak(max), + /* K17 */ be_nested_str_weak(animation), + /* K18 */ be_nested_str_weak(is_value_provider), + /* K19 */ be_nested_str_weak(produce_value), }; @@ -9717,12 +9681,12 @@ be_local_closure(class_ClosureValueProvider_abs, /* name */ /******************************************************************** -** Solidified function: resolve +** Solidified function: sqrt ********************************************************************/ -be_local_closure(class_ClosureValueProvider_resolve, /* name */ +be_local_closure(class_ClosureValueProvider_sqrt, /* name */ be_nested_proto( 8, /* nstack */ - 4, /* argc */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -9730,22 +9694,35 @@ be_local_closure(class_ClosureValueProvider_resolve, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(resolve), + be_str_weak(sqrt), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0xB8120800, // 0000 GETNGBL R4 K4 - 0x8C100905, // 0001 GETMET R4 R4 K5 - 0x5C180200, // 0002 MOVE R6 R1 - 0x7C100400, // 0003 CALL R4 2 - 0x78120005, // 0004 JMPF R4 #000B - 0x8C100306, // 0005 GETMET R4 R1 K6 - 0x5C180400, // 0006 MOVE R6 R2 - 0x5C1C0600, // 0007 MOVE R7 R3 - 0x7C100600, // 0008 CALL R4 3 - 0x80040800, // 0009 RET 1 R4 - 0x70020000, // 000A JMP #000C - 0x80040200, // 000B RET 1 R1 - 0x80000000, // 000C RET 0 + ( &(const binstruction[26]) { /* code */ + 0xA40A0400, // 0000 IMPORT R2 K2 + 0x600C0004, // 0001 GETGBL R3 G4 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x1C0C0704, // 0004 EQ R3 R3 K4 + 0x780E000E, // 0005 JMPF R3 #0015 + 0x280C0305, // 0006 GE R3 R1 K5 + 0x780E000C, // 0007 JMPF R3 #0015 + 0x540E00FE, // 0008 LDINT R3 255 + 0x180C0203, // 0009 LE R3 R1 R3 + 0x780E0009, // 000A JMPF R3 #0015 + 0x0C0C0306, // 000B DIV R3 R1 K6 + 0x60100009, // 000C GETGBL R4 G9 + 0x8C140507, // 000D GETMET R5 R2 K7 + 0x5C1C0600, // 000E MOVE R7 R3 + 0x7C140400, // 000F CALL R5 2 + 0x541A00FE, // 0010 LDINT R6 255 + 0x08140A06, // 0011 MUL R5 R5 R6 + 0x7C100200, // 0012 CALL R4 1 + 0x80040800, // 0013 RET 1 R4 + 0x70020003, // 0014 JMP #0019 + 0x8C0C0507, // 0015 GETMET R3 R2 K7 + 0x5C140200, // 0016 MOVE R5 R1 + 0x7C0C0400, // 0017 CALL R3 2 + 0x80040600, // 0018 RET 1 R3 + 0x80000000, // 0019 RET 0 }) ) ); @@ -9770,12 +9747,12 @@ be_local_closure(class_ClosureValueProvider_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080007, // 0001 LDCONST R2 K7 + 0x58080008, // 0001 LDCONST R2 K8 0x880C0101, // 0002 GETMBR R3 R0 K1 0x780E0001, // 0003 JMPF R3 #0006 - 0x580C0008, // 0004 LDCONST R3 K8 + 0x580C0009, // 0004 LDCONST R3 K9 0x70020000, // 0005 JMP #0007 - 0x580C0009, // 0006 LDCONST R3 K9 + 0x580C000A, // 0006 LDCONST R3 K10 0x7C040400, // 0007 CALL R1 2 0x80040200, // 0008 RET 1 R1 }) @@ -9785,58 +9762,9 @@ be_local_closure(class_ClosureValueProvider_tostring, /* name */ /******************************************************************** -** Solidified function: sqrt +** Solidified function: cos ********************************************************************/ -be_local_closure(class_ClosureValueProvider_sqrt, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(sqrt), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0400, // 0000 IMPORT R2 K2 - 0x600C0004, // 0001 GETGBL R3 G4 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x1C0C070A, // 0004 EQ R3 R3 K10 - 0x780E000E, // 0005 JMPF R3 #0015 - 0x280C030B, // 0006 GE R3 R1 K11 - 0x780E000C, // 0007 JMPF R3 #0015 - 0x540E00FE, // 0008 LDINT R3 255 - 0x180C0203, // 0009 LE R3 R1 R3 - 0x780E0009, // 000A JMPF R3 #0015 - 0x0C0C030C, // 000B DIV R3 R1 K12 - 0x60100009, // 000C GETGBL R4 G9 - 0x8C14050D, // 000D GETMET R5 R2 K13 - 0x5C1C0600, // 000E MOVE R7 R3 - 0x7C140400, // 000F CALL R5 2 - 0x541A00FE, // 0010 LDINT R6 255 - 0x08140A06, // 0011 MUL R5 R5 R6 - 0x7C100200, // 0012 CALL R4 1 - 0x80040800, // 0013 RET 1 R4 - 0x70020003, // 0014 JMP #0019 - 0x8C0C050D, // 0015 GETMET R3 R2 K13 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x80040600, // 0018 RET 1 R3 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: cosine -********************************************************************/ -be_local_closure(class_ClosureValueProvider_cosine, /* name */ +be_local_closure(class_ClosureValueProvider_cos, /* name */ be_nested_proto( 11, /* nstack */ 2, /* argc */ @@ -9847,24 +9775,24 @@ be_local_closure(class_ClosureValueProvider_cosine, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(cosine), + be_str_weak(cos), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0xB80A1C00, // 0000 GETNGBL R2 K14 - 0x8C08050F, // 0001 GETMET R2 R2 K15 + 0xB80A1600, // 0000 GETNGBL R2 K11 + 0x8C08050C, // 0001 GETMET R2 R2 K12 0x5C100200, // 0002 MOVE R4 R1 - 0x5814000B, // 0003 LDCONST R5 K11 + 0x58140005, // 0003 LDCONST R5 K5 0x541A00FE, // 0004 LDINT R6 255 - 0x581C000B, // 0005 LDCONST R7 K11 + 0x581C0005, // 0005 LDCONST R7 K5 0x54227FFE, // 0006 LDINT R8 32767 0x7C080C00, // 0007 CALL R2 6 - 0xB80E1C00, // 0008 GETNGBL R3 K14 - 0x8C0C0710, // 0009 GETMET R3 R3 K16 + 0xB80E1600, // 0008 GETNGBL R3 K11 + 0x8C0C070D, // 0009 GETMET R3 R3 K13 0x54161FFF, // 000A LDINT R5 8192 0x04140405, // 000B SUB R5 R2 R5 0x7C0C0400, // 000C CALL R3 2 - 0xB8121C00, // 000D GETNGBL R4 K14 - 0x8C10090F, // 000E GETMET R4 R4 K15 + 0xB8121600, // 000D GETNGBL R4 K11 + 0x8C10090C, // 000E GETMET R4 R4 K12 0x5C180600, // 000F MOVE R6 R3 0x541DEFFF, // 0010 LDINT R7 -4096 0x54220FFF, // 0011 LDINT R8 4096 @@ -9879,11 +9807,11 @@ be_local_closure(class_ClosureValueProvider_cosine, /* name */ /******************************************************************** -** Solidified function: round +** Solidified function: sin ********************************************************************/ -be_local_closure(class_ClosureValueProvider_round, /* name */ +be_local_closure(class_ClosureValueProvider_sin, /* name */ be_nested_proto( - 7, /* nstack */ + 11, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -9892,16 +9820,30 @@ be_local_closure(class_ClosureValueProvider_round, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(round), + be_str_weak(sin), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xA40A0400, // 0000 IMPORT R2 K2 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x8C100511, // 0002 GETMET R4 R2 K17 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C100400, // 0004 CALL R4 2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x80040600, // 0006 RET 1 R3 + ( &(const binstruction[21]) { /* code */ + 0xB80A1600, // 0000 GETNGBL R2 K11 + 0x8C08050C, // 0001 GETMET R2 R2 K12 + 0x5C100200, // 0002 MOVE R4 R1 + 0x58140005, // 0003 LDCONST R5 K5 + 0x541A00FE, // 0004 LDINT R6 255 + 0x581C0005, // 0005 LDCONST R7 K5 + 0x54227FFE, // 0006 LDINT R8 32767 + 0x7C080C00, // 0007 CALL R2 6 + 0xB80E1600, // 0008 GETNGBL R3 K11 + 0x8C0C070D, // 0009 GETMET R3 R3 K13 + 0x5C140400, // 000A MOVE R5 R2 + 0x7C0C0400, // 000B CALL R3 2 + 0xB8121600, // 000C GETNGBL R4 K11 + 0x8C10090C, // 000D GETMET R4 R4 K12 + 0x5C180600, // 000E MOVE R6 R3 + 0x541DEFFF, // 000F LDINT R7 -4096 + 0x54220FFF, // 0010 LDINT R8 4096 + 0x5425FF00, // 0011 LDINT R9 -255 + 0x542A00FE, // 0012 LDINT R10 255 + 0x7C100C00, // 0013 CALL R4 6 + 0x80040800, // 0014 RET 1 R4 }) ) ); @@ -9927,7 +9869,7 @@ be_local_closure(class_ClosureValueProvider_min, /* name */ ( &(const binstruction[ 6]) { /* code */ 0xA40A0400, // 0000 IMPORT R2 K2 0x600C0016, // 0001 GETGBL R3 G22 - 0x88100512, // 0002 GETMBR R4 R2 K18 + 0x8810050E, // 0002 GETMBR R4 R2 K14 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x80040600, // 0005 RET 1 R3 @@ -9937,6 +9879,36 @@ be_local_closure(class_ClosureValueProvider_min, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: round +********************************************************************/ +be_local_closure(class_ClosureValueProvider_round, /* 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_ClosureValueProvider, /* shared constants */ + be_str_weak(round), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0xA40A0400, // 0000 IMPORT R2 K2 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x8C10050F, // 0002 GETMET R4 R2 K15 + 0x5C180200, // 0003 MOVE R6 R1 + 0x7C100400, // 0004 CALL R4 2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x80040600, // 0006 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: max ********************************************************************/ @@ -9956,7 +9928,7 @@ be_local_closure(class_ClosureValueProvider_max, /* name */ ( &(const binstruction[ 6]) { /* code */ 0xA40A0400, // 0000 IMPORT R2 K2 0x600C0016, // 0001 GETGBL R3 G22 - 0x88100513, // 0002 GETMBR R4 R2 K19 + 0x88100510, // 0002 GETMBR R4 R2 K16 0x5C140200, // 0003 MOVE R5 R1 0x7C0C0400, // 0004 CALL R3 2 0x80040600, // 0005 RET 1 R3 @@ -10002,12 +9974,12 @@ be_local_closure(class_ClosureValueProvider_produce_value, /* name */ /******************************************************************** -** Solidified function: sine +** Solidified function: resolve ********************************************************************/ -be_local_closure(class_ClosureValueProvider_sine, /* name */ +be_local_closure(class_ClosureValueProvider_resolve, /* name */ be_nested_proto( - 11, /* nstack */ - 2, /* argc */ + 8, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -10015,30 +9987,22 @@ be_local_closure(class_ClosureValueProvider_sine, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(sine), + be_str_weak(resolve), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0xB80A1C00, // 0000 GETNGBL R2 K14 - 0x8C08050F, // 0001 GETMET R2 R2 K15 - 0x5C100200, // 0002 MOVE R4 R1 - 0x5814000B, // 0003 LDCONST R5 K11 - 0x541A00FE, // 0004 LDINT R6 255 - 0x581C000B, // 0005 LDCONST R7 K11 - 0x54227FFE, // 0006 LDINT R8 32767 - 0x7C080C00, // 0007 CALL R2 6 - 0xB80E1C00, // 0008 GETNGBL R3 K14 - 0x8C0C0710, // 0009 GETMET R3 R3 K16 - 0x5C140400, // 000A MOVE R5 R2 - 0x7C0C0400, // 000B CALL R3 2 - 0xB8121C00, // 000C GETNGBL R4 K14 - 0x8C10090F, // 000D GETMET R4 R4 K15 - 0x5C180600, // 000E MOVE R6 R3 - 0x541DEFFF, // 000F LDINT R7 -4096 - 0x54220FFF, // 0010 LDINT R8 4096 - 0x5425FF00, // 0011 LDINT R9 -255 - 0x542A00FE, // 0012 LDINT R10 255 - 0x7C100C00, // 0013 CALL R4 6 - 0x80040800, // 0014 RET 1 R4 + ( &(const binstruction[13]) { /* code */ + 0xB8122200, // 0000 GETNGBL R4 K17 + 0x8C100912, // 0001 GETMET R4 R4 K18 + 0x5C180200, // 0002 MOVE R6 R1 + 0x7C100400, // 0003 CALL R4 2 + 0x78120005, // 0004 JMPF R4 #000B + 0x8C100313, // 0005 GETMET R4 R1 K19 + 0x5C180400, // 0006 MOVE R6 R2 + 0x5C1C0600, // 0007 MOVE R7 R3 + 0x7C100600, // 0008 CALL R4 3 + 0x80040800, // 0009 RET 1 R4 + 0x70020000, // 000A JMP #000C + 0x80040200, // 000B RET 1 R1 + 0x80000000, // 000C RET 0 }) ) ); @@ -10062,8 +10026,8 @@ be_local_closure(class_ClosureValueProvider_scale, /* name */ be_str_weak(scale), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0xB81A1C00, // 0000 GETNGBL R6 K14 - 0x8C180D0F, // 0001 GETMET R6 R6 K15 + 0xB81A1600, // 0000 GETNGBL R6 K11 + 0x8C180D0C, // 0001 GETMET R6 R6 K12 0x5C200200, // 0002 MOVE R8 R1 0x5C240400, // 0003 MOVE R9 R2 0x5C280600, // 0004 MOVE R10 R3 @@ -10088,9 +10052,14 @@ be_local_class(ClosureValueProvider, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(scale, -1), be_const_closure(class_ClosureValueProvider_scale_closure) }, { be_const_key_weak(abs, 8), be_const_closure(class_ClosureValueProvider_abs_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ClosureValueProvider_tostring_closure) }, - { be_const_key_weak(resolve, 10), be_const_closure(class_ClosureValueProvider_resolve_closure) }, - { be_const_key_weak(sqrt, -1), be_const_closure(class_ClosureValueProvider_sqrt_closure) }, + { be_const_key_weak(resolve, 6), be_const_closure(class_ClosureValueProvider_resolve_closure) }, + { be_const_key_weak(tostring, 2), be_const_closure(class_ClosureValueProvider_tostring_closure) }, + { be_const_key_weak(cos, -1), be_const_closure(class_ClosureValueProvider_cos_closure) }, + { be_const_key_weak(sin, 10), be_const_closure(class_ClosureValueProvider_sin_closure) }, + { be_const_key_weak(min, -1), be_const_closure(class_ClosureValueProvider_min_closure) }, + { be_const_key_weak(round, -1), be_const_closure(class_ClosureValueProvider_round_closure) }, + { be_const_key_weak(produce_value, 12), be_const_closure(class_ClosureValueProvider_produce_value_closure) }, + { be_const_key_weak(max, -1), be_const_closure(class_ClosureValueProvider_max_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[]) { @@ -10101,18 +10070,62 @@ be_local_class(ClosureValueProvider, { be_const_key_weak(type, -1), be_nested_str_weak(function) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(cosine, -1), be_const_closure(class_ClosureValueProvider_cosine_closure) }, - { be_const_key_weak(round, -1), be_const_closure(class_ClosureValueProvider_round_closure) }, - { be_const_key_weak(produce_value, 4), be_const_closure(class_ClosureValueProvider_produce_value_closure) }, - { be_const_key_weak(max, -1), be_const_closure(class_ClosureValueProvider_max_closure) }, - { be_const_key_weak(min, 2), be_const_closure(class_ClosureValueProvider_min_closure) }, { be_const_key_weak(_closure, -1), be_const_var(0) }, - { be_const_key_weak(sine, -1), be_const_closure(class_ClosureValueProvider_sine_closure) }, + { be_const_key_weak(sqrt, -1), be_const_closure(class_ClosureValueProvider_sqrt_closure) }, { be_const_key_weak(on_param_changed, 0), be_const_closure(class_ClosureValueProvider_on_param_changed_closure) }, })), be_str_weak(ClosureValueProvider) ); +/******************************************************************** +** Solidified function: twinkle_rainbow +********************************************************************/ +be_local_closure(twinkle_rainbow, /* 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[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(twinkle_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(density), + /* K4 */ be_nested_str_weak(twinkle_speed), + /* K5 */ be_nested_str_weak(fade_speed), + /* K6 */ be_nested_str_weak(min_brightness), + /* K7 */ be_nested_str_weak(max_brightness), + }), + be_str_weak(twinkle_rainbow), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0077, // 0006 LDINT R2 120 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A0005, // 0008 LDINT R2 6 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x540A00B3, // 000A LDINT R2 180 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x540A001F, // 000C LDINT R2 32 + 0x90060C02, // 000D SETMBR R1 K6 R2 + 0x540A00FE, // 000E LDINT R2 255 + 0x90060E02, // 000F SETMBR R1 K7 R2 + 0x80040200, // 0010 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: register_event_handler ********************************************************************/ @@ -10149,283 +10162,6 @@ be_local_closure(register_event_handler, /* name */ ); /*******************************************************************/ -// compact class 'StaticValueProvider' ktab size: 3, total: 10 (saved 56 bytes) -static const bvalue be_ktab_class_StaticValueProvider[3] = { - /* K0 */ be_nested_str_weak(value), - /* K1 */ be_nested_str_weak(StaticValueProvider_X28value_X3D_X25s_X29), - /* K2 */ be_nested_str_weak(StaticValueProvider_X28value_X3Dunset_X29), -}; - - -extern const bclass be_class_StaticValueProvider; - -/******************************************************************** -** Solidified function: <= -********************************************************************/ -be_local_closure(class_StaticValueProvider__X3C_X3D, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X3C_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x18080403, // 0004 LE R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: > -********************************************************************/ -be_local_closure(class_StaticValueProvider__X3E, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x24080403, // 0004 GT R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: >= -********************************************************************/ -be_local_closure(class_StaticValueProvider__X3E_X3D, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X3E_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x28080403, // 0004 GE R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_StaticValueProvider_produce_value, /* name */ - be_nested_proto( - 4, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x80040600, // 0001 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: != -********************************************************************/ -be_local_closure(class_StaticValueProvider__X21_X3D, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X21_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x20080403, // 0004 NE R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: == -********************************************************************/ -be_local_closure(class_StaticValueProvider__X3D_X3D, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X3D_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x1C080403, // 0004 EQ R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_StaticValueProvider_tostring, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0xA8020007, // 0000 EXBLK 0 #0009 - 0x60040018, // 0001 GETGBL R1 G24 - 0x58080001, // 0002 LDCONST R2 K1 - 0x880C0100, // 0003 GETMBR R3 R0 K0 - 0x7C040400, // 0004 CALL R1 2 - 0xA8040001, // 0005 EXBLK 1 1 - 0x80040200, // 0006 RET 1 R1 - 0xA8040001, // 0007 EXBLK 1 1 - 0x70020004, // 0008 JMP #000E - 0xAC040000, // 0009 CATCH R1 0 0 - 0x70020001, // 000A JMP #000D - 0x80060400, // 000B RET 1 K2 - 0x70020000, // 000C JMP #000E - 0xB0080000, // 000D RAISE 2 R0 R0 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: < -********************************************************************/ -be_local_closure(class_StaticValueProvider__X3C, /* 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_StaticValueProvider, /* shared constants */ - be_str_weak(_X3C), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x600C0009, // 0001 GETGBL R3 G9 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x14080403, // 0004 LT R2 R2 R3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: StaticValueProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(StaticValueProvider, - 0, - &be_class_ValueProvider, - be_nested_map(9, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_X3C_X3D, -1), be_const_closure(class_StaticValueProvider__X3C_X3D_closure) }, - { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_StaticValueProvider__X3D_X3D_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(value, -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(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(any) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_StaticValueProvider_produce_value_closure) }, - { be_const_key_weak(_X21_X3D, -1), be_const_closure(class_StaticValueProvider__X21_X3D_closure) }, - { be_const_key_weak(_X3E_X3D, 1), be_const_closure(class_StaticValueProvider__X3E_X3D_closure) }, - { be_const_key_weak(_X3E, 2), be_const_closure(class_StaticValueProvider__X3E_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_StaticValueProvider_tostring_closure) }, - { be_const_key_weak(_X3C, -1), be_const_closure(class_StaticValueProvider__X3C_closure) }, - })), - be_str_weak(StaticValueProvider) -); /******************************************************************** ** Solidified function: square @@ -10462,37 +10198,6 @@ be_local_closure(square, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: create_engine -********************************************************************/ -be_local_closure(create_engine, /* 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(animation_engine), - }), - be_str_weak(create_engine), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - // compact class 'NoiseAnimation' ktab size: 50, total: 107 (saved 456 bytes) static const bvalue be_ktab_class_NoiseAnimation[50] = { /* K0 */ be_nested_str_weak(init), @@ -11284,190 +10989,24 @@ be_local_class(NoiseAnimation, })), be_str_weak(NoiseAnimation) ); - -/******************************************************************** -** Solidified function: noise_fractal -********************************************************************/ -be_local_closure(noise_fractal, /* 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[18]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(noise_animation), - /* K2 */ be_nested_str_weak(rich_palette), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(transition_type), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(range_min), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(range_max), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(scale), - /* K14 */ be_nested_str_weak(speed), - /* K15 */ be_nested_str_weak(octaves), - /* K16 */ be_const_int(3), - /* K17 */ be_nested_str_weak(persistence), - }), - be_str_weak(noise_fractal), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* 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 - 0x900A130A, // 0010 SETMBR R2 K9 K10 - 0x540E00FE, // 0011 LDINT R3 255 - 0x900A1603, // 0012 SETMBR R2 K11 R3 - 0x90061802, // 0013 SETMBR R1 K12 R2 - 0x540E001D, // 0014 LDINT R3 30 - 0x90061A03, // 0015 SETMBR R1 K13 R3 - 0x540E0013, // 0016 LDINT R3 20 - 0x90061C03, // 0017 SETMBR R1 K14 R3 - 0x90061F10, // 0018 SETMBR R1 K15 K16 - 0x540E007F, // 0019 LDINT R3 128 - 0x90062203, // 001A SETMBR R1 K17 R3 - 0x80040200, // 001B RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'GradientAnimation' ktab size: 43, total: 82 (saved 312 bytes) -static const bvalue be_ktab_class_GradientAnimation[43] = { - /* K0 */ be_nested_str_weak(update), - /* K1 */ be_nested_str_weak(movement_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(phase_offset), - /* K7 */ be_nested_str_weak(_calculate_gradient), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(direction), - /* K10 */ be_nested_str_weak(spread), - /* K11 */ be_nested_str_weak(gradient_type), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(priority), - /* K14 */ be_nested_str_weak(linear), - /* K15 */ be_nested_str_weak(radial), - /* K16 */ be_nested_str_weak(animation), - /* K17 */ be_nested_str_weak(is_value_provider), - /* K18 */ be_nested_str_weak(rainbow), - /* K19 */ be_nested_str_weak(0x_X2508x), - /* K20 */ be_nested_str_weak(GradientAnimation_X28_X25s_X2C_X20color_X3D_X25s_X2C_X20movement_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K21 */ be_nested_str_weak(is_running), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(get_strip_length), - /* K24 */ be_nested_str_weak(width), - /* K25 */ be_nested_str_weak(current_colors), - /* K26 */ be_nested_str_weak(set_pixel_color), - /* K27 */ be_nested_str_weak(resize), - /* K28 */ be_const_int(-16777216), - /* K29 */ be_nested_str_weak(_calculate_linear_position), - /* K30 */ be_nested_str_weak(_calculate_radial_position), - /* K31 */ be_nested_str_weak(light_state), - /* K32 */ be_const_int(3), - /* K33 */ be_nested_str_weak(HsToRgb), - /* K34 */ be_nested_str_weak(r), - /* K35 */ be_nested_str_weak(g), - /* K36 */ be_nested_str_weak(b), - /* K37 */ be_nested_str_weak(is_color_provider), - /* K38 */ be_nested_str_weak(get_color_for_value), - /* K39 */ be_nested_str_weak(resolve_value), - /* K40 */ be_nested_str_weak(int), - /* K41 */ be_nested_str_weak(init), - /* K42 */ be_nested_str_weak(center_pos), +// compact class 'StripLengthProvider' ktab size: 5, total: 8 (saved 24 bytes) +static const bvalue be_ktab_class_StripLengthProvider[5] = { + /* K0 */ be_nested_str_weak(engine), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(width), + /* K3 */ be_nested_str_weak(StripLengthProvider_X28length_X3D_X25s_X29), + /* K4 */ be_nested_str_weak(StripLengthProvider_X28length_X3Dunknown_X29), }; -extern const bclass be_class_GradientAnimation; +extern const bclass be_class_StripLengthProvider; /******************************************************************** -** Solidified function: update +** Solidified function: produce_value ********************************************************************/ -be_local_closure(class_GradientAnimation_update, /* name */ +be_local_closure(class_StripLengthProvider_produce_value, /* 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_GradientAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* 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 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x240C0502, // 000A GT R3 R2 K2 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8120800, // 000E GETNGBL R4 K4 - 0x8C100905, // 000F GETMET R4 R4 K5 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C0002, // 0011 LDCONST R7 K2 - 0x542200FE, // 0012 LDINT R8 255 - 0x58240002, // 0013 LDCONST R9 K2 - 0x542A0009, // 0014 LDINT R10 10 - 0x7C100C00, // 0015 CALL R4 6 - 0x24140902, // 0016 GT R5 R4 K2 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 0x90020C05, // 001D SETMBR R0 K6 R5 - 0x8C0C0107, // 001E GETMET R3 R0 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_linear_position -********************************************************************/ -be_local_closure(class_GradientAnimation__calculate_linear_position, /* name */ - be_nested_proto( - 13, /* nstack */ + 5, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -11475,60 +11014,18 @@ be_local_closure(class_GradientAnimation__calculate_linear_position, /* name * 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_GradientAnimation, /* shared constants */ - be_str_weak(_calculate_linear_position), + &be_ktab_class_StripLengthProvider, /* shared constants */ + be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0xB80E0800, // 0000 GETNGBL R3 K4 - 0x8C0C0705, // 0001 GETMET R3 R3 K5 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x041C0508, // 0004 SUB R7 R2 K8 - 0x58200002, // 0005 LDCONST R8 K2 - 0x542600FE, // 0006 LDINT R9 255 - 0x7C0C0C00, // 0007 CALL R3 6 - 0x88100109, // 0008 GETMBR R4 R0 K9 - 0x8814010A, // 0009 GETMBR R5 R0 K10 - 0x541A007F, // 000A LDINT R6 128 - 0x18180806, // 000B LE R6 R4 R6 - 0x781A000C, // 000C JMPF R6 #001A - 0xB81A0800, // 000D GETNGBL R6 K4 - 0x8C180D05, // 000E GETMET R6 R6 K5 - 0x5C200800, // 000F MOVE R8 R4 - 0x58240002, // 0010 LDCONST R9 K2 - 0x542A007F, // 0011 LDINT R10 128 - 0x582C0002, // 0012 LDCONST R11 K2 - 0x5432007F, // 0013 LDINT R12 128 - 0x7C180C00, // 0014 CALL R6 6 - 0x001C0606, // 0015 ADD R7 R3 R6 - 0x542200FF, // 0016 LDINT R8 256 - 0x101C0E08, // 0017 MOD R7 R7 R8 - 0x5C0C0E00, // 0018 MOVE R3 R7 - 0x7002000D, // 0019 JMP #0028 - 0xB81A0800, // 001A GETNGBL R6 K4 - 0x8C180D05, // 001B GETMET R6 R6 K5 - 0x5C200800, // 001C MOVE R8 R4 - 0x5426007F, // 001D LDINT R9 128 - 0x542A00FE, // 001E LDINT R10 255 - 0x582C0002, // 001F LDCONST R11 K2 - 0x543200FE, // 0020 LDINT R12 255 - 0x7C180C00, // 0021 CALL R6 6 - 0x541E00FE, // 0022 LDINT R7 255 - 0x00200606, // 0023 ADD R8 R3 R6 - 0x542600FF, // 0024 LDINT R9 256 - 0x10201009, // 0025 MOD R8 R8 R9 - 0x041C0E08, // 0026 SUB R7 R7 R8 - 0x5C0C0E00, // 0027 MOVE R3 R7 - 0xB81A0800, // 0028 GETNGBL R6 K4 - 0x8C180D05, // 0029 GETMET R6 R6 K5 - 0x5C200600, // 002A MOVE R8 R3 - 0x58240002, // 002B LDCONST R9 K2 - 0x542A00FE, // 002C LDINT R10 255 - 0x582C0002, // 002D LDCONST R11 K2 - 0x5C300A00, // 002E MOVE R12 R5 - 0x7C180C00, // 002F CALL R6 6 - 0x5C0C0C00, // 0030 MOVE R3 R6 - 0x80040600, // 0031 RET 1 R3 + ( &(const binstruction[ 8]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80060200, // 0004 RET 1 K1 + 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x880C0702, // 0006 GETMBR R3 R3 K2 + 0x80040600, // 0007 RET 1 R3 }) ) ); @@ -11538,9 +11035,9 @@ be_local_closure(class_GradientAnimation__calculate_linear_position, /* name * /******************************************************************** ** Solidified function: tostring ********************************************************************/ -be_local_closure(class_GradientAnimation_tostring, /* name */ +be_local_closure(class_StripLengthProvider_tostring, /* name */ be_nested_proto( - 14, /* nstack */ + 5, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -11548,49 +11045,33 @@ be_local_closure(class_GradientAnimation_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_GradientAnimation, /* shared constants */ + &be_ktab_class_StripLengthProvider, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x8804010B, // 0000 GETMBR R1 R0 K11 - 0x8808010C, // 0001 GETMBR R2 R0 K12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x8810010D, // 0003 GETMBR R4 R0 K13 - 0x1C140302, // 0004 EQ R5 R1 K2 - 0x78160001, // 0005 JMPF R5 #0008 - 0x5814000E, // 0006 LDCONST R5 K14 + ( &(const binstruction[23]) { /* code */ + 0xA802000F, // 0000 EXBLK 0 #0011 + 0x88040100, // 0001 GETMBR R1 R0 K0 + 0x4C080000, // 0002 LDNIL R2 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060002, // 0004 JMPF R1 #0008 + 0x88040100, // 0005 GETMBR R1 R0 K0 + 0x88040302, // 0006 GETMBR R1 R1 K2 0x70020000, // 0007 JMP #0009 - 0x5814000F, // 0008 LDCONST R5 K15 - 0x4C180000, // 0009 LDNIL R6 - 0xB81E2000, // 000A GETNGBL R7 K16 - 0x8C1C0F11, // 000B GETMET R7 R7 K17 - 0x5C240400, // 000C MOVE R9 R2 - 0x7C1C0400, // 000D CALL R7 2 - 0x781E0004, // 000E JMPF R7 #0014 - 0x601C0008, // 000F GETGBL R7 G8 - 0x5C200400, // 0010 MOVE R8 R2 - 0x7C1C0200, // 0011 CALL R7 1 - 0x5C180E00, // 0012 MOVE R6 R7 - 0x70020009, // 0013 JMP #001E - 0x4C1C0000, // 0014 LDNIL R7 - 0x1C1C0407, // 0015 EQ R7 R2 R7 - 0x781E0001, // 0016 JMPF R7 #0019 - 0x58180012, // 0017 LDCONST R6 K18 - 0x70020004, // 0018 JMP #001E - 0x601C0018, // 0019 GETGBL R7 G24 - 0x58200013, // 001A LDCONST R8 K19 - 0x5C240400, // 001B MOVE R9 R2 - 0x7C1C0400, // 001C CALL R7 2 - 0x5C180E00, // 001D MOVE R6 R7 - 0x601C0018, // 001E GETGBL R7 G24 - 0x58200014, // 001F LDCONST R8 K20 - 0x5C240A00, // 0020 MOVE R9 R5 - 0x5C280C00, // 0021 MOVE R10 R6 - 0x5C2C0600, // 0022 MOVE R11 R3 - 0x5C300800, // 0023 MOVE R12 R4 - 0x88340115, // 0024 GETMBR R13 R0 K21 - 0x7C1C0C00, // 0025 CALL R7 6 - 0x80040E00, // 0026 RET 1 R7 + 0x58040001, // 0008 LDCONST R1 K1 + 0x60080018, // 0009 GETGBL R2 G24 + 0x580C0003, // 000A LDCONST R3 K3 + 0x5C100200, // 000B MOVE R4 R1 + 0x7C080400, // 000C CALL R2 2 + 0xA8040001, // 000D EXBLK 1 1 + 0x80040400, // 000E RET 1 R2 + 0xA8040001, // 000F EXBLK 1 1 + 0x70020004, // 0010 JMP #0016 + 0xAC040000, // 0011 CATCH R1 0 0 + 0x70020001, // 0012 JMP #0015 + 0x80060800, // 0013 RET 1 K4 + 0x70020000, // 0014 JMP #0016 + 0xB0080000, // 0015 RAISE 2 R0 R0 + 0x80000000, // 0016 RET 0 }) ) ); @@ -11598,461 +11079,53 @@ be_local_closure(class_GradientAnimation_tostring, /* name */ /******************************************************************** -** Solidified function: render +** Solidified class: StripLengthProvider ********************************************************************/ -be_local_closure(class_GradientAnimation_render, /* 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_GradientAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x880C0116, // 0007 GETMBR R3 R0 K22 - 0x8C0C0717, // 0008 GETMET R3 R3 K23 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100002, // 000A LDCONST R4 K2 - 0x14140803, // 000B LT R5 R4 R3 - 0x7816000E, // 000C JMPF R5 #001C - 0x88140318, // 000D GETMBR R5 R1 K24 - 0x14140805, // 000E LT R5 R4 R5 - 0x7816000B, // 000F JMPF R5 #001C - 0x6014000C, // 0010 GETGBL R5 G12 - 0x88180119, // 0011 GETMBR R6 R0 K25 - 0x7C140200, // 0012 CALL R5 1 - 0x14140805, // 0013 LT R5 R4 R5 - 0x78160004, // 0014 JMPF R5 #001A - 0x8C14031A, // 0015 GETMET R5 R1 K26 - 0x5C1C0800, // 0016 MOVE R7 R4 - 0x88200119, // 0017 GETMBR R8 R0 K25 - 0x94201004, // 0018 GETIDX R8 R8 R4 - 0x7C140600, // 0019 CALL R5 3 - 0x00100908, // 001A ADD R4 R4 K8 - 0x7001FFEE, // 001B JMP #000B - 0x50140200, // 001C LDBOOL R5 1 0 - 0x80040A00, // 001D RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_GradientAnimation_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_GradientAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x880C0116, // 0000 GETMBR R3 R0 K22 - 0x8C0C0717, // 0001 GETMET R3 R3 K23 - 0x7C0C0200, // 0002 CALL R3 1 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140119, // 0004 GETMBR R5 R0 K25 - 0x7C100200, // 0005 CALL R4 1 - 0x20100803, // 0006 NE R4 R4 R3 - 0x7812001B, // 0007 JMPF R4 #0024 - 0x88100119, // 0008 GETMBR R4 R0 K25 - 0x8C10091B, // 0009 GETMET R4 R4 K27 - 0x5C180600, // 000A MOVE R6 R3 - 0x7C100400, // 000B CALL R4 2 - 0x6010000C, // 000C GETGBL R4 G12 - 0x88140119, // 000D GETMBR R5 R0 K25 - 0x7C100200, // 000E CALL R4 1 - 0x14140803, // 000F LT R5 R4 R3 - 0x78160012, // 0010 JMPF R5 #0024 - 0x6014000C, // 0011 GETGBL R5 G12 - 0x88180119, // 0012 GETMBR R6 R0 K25 - 0x7C140200, // 0013 CALL R5 1 - 0x28140805, // 0014 GE R5 R4 R5 - 0x74160004, // 0015 JMPT R5 #001B - 0x88140119, // 0016 GETMBR R5 R0 K25 - 0x94140A04, // 0017 GETIDX R5 R5 R4 - 0x4C180000, // 0018 LDNIL R6 - 0x1C140A06, // 0019 EQ R5 R5 R6 - 0x78160006, // 001A JMPF R5 #0022 - 0x6014000C, // 001B GETGBL R5 G12 - 0x88180119, // 001C GETMBR R6 R0 K25 - 0x7C140200, // 001D CALL R5 1 - 0x14140805, // 001E LT R5 R4 R5 - 0x78160001, // 001F JMPF R5 #0022 - 0x88140119, // 0020 GETMBR R5 R0 K25 - 0x9814091C, // 0021 SETIDX R5 R4 K28 - 0x00100908, // 0022 ADD R4 R4 K8 - 0x7001FFEA, // 0023 JMP #000F - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_gradient -********************************************************************/ -be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ - be_nested_proto( - 18, /* 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_GradientAnimation, /* shared constants */ - be_str_weak(_calculate_gradient), - &be_const_str_solidified, - ( &(const binstruction[149]) { /* code */ - 0x8808010B, // 0000 GETMBR R2 R0 K11 - 0x880C010C, // 0001 GETMBR R3 R0 K12 - 0x88100116, // 0002 GETMBR R4 R0 K22 - 0x8C100917, // 0003 GETMET R4 R4 K23 - 0x7C100200, // 0004 CALL R4 1 - 0x6014000C, // 0005 GETGBL R5 G12 - 0x88180119, // 0006 GETMBR R6 R0 K25 - 0x7C140200, // 0007 CALL R5 1 - 0x20140A04, // 0008 NE R5 R5 R4 - 0x78160003, // 0009 JMPF R5 #000E - 0x88140119, // 000A GETMBR R5 R0 K25 - 0x8C140B1B, // 000B GETMET R5 R5 K27 - 0x5C1C0800, // 000C MOVE R7 R4 - 0x7C140400, // 000D CALL R5 2 - 0x58140002, // 000E LDCONST R5 K2 - 0x14180A04, // 000F LT R6 R5 R4 - 0x781A0082, // 0010 JMPF R6 #0094 - 0x58180002, // 0011 LDCONST R6 K2 - 0x1C1C0502, // 0012 EQ R7 R2 K2 - 0x781E0005, // 0013 JMPF R7 #001A - 0x8C1C011D, // 0014 GETMET R7 R0 K29 - 0x5C240A00, // 0015 MOVE R9 R5 - 0x5C280800, // 0016 MOVE R10 R4 - 0x7C1C0600, // 0017 CALL R7 3 - 0x5C180E00, // 0018 MOVE R6 R7 - 0x70020004, // 0019 JMP #001F - 0x8C1C011E, // 001A GETMET R7 R0 K30 - 0x5C240A00, // 001B MOVE R9 R5 - 0x5C280800, // 001C MOVE R10 R4 - 0x7C1C0600, // 001D CALL R7 3 - 0x5C180E00, // 001E MOVE R6 R7 - 0x881C0106, // 001F GETMBR R7 R0 K6 - 0x001C0C07, // 0020 ADD R7 R6 R7 - 0x542200FF, // 0021 LDINT R8 256 - 0x101C0E08, // 0022 MOD R7 R7 R8 - 0x5C180E00, // 0023 MOVE R6 R7 - 0x581C001C, // 0024 LDCONST R7 K28 - 0x4C200000, // 0025 LDNIL R8 - 0x1C200608, // 0026 EQ R8 R3 R8 - 0x7822001B, // 0027 JMPF R8 #0044 - 0xB8220800, // 0028 GETNGBL R8 K4 - 0x8C201105, // 0029 GETMET R8 R8 K5 - 0x5C280C00, // 002A MOVE R10 R6 - 0x582C0002, // 002B LDCONST R11 K2 - 0x543200FE, // 002C LDINT R12 255 - 0x58340002, // 002D LDCONST R13 K2 - 0x543A0166, // 002E LDINT R14 359 - 0x7C200C00, // 002F CALL R8 6 - 0xA4263E00, // 0030 IMPORT R9 K31 - 0x5C281200, // 0031 MOVE R10 R9 - 0x582C0020, // 0032 LDCONST R11 K32 - 0x7C280200, // 0033 CALL R10 1 - 0x8C2C1521, // 0034 GETMET R11 R10 K33 - 0x5C341000, // 0035 MOVE R13 R8 - 0x543A00FE, // 0036 LDINT R14 255 - 0x7C2C0600, // 0037 CALL R11 3 - 0x882C1522, // 0038 GETMBR R11 R10 K34 - 0x5432000F, // 0039 LDINT R12 16 - 0x382C160C, // 003A SHL R11 R11 R12 - 0x302E380B, // 003B OR R11 K28 R11 - 0x88301523, // 003C GETMBR R12 R10 K35 - 0x54360007, // 003D LDINT R13 8 - 0x3830180D, // 003E SHL R12 R12 R13 - 0x302C160C, // 003F OR R11 R11 R12 - 0x88301524, // 0040 GETMBR R12 R10 K36 - 0x302C160C, // 0041 OR R11 R11 R12 - 0x5C1C1600, // 0042 MOVE R7 R11 - 0x7002004B, // 0043 JMP #0090 - 0xB8222000, // 0044 GETNGBL R8 K16 - 0x8C201125, // 0045 GETMET R8 R8 K37 - 0x5C280600, // 0046 MOVE R10 R3 - 0x7C200400, // 0047 CALL R8 2 - 0x78220009, // 0048 JMPF R8 #0053 - 0x88200726, // 0049 GETMBR R8 R3 K38 - 0x4C240000, // 004A LDNIL R9 - 0x20201009, // 004B NE R8 R8 R9 - 0x78220005, // 004C JMPF R8 #0053 - 0x8C200726, // 004D GETMET R8 R3 K38 - 0x5C280C00, // 004E MOVE R10 R6 - 0x582C0002, // 004F LDCONST R11 K2 - 0x7C200600, // 0050 CALL R8 3 - 0x5C1C1000, // 0051 MOVE R7 R8 - 0x7002003C, // 0052 JMP #0090 - 0xB8222000, // 0053 GETNGBL R8 K16 - 0x8C201111, // 0054 GETMET R8 R8 K17 - 0x5C280600, // 0055 MOVE R10 R3 - 0x7C200400, // 0056 CALL R8 2 - 0x78220008, // 0057 JMPF R8 #0061 - 0x8C200127, // 0058 GETMET R8 R0 K39 - 0x5C280600, // 0059 MOVE R10 R3 - 0x582C000C, // 005A LDCONST R11 K12 - 0x54320009, // 005B LDINT R12 10 - 0x08300C0C, // 005C MUL R12 R6 R12 - 0x0030020C, // 005D ADD R12 R1 R12 - 0x7C200800, // 005E CALL R8 4 - 0x5C1C1000, // 005F MOVE R7 R8 - 0x7002002E, // 0060 JMP #0090 - 0x60200004, // 0061 GETGBL R8 G4 - 0x5C240600, // 0062 MOVE R9 R3 - 0x7C200200, // 0063 CALL R8 1 - 0x1C201128, // 0064 EQ R8 R8 K40 - 0x78220028, // 0065 JMPF R8 #008F - 0x5C200C00, // 0066 MOVE R8 R6 - 0xB8260800, // 0067 GETNGBL R9 K4 - 0x8C241305, // 0068 GETMET R9 R9 K5 - 0x5C2C1000, // 0069 MOVE R11 R8 - 0x58300002, // 006A LDCONST R12 K2 - 0x543600FE, // 006B LDINT R13 255 - 0x58380002, // 006C LDCONST R14 K2 - 0x543E000F, // 006D LDINT R15 16 - 0x3C3C060F, // 006E SHR R15 R3 R15 - 0x544200FE, // 006F LDINT R16 255 - 0x2C3C1E10, // 0070 AND R15 R15 R16 - 0x7C240C00, // 0071 CALL R9 6 - 0xB82A0800, // 0072 GETNGBL R10 K4 - 0x8C281505, // 0073 GETMET R10 R10 K5 - 0x5C301000, // 0074 MOVE R12 R8 - 0x58340002, // 0075 LDCONST R13 K2 - 0x543A00FE, // 0076 LDINT R14 255 - 0x583C0002, // 0077 LDCONST R15 K2 - 0x54420007, // 0078 LDINT R16 8 - 0x3C400610, // 0079 SHR R16 R3 R16 - 0x544600FE, // 007A LDINT R17 255 - 0x2C402011, // 007B AND R16 R16 R17 - 0x7C280C00, // 007C CALL R10 6 - 0xB82E0800, // 007D GETNGBL R11 K4 - 0x8C2C1705, // 007E GETMET R11 R11 K5 - 0x5C341000, // 007F MOVE R13 R8 - 0x58380002, // 0080 LDCONST R14 K2 - 0x543E00FE, // 0081 LDINT R15 255 - 0x58400002, // 0082 LDCONST R16 K2 - 0x544600FE, // 0083 LDINT R17 255 - 0x2C440611, // 0084 AND R17 R3 R17 - 0x7C2C0C00, // 0085 CALL R11 6 - 0x5432000F, // 0086 LDINT R12 16 - 0x3830120C, // 0087 SHL R12 R9 R12 - 0x3032380C, // 0088 OR R12 K28 R12 - 0x54360007, // 0089 LDINT R13 8 - 0x3834140D, // 008A SHL R13 R10 R13 - 0x3030180D, // 008B OR R12 R12 R13 - 0x3030180B, // 008C OR R12 R12 R11 - 0x5C1C1800, // 008D MOVE R7 R12 - 0x70020000, // 008E JMP #0090 - 0x5C1C0600, // 008F MOVE R7 R3 - 0x88200119, // 0090 GETMBR R8 R0 K25 - 0x98200A07, // 0091 SETIDX R8 R5 R7 - 0x00140B08, // 0092 ADD R5 R5 K8 - 0x7001FF7A, // 0093 JMP #000F - 0x80000000, // 0094 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_GradientAnimation_init, /* 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_GradientAnimation, /* 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 - 0x8C080529, // 0003 GETMET R2 R2 K41 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90023202, // 0008 SETMBR R0 K25 R2 - 0x90020D02, // 0009 SETMBR R0 K6 K2 - 0x88080116, // 000A GETMBR R2 R0 K22 - 0x8C080517, // 000B GETMET R2 R2 K23 - 0x7C080200, // 000C CALL R2 1 - 0x880C0119, // 000D GETMBR R3 R0 K25 - 0x8C0C071B, // 000E GETMET R3 R3 K27 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x580C0002, // 0011 LDCONST R3 K2 - 0x14100602, // 0012 LT R4 R3 R2 - 0x78120003, // 0013 JMPF R4 #0018 - 0x88100119, // 0014 GETMBR R4 R0 K25 - 0x9810071C, // 0015 SETIDX R4 R3 K28 - 0x000C0708, // 0016 ADD R3 R3 K8 - 0x7001FFF9, // 0017 JMP #0012 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_radial_position -********************************************************************/ -be_local_closure(class_GradientAnimation__calculate_radial_position, /* name */ - be_nested_proto( - 14, /* 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_GradientAnimation, /* shared constants */ - be_str_weak(_calculate_radial_position), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0xB80E0800, // 0000 GETNGBL R3 K4 - 0x8C0C0705, // 0001 GETMET R3 R3 K5 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x041C0508, // 0004 SUB R7 R2 K8 - 0x58200002, // 0005 LDCONST R8 K2 - 0x542600FE, // 0006 LDINT R9 255 - 0x7C0C0C00, // 0007 CALL R3 6 - 0x8810012A, // 0008 GETMBR R4 R0 K42 - 0x8814010A, // 0009 GETMBR R5 R0 K10 - 0x58180002, // 000A LDCONST R6 K2 - 0x281C0604, // 000B GE R7 R3 R4 - 0x781E0002, // 000C JMPF R7 #0010 - 0x041C0604, // 000D SUB R7 R3 R4 - 0x5C180E00, // 000E MOVE R6 R7 - 0x70020001, // 000F JMP #0012 - 0x041C0803, // 0010 SUB R7 R4 R3 - 0x5C180E00, // 0011 MOVE R6 R7 - 0xB81E0800, // 0012 GETNGBL R7 K4 - 0x8C1C0F05, // 0013 GETMET R7 R7 K5 - 0x5C240C00, // 0014 MOVE R9 R6 - 0x58280002, // 0015 LDCONST R10 K2 - 0x542E007F, // 0016 LDINT R11 128 - 0x58300002, // 0017 LDCONST R12 K2 - 0x5C340A00, // 0018 MOVE R13 R5 - 0x7C1C0C00, // 0019 CALL R7 6 - 0x5C180E00, // 001A MOVE R6 R7 - 0x541E00FE, // 001B LDINT R7 255 - 0x241C0C07, // 001C GT R7 R6 R7 - 0x781E0000, // 001D JMPF R7 #001F - 0x541A00FE, // 001E LDINT R6 255 - 0x80040C00, // 001F RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: GradientAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(GradientAnimation, - 2, - &be_class_Animation, - be_nested_map(11, +extern const bclass be_class_ValueProvider; +be_local_class(StripLengthProvider, + 0, + &be_class_ValueProvider, + be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(current_colors, -1), be_const_var(0) }, - { be_const_key_weak(render, -1), be_const_closure(class_GradientAnimation_render_closure) }, - { be_const_key_weak(_calculate_linear_position, -1), be_const_closure(class_GradientAnimation__calculate_linear_position_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_GradientAnimation_tostring_closure) }, - { be_const_key_weak(update, 1), be_const_closure(class_GradientAnimation_update_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_GradientAnimation_on_param_changed_closure) }, - { be_const_key_weak(phase_offset, -1), be_const_var(1) }, - { be_const_key_weak(_calculate_gradient, -1), be_const_closure(class_GradientAnimation__calculate_gradient_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(direction, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(center_pos, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(gradient_type, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(color, -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(default, 1), be_const_nil() }, - { be_const_key_weak(nillable, -1), be_const_bool(1) }, - })) ) } )) }, - { be_const_key_weak(movement_speed, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(spread, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_GradientAnimation_init_closure) }, - { be_const_key_weak(_calculate_radial_position, -1), be_const_closure(class_GradientAnimation__calculate_radial_position_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_StripLengthProvider_tostring_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_StripLengthProvider_produce_value_closure) }, })), - be_str_weak(GradientAnimation) + be_str_weak(StripLengthProvider) ); +/******************************************************************** +** Solidified function: unregister_event_handler +********************************************************************/ +be_local_closure(unregister_event_handler, /* 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(event_manager), + /* K2 */ be_nested_str_weak(unregister_handler), + }), + be_str_weak(unregister_event_handler), + &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 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: jitter_color ********************************************************************/ @@ -12089,247 +11162,20 @@ be_local_closure(jitter_color, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** Solidified function: get_user_function -********************************************************************/ -be_local_closure(get_user_function, /* 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), - /* K2 */ be_nested_str_weak(find), - }), - be_str_weak(get_user_function), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080301, // 0001 GETMBR R2 R1 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -// compact class 'BreatheColorProvider' ktab size: 18, total: 29 (saved 88 bytes) -static const bvalue be_ktab_class_BreatheColorProvider[18] = { - /* K0 */ be_nested_str_weak(BreatheColorProvider_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X29), - /* K1 */ be_nested_str_weak(base_color), - /* K2 */ be_nested_str_weak(min_brightness), - /* K3 */ be_nested_str_weak(max_brightness), - /* K4 */ be_nested_str_weak(duration), - /* K5 */ be_nested_str_weak(curve_factor), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(form), - /* K8 */ be_nested_str_weak(animation), - /* K9 */ be_nested_str_weak(COSINE), - /* K10 */ be_nested_str_weak(on_param_changed), - /* K11 */ be_nested_str_weak(produce_value), - /* K12 */ be_nested_str_weak(tasmota), - /* K13 */ be_nested_str_weak(scale_uint), - /* K14 */ be_const_int(0), - /* K15 */ be_nested_str_weak(init), - /* K16 */ be_nested_str_weak(min_value), - /* K17 */ be_nested_str_weak(max_value), +// compact class 'StaticValueProvider' ktab size: 3, total: 10 (saved 56 bytes) +static const bvalue be_ktab_class_StaticValueProvider[3] = { + /* K0 */ be_nested_str_weak(value), + /* K1 */ be_nested_str_weak(StaticValueProvider_X28value_X3D_X25s_X29), + /* K2 */ be_nested_str_weak(StaticValueProvider_X28value_X3Dunset_X29), }; -extern const bclass be_class_BreatheColorProvider; +extern const bclass be_class_StaticValueProvider; /******************************************************************** -** Solidified function: tostring +** Solidified function: <= ********************************************************************/ -be_local_closure(class_BreatheColorProvider_tostring, /* 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_BreatheColorProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 - 0x881C0105, // 0006 GETMBR R7 R0 K5 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_BreatheColorProvider_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_BreatheColorProvider, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x1C0C0305, // 0000 EQ R3 R1 K5 - 0x780E0008, // 0001 JMPF R3 #000B - 0x1C0C0506, // 0002 EQ R3 R2 K6 - 0x780E0003, // 0003 JMPF R3 #0008 - 0xB80E1000, // 0004 GETNGBL R3 K8 - 0x880C0709, // 0005 GETMBR R3 R3 K9 - 0x90020E03, // 0006 SETMBR R0 K7 R3 - 0x70020002, // 0007 JMP #000B - 0xB80E1000, // 0008 GETNGBL R3 K8 - 0x880C0709, // 0009 GETMBR R3 R3 K9 - 0x90020E03, // 000A SETMBR R0 K7 R3 - 0x600C0003, // 000B GETGBL R3 G3 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C070A, // 000E GETMET R3 R3 K10 - 0x5C140200, // 000F MOVE R5 R1 - 0x5C180400, // 0010 MOVE R6 R2 - 0x7C0C0600, // 0011 CALL R3 3 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_BreatheColorProvider_produce_value, /* 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_BreatheColorProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[82]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C070B, // 0003 GETMET R3 R3 K11 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x88100105, // 0007 GETMBR R4 R0 K5 - 0x5C140600, // 0008 MOVE R5 R3 - 0x24180906, // 0009 GT R6 R4 K6 - 0x781A0019, // 000A JMPF R6 #0025 - 0xB81A1800, // 000B GETNGBL R6 K12 - 0x8C180D0D, // 000C GETMET R6 R6 K13 - 0x5C200600, // 000D MOVE R8 R3 - 0x5824000E, // 000E LDCONST R9 K14 - 0x542A00FE, // 000F LDINT R10 255 - 0x582C000E, // 0010 LDCONST R11 K14 - 0x54321FFF, // 0011 LDINT R12 8192 - 0x7C180C00, // 0012 CALL R6 6 - 0x5C1C0800, // 0013 MOVE R7 R4 - 0x24200F06, // 0014 GT R8 R7 K6 - 0x78220005, // 0015 JMPF R8 #001C - 0x08200C06, // 0016 MUL R8 R6 R6 - 0x54261FFF, // 0017 LDINT R9 8192 - 0x0C201009, // 0018 DIV R8 R8 R9 - 0x5C181000, // 0019 MOVE R6 R8 - 0x041C0F06, // 001A SUB R7 R7 K6 - 0x7001FFF7, // 001B JMP #0014 - 0xB8221800, // 001C GETNGBL R8 K12 - 0x8C20110D, // 001D GETMET R8 R8 K13 - 0x5C280C00, // 001E MOVE R10 R6 - 0x582C000E, // 001F LDCONST R11 K14 - 0x54321FFF, // 0020 LDINT R12 8192 - 0x5834000E, // 0021 LDCONST R13 K14 - 0x543A00FE, // 0022 LDINT R14 255 - 0x7C200C00, // 0023 CALL R8 6 - 0x5C141000, // 0024 MOVE R5 R8 - 0xB81A1800, // 0025 GETNGBL R6 K12 - 0x8C180D0D, // 0026 GETMET R6 R6 K13 - 0x5C200A00, // 0027 MOVE R8 R5 - 0x5824000E, // 0028 LDCONST R9 K14 - 0x542A00FE, // 0029 LDINT R10 255 - 0x882C0102, // 002A GETMBR R11 R0 K2 - 0x88300103, // 002B GETMBR R12 R0 K3 - 0x7C180C00, // 002C CALL R6 6 - 0x881C0101, // 002D GETMBR R7 R0 K1 - 0x54220017, // 002E LDINT R8 24 - 0x3C200E08, // 002F SHR R8 R7 R8 - 0x542600FE, // 0030 LDINT R9 255 - 0x2C201009, // 0031 AND R8 R8 R9 - 0x5426000F, // 0032 LDINT R9 16 - 0x3C240E09, // 0033 SHR R9 R7 R9 - 0x542A00FE, // 0034 LDINT R10 255 - 0x2C24120A, // 0035 AND R9 R9 R10 - 0x542A0007, // 0036 LDINT R10 8 - 0x3C280E0A, // 0037 SHR R10 R7 R10 - 0x542E00FE, // 0038 LDINT R11 255 - 0x2C28140B, // 0039 AND R10 R10 R11 - 0x542E00FE, // 003A LDINT R11 255 - 0x2C2C0E0B, // 003B AND R11 R7 R11 - 0x08301206, // 003C MUL R12 R9 R6 - 0x543600FE, // 003D LDINT R13 255 - 0x0C30180D, // 003E DIV R12 R12 R13 - 0x5C241800, // 003F MOVE R9 R12 - 0x08301406, // 0040 MUL R12 R10 R6 - 0x543600FE, // 0041 LDINT R13 255 - 0x0C30180D, // 0042 DIV R12 R12 R13 - 0x5C281800, // 0043 MOVE R10 R12 - 0x08301606, // 0044 MUL R12 R11 R6 - 0x543600FE, // 0045 LDINT R13 255 - 0x0C30180D, // 0046 DIV R12 R12 R13 - 0x5C2C1800, // 0047 MOVE R11 R12 - 0x54320017, // 0048 LDINT R12 24 - 0x3830100C, // 0049 SHL R12 R8 R12 - 0x5436000F, // 004A LDINT R13 16 - 0x3834120D, // 004B SHL R13 R9 R13 - 0x3030180D, // 004C OR R12 R12 R13 - 0x54360007, // 004D LDINT R13 8 - 0x3834140D, // 004E SHL R13 R10 R13 - 0x3030180D, // 004F OR R12 R12 R13 - 0x3030180B, // 0050 OR R12 R12 R11 - 0x80041800, // 0051 RET 1 R12 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_BreatheColorProvider_init, /* name */ +be_local_closure(class_StaticValueProvider__X3C_X3D, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -12339,24 +11185,194 @@ be_local_closure(class_BreatheColorProvider_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ - be_str_weak(init), + &be_ktab_class_StaticValueProvider, /* shared constants */ + be_str_weak(_X3C_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x18080403, // 0004 LE R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: > +********************************************************************/ +be_local_closure(class_StaticValueProvider__X3E, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x24080403, // 0004 GT R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: >= +********************************************************************/ +be_local_closure(class_StaticValueProvider__X3E_X3D, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(_X3E_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x28080403, // 0004 GE R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_StaticValueProvider_produce_value, /* name */ + be_nested_proto( + 4, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x80040600, // 0001 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: != +********************************************************************/ +be_local_closure(class_StaticValueProvider__X21_X3D, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(_X21_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x20080403, // 0004 NE R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: == +********************************************************************/ +be_local_closure(class_StaticValueProvider__X3D_X3D, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(_X3D_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x1C080403, // 0004 EQ R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_StaticValueProvider_tostring, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050F, // 0003 GETMET R2 R2 K15 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0xB80A1000, // 0006 GETNGBL R2 K8 - 0x88080509, // 0007 GETMBR R2 R2 K9 - 0x90020E02, // 0008 SETMBR R0 K7 R2 - 0x9002210E, // 0009 SETMBR R0 K16 K14 - 0x540A00FE, // 000A LDINT R2 255 - 0x90022202, // 000B SETMBR R0 K17 R2 - 0x540A0BB7, // 000C LDINT R2 3000 - 0x90020802, // 000D SETMBR R0 K4 R2 + 0xA8020007, // 0000 EXBLK 0 #0009 + 0x60040018, // 0001 GETGBL R1 G24 + 0x58080001, // 0002 LDCONST R2 K1 + 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x7C040400, // 0004 CALL R1 2 + 0xA8040001, // 0005 EXBLK 1 1 + 0x80040200, // 0006 RET 1 R1 + 0xA8040001, // 0007 EXBLK 1 1 + 0x70020004, // 0008 JMP #000E + 0xAC040000, // 0009 CATCH R1 0 0 + 0x70020001, // 000A JMP #000D + 0x80060400, // 000B RET 1 K2 + 0x70020000, // 000C JMP #000E + 0xB0080000, // 000D RAISE 2 R0 R0 0x80000000, // 000E RET 0 }) ) @@ -12365,52 +11381,101 @@ be_local_closure(class_BreatheColorProvider_init, /* name */ /******************************************************************** -** Solidified class: BreatheColorProvider +** Solidified function: < ********************************************************************/ -extern const bclass be_class_OscillatorValueProvider; -be_local_class(BreatheColorProvider, +be_local_closure(class_StaticValueProvider__X3C, /* 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_StaticValueProvider, /* shared constants */ + be_str_weak(_X3C), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C0009, // 0001 GETGBL R3 G9 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x14080403, // 0004 LT R2 R2 R3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: StaticValueProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(StaticValueProvider, 0, - &be_class_OscillatorValueProvider, - be_nested_map(5, + &be_class_ValueProvider, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, 1), be_const_closure(class_BreatheColorProvider_tostring_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_BreatheColorProvider_init_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_BreatheColorProvider_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[]) { - { be_const_key_weak(base_color, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(_X3C_X3D, -1), be_const_closure(class_StaticValueProvider__X3C_X3D_closure) }, + { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_StaticValueProvider__X3D_X3D_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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(max_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, + { be_const_key_weak(value, -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(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(curve_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(2) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(5) }, - })) ) } )) }, - { be_const_key_weak(min_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(any) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_BreatheColorProvider_produce_value_closure) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_StaticValueProvider_produce_value_closure) }, + { be_const_key_weak(_X21_X3D, -1), be_const_closure(class_StaticValueProvider__X21_X3D_closure) }, + { be_const_key_weak(_X3E_X3D, 1), be_const_closure(class_StaticValueProvider__X3E_X3D_closure) }, + { be_const_key_weak(_X3E, 2), be_const_closure(class_StaticValueProvider__X3E_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_StaticValueProvider_tostring_closure) }, + { be_const_key_weak(_X3C, -1), be_const_closure(class_StaticValueProvider__X3C_closure) }, })), - be_str_weak(BreatheColorProvider) + be_str_weak(StaticValueProvider) ); +/******************************************************************** +** 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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(ELASTIC), + }), + be_str_weak(elastic), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: plasma_fast ********************************************************************/ @@ -12531,139 +11596,53 @@ be_local_closure(clear_all_event_handlers, /* name */ /*******************************************************************/ extern const bclass be_class_FrameBuffer; -// compact class 'FrameBuffer' ktab size: 34, total: 114 (saved 640 bytes) +// compact class 'FrameBuffer' ktab size: 34, total: 122 (saved 704 bytes) static const bvalue be_ktab_class_FrameBuffer[34] = { - /* K0 */ be_nested_str_weak(BLEND_MODE_NORMAL), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(width), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(index_error), - /* K5 */ be_nested_str_weak(start_pos_X20out_X20of_X20range), - /* K6 */ be_nested_str_weak(end_pos_X20out_X20of_X20range), - /* K7 */ be_nested_str_weak(get_pixel_color), - /* K8 */ be_nested_str_weak(blend), - /* K9 */ be_nested_str_weak(pixels), - /* K10 */ be_nested_str_weak(set), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_uint), - /* K13 */ be_nested_str_weak(set_pixel_color), - /* K14 */ be_nested_str_weak(FrameBuffer_X28width_X3D_X25s_X2C_X20pixels_X3D_X25s_X29), - /* K15 */ be_nested_str_weak(value_error), - /* K16 */ be_nested_str_weak(frame_X20buffers_X20must_X20have_X20the_X20same_X20width), - /* K17 */ be_nested_str_weak(pixel_X20index_X20out_X20of_X20range), - /* K18 */ be_nested_str_weak(get), - /* K19 */ be_nested_str_weak(int), - /* K20 */ be_nested_str_weak(width_X20must_X20be_X20positive), - /* K21 */ be_nested_str_weak(resize), - /* K22 */ be_nested_str_weak(clear), - /* K23 */ be_nested_str_weak(instance), - /* K24 */ be_nested_str_weak(copy), - /* K25 */ be_nested_str_weak(argument_X20must_X20be_X20either_X20int_X20or_X20instance), - /* K26 */ be_nested_str_weak(tohex), - /* K27 */ be_const_class(be_class_FrameBuffer), - /* K28 */ be_nested_str_weak(), - /* K29 */ be_nested_str_weak(_X2502X_X2502X_X2502X_X2502X_X7C), - /* K30 */ be_nested_str_weak(animation), - /* K31 */ be_nested_str_weak(frame_buffer), - /* K32 */ be_nested_str_weak(region_start_X20out_X20of_X20range), - /* K33 */ be_nested_str_weak(region_end_X20out_X20of_X20range), + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(value_error), + /* K2 */ be_nested_str_weak(width_X20must_X20be_X20positive), + /* K3 */ be_nested_str_weak(width), + /* K4 */ be_nested_str_weak(pixels), + /* K5 */ be_nested_str_weak(resize), + /* K6 */ be_nested_str_weak(clear), + /* K7 */ be_nested_str_weak(int), + /* K8 */ be_nested_str_weak(instance), + /* K9 */ be_nested_str_weak(copy), + /* K10 */ be_nested_str_weak(argument_X20must_X20be_X20either_X20int_X20or_X20instance), + /* K11 */ be_nested_str_weak(frame_X20buffers_X20must_X20have_X20the_X20same_X20width), + /* K12 */ be_nested_str_weak(get_pixel_color), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(scale_uint), + /* K15 */ be_nested_str_weak(set_pixel_color), + /* K16 */ be_const_int(1), + /* K17 */ be_nested_str_weak(index_error), + /* K18 */ be_nested_str_weak(pixel_X20index_X20out_X20of_X20range), + /* K19 */ be_nested_str_weak(set), + /* K20 */ be_nested_str_weak(BLEND_MODE_NORMAL), + /* K21 */ be_nested_str_weak(animation), + /* K22 */ be_nested_str_weak(frame_buffer), + /* K23 */ be_const_class(be_class_FrameBuffer), + /* K24 */ be_nested_str_weak(start_pos_X20out_X20of_X20range), + /* K25 */ be_nested_str_weak(end_pos_X20out_X20of_X20range), + /* K26 */ be_nested_str_weak(FrameBuffer_X28width_X3D_X25s_X2C_X20pixels_X3D_X25s_X29), + /* K27 */ be_nested_str_weak(get), + /* K28 */ be_nested_str_weak(tohex), + /* K29 */ be_nested_str_weak(blend), + /* K30 */ be_nested_str_weak(region_start_X20out_X20of_X20range), + /* K31 */ be_nested_str_weak(region_end_X20out_X20of_X20range), + /* K32 */ be_nested_str_weak(), + /* K33 */ be_nested_str_weak(_X2502X_X2502X_X2502X_X2502X_X7C), }; extern const bclass be_class_FrameBuffer; /******************************************************************** -** Solidified function: blend_color +** Solidified function: blend_linear ********************************************************************/ -be_local_closure(class_FrameBuffer_blend_color, /* name */ +be_local_closure(class_FrameBuffer_blend_linear, /* name */ be_nested_proto( - 17, /* 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_FrameBuffer, /* shared constants */ - be_str_weak(blend_color), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140405, // 0001 EQ R5 R2 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x4C140000, // 0004 LDNIL R5 - 0x1C140605, // 0005 EQ R5 R3 R5 - 0x78160000, // 0006 JMPF R5 #0008 - 0x580C0001, // 0007 LDCONST R3 K1 - 0x4C140000, // 0008 LDNIL R5 - 0x1C140805, // 0009 EQ R5 R4 R5 - 0x78160002, // 000A JMPF R5 #000E - 0x88140102, // 000B GETMBR R5 R0 K2 - 0x04140B03, // 000C SUB R5 R5 K3 - 0x5C100A00, // 000D MOVE R4 R5 - 0x14140701, // 000E LT R5 R3 K1 - 0x74160002, // 000F JMPT R5 #0013 - 0x88140102, // 0010 GETMBR R5 R0 K2 - 0x28140605, // 0011 GE R5 R3 R5 - 0x78160000, // 0012 JMPF R5 #0014 - 0xB0060905, // 0013 RAISE 1 K4 K5 - 0x14140803, // 0014 LT R5 R4 R3 - 0x74160002, // 0015 JMPT R5 #0019 - 0x88140102, // 0016 GETMBR R5 R0 K2 - 0x28140805, // 0017 GE R5 R4 R5 - 0x78160000, // 0018 JMPF R5 #001A - 0xB0060906, // 0019 RAISE 1 K4 K6 - 0x54160017, // 001A LDINT R5 24 - 0x3C140205, // 001B SHR R5 R1 R5 - 0x541A00FE, // 001C LDINT R6 255 - 0x2C140A06, // 001D AND R5 R5 R6 - 0x541A000F, // 001E LDINT R6 16 - 0x3C180206, // 001F SHR R6 R1 R6 - 0x541E00FE, // 0020 LDINT R7 255 - 0x2C180C07, // 0021 AND R6 R6 R7 - 0x541E0007, // 0022 LDINT R7 8 - 0x3C1C0207, // 0023 SHR R7 R1 R7 - 0x542200FE, // 0024 LDINT R8 255 - 0x2C1C0E08, // 0025 AND R7 R7 R8 - 0x542200FE, // 0026 LDINT R8 255 - 0x2C200208, // 0027 AND R8 R1 R8 - 0x5C240600, // 0028 MOVE R9 R3 - 0x18281204, // 0029 LE R10 R9 R4 - 0x782A0012, // 002A JMPF R10 #003E - 0x8C280107, // 002B GETMET R10 R0 K7 - 0x5C301200, // 002C MOVE R12 R9 - 0x7C280400, // 002D CALL R10 2 - 0x242C0B01, // 002E GT R11 R5 K1 - 0x782E000B, // 002F JMPF R11 #003C - 0x8C2C0108, // 0030 GETMET R11 R0 K8 - 0x5C341400, // 0031 MOVE R13 R10 - 0x5C380200, // 0032 MOVE R14 R1 - 0x5C3C0400, // 0033 MOVE R15 R2 - 0x7C2C0800, // 0034 CALL R11 4 - 0x88300109, // 0035 GETMBR R12 R0 K9 - 0x8C30190A, // 0036 GETMET R12 R12 K10 - 0x543A0003, // 0037 LDINT R14 4 - 0x0838120E, // 0038 MUL R14 R9 R14 - 0x5C3C1600, // 0039 MOVE R15 R11 - 0x54420003, // 003A LDINT R16 4 - 0x7C300800, // 003B CALL R12 4 - 0x00241303, // 003C ADD R9 R9 K3 - 0x7001FFEA, // 003D JMP #0029 - 0x80000000, // 003E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: apply_brightness -********************************************************************/ -be_local_closure(class_FrameBuffer_apply_brightness, /* name */ - be_nested_proto( - 18, /* nstack */ + 19, /* nstack */ 4, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -12672,170 +11651,123 @@ be_local_closure(class_FrameBuffer_apply_brightness, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(apply_brightness), + be_str_weak(blend_linear), &be_const_str_solidified, - ( &(const binstruction[161]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100204, // 0001 EQ R4 R1 R4 - 0x78120000, // 0002 JMPF R4 #0004 - 0x540600FE, // 0003 LDINT R1 255 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100404, // 0005 EQ R4 R2 R4 - 0x78120000, // 0006 JMPF R4 #0008 - 0x58080001, // 0007 LDCONST R2 K1 - 0x4C100000, // 0008 LDNIL R4 - 0x1C100604, // 0009 EQ R4 R3 R4 - 0x78120002, // 000A JMPF R4 #000E - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x04100903, // 000C SUB R4 R4 K3 - 0x5C0C0800, // 000D MOVE R3 R4 - 0x14100501, // 000E LT R4 R2 K1 - 0x74120002, // 000F JMPT R4 #0013 - 0x88100102, // 0010 GETMBR R4 R0 K2 - 0x28100404, // 0011 GE R4 R2 R4 - 0x78120000, // 0012 JMPF R4 #0014 - 0xB0060905, // 0013 RAISE 1 K4 K5 - 0x14100602, // 0014 LT R4 R3 R2 - 0x74120002, // 0015 JMPT R4 #0019 - 0x88100102, // 0016 GETMBR R4 R0 K2 - 0x28100604, // 0017 GE R4 R3 R4 - 0x78120000, // 0018 JMPF R4 #001A - 0xB0060906, // 0019 RAISE 1 K4 K6 - 0x14100301, // 001A LT R4 R1 K1 - 0x78120001, // 001B JMPF R4 #001E - 0x58100001, // 001C LDCONST R4 K1 - 0x70020005, // 001D JMP #0024 - 0x541201FE, // 001E LDINT R4 511 - 0x24100204, // 001F GT R4 R1 R4 - 0x78120001, // 0020 JMPF R4 #0023 - 0x541201FE, // 0021 LDINT R4 511 - 0x70020000, // 0022 JMP #0024 - 0x5C100200, // 0023 MOVE R4 R1 - 0x5C040800, // 0024 MOVE R1 R4 - 0x5C100400, // 0025 MOVE R4 R2 - 0x18140803, // 0026 LE R5 R4 R3 - 0x78160077, // 0027 JMPF R5 #00A0 - 0x8C140107, // 0028 GETMET R5 R0 K7 - 0x5C1C0800, // 0029 MOVE R7 R4 - 0x7C140400, // 002A CALL R5 2 - 0x541A0017, // 002B LDINT R6 24 - 0x3C180A06, // 002C SHR R6 R5 R6 - 0x541E00FE, // 002D LDINT R7 255 - 0x2C180C07, // 002E AND R6 R6 R7 - 0x541E000F, // 002F LDINT R7 16 - 0x3C1C0A07, // 0030 SHR R7 R5 R7 - 0x542200FE, // 0031 LDINT R8 255 - 0x2C1C0E08, // 0032 AND R7 R7 R8 - 0x54220007, // 0033 LDINT R8 8 - 0x3C200A08, // 0034 SHR R8 R5 R8 - 0x542600FE, // 0035 LDINT R9 255 - 0x2C201009, // 0036 AND R8 R8 R9 - 0x542600FE, // 0037 LDINT R9 255 - 0x2C240A09, // 0038 AND R9 R5 R9 - 0x542A00FE, // 0039 LDINT R10 255 - 0x1828020A, // 003A LE R10 R1 R10 - 0x782A001B, // 003B JMPF R10 #0058 - 0xB82A1600, // 003C GETNGBL R10 K11 - 0x8C28150C, // 003D GETMET R10 R10 K12 - 0x5C300E00, // 003E MOVE R12 R7 - 0x58340001, // 003F LDCONST R13 K1 - 0x543A00FE, // 0040 LDINT R14 255 - 0x583C0001, // 0041 LDCONST R15 K1 - 0x5C400200, // 0042 MOVE R16 R1 - 0x7C280C00, // 0043 CALL R10 6 - 0x5C1C1400, // 0044 MOVE R7 R10 - 0xB82A1600, // 0045 GETNGBL R10 K11 - 0x8C28150C, // 0046 GETMET R10 R10 K12 - 0x5C301000, // 0047 MOVE R12 R8 - 0x58340001, // 0048 LDCONST R13 K1 - 0x543A00FE, // 0049 LDINT R14 255 - 0x583C0001, // 004A LDCONST R15 K1 - 0x5C400200, // 004B MOVE R16 R1 - 0x7C280C00, // 004C CALL R10 6 - 0x5C201400, // 004D MOVE R8 R10 - 0xB82A1600, // 004E GETNGBL R10 K11 - 0x8C28150C, // 004F GETMET R10 R10 K12 - 0x5C301200, // 0050 MOVE R12 R9 - 0x58340001, // 0051 LDCONST R13 K1 - 0x543A00FE, // 0052 LDINT R14 255 - 0x583C0001, // 0053 LDCONST R15 K1 - 0x5C400200, // 0054 MOVE R16 R1 - 0x7C280C00, // 0055 CALL R10 6 - 0x5C241400, // 0056 MOVE R9 R10 - 0x70020037, // 0057 JMP #0090 - 0x542A00FE, // 0058 LDINT R10 255 - 0x0428020A, // 0059 SUB R10 R1 R10 - 0xB82E1600, // 005A GETNGBL R11 K11 - 0x8C2C170C, // 005B GETMET R11 R11 K12 - 0x08340E0A, // 005C MUL R13 R7 R10 - 0x58380001, // 005D LDCONST R14 K1 - 0x543E00FE, // 005E LDINT R15 255 - 0x544200FF, // 005F LDINT R16 256 - 0x083C1E10, // 0060 MUL R15 R15 R16 - 0x58400001, // 0061 LDCONST R16 K1 - 0x544600FE, // 0062 LDINT R17 255 - 0x7C2C0C00, // 0063 CALL R11 6 - 0x001C0E0B, // 0064 ADD R7 R7 R11 - 0xB82E1600, // 0065 GETNGBL R11 K11 - 0x8C2C170C, // 0066 GETMET R11 R11 K12 - 0x0834100A, // 0067 MUL R13 R8 R10 - 0x58380001, // 0068 LDCONST R14 K1 - 0x543E00FE, // 0069 LDINT R15 255 - 0x544200FF, // 006A LDINT R16 256 - 0x083C1E10, // 006B MUL R15 R15 R16 - 0x58400001, // 006C LDCONST R16 K1 - 0x544600FE, // 006D LDINT R17 255 - 0x7C2C0C00, // 006E CALL R11 6 - 0x0020100B, // 006F ADD R8 R8 R11 - 0xB82E1600, // 0070 GETNGBL R11 K11 - 0x8C2C170C, // 0071 GETMET R11 R11 K12 - 0x0834120A, // 0072 MUL R13 R9 R10 - 0x58380001, // 0073 LDCONST R14 K1 - 0x543E00FE, // 0074 LDINT R15 255 - 0x544200FF, // 0075 LDINT R16 256 - 0x083C1E10, // 0076 MUL R15 R15 R16 - 0x58400001, // 0077 LDCONST R16 K1 - 0x544600FE, // 0078 LDINT R17 255 - 0x7C2C0C00, // 0079 CALL R11 6 - 0x0024120B, // 007A ADD R9 R9 R11 - 0x542E00FE, // 007B LDINT R11 255 - 0x242C0E0B, // 007C GT R11 R7 R11 - 0x782E0001, // 007D JMPF R11 #0080 - 0x542E00FE, // 007E LDINT R11 255 - 0x70020000, // 007F JMP #0081 - 0x5C2C0E00, // 0080 MOVE R11 R7 - 0x5C1C1600, // 0081 MOVE R7 R11 - 0x542E00FE, // 0082 LDINT R11 255 - 0x242C100B, // 0083 GT R11 R8 R11 - 0x782E0001, // 0084 JMPF R11 #0087 - 0x542E00FE, // 0085 LDINT R11 255 - 0x70020000, // 0086 JMP #0088 - 0x5C2C1000, // 0087 MOVE R11 R8 - 0x5C201600, // 0088 MOVE R8 R11 - 0x542E00FE, // 0089 LDINT R11 255 - 0x242C120B, // 008A GT R11 R9 R11 - 0x782E0001, // 008B JMPF R11 #008E - 0x542E00FE, // 008C LDINT R11 255 - 0x70020000, // 008D JMP #008F - 0x5C2C1200, // 008E MOVE R11 R9 - 0x5C241600, // 008F MOVE R9 R11 - 0x542A0017, // 0090 LDINT R10 24 - 0x38280C0A, // 0091 SHL R10 R6 R10 - 0x542E000F, // 0092 LDINT R11 16 - 0x382C0E0B, // 0093 SHL R11 R7 R11 - 0x3028140B, // 0094 OR R10 R10 R11 - 0x542E0007, // 0095 LDINT R11 8 - 0x382C100B, // 0096 SHL R11 R8 R11 - 0x3028140B, // 0097 OR R10 R10 R11 - 0x30281409, // 0098 OR R10 R10 R9 - 0x5C141400, // 0099 MOVE R5 R10 - 0x8C28010D, // 009A GETMET R10 R0 K13 - 0x5C300800, // 009B MOVE R12 R4 - 0x5C340A00, // 009C MOVE R13 R5 - 0x7C280600, // 009D CALL R10 3 - 0x00100903, // 009E ADD R4 R4 K3 - 0x7001FF85, // 009F JMP #0026 - 0x80000000, // 00A0 RET 0 + ( &(const binstruction[114]) { /* code */ + 0x54120017, // 0000 LDINT R4 24 + 0x3C100204, // 0001 SHR R4 R1 R4 + 0x541600FE, // 0002 LDINT R5 255 + 0x2C100805, // 0003 AND R4 R4 R5 + 0x5416000F, // 0004 LDINT R5 16 + 0x3C140205, // 0005 SHR R5 R1 R5 + 0x541A00FE, // 0006 LDINT R6 255 + 0x2C140A06, // 0007 AND R5 R5 R6 + 0x541A0007, // 0008 LDINT R6 8 + 0x3C180206, // 0009 SHR R6 R1 R6 + 0x541E00FE, // 000A LDINT R7 255 + 0x2C180C07, // 000B AND R6 R6 R7 + 0x541E00FE, // 000C LDINT R7 255 + 0x2C1C0207, // 000D AND R7 R1 R7 + 0x54220017, // 000E LDINT R8 24 + 0x3C200408, // 000F SHR R8 R2 R8 + 0x542600FE, // 0010 LDINT R9 255 + 0x2C201009, // 0011 AND R8 R8 R9 + 0x5426000F, // 0012 LDINT R9 16 + 0x3C240409, // 0013 SHR R9 R2 R9 + 0x542A00FE, // 0014 LDINT R10 255 + 0x2C24120A, // 0015 AND R9 R9 R10 + 0x542A0007, // 0016 LDINT R10 8 + 0x3C28040A, // 0017 SHR R10 R2 R10 + 0x542E00FE, // 0018 LDINT R11 255 + 0x2C28140B, // 0019 AND R10 R10 R11 + 0x542E00FE, // 001A LDINT R11 255 + 0x2C2C040B, // 001B AND R11 R2 R11 + 0x04300808, // 001C SUB R12 R4 R8 + 0x08301803, // 001D MUL R12 R12 R3 + 0x543600FE, // 001E LDINT R13 255 + 0x0C30180D, // 001F DIV R12 R12 R13 + 0x0030100C, // 0020 ADD R12 R8 R12 + 0x04340A09, // 0021 SUB R13 R5 R9 + 0x08341A03, // 0022 MUL R13 R13 R3 + 0x543A00FE, // 0023 LDINT R14 255 + 0x0C341A0E, // 0024 DIV R13 R13 R14 + 0x0034120D, // 0025 ADD R13 R9 R13 + 0x04380C0A, // 0026 SUB R14 R6 R10 + 0x08381C03, // 0027 MUL R14 R14 R3 + 0x543E00FE, // 0028 LDINT R15 255 + 0x0C381C0F, // 0029 DIV R14 R14 R15 + 0x0038140E, // 002A ADD R14 R10 R14 + 0x043C0E0B, // 002B SUB R15 R7 R11 + 0x083C1E03, // 002C MUL R15 R15 R3 + 0x544200FE, // 002D LDINT R16 255 + 0x0C3C1E10, // 002E DIV R15 R15 R16 + 0x003C160F, // 002F ADD R15 R11 R15 + 0x14401900, // 0030 LT R16 R12 K0 + 0x78420001, // 0031 JMPF R16 #0034 + 0x58400000, // 0032 LDCONST R16 K0 + 0x70020005, // 0033 JMP #003A + 0x544200FE, // 0034 LDINT R16 255 + 0x24401810, // 0035 GT R16 R12 R16 + 0x78420001, // 0036 JMPF R16 #0039 + 0x544200FE, // 0037 LDINT R16 255 + 0x70020000, // 0038 JMP #003A + 0x5C401800, // 0039 MOVE R16 R12 + 0x5C302000, // 003A MOVE R12 R16 + 0x14401B00, // 003B LT R16 R13 K0 + 0x78420001, // 003C JMPF R16 #003F + 0x58400000, // 003D LDCONST R16 K0 + 0x70020005, // 003E JMP #0045 + 0x544200FE, // 003F LDINT R16 255 + 0x24401A10, // 0040 GT R16 R13 R16 + 0x78420001, // 0041 JMPF R16 #0044 + 0x544200FE, // 0042 LDINT R16 255 + 0x70020000, // 0043 JMP #0045 + 0x5C401A00, // 0044 MOVE R16 R13 + 0x5C342000, // 0045 MOVE R13 R16 + 0x14401D00, // 0046 LT R16 R14 K0 + 0x78420001, // 0047 JMPF R16 #004A + 0x58400000, // 0048 LDCONST R16 K0 + 0x70020005, // 0049 JMP #0050 + 0x544200FE, // 004A LDINT R16 255 + 0x24401C10, // 004B GT R16 R14 R16 + 0x78420001, // 004C JMPF R16 #004F + 0x544200FE, // 004D LDINT R16 255 + 0x70020000, // 004E JMP #0050 + 0x5C401C00, // 004F MOVE R16 R14 + 0x5C382000, // 0050 MOVE R14 R16 + 0x14401F00, // 0051 LT R16 R15 K0 + 0x78420001, // 0052 JMPF R16 #0055 + 0x58400000, // 0053 LDCONST R16 K0 + 0x70020005, // 0054 JMP #005B + 0x544200FE, // 0055 LDINT R16 255 + 0x24401E10, // 0056 GT R16 R15 R16 + 0x78420001, // 0057 JMPF R16 #005A + 0x544200FE, // 0058 LDINT R16 255 + 0x70020000, // 0059 JMP #005B + 0x5C401E00, // 005A MOVE R16 R15 + 0x5C3C2000, // 005B MOVE R15 R16 + 0x60400009, // 005C GETGBL R16 G9 + 0x5C441800, // 005D MOVE R17 R12 + 0x7C400200, // 005E CALL R16 1 + 0x54460017, // 005F LDINT R17 24 + 0x38402011, // 0060 SHL R16 R16 R17 + 0x60440009, // 0061 GETGBL R17 G9 + 0x5C481A00, // 0062 MOVE R18 R13 + 0x7C440200, // 0063 CALL R17 1 + 0x544A000F, // 0064 LDINT R18 16 + 0x38442212, // 0065 SHL R17 R17 R18 + 0x30402011, // 0066 OR R16 R16 R17 + 0x60440009, // 0067 GETGBL R17 G9 + 0x5C481C00, // 0068 MOVE R18 R14 + 0x7C440200, // 0069 CALL R17 1 + 0x544A0007, // 006A LDINT R18 8 + 0x38442212, // 006B SHL R17 R17 R18 + 0x30402011, // 006C OR R16 R16 R17 + 0x60440009, // 006D GETGBL R17 G9 + 0x5C481E00, // 006E MOVE R18 R15 + 0x7C440200, // 006F CALL R17 1 + 0x30402011, // 0070 OR R16 R16 R17 + 0x80042000, // 0071 RET 1 R16 }) ) ); @@ -12843,9 +11775,49 @@ be_local_closure(class_FrameBuffer_apply_brightness, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: resize ********************************************************************/ -be_local_closure(class_FrameBuffer_tostring, /* name */ +be_local_closure(class_FrameBuffer_resize, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(resize), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0xB0060302, // 0002 RAISE 1 K1 K2 + 0x88080103, // 0003 GETMBR R2 R0 K3 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x80000400, // 0006 RET 0 + 0x90020601, // 0007 SETMBR R0 K3 R1 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x8C080505, // 0009 GETMET R2 R2 K5 + 0x88100103, // 000A GETMBR R4 R0 K3 + 0x54160003, // 000B LDINT R5 4 + 0x08100805, // 000C MUL R4 R4 R5 + 0x7C080400, // 000D CALL R2 2 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear +********************************************************************/ +be_local_closure(class_FrameBuffer_clear, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -12856,15 +11828,78 @@ be_local_closure(class_FrameBuffer_tostring, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(tostring), + be_str_weak(clear), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x5808000E, // 0001 LDCONST R2 K14 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x88100109, // 0003 GETMBR R4 R0 K9 - 0x7C040600, // 0004 CALL R1 3 - 0x80040200, // 0005 RET 1 R1 + ( &(const binstruction[10]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040306, // 0001 GETMET R1 R1 K6 + 0x7C040200, // 0002 CALL R1 1 + 0x88040104, // 0003 GETMBR R1 R0 K4 + 0x8C040305, // 0004 GETMET R1 R1 K5 + 0x880C0103, // 0005 GETMBR R3 R0 K3 + 0x54120003, // 0006 LDINT R4 4 + 0x080C0604, // 0007 MUL R3 R3 R4 + 0x7C040400, // 0008 CALL R1 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_FrameBuffer_init, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x60080004, // 0000 GETGBL R2 G4 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x1C080507, // 0003 EQ R2 R2 K7 + 0x780A0010, // 0004 JMPF R2 #0016 + 0x5C080200, // 0005 MOVE R2 R1 + 0x180C0500, // 0006 LE R3 R2 K0 + 0x780E0000, // 0007 JMPF R3 #0009 + 0xB0060302, // 0008 RAISE 1 K1 K2 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x600C0015, // 000A GETGBL R3 G21 + 0x54120003, // 000B LDINT R4 4 + 0x08100404, // 000C MUL R4 R2 R4 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C100705, // 000E GETMET R4 R3 K5 + 0x541A0003, // 000F LDINT R6 4 + 0x08180406, // 0010 MUL R6 R2 R6 + 0x7C100400, // 0011 CALL R4 2 + 0x90020803, // 0012 SETMBR R0 K4 R3 + 0x8C100106, // 0013 GETMET R4 R0 K6 + 0x7C100200, // 0014 CALL R4 1 + 0x7002000C, // 0015 JMP #0023 + 0x60080004, // 0016 GETGBL R2 G4 + 0x5C0C0200, // 0017 MOVE R3 R1 + 0x7C080200, // 0018 CALL R2 1 + 0x1C080508, // 0019 EQ R2 R2 K8 + 0x780A0006, // 001A JMPF R2 #0022 + 0x88080303, // 001B GETMBR R2 R1 K3 + 0x90020602, // 001C SETMBR R0 K3 R2 + 0x88080304, // 001D GETMBR R2 R1 K4 + 0x8C080509, // 001E GETMET R2 R2 K9 + 0x7C080200, // 001F CALL R2 1 + 0x90020802, // 0020 SETMBR R0 K4 R2 + 0x70020000, // 0021 JMP #0023 + 0xB006030A, // 0022 RAISE 1 K1 K10 + 0x80000000, // 0023 RET 0 }) ) ); @@ -12892,19 +11927,19 @@ be_local_closure(class_FrameBuffer_apply_mask, /* name */ 0x1C0C0403, // 0001 EQ R3 R2 R3 0x780E0000, // 0002 JMPF R3 #0004 0x50080000, // 0003 LDBOOL R2 0 0 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x88100302, // 0005 GETMBR R4 R1 K2 + 0x880C0103, // 0004 GETMBR R3 R0 K3 + 0x88100303, // 0005 GETMBR R4 R1 K3 0x200C0604, // 0006 NE R3 R3 R4 0x780E0000, // 0007 JMPF R3 #0009 - 0xB0061F10, // 0008 RAISE 1 K15 K16 - 0x580C0001, // 0009 LDCONST R3 K1 - 0x88100102, // 000A GETMBR R4 R0 K2 + 0xB006030B, // 0008 RAISE 1 K1 K11 + 0x580C0000, // 0009 LDCONST R3 K0 + 0x88100103, // 000A GETMBR R4 R0 K3 0x14100604, // 000B LT R4 R3 R4 0x78120032, // 000C JMPF R4 #0040 - 0x8C100107, // 000D GETMET R4 R0 K7 + 0x8C10010C, // 000D GETMET R4 R0 K12 0x5C180600, // 000E MOVE R6 R3 0x7C100400, // 000F CALL R4 2 - 0x8C140307, // 0010 GETMET R5 R1 K7 + 0x8C14030C, // 0010 GETMET R5 R1 K12 0x5C1C0600, // 0011 MOVE R7 R3 0x7C140400, // 0012 CALL R5 2 0x541A0017, // 0013 LDINT R6 24 @@ -12928,12 +11963,12 @@ be_local_closure(class_FrameBuffer_apply_mask, /* name */ 0x2C24120A, // 0025 AND R9 R9 R10 0x542A00FE, // 0026 LDINT R10 255 0x2C28080A, // 0027 AND R10 R4 R10 - 0xB82E1600, // 0028 GETNGBL R11 K11 - 0x8C2C170C, // 0029 GETMET R11 R11 K12 + 0xB82E1A00, // 0028 GETNGBL R11 K13 + 0x8C2C170E, // 0029 GETMET R11 R11 K14 0x5C340C00, // 002A MOVE R13 R6 - 0x58380001, // 002B LDCONST R14 K1 + 0x58380000, // 002B LDCONST R14 K0 0x543E00FE, // 002C LDINT R15 255 - 0x58400001, // 002D LDCONST R16 K1 + 0x58400000, // 002D LDCONST R16 K0 0x5C440E00, // 002E MOVE R17 R7 0x7C2C0C00, // 002F CALL R11 6 0x5C1C1600, // 0030 MOVE R7 R11 @@ -12946,11 +11981,11 @@ be_local_closure(class_FrameBuffer_apply_mask, /* name */ 0x3830120C, // 0037 SHL R12 R9 R12 0x302C160C, // 0038 OR R11 R11 R12 0x302C160A, // 0039 OR R11 R11 R10 - 0x8C30010D, // 003A GETMET R12 R0 K13 + 0x8C30010F, // 003A GETMET R12 R0 K15 0x5C380600, // 003B MOVE R14 R3 0x5C3C1600, // 003C MOVE R15 R11 0x7C300600, // 003D CALL R12 3 - 0x000C0703, // 003E ADD R3 R3 K3 + 0x000C0710, // 003E ADD R3 R3 K16 0x7001FFC9, // 003F JMP #000A 0x80000000, // 0040 RET 0 }) @@ -12959,106 +11994,6 @@ be_local_closure(class_FrameBuffer_apply_mask, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: item -********************************************************************/ -be_local_closure(class_FrameBuffer_item, /* 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_FrameBuffer, /* shared constants */ - be_str_weak(item), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C080107, // 0000 GETMET R2 R0 K7 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x80040400, // 0003 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pixel_color -********************************************************************/ -be_local_closure(class_FrameBuffer_get_pixel_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_FrameBuffer, /* shared constants */ - be_str_weak(get_pixel_color), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x14080301, // 0000 LT R2 R1 K1 - 0x740A0002, // 0001 JMPT R2 #0005 - 0x88080102, // 0002 GETMBR R2 R0 K2 - 0x28080202, // 0003 GE R2 R1 R2 - 0x780A0000, // 0004 JMPF R2 #0006 - 0xB0060911, // 0005 RAISE 1 K4 K17 - 0x88080109, // 0006 GETMBR R2 R0 K9 - 0x8C080512, // 0007 GETMET R2 R2 K18 - 0x54120003, // 0008 LDINT R4 4 - 0x08100204, // 0009 MUL R4 R1 R4 - 0x54160003, // 000A LDINT R5 4 - 0x7C080600, // 000B CALL R2 3 - 0x80040400, // 000C RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: fill_pixels -********************************************************************/ -be_local_closure(class_FrameBuffer_fill_pixels, /* 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_FrameBuffer, /* shared constants */ - be_str_weak(fill_pixels), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x58080001, // 0000 LDCONST R2 K1 - 0x880C0102, // 0001 GETMBR R3 R0 K2 - 0x140C0403, // 0002 LT R3 R2 R3 - 0x780E0008, // 0003 JMPF R3 #000D - 0x880C0109, // 0004 GETMBR R3 R0 K9 - 0x8C0C070A, // 0005 GETMET R3 R3 K10 - 0x54160003, // 0006 LDINT R5 4 - 0x08140405, // 0007 MUL R5 R2 R5 - 0x5C180200, // 0008 MOVE R6 R1 - 0x541E0003, // 0009 LDINT R7 4 - 0x7C0C0800, // 000A CALL R3 4 - 0x00080503, // 000B ADD R2 R2 K3 - 0x7001FFF3, // 000C JMP #0001 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: set_pixel_color ********************************************************************/ @@ -13076,14 +12011,14 @@ be_local_closure(class_FrameBuffer_set_pixel_color, /* name */ be_str_weak(set_pixel_color), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x140C0301, // 0000 LT R3 R1 K1 + 0x140C0300, // 0000 LT R3 R1 K0 0x740E0002, // 0001 JMPT R3 #0005 - 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x880C0103, // 0002 GETMBR R3 R0 K3 0x280C0203, // 0003 GE R3 R1 R3 0x780E0000, // 0004 JMPF R3 #0006 - 0xB0060911, // 0005 RAISE 1 K4 K17 - 0x880C0109, // 0006 GETMBR R3 R0 K9 - 0x8C0C070A, // 0007 GETMET R3 R3 K10 + 0xB0062312, // 0005 RAISE 1 K17 K18 + 0x880C0104, // 0006 GETMBR R3 R0 K4 + 0x8C0C0713, // 0007 GETMET R3 R3 K19 0x54160003, // 0008 LDINT R5 4 0x08140205, // 0009 MUL R5 R1 R5 0x5C180400, // 000A MOVE R6 R2 @@ -13097,12 +12032,12 @@ be_local_closure(class_FrameBuffer_set_pixel_color, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: setitem ********************************************************************/ -be_local_closure(class_FrameBuffer_init, /* name */ +be_local_closure(class_FrameBuffer_setitem, /* name */ be_nested_proto( 7, /* nstack */ - 2, /* argc */ + 3, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -13110,45 +12045,14 @@ be_local_closure(class_FrameBuffer_init, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(init), + be_str_weak(setitem), &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x60080004, // 0000 GETGBL R2 G4 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x1C080513, // 0003 EQ R2 R2 K19 - 0x780A0010, // 0004 JMPF R2 #0016 - 0x5C080200, // 0005 MOVE R2 R1 - 0x180C0501, // 0006 LE R3 R2 K1 - 0x780E0000, // 0007 JMPF R3 #0009 - 0xB0061F14, // 0008 RAISE 1 K15 K20 - 0x90020402, // 0009 SETMBR R0 K2 R2 - 0x600C0015, // 000A GETGBL R3 G21 - 0x54120003, // 000B LDINT R4 4 - 0x08100404, // 000C MUL R4 R2 R4 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C100715, // 000E GETMET R4 R3 K21 - 0x541A0003, // 000F LDINT R6 4 - 0x08180406, // 0010 MUL R6 R2 R6 - 0x7C100400, // 0011 CALL R4 2 - 0x90021203, // 0012 SETMBR R0 K9 R3 - 0x8C100116, // 0013 GETMET R4 R0 K22 - 0x7C100200, // 0014 CALL R4 1 - 0x7002000C, // 0015 JMP #0023 - 0x60080004, // 0016 GETGBL R2 G4 - 0x5C0C0200, // 0017 MOVE R3 R1 - 0x7C080200, // 0018 CALL R2 1 - 0x1C080517, // 0019 EQ R2 R2 K23 - 0x780A0006, // 001A JMPF R2 #0022 - 0x88080302, // 001B GETMBR R2 R1 K2 - 0x90020402, // 001C SETMBR R0 K2 R2 - 0x88080309, // 001D GETMBR R2 R1 K9 - 0x8C080518, // 001E GETMET R2 R2 K24 - 0x7C080200, // 001F CALL R2 1 - 0x90021202, // 0020 SETMBR R0 K9 R2 - 0x70020000, // 0021 JMP #0023 - 0xB0061F19, // 0022 RAISE 1 K15 K25 - 0x80000000, // 0023 RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C010F, // 0000 GETMET R3 R0 K15 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80000000, // 0004 RET 0 }) ) ); @@ -13175,7 +12079,7 @@ be_local_closure(class_FrameBuffer_blend, /* name */ 0x4C100000, // 0000 LDNIL R4 0x1C100604, // 0001 EQ R4 R3 R4 0x78120000, // 0002 JMPF R4 #0004 - 0x880C0100, // 0003 GETMBR R3 R0 K0 + 0x880C0114, // 0003 GETMBR R3 R0 K20 0x54120017, // 0004 LDINT R4 24 0x3C100204, // 0005 SHR R4 R1 R4 0x541600FE, // 0006 LDINT R5 255 @@ -13204,80 +12108,80 @@ be_local_closure(class_FrameBuffer_blend, /* name */ 0x2C28140B, // 001D AND R10 R10 R11 0x542E00FE, // 001E LDINT R11 255 0x2C2C040B, // 001F AND R11 R2 R11 - 0x1C301101, // 0020 EQ R12 R8 K1 + 0x1C301100, // 0020 EQ R12 R8 K0 0x78320000, // 0021 JMPF R12 #0023 0x80040200, // 0022 RET 1 R1 0x5C301000, // 0023 MOVE R12 R8 - 0xB8361600, // 0024 GETNGBL R13 K11 - 0x8C341B0C, // 0025 GETMET R13 R13 K12 + 0xB8361A00, // 0024 GETNGBL R13 K13 + 0x8C341B0E, // 0025 GETMET R13 R13 K14 0x543E00FE, // 0026 LDINT R15 255 0x043C1E0C, // 0027 SUB R15 R15 R12 - 0x58400001, // 0028 LDCONST R16 K1 + 0x58400000, // 0028 LDCONST R16 K0 0x544600FE, // 0029 LDINT R17 255 - 0x58480001, // 002A LDCONST R18 K1 + 0x58480000, // 002A LDCONST R18 K0 0x5C4C0A00, // 002B MOVE R19 R5 0x7C340C00, // 002C CALL R13 6 - 0xB83A1600, // 002D GETNGBL R14 K11 - 0x8C381D0C, // 002E GETMET R14 R14 K12 + 0xB83A1A00, // 002D GETNGBL R14 K13 + 0x8C381D0E, // 002E GETMET R14 R14 K14 0x5C401800, // 002F MOVE R16 R12 - 0x58440001, // 0030 LDCONST R17 K1 + 0x58440000, // 0030 LDCONST R17 K0 0x544A00FE, // 0031 LDINT R18 255 - 0x584C0001, // 0032 LDCONST R19 K1 + 0x584C0000, // 0032 LDCONST R19 K0 0x5C501200, // 0033 MOVE R20 R9 0x7C380C00, // 0034 CALL R14 6 0x00341A0E, // 0035 ADD R13 R13 R14 - 0xB83A1600, // 0036 GETNGBL R14 K11 - 0x8C381D0C, // 0037 GETMET R14 R14 K12 + 0xB83A1A00, // 0036 GETNGBL R14 K13 + 0x8C381D0E, // 0037 GETMET R14 R14 K14 0x544200FE, // 0038 LDINT R16 255 0x0440200C, // 0039 SUB R16 R16 R12 - 0x58440001, // 003A LDCONST R17 K1 + 0x58440000, // 003A LDCONST R17 K0 0x544A00FE, // 003B LDINT R18 255 - 0x584C0001, // 003C LDCONST R19 K1 + 0x584C0000, // 003C LDCONST R19 K0 0x5C500C00, // 003D MOVE R20 R6 0x7C380C00, // 003E CALL R14 6 - 0xB83E1600, // 003F GETNGBL R15 K11 - 0x8C3C1F0C, // 0040 GETMET R15 R15 K12 + 0xB83E1A00, // 003F GETNGBL R15 K13 + 0x8C3C1F0E, // 0040 GETMET R15 R15 K14 0x5C441800, // 0041 MOVE R17 R12 - 0x58480001, // 0042 LDCONST R18 K1 + 0x58480000, // 0042 LDCONST R18 K0 0x544E00FE, // 0043 LDINT R19 255 - 0x58500001, // 0044 LDCONST R20 K1 + 0x58500000, // 0044 LDCONST R20 K0 0x5C541400, // 0045 MOVE R21 R10 0x7C3C0C00, // 0046 CALL R15 6 0x00381C0F, // 0047 ADD R14 R14 R15 - 0xB83E1600, // 0048 GETNGBL R15 K11 - 0x8C3C1F0C, // 0049 GETMET R15 R15 K12 + 0xB83E1A00, // 0048 GETNGBL R15 K13 + 0x8C3C1F0E, // 0049 GETMET R15 R15 K14 0x544600FE, // 004A LDINT R17 255 0x0444220C, // 004B SUB R17 R17 R12 - 0x58480001, // 004C LDCONST R18 K1 + 0x58480000, // 004C LDCONST R18 K0 0x544E00FE, // 004D LDINT R19 255 - 0x58500001, // 004E LDCONST R20 K1 + 0x58500000, // 004E LDCONST R20 K0 0x5C540E00, // 004F MOVE R21 R7 0x7C3C0C00, // 0050 CALL R15 6 - 0xB8421600, // 0051 GETNGBL R16 K11 - 0x8C40210C, // 0052 GETMET R16 R16 K12 + 0xB8421A00, // 0051 GETNGBL R16 K13 + 0x8C40210E, // 0052 GETMET R16 R16 K14 0x5C481800, // 0053 MOVE R18 R12 - 0x584C0001, // 0054 LDCONST R19 K1 + 0x584C0000, // 0054 LDCONST R19 K0 0x545200FE, // 0055 LDINT R20 255 - 0x58540001, // 0056 LDCONST R21 K1 + 0x58540000, // 0056 LDCONST R21 K0 0x5C581600, // 0057 MOVE R22 R11 0x7C400C00, // 0058 CALL R16 6 0x003C1E10, // 0059 ADD R15 R15 R16 - 0xB8421600, // 005A GETNGBL R16 K11 - 0x8C40210C, // 005B GETMET R16 R16 K12 + 0xB8421A00, // 005A GETNGBL R16 K13 + 0x8C40210E, // 005B GETMET R16 R16 K14 0x544A00FE, // 005C LDINT R18 255 0x04482404, // 005D SUB R18 R18 R4 0x08482408, // 005E MUL R18 R18 R8 - 0x584C0001, // 005F LDCONST R19 K1 + 0x584C0000, // 005F LDCONST R19 K0 0x545200FE, // 0060 LDINT R20 255 0x545600FE, // 0061 LDINT R21 255 0x08502815, // 0062 MUL R20 R20 R21 - 0x58540001, // 0063 LDCONST R21 K1 + 0x58540000, // 0063 LDCONST R21 K0 0x545A00FE, // 0064 LDINT R22 255 0x7C400C00, // 0065 CALL R16 6 0x00400810, // 0066 ADD R16 R4 R16 - 0x14441B01, // 0067 LT R17 R13 K1 + 0x14441B00, // 0067 LT R17 R13 K0 0x78460001, // 0068 JMPF R17 #006B - 0x58440001, // 0069 LDCONST R17 K1 + 0x58440000, // 0069 LDCONST R17 K0 0x70020005, // 006A JMP #0071 0x544600FE, // 006B LDINT R17 255 0x24441A11, // 006C GT R17 R13 R17 @@ -13286,9 +12190,9 @@ be_local_closure(class_FrameBuffer_blend, /* name */ 0x70020000, // 006F JMP #0071 0x5C441A00, // 0070 MOVE R17 R13 0x5C342200, // 0071 MOVE R13 R17 - 0x14441D01, // 0072 LT R17 R14 K1 + 0x14441D00, // 0072 LT R17 R14 K0 0x78460001, // 0073 JMPF R17 #0076 - 0x58440001, // 0074 LDCONST R17 K1 + 0x58440000, // 0074 LDCONST R17 K0 0x70020005, // 0075 JMP #007C 0x544600FE, // 0076 LDINT R17 255 0x24441C11, // 0077 GT R17 R14 R17 @@ -13297,9 +12201,9 @@ be_local_closure(class_FrameBuffer_blend, /* name */ 0x70020000, // 007A JMP #007C 0x5C441C00, // 007B MOVE R17 R14 0x5C382200, // 007C MOVE R14 R17 - 0x14441F01, // 007D LT R17 R15 K1 + 0x14441F00, // 007D LT R17 R15 K0 0x78460001, // 007E JMPF R17 #0081 - 0x58440001, // 007F LDCONST R17 K1 + 0x58440000, // 007F LDCONST R17 K0 0x70020005, // 0080 JMP #0087 0x544600FE, // 0081 LDINT R17 255 0x24441E11, // 0082 GT R17 R15 R17 @@ -13308,9 +12212,9 @@ be_local_closure(class_FrameBuffer_blend, /* name */ 0x70020000, // 0085 JMP #0087 0x5C441E00, // 0086 MOVE R17 R15 0x5C3C2200, // 0087 MOVE R15 R17 - 0x14442101, // 0088 LT R17 R16 K1 + 0x14442100, // 0088 LT R17 R16 K0 0x78460001, // 0089 JMPF R17 #008C - 0x58440001, // 008A LDCONST R17 K1 + 0x58440000, // 008A LDCONST R17 K0 0x70020005, // 008B JMP #0092 0x544600FE, // 008C LDINT R17 255 0x24442011, // 008D GT R17 R16 R17 @@ -13348,11 +12252,11 @@ be_local_closure(class_FrameBuffer_blend, /* name */ /******************************************************************** -** Solidified function: tohex +** Solidified function: copy ********************************************************************/ -be_local_closure(class_FrameBuffer_tohex, /* name */ +be_local_closure(class_FrameBuffer_copy, /* name */ be_nested_proto( - 3, /* nstack */ + 4, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13361,13 +12265,14 @@ be_local_closure(class_FrameBuffer_tohex, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(tohex), + be_str_weak(copy), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C04031A, // 0001 GETMET R1 R1 K26 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0xB8062A00, // 0000 GETNGBL R1 K21 + 0x8C040316, // 0001 GETMET R1 R1 K22 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -13391,7 +12296,7 @@ be_local_closure(class_FrameBuffer_to_color, /* name */ be_str_weak(to_color), &be_const_str_solidified, ( &(const binstruction[23]) { /* code */ - 0x5810001B, // 0000 LDCONST R4 K27 + 0x58100017, // 0000 LDCONST R4 K23 0x4C140000, // 0001 LDNIL R5 0x1C140605, // 0002 EQ R5 R3 R5 0x78160000, // 0003 JMPF R5 #0005 @@ -13421,12 +12326,12 @@ be_local_closure(class_FrameBuffer_to_color, /* name */ /******************************************************************** -** Solidified function: dump +** Solidified function: apply_brightness ********************************************************************/ -be_local_closure(class_FrameBuffer_dump, /* name */ +be_local_closure(class_FrameBuffer_apply_brightness, /* name */ be_nested_proto( - 14, /* nstack */ - 1, /* argc */ + 18, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -13434,45 +12339,170 @@ be_local_closure(class_FrameBuffer_dump, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(dump), + be_str_weak(apply_brightness), &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x5804001C, // 0000 LDCONST R1 K28 - 0x58080001, // 0001 LDCONST R2 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x140C0403, // 0003 LT R3 R2 R3 - 0x780E001A, // 0004 JMPF R3 #0020 - 0x8C0C0107, // 0005 GETMET R3 R0 K7 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x54120017, // 0008 LDINT R4 24 - 0x3C100604, // 0009 SHR R4 R3 R4 - 0x541600FE, // 000A LDINT R5 255 - 0x2C100805, // 000B AND R4 R4 R5 - 0x5416000F, // 000C LDINT R5 16 - 0x3C140605, // 000D SHR R5 R3 R5 - 0x541A00FE, // 000E LDINT R6 255 - 0x2C140A06, // 000F AND R5 R5 R6 - 0x541A0007, // 0010 LDINT R6 8 - 0x3C180606, // 0011 SHR R6 R3 R6 - 0x541E00FE, // 0012 LDINT R7 255 - 0x2C180C07, // 0013 AND R6 R6 R7 - 0x541E00FE, // 0014 LDINT R7 255 - 0x2C1C0607, // 0015 AND R7 R3 R7 - 0x60200018, // 0016 GETGBL R8 G24 - 0x5824001D, // 0017 LDCONST R9 K29 - 0x5C280800, // 0018 MOVE R10 R4 - 0x5C2C0A00, // 0019 MOVE R11 R5 - 0x5C300C00, // 001A MOVE R12 R6 - 0x5C340E00, // 001B MOVE R13 R7 - 0x7C200A00, // 001C CALL R8 5 - 0x00040208, // 001D ADD R1 R1 R8 - 0x00080503, // 001E ADD R2 R2 K3 - 0x7001FFE1, // 001F JMP #0002 - 0x540DFFFD, // 0020 LDINT R3 -2 - 0x400E0203, // 0021 CONNECT R3 K1 R3 - 0x94040203, // 0022 GETIDX R1 R1 R3 - 0x80040200, // 0023 RET 1 R1 + ( &(const binstruction[161]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x1C100204, // 0001 EQ R4 R1 R4 + 0x78120000, // 0002 JMPF R4 #0004 + 0x540600FE, // 0003 LDINT R1 255 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100404, // 0005 EQ R4 R2 R4 + 0x78120000, // 0006 JMPF R4 #0008 + 0x58080000, // 0007 LDCONST R2 K0 + 0x4C100000, // 0008 LDNIL R4 + 0x1C100604, // 0009 EQ R4 R3 R4 + 0x78120002, // 000A JMPF R4 #000E + 0x88100103, // 000B GETMBR R4 R0 K3 + 0x04100910, // 000C SUB R4 R4 K16 + 0x5C0C0800, // 000D MOVE R3 R4 + 0x14100500, // 000E LT R4 R2 K0 + 0x74120002, // 000F JMPT R4 #0013 + 0x88100103, // 0010 GETMBR R4 R0 K3 + 0x28100404, // 0011 GE R4 R2 R4 + 0x78120000, // 0012 JMPF R4 #0014 + 0xB0062318, // 0013 RAISE 1 K17 K24 + 0x14100602, // 0014 LT R4 R3 R2 + 0x74120002, // 0015 JMPT R4 #0019 + 0x88100103, // 0016 GETMBR R4 R0 K3 + 0x28100604, // 0017 GE R4 R3 R4 + 0x78120000, // 0018 JMPF R4 #001A + 0xB0062319, // 0019 RAISE 1 K17 K25 + 0x14100300, // 001A LT R4 R1 K0 + 0x78120001, // 001B JMPF R4 #001E + 0x58100000, // 001C LDCONST R4 K0 + 0x70020005, // 001D JMP #0024 + 0x541201FE, // 001E LDINT R4 511 + 0x24100204, // 001F GT R4 R1 R4 + 0x78120001, // 0020 JMPF R4 #0023 + 0x541201FE, // 0021 LDINT R4 511 + 0x70020000, // 0022 JMP #0024 + 0x5C100200, // 0023 MOVE R4 R1 + 0x5C040800, // 0024 MOVE R1 R4 + 0x5C100400, // 0025 MOVE R4 R2 + 0x18140803, // 0026 LE R5 R4 R3 + 0x78160077, // 0027 JMPF R5 #00A0 + 0x8C14010C, // 0028 GETMET R5 R0 K12 + 0x5C1C0800, // 0029 MOVE R7 R4 + 0x7C140400, // 002A CALL R5 2 + 0x541A0017, // 002B LDINT R6 24 + 0x3C180A06, // 002C SHR R6 R5 R6 + 0x541E00FE, // 002D LDINT R7 255 + 0x2C180C07, // 002E AND R6 R6 R7 + 0x541E000F, // 002F LDINT R7 16 + 0x3C1C0A07, // 0030 SHR R7 R5 R7 + 0x542200FE, // 0031 LDINT R8 255 + 0x2C1C0E08, // 0032 AND R7 R7 R8 + 0x54220007, // 0033 LDINT R8 8 + 0x3C200A08, // 0034 SHR R8 R5 R8 + 0x542600FE, // 0035 LDINT R9 255 + 0x2C201009, // 0036 AND R8 R8 R9 + 0x542600FE, // 0037 LDINT R9 255 + 0x2C240A09, // 0038 AND R9 R5 R9 + 0x542A00FE, // 0039 LDINT R10 255 + 0x1828020A, // 003A LE R10 R1 R10 + 0x782A001B, // 003B JMPF R10 #0058 + 0xB82A1A00, // 003C GETNGBL R10 K13 + 0x8C28150E, // 003D GETMET R10 R10 K14 + 0x5C300E00, // 003E MOVE R12 R7 + 0x58340000, // 003F LDCONST R13 K0 + 0x543A00FE, // 0040 LDINT R14 255 + 0x583C0000, // 0041 LDCONST R15 K0 + 0x5C400200, // 0042 MOVE R16 R1 + 0x7C280C00, // 0043 CALL R10 6 + 0x5C1C1400, // 0044 MOVE R7 R10 + 0xB82A1A00, // 0045 GETNGBL R10 K13 + 0x8C28150E, // 0046 GETMET R10 R10 K14 + 0x5C301000, // 0047 MOVE R12 R8 + 0x58340000, // 0048 LDCONST R13 K0 + 0x543A00FE, // 0049 LDINT R14 255 + 0x583C0000, // 004A LDCONST R15 K0 + 0x5C400200, // 004B MOVE R16 R1 + 0x7C280C00, // 004C CALL R10 6 + 0x5C201400, // 004D MOVE R8 R10 + 0xB82A1A00, // 004E GETNGBL R10 K13 + 0x8C28150E, // 004F GETMET R10 R10 K14 + 0x5C301200, // 0050 MOVE R12 R9 + 0x58340000, // 0051 LDCONST R13 K0 + 0x543A00FE, // 0052 LDINT R14 255 + 0x583C0000, // 0053 LDCONST R15 K0 + 0x5C400200, // 0054 MOVE R16 R1 + 0x7C280C00, // 0055 CALL R10 6 + 0x5C241400, // 0056 MOVE R9 R10 + 0x70020037, // 0057 JMP #0090 + 0x542A00FE, // 0058 LDINT R10 255 + 0x0428020A, // 0059 SUB R10 R1 R10 + 0xB82E1A00, // 005A GETNGBL R11 K13 + 0x8C2C170E, // 005B GETMET R11 R11 K14 + 0x08340E0A, // 005C MUL R13 R7 R10 + 0x58380000, // 005D LDCONST R14 K0 + 0x543E00FE, // 005E LDINT R15 255 + 0x544200FF, // 005F LDINT R16 256 + 0x083C1E10, // 0060 MUL R15 R15 R16 + 0x58400000, // 0061 LDCONST R16 K0 + 0x544600FE, // 0062 LDINT R17 255 + 0x7C2C0C00, // 0063 CALL R11 6 + 0x001C0E0B, // 0064 ADD R7 R7 R11 + 0xB82E1A00, // 0065 GETNGBL R11 K13 + 0x8C2C170E, // 0066 GETMET R11 R11 K14 + 0x0834100A, // 0067 MUL R13 R8 R10 + 0x58380000, // 0068 LDCONST R14 K0 + 0x543E00FE, // 0069 LDINT R15 255 + 0x544200FF, // 006A LDINT R16 256 + 0x083C1E10, // 006B MUL R15 R15 R16 + 0x58400000, // 006C LDCONST R16 K0 + 0x544600FE, // 006D LDINT R17 255 + 0x7C2C0C00, // 006E CALL R11 6 + 0x0020100B, // 006F ADD R8 R8 R11 + 0xB82E1A00, // 0070 GETNGBL R11 K13 + 0x8C2C170E, // 0071 GETMET R11 R11 K14 + 0x0834120A, // 0072 MUL R13 R9 R10 + 0x58380000, // 0073 LDCONST R14 K0 + 0x543E00FE, // 0074 LDINT R15 255 + 0x544200FF, // 0075 LDINT R16 256 + 0x083C1E10, // 0076 MUL R15 R15 R16 + 0x58400000, // 0077 LDCONST R16 K0 + 0x544600FE, // 0078 LDINT R17 255 + 0x7C2C0C00, // 0079 CALL R11 6 + 0x0024120B, // 007A ADD R9 R9 R11 + 0x542E00FE, // 007B LDINT R11 255 + 0x242C0E0B, // 007C GT R11 R7 R11 + 0x782E0001, // 007D JMPF R11 #0080 + 0x542E00FE, // 007E LDINT R11 255 + 0x70020000, // 007F JMP #0081 + 0x5C2C0E00, // 0080 MOVE R11 R7 + 0x5C1C1600, // 0081 MOVE R7 R11 + 0x542E00FE, // 0082 LDINT R11 255 + 0x242C100B, // 0083 GT R11 R8 R11 + 0x782E0001, // 0084 JMPF R11 #0087 + 0x542E00FE, // 0085 LDINT R11 255 + 0x70020000, // 0086 JMP #0088 + 0x5C2C1000, // 0087 MOVE R11 R8 + 0x5C201600, // 0088 MOVE R8 R11 + 0x542E00FE, // 0089 LDINT R11 255 + 0x242C120B, // 008A GT R11 R9 R11 + 0x782E0001, // 008B JMPF R11 #008E + 0x542E00FE, // 008C LDINT R11 255 + 0x70020000, // 008D JMP #008F + 0x5C2C1200, // 008E MOVE R11 R9 + 0x5C241600, // 008F MOVE R9 R11 + 0x542A0017, // 0090 LDINT R10 24 + 0x38280C0A, // 0091 SHL R10 R6 R10 + 0x542E000F, // 0092 LDINT R11 16 + 0x382C0E0B, // 0093 SHL R11 R7 R11 + 0x3028140B, // 0094 OR R10 R10 R11 + 0x542E0007, // 0095 LDINT R11 8 + 0x382C100B, // 0096 SHL R11 R8 R11 + 0x3028140B, // 0097 OR R10 R10 R11 + 0x30281409, // 0098 OR R10 R10 R9 + 0x5C141400, // 0099 MOVE R5 R10 + 0x8C28010F, // 009A GETMET R10 R0 K15 + 0x5C300800, // 009B MOVE R12 R4 + 0x5C340A00, // 009C MOVE R13 R5 + 0x7C280600, // 009D CALL R10 3 + 0x00100910, // 009E ADD R4 R4 K16 + 0x7001FF85, // 009F JMP #0026 + 0x80000000, // 00A0 RET 0 }) ) ); @@ -13480,11 +12510,11 @@ be_local_closure(class_FrameBuffer_dump, /* name */ /******************************************************************** -** Solidified function: copy +** Solidified function: tostring ********************************************************************/ -be_local_closure(class_FrameBuffer_copy, /* name */ +be_local_closure(class_FrameBuffer_tostring, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13493,14 +12523,164 @@ be_local_closure(class_FrameBuffer_copy, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(copy), + be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xB8063C00, // 0000 GETNGBL R1 K30 - 0x8C04031F, // 0001 GETMET R1 R1 K31 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 + ( &(const binstruction[ 6]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x5808001A, // 0001 LDCONST R2 K26 + 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0x88100104, // 0003 GETMBR R4 R0 K4 + 0x7C040600, // 0004 CALL R1 3 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_pixel_color +********************************************************************/ +be_local_closure(class_FrameBuffer_get_pixel_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_FrameBuffer, /* shared constants */ + be_str_weak(get_pixel_color), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x14080300, // 0000 LT R2 R1 K0 + 0x740A0002, // 0001 JMPT R2 #0005 + 0x88080103, // 0002 GETMBR R2 R0 K3 + 0x28080202, // 0003 GE R2 R1 R2 + 0x780A0000, // 0004 JMPF R2 #0006 + 0xB0062312, // 0005 RAISE 1 K17 K18 + 0x88080104, // 0006 GETMBR R2 R0 K4 + 0x8C08051B, // 0007 GETMET R2 R2 K27 + 0x54120003, // 0008 LDINT R4 4 + 0x08100204, // 0009 MUL R4 R1 R4 + 0x54160003, // 000A LDINT R5 4 + 0x7C080600, // 000B CALL R2 3 + 0x80040400, // 000C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tohex +********************************************************************/ +be_local_closure(class_FrameBuffer_tohex, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(tohex), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C04031C, // 0001 GETMET R1 R1 K28 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: blend_color +********************************************************************/ +be_local_closure(class_FrameBuffer_blend_color, /* name */ + be_nested_proto( + 17, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(blend_color), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140405, // 0001 EQ R5 R2 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x88080114, // 0003 GETMBR R2 R0 K20 + 0x4C140000, // 0004 LDNIL R5 + 0x1C140605, // 0005 EQ R5 R3 R5 + 0x78160000, // 0006 JMPF R5 #0008 + 0x580C0000, // 0007 LDCONST R3 K0 + 0x4C140000, // 0008 LDNIL R5 + 0x1C140805, // 0009 EQ R5 R4 R5 + 0x78160002, // 000A JMPF R5 #000E + 0x88140103, // 000B GETMBR R5 R0 K3 + 0x04140B10, // 000C SUB R5 R5 K16 + 0x5C100A00, // 000D MOVE R4 R5 + 0x14140700, // 000E LT R5 R3 K0 + 0x74160002, // 000F JMPT R5 #0013 + 0x88140103, // 0010 GETMBR R5 R0 K3 + 0x28140605, // 0011 GE R5 R3 R5 + 0x78160000, // 0012 JMPF R5 #0014 + 0xB0062318, // 0013 RAISE 1 K17 K24 + 0x14140803, // 0014 LT R5 R4 R3 + 0x74160002, // 0015 JMPT R5 #0019 + 0x88140103, // 0016 GETMBR R5 R0 K3 + 0x28140805, // 0017 GE R5 R4 R5 + 0x78160000, // 0018 JMPF R5 #001A + 0xB0062319, // 0019 RAISE 1 K17 K25 + 0x54160017, // 001A LDINT R5 24 + 0x3C140205, // 001B SHR R5 R1 R5 + 0x541A00FE, // 001C LDINT R6 255 + 0x2C140A06, // 001D AND R5 R5 R6 + 0x541A000F, // 001E LDINT R6 16 + 0x3C180206, // 001F SHR R6 R1 R6 + 0x541E00FE, // 0020 LDINT R7 255 + 0x2C180C07, // 0021 AND R6 R6 R7 + 0x541E0007, // 0022 LDINT R7 8 + 0x3C1C0207, // 0023 SHR R7 R1 R7 + 0x542200FE, // 0024 LDINT R8 255 + 0x2C1C0E08, // 0025 AND R7 R7 R8 + 0x542200FE, // 0026 LDINT R8 255 + 0x2C200208, // 0027 AND R8 R1 R8 + 0x5C240600, // 0028 MOVE R9 R3 + 0x18281204, // 0029 LE R10 R9 R4 + 0x782A0012, // 002A JMPF R10 #003E + 0x8C28010C, // 002B GETMET R10 R0 K12 + 0x5C301200, // 002C MOVE R12 R9 + 0x7C280400, // 002D CALL R10 2 + 0x242C0B00, // 002E GT R11 R5 K0 + 0x782E000B, // 002F JMPF R11 #003C + 0x8C2C011D, // 0030 GETMET R11 R0 K29 + 0x5C341400, // 0031 MOVE R13 R10 + 0x5C380200, // 0032 MOVE R14 R1 + 0x5C3C0400, // 0033 MOVE R15 R2 + 0x7C2C0800, // 0034 CALL R11 4 + 0x88300104, // 0035 GETMBR R12 R0 K4 + 0x8C301913, // 0036 GETMET R12 R12 K19 + 0x543A0003, // 0037 LDINT R14 4 + 0x0838120E, // 0038 MUL R14 R9 R14 + 0x5C3C1600, // 0039 MOVE R15 R11 + 0x54420003, // 003A LDINT R16 4 + 0x7C300800, // 003B CALL R12 4 + 0x00241310, // 003C ADD R9 R9 K16 + 0x7001FFEA, // 003D JMP #0029 + 0x80000000, // 003E RET 0 }) ) ); @@ -13531,28 +12711,28 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ 0x4C100000, // 0004 LDNIL R4 0x1C100404, // 0005 EQ R4 R2 R4 0x78120000, // 0006 JMPF R4 #0008 - 0x58080001, // 0007 LDCONST R2 K1 + 0x58080000, // 0007 LDCONST R2 K0 0x4C100000, // 0008 LDNIL R4 0x1C100604, // 0009 EQ R4 R3 R4 0x78120002, // 000A JMPF R4 #000E - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x04100903, // 000C SUB R4 R4 K3 + 0x88100103, // 000B GETMBR R4 R0 K3 + 0x04100910, // 000C SUB R4 R4 K16 0x5C0C0800, // 000D MOVE R3 R4 - 0x14100501, // 000E LT R4 R2 K1 + 0x14100500, // 000E LT R4 R2 K0 0x74120002, // 000F JMPT R4 #0013 - 0x88100102, // 0010 GETMBR R4 R0 K2 + 0x88100103, // 0010 GETMBR R4 R0 K3 0x28100404, // 0011 GE R4 R2 R4 0x78120000, // 0012 JMPF R4 #0014 - 0xB0060905, // 0013 RAISE 1 K4 K5 + 0xB0062318, // 0013 RAISE 1 K17 K24 0x14100602, // 0014 LT R4 R3 R2 0x74120002, // 0015 JMPT R4 #0019 - 0x88100102, // 0016 GETMBR R4 R0 K2 + 0x88100103, // 0016 GETMBR R4 R0 K3 0x28100604, // 0017 GE R4 R3 R4 0x78120000, // 0018 JMPF R4 #001A - 0xB0060906, // 0019 RAISE 1 K4 K6 - 0x14100301, // 001A LT R4 R1 K1 + 0xB0062319, // 0019 RAISE 1 K17 K25 + 0x14100300, // 001A LT R4 R1 K0 0x78120001, // 001B JMPF R4 #001E - 0x58100001, // 001C LDCONST R4 K1 + 0x58100000, // 001C LDCONST R4 K0 0x70020005, // 001D JMP #0024 0x541201FE, // 001E LDINT R4 511 0x24100204, // 001F GT R4 R1 R4 @@ -13564,7 +12744,7 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ 0x5C100400, // 0025 MOVE R4 R2 0x18140803, // 0026 LE R5 R4 R3 0x7816003F, // 0027 JMPF R5 #0068 - 0x8C140107, // 0028 GETMET R5 R0 K7 + 0x8C14010C, // 0028 GETMET R5 R0 K12 0x5C1C0800, // 0029 MOVE R7 R4 0x7C140400, // 002A CALL R5 2 0x541A0017, // 002B LDINT R6 24 @@ -13584,24 +12764,24 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ 0x542A00FE, // 0039 LDINT R10 255 0x1828020A, // 003A LE R10 R1 R10 0x782A0009, // 003B JMPF R10 #0046 - 0xB82A1600, // 003C GETNGBL R10 K11 - 0x8C28150C, // 003D GETMET R10 R10 K12 + 0xB82A1A00, // 003C GETNGBL R10 K13 + 0x8C28150E, // 003D GETMET R10 R10 K14 0x5C300200, // 003E MOVE R12 R1 - 0x58340001, // 003F LDCONST R13 K1 + 0x58340000, // 003F LDCONST R13 K0 0x543A00FE, // 0040 LDINT R14 255 - 0x583C0001, // 0041 LDCONST R15 K1 + 0x583C0000, // 0041 LDCONST R15 K0 0x5C400C00, // 0042 MOVE R16 R6 0x7C280C00, // 0043 CALL R10 6 0x5C181400, // 0044 MOVE R6 R10 0x70020011, // 0045 JMP #0058 - 0xB82A1600, // 0046 GETNGBL R10 K11 - 0x8C28150C, // 0047 GETMET R10 R10 K12 + 0xB82A1A00, // 0046 GETNGBL R10 K13 + 0x8C28150E, // 0047 GETMET R10 R10 K14 0x08300C01, // 0048 MUL R12 R6 R1 - 0x58340001, // 0049 LDCONST R13 K1 + 0x58340000, // 0049 LDCONST R13 K0 0x543A00FE, // 004A LDINT R14 255 0x543E00FE, // 004B LDINT R15 255 0x08381C0F, // 004C MUL R14 R14 R15 - 0x583C0001, // 004D LDCONST R15 K1 + 0x583C0000, // 004D LDCONST R15 K0 0x544200FE, // 004E LDINT R16 255 0x7C280C00, // 004F CALL R10 6 0x5C181400, // 0050 MOVE R6 R10 @@ -13622,11 +12802,11 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ 0x3028140B, // 005F OR R10 R10 R11 0x30281409, // 0060 OR R10 R10 R9 0x5C141400, // 0061 MOVE R5 R10 - 0x8C28010D, // 0062 GETMET R10 R0 K13 + 0x8C28010F, // 0062 GETMET R10 R0 K15 0x5C300800, // 0063 MOVE R12 R4 0x5C340A00, // 0064 MOVE R13 R5 0x7C280600, // 0065 CALL R10 3 - 0x00100903, // 0066 ADD R4 R4 K3 + 0x00100910, // 0066 ADD R4 R4 K16 0x7001FFBD, // 0067 JMP #0026 0x80000000, // 0068 RET 0 }) @@ -13636,12 +12816,12 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ /******************************************************************** -** Solidified function: setitem +** Solidified function: fill_pixels ********************************************************************/ -be_local_closure(class_FrameBuffer_setitem, /* name */ +be_local_closure(class_FrameBuffer_fill_pixels, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 8, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -13649,14 +12829,151 @@ be_local_closure(class_FrameBuffer_setitem, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(setitem), + be_str_weak(fill_pixels), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C010D, // 0000 GETMET R3 R0 K13 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[14]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x880C0103, // 0001 GETMBR R3 R0 K3 + 0x140C0403, // 0002 LT R3 R2 R3 + 0x780E0008, // 0003 JMPF R3 #000D + 0x880C0104, // 0004 GETMBR R3 R0 K4 + 0x8C0C0713, // 0005 GETMET R3 R3 K19 + 0x54160003, // 0006 LDINT R5 4 + 0x08140405, // 0007 MUL R5 R2 R5 + 0x5C180200, // 0008 MOVE R6 R1 + 0x541E0003, // 0009 LDINT R7 4 + 0x7C0C0800, // 000A CALL R3 4 + 0x00080510, // 000B ADD R2 R2 K16 + 0x7001FFF3, // 000C JMP #0001 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: blend_pixels +********************************************************************/ +be_local_closure(class_FrameBuffer_blend_pixels, /* name */ + be_nested_proto( + 15, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(blend_pixels), + &be_const_str_solidified, + ( &(const binstruction[105]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x1C140405, // 0001 EQ R5 R2 R5 + 0x78160000, // 0002 JMPF R5 #0004 + 0x88080114, // 0003 GETMBR R2 R0 K20 + 0x4C140000, // 0004 LDNIL R5 + 0x1C140605, // 0005 EQ R5 R3 R5 + 0x78160000, // 0006 JMPF R5 #0008 + 0x580C0000, // 0007 LDCONST R3 K0 + 0x4C140000, // 0008 LDNIL R5 + 0x1C140805, // 0009 EQ R5 R4 R5 + 0x78160002, // 000A JMPF R5 #000E + 0x88140103, // 000B GETMBR R5 R0 K3 + 0x04140B10, // 000C SUB R5 R5 K16 + 0x5C100A00, // 000D MOVE R4 R5 + 0x88140103, // 000E GETMBR R5 R0 K3 + 0x88180303, // 000F GETMBR R6 R1 K3 + 0x20140A06, // 0010 NE R5 R5 R6 + 0x78160000, // 0011 JMPF R5 #0013 + 0xB006030B, // 0012 RAISE 1 K1 K11 + 0x14140700, // 0013 LT R5 R3 K0 + 0x74160002, // 0014 JMPT R5 #0018 + 0x88140103, // 0015 GETMBR R5 R0 K3 + 0x28140605, // 0016 GE R5 R3 R5 + 0x78160000, // 0017 JMPF R5 #0019 + 0xB006231E, // 0018 RAISE 1 K17 K30 + 0x14140803, // 0019 LT R5 R4 R3 + 0x74160002, // 001A JMPT R5 #001E + 0x88140103, // 001B GETMBR R5 R0 K3 + 0x28140805, // 001C GE R5 R4 R5 + 0x78160000, // 001D JMPF R5 #001F + 0xB006231F, // 001E RAISE 1 K17 K31 + 0x88140114, // 001F GETMBR R5 R0 K20 + 0x1C140405, // 0020 EQ R5 R2 R5 + 0x78160028, // 0021 JMPF R5 #004B + 0x5C140600, // 0022 MOVE R5 R3 + 0x18180A04, // 0023 LE R6 R5 R4 + 0x781A0024, // 0024 JMPF R6 #004A + 0x8C18030C, // 0025 GETMET R6 R1 K12 + 0x5C200A00, // 0026 MOVE R8 R5 + 0x7C180400, // 0027 CALL R6 2 + 0x541E0017, // 0028 LDINT R7 24 + 0x3C1C0C07, // 0029 SHR R7 R6 R7 + 0x542200FE, // 002A LDINT R8 255 + 0x2C1C0E08, // 002B AND R7 R7 R8 + 0x24200F00, // 002C GT R8 R7 K0 + 0x78220019, // 002D JMPF R8 #0048 + 0x542200FE, // 002E LDINT R8 255 + 0x1C200E08, // 002F EQ R8 R7 R8 + 0x78220007, // 0030 JMPF R8 #0039 + 0x88200104, // 0031 GETMBR R8 R0 K4 + 0x8C201113, // 0032 GETMET R8 R8 K19 + 0x542A0003, // 0033 LDINT R10 4 + 0x08280A0A, // 0034 MUL R10 R5 R10 + 0x5C2C0C00, // 0035 MOVE R11 R6 + 0x54320003, // 0036 LDINT R12 4 + 0x7C200800, // 0037 CALL R8 4 + 0x7002000E, // 0038 JMP #0048 + 0x8C20010C, // 0039 GETMET R8 R0 K12 + 0x5C280A00, // 003A MOVE R10 R5 + 0x7C200400, // 003B CALL R8 2 + 0x8C24011D, // 003C GETMET R9 R0 K29 + 0x5C2C1000, // 003D MOVE R11 R8 + 0x5C300C00, // 003E MOVE R12 R6 + 0x5C340400, // 003F MOVE R13 R2 + 0x7C240800, // 0040 CALL R9 4 + 0x88280104, // 0041 GETMBR R10 R0 K4 + 0x8C281513, // 0042 GETMET R10 R10 K19 + 0x54320003, // 0043 LDINT R12 4 + 0x08300A0C, // 0044 MUL R12 R5 R12 + 0x5C341200, // 0045 MOVE R13 R9 + 0x543A0003, // 0046 LDINT R14 4 + 0x7C280800, // 0047 CALL R10 4 + 0x00140B10, // 0048 ADD R5 R5 K16 + 0x7001FFD8, // 0049 JMP #0023 + 0x80000C00, // 004A RET 0 + 0x5C140600, // 004B MOVE R5 R3 + 0x18180A04, // 004C LE R6 R5 R4 + 0x781A0019, // 004D JMPF R6 #0068 + 0x8C18010C, // 004E GETMET R6 R0 K12 + 0x5C200A00, // 004F MOVE R8 R5 + 0x7C180400, // 0050 CALL R6 2 + 0x8C1C030C, // 0051 GETMET R7 R1 K12 + 0x5C240A00, // 0052 MOVE R9 R5 + 0x7C1C0400, // 0053 CALL R7 2 + 0x54220017, // 0054 LDINT R8 24 + 0x3C200E08, // 0055 SHR R8 R7 R8 + 0x542600FE, // 0056 LDINT R9 255 + 0x2C201009, // 0057 AND R8 R8 R9 + 0x24241100, // 0058 GT R9 R8 K0 + 0x7826000B, // 0059 JMPF R9 #0066 + 0x8C24011D, // 005A GETMET R9 R0 K29 + 0x5C2C0C00, // 005B MOVE R11 R6 + 0x5C300E00, // 005C MOVE R12 R7 + 0x5C340400, // 005D MOVE R13 R2 + 0x7C240800, // 005E CALL R9 4 + 0x88280104, // 005F GETMBR R10 R0 K4 + 0x8C281513, // 0060 GETMET R10 R10 K19 + 0x54320003, // 0061 LDINT R12 4 + 0x08300A0C, // 0062 MUL R12 R5 R12 + 0x5C341200, // 0063 MOVE R13 R9 + 0x543A0003, // 0064 LDINT R14 4 + 0x7C280800, // 0065 CALL R10 4 + 0x00140B10, // 0066 ADD R5 R5 K16 + 0x7001FFE3, // 0067 JMP #004C + 0x80000000, // 0068 RET 0 }) ) ); @@ -13683,38 +13000,38 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x4C140000, // 0000 LDNIL R5 0x1C140605, // 0001 EQ R5 R3 R5 0x78160000, // 0002 JMPF R5 #0004 - 0x580C0001, // 0003 LDCONST R3 K1 + 0x580C0000, // 0003 LDCONST R3 K0 0x4C140000, // 0004 LDNIL R5 0x1C140805, // 0005 EQ R5 R4 R5 0x78160002, // 0006 JMPF R5 #000A - 0x88140102, // 0007 GETMBR R5 R0 K2 - 0x04140B03, // 0008 SUB R5 R5 K3 + 0x88140103, // 0007 GETMBR R5 R0 K3 + 0x04140B10, // 0008 SUB R5 R5 K16 0x5C100A00, // 0009 MOVE R4 R5 - 0x14140701, // 000A LT R5 R3 K1 + 0x14140700, // 000A LT R5 R3 K0 0x74160002, // 000B JMPT R5 #000F - 0x88140102, // 000C GETMBR R5 R0 K2 + 0x88140103, // 000C GETMBR R5 R0 K3 0x28140605, // 000D GE R5 R3 R5 0x78160000, // 000E JMPF R5 #0010 - 0xB0060905, // 000F RAISE 1 K4 K5 + 0xB0062318, // 000F RAISE 1 K17 K24 0x14140803, // 0010 LT R5 R4 R3 0x74160002, // 0011 JMPT R5 #0015 - 0x88140102, // 0012 GETMBR R5 R0 K2 + 0x88140103, // 0012 GETMBR R5 R0 K3 0x28140805, // 0013 GE R5 R4 R5 0x78160000, // 0014 JMPF R5 #0016 - 0xB0060906, // 0015 RAISE 1 K4 K6 - 0x8C14010D, // 0016 GETMET R5 R0 K13 + 0xB0062319, // 0015 RAISE 1 K17 K25 + 0x8C14010F, // 0016 GETMET R5 R0 K15 0x5C1C0600, // 0017 MOVE R7 R3 0x5C200200, // 0018 MOVE R8 R1 0x7C140600, // 0019 CALL R5 3 0x1C140604, // 001A EQ R5 R3 R4 0x78160000, // 001B JMPF R5 #001D 0x80000A00, // 001C RET 0 - 0x8C14010D, // 001D GETMET R5 R0 K13 + 0x8C14010F, // 001D GETMET R5 R0 K15 0x5C1C0800, // 001E MOVE R7 R4 0x5C200400, // 001F MOVE R8 R2 0x7C140600, // 0020 CALL R5 3 0x04140803, // 0021 SUB R5 R4 R3 - 0x18140B03, // 0022 LE R5 R5 K3 + 0x18140B10, // 0022 LE R5 R5 K16 0x78160000, // 0023 JMPF R5 #0025 0x80000A00, // 0024 RET 0 0x54160017, // 0025 LDINT R5 24 @@ -13746,45 +13063,45 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x543200FE, // 003F LDINT R12 255 0x2C30040C, // 0040 AND R12 R2 R12 0x04340803, // 0041 SUB R13 R4 R3 - 0x00380703, // 0042 ADD R14 R3 K3 + 0x00380710, // 0042 ADD R14 R3 K16 0x143C1C04, // 0043 LT R15 R14 R4 0x783E005B, // 0044 JMPF R15 #00A1 0x043C1C03, // 0045 SUB R15 R14 R3 - 0xB8421600, // 0046 GETNGBL R16 K11 - 0x8C40210C, // 0047 GETMET R16 R16 K12 + 0xB8421A00, // 0046 GETNGBL R16 K13 + 0x8C40210E, // 0047 GETMET R16 R16 K14 0x5C481E00, // 0048 MOVE R18 R15 - 0x584C0001, // 0049 LDCONST R19 K1 + 0x584C0000, // 0049 LDCONST R19 K0 0x5C501A00, // 004A MOVE R20 R13 0x5C540C00, // 004B MOVE R21 R6 0x5C581400, // 004C MOVE R22 R10 0x7C400C00, // 004D CALL R16 6 - 0xB8461600, // 004E GETNGBL R17 K11 - 0x8C44230C, // 004F GETMET R17 R17 K12 + 0xB8461A00, // 004E GETNGBL R17 K13 + 0x8C44230E, // 004F GETMET R17 R17 K14 0x5C4C1E00, // 0050 MOVE R19 R15 - 0x58500001, // 0051 LDCONST R20 K1 + 0x58500000, // 0051 LDCONST R20 K0 0x5C541A00, // 0052 MOVE R21 R13 0x5C580E00, // 0053 MOVE R22 R7 0x5C5C1600, // 0054 MOVE R23 R11 0x7C440C00, // 0055 CALL R17 6 - 0xB84A1600, // 0056 GETNGBL R18 K11 - 0x8C48250C, // 0057 GETMET R18 R18 K12 + 0xB84A1A00, // 0056 GETNGBL R18 K13 + 0x8C48250E, // 0057 GETMET R18 R18 K14 0x5C501E00, // 0058 MOVE R20 R15 - 0x58540001, // 0059 LDCONST R21 K1 + 0x58540000, // 0059 LDCONST R21 K0 0x5C581A00, // 005A MOVE R22 R13 0x5C5C1000, // 005B MOVE R23 R8 0x5C601800, // 005C MOVE R24 R12 0x7C480C00, // 005D CALL R18 6 - 0xB84E1600, // 005E GETNGBL R19 K11 - 0x8C4C270C, // 005F GETMET R19 R19 K12 + 0xB84E1A00, // 005E GETNGBL R19 K13 + 0x8C4C270E, // 005F GETMET R19 R19 K14 0x5C541E00, // 0060 MOVE R21 R15 - 0x58580001, // 0061 LDCONST R22 K1 + 0x58580000, // 0061 LDCONST R22 K0 0x5C5C1A00, // 0062 MOVE R23 R13 0x5C600A00, // 0063 MOVE R24 R5 0x5C641200, // 0064 MOVE R25 R9 0x7C4C0C00, // 0065 CALL R19 6 - 0x14502101, // 0066 LT R20 R16 K1 + 0x14502100, // 0066 LT R20 R16 K0 0x78520001, // 0067 JMPF R20 #006A - 0x58500001, // 0068 LDCONST R20 K1 + 0x58500000, // 0068 LDCONST R20 K0 0x70020005, // 0069 JMP #0070 0x545200FE, // 006A LDINT R20 255 0x24502014, // 006B GT R20 R16 R20 @@ -13793,9 +13110,9 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x70020000, // 006E JMP #0070 0x5C502000, // 006F MOVE R20 R16 0x5C402800, // 0070 MOVE R16 R20 - 0x14502301, // 0071 LT R20 R17 K1 + 0x14502300, // 0071 LT R20 R17 K0 0x78520001, // 0072 JMPF R20 #0075 - 0x58500001, // 0073 LDCONST R20 K1 + 0x58500000, // 0073 LDCONST R20 K0 0x70020005, // 0074 JMP #007B 0x545200FE, // 0075 LDINT R20 255 0x24502214, // 0076 GT R20 R17 R20 @@ -13804,9 +13121,9 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x70020000, // 0079 JMP #007B 0x5C502200, // 007A MOVE R20 R17 0x5C442800, // 007B MOVE R17 R20 - 0x14502501, // 007C LT R20 R18 K1 + 0x14502500, // 007C LT R20 R18 K0 0x78520001, // 007D JMPF R20 #0080 - 0x58500001, // 007E LDCONST R20 K1 + 0x58500000, // 007E LDCONST R20 K0 0x70020005, // 007F JMP #0086 0x545200FE, // 0080 LDINT R20 255 0x24502414, // 0081 GT R20 R18 R20 @@ -13815,9 +13132,9 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x70020000, // 0084 JMP #0086 0x5C502400, // 0085 MOVE R20 R18 0x5C482800, // 0086 MOVE R18 R20 - 0x14502701, // 0087 LT R20 R19 K1 + 0x14502700, // 0087 LT R20 R19 K0 0x78520001, // 0088 JMPF R20 #008B - 0x58500001, // 0089 LDCONST R20 K1 + 0x58500000, // 0089 LDCONST R20 K0 0x70020005, // 008A JMP #0091 0x545200FE, // 008B LDINT R20 255 0x24502614, // 008C GT R20 R19 R20 @@ -13835,11 +13152,11 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ 0x38542215, // 0098 SHL R21 R17 R21 0x30502815, // 0099 OR R20 R20 R21 0x30502812, // 009A OR R20 R20 R18 - 0x8C54010D, // 009B GETMET R21 R0 K13 + 0x8C54010F, // 009B GETMET R21 R0 K15 0x5C5C1C00, // 009C MOVE R23 R14 0x5C602800, // 009D MOVE R24 R20 0x7C540600, // 009E CALL R21 3 - 0x00381D03, // 009F ADD R14 R14 K3 + 0x00381D10, // 009F ADD R14 R14 K16 0x7001FFA1, // 00A0 JMP #0043 0x80000000, // 00A1 RET 0 }) @@ -13849,11 +13166,38 @@ be_local_closure(class_FrameBuffer_gradient_fill, /* name */ /******************************************************************** -** Solidified function: clear +** Solidified function: item ********************************************************************/ -be_local_closure(class_FrameBuffer_clear, /* name */ +be_local_closure(class_FrameBuffer_item, /* 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_FrameBuffer, /* shared constants */ + be_str_weak(item), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C08010C, // 0000 GETMET R2 R0 K12 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x80040400, // 0003 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: dump +********************************************************************/ +be_local_closure(class_FrameBuffer_dump, /* name */ + be_nested_proto( + 14, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13862,147 +13206,45 @@ be_local_closure(class_FrameBuffer_clear, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FrameBuffer, /* shared constants */ - be_str_weak(clear), + be_str_weak(dump), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C040316, // 0001 GETMET R1 R1 K22 - 0x7C040200, // 0002 CALL R1 1 - 0x88040109, // 0003 GETMBR R1 R0 K9 - 0x8C040315, // 0004 GETMET R1 R1 K21 - 0x880C0102, // 0005 GETMBR R3 R0 K2 - 0x54120003, // 0006 LDINT R4 4 - 0x080C0604, // 0007 MUL R3 R3 R4 - 0x7C040400, // 0008 CALL R1 2 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: blend_pixels -********************************************************************/ -be_local_closure(class_FrameBuffer_blend_pixels, /* name */ - be_nested_proto( - 15, /* 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_FrameBuffer, /* shared constants */ - be_str_weak(blend_pixels), - &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x1C140405, // 0001 EQ R5 R2 R5 - 0x78160000, // 0002 JMPF R5 #0004 - 0x88080100, // 0003 GETMBR R2 R0 K0 - 0x4C140000, // 0004 LDNIL R5 - 0x1C140605, // 0005 EQ R5 R3 R5 - 0x78160000, // 0006 JMPF R5 #0008 - 0x580C0001, // 0007 LDCONST R3 K1 - 0x4C140000, // 0008 LDNIL R5 - 0x1C140805, // 0009 EQ R5 R4 R5 - 0x78160002, // 000A JMPF R5 #000E - 0x88140102, // 000B GETMBR R5 R0 K2 - 0x04140B03, // 000C SUB R5 R5 K3 - 0x5C100A00, // 000D MOVE R4 R5 - 0x88140102, // 000E GETMBR R5 R0 K2 - 0x88180302, // 000F GETMBR R6 R1 K2 - 0x20140A06, // 0010 NE R5 R5 R6 - 0x78160000, // 0011 JMPF R5 #0013 - 0xB0061F10, // 0012 RAISE 1 K15 K16 - 0x14140701, // 0013 LT R5 R3 K1 - 0x74160002, // 0014 JMPT R5 #0018 - 0x88140102, // 0015 GETMBR R5 R0 K2 - 0x28140605, // 0016 GE R5 R3 R5 - 0x78160000, // 0017 JMPF R5 #0019 - 0xB0060920, // 0018 RAISE 1 K4 K32 - 0x14140803, // 0019 LT R5 R4 R3 - 0x74160002, // 001A JMPT R5 #001E - 0x88140102, // 001B GETMBR R5 R0 K2 - 0x28140805, // 001C GE R5 R4 R5 - 0x78160000, // 001D JMPF R5 #001F - 0xB0060921, // 001E RAISE 1 K4 K33 - 0x88140100, // 001F GETMBR R5 R0 K0 - 0x1C140405, // 0020 EQ R5 R2 R5 - 0x78160028, // 0021 JMPF R5 #004B - 0x5C140600, // 0022 MOVE R5 R3 - 0x18180A04, // 0023 LE R6 R5 R4 - 0x781A0024, // 0024 JMPF R6 #004A - 0x8C180307, // 0025 GETMET R6 R1 K7 - 0x5C200A00, // 0026 MOVE R8 R5 - 0x7C180400, // 0027 CALL R6 2 - 0x541E0017, // 0028 LDINT R7 24 - 0x3C1C0C07, // 0029 SHR R7 R6 R7 - 0x542200FE, // 002A LDINT R8 255 - 0x2C1C0E08, // 002B AND R7 R7 R8 - 0x24200F01, // 002C GT R8 R7 K1 - 0x78220019, // 002D JMPF R8 #0048 - 0x542200FE, // 002E LDINT R8 255 - 0x1C200E08, // 002F EQ R8 R7 R8 - 0x78220007, // 0030 JMPF R8 #0039 - 0x88200109, // 0031 GETMBR R8 R0 K9 - 0x8C20110A, // 0032 GETMET R8 R8 K10 - 0x542A0003, // 0033 LDINT R10 4 - 0x08280A0A, // 0034 MUL R10 R5 R10 - 0x5C2C0C00, // 0035 MOVE R11 R6 - 0x54320003, // 0036 LDINT R12 4 - 0x7C200800, // 0037 CALL R8 4 - 0x7002000E, // 0038 JMP #0048 - 0x8C200107, // 0039 GETMET R8 R0 K7 - 0x5C280A00, // 003A MOVE R10 R5 - 0x7C200400, // 003B CALL R8 2 - 0x8C240108, // 003C GETMET R9 R0 K8 - 0x5C2C1000, // 003D MOVE R11 R8 - 0x5C300C00, // 003E MOVE R12 R6 - 0x5C340400, // 003F MOVE R13 R2 - 0x7C240800, // 0040 CALL R9 4 - 0x88280109, // 0041 GETMBR R10 R0 K9 - 0x8C28150A, // 0042 GETMET R10 R10 K10 - 0x54320003, // 0043 LDINT R12 4 - 0x08300A0C, // 0044 MUL R12 R5 R12 - 0x5C341200, // 0045 MOVE R13 R9 - 0x543A0003, // 0046 LDINT R14 4 - 0x7C280800, // 0047 CALL R10 4 - 0x00140B03, // 0048 ADD R5 R5 K3 - 0x7001FFD8, // 0049 JMP #0023 - 0x80000C00, // 004A RET 0 - 0x5C140600, // 004B MOVE R5 R3 - 0x18180A04, // 004C LE R6 R5 R4 - 0x781A0019, // 004D JMPF R6 #0068 - 0x8C180107, // 004E GETMET R6 R0 K7 - 0x5C200A00, // 004F MOVE R8 R5 - 0x7C180400, // 0050 CALL R6 2 - 0x8C1C0307, // 0051 GETMET R7 R1 K7 - 0x5C240A00, // 0052 MOVE R9 R5 - 0x7C1C0400, // 0053 CALL R7 2 - 0x54220017, // 0054 LDINT R8 24 - 0x3C200E08, // 0055 SHR R8 R7 R8 - 0x542600FE, // 0056 LDINT R9 255 - 0x2C201009, // 0057 AND R8 R8 R9 - 0x24241101, // 0058 GT R9 R8 K1 - 0x7826000B, // 0059 JMPF R9 #0066 - 0x8C240108, // 005A GETMET R9 R0 K8 - 0x5C2C0C00, // 005B MOVE R11 R6 - 0x5C300E00, // 005C MOVE R12 R7 - 0x5C340400, // 005D MOVE R13 R2 - 0x7C240800, // 005E CALL R9 4 - 0x88280109, // 005F GETMBR R10 R0 K9 - 0x8C28150A, // 0060 GETMET R10 R10 K10 - 0x54320003, // 0061 LDINT R12 4 - 0x08300A0C, // 0062 MUL R12 R5 R12 - 0x5C341200, // 0063 MOVE R13 R9 - 0x543A0003, // 0064 LDINT R14 4 - 0x7C280800, // 0065 CALL R10 4 - 0x00140B03, // 0066 ADD R5 R5 K3 - 0x7001FFE3, // 0067 JMP #004C - 0x80000000, // 0068 RET 0 + ( &(const binstruction[36]) { /* code */ + 0x58040020, // 0000 LDCONST R1 K32 + 0x58080000, // 0001 LDCONST R2 K0 + 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0x140C0403, // 0003 LT R3 R2 R3 + 0x780E001A, // 0004 JMPF R3 #0020 + 0x8C0C010C, // 0005 GETMET R3 R0 K12 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x54120017, // 0008 LDINT R4 24 + 0x3C100604, // 0009 SHR R4 R3 R4 + 0x541600FE, // 000A LDINT R5 255 + 0x2C100805, // 000B AND R4 R4 R5 + 0x5416000F, // 000C LDINT R5 16 + 0x3C140605, // 000D SHR R5 R3 R5 + 0x541A00FE, // 000E LDINT R6 255 + 0x2C140A06, // 000F AND R5 R5 R6 + 0x541A0007, // 0010 LDINT R6 8 + 0x3C180606, // 0011 SHR R6 R3 R6 + 0x541E00FE, // 0012 LDINT R7 255 + 0x2C180C07, // 0013 AND R6 R6 R7 + 0x541E00FE, // 0014 LDINT R7 255 + 0x2C1C0607, // 0015 AND R7 R3 R7 + 0x60200018, // 0016 GETGBL R8 G24 + 0x58240021, // 0017 LDCONST R9 K33 + 0x5C280800, // 0018 MOVE R10 R4 + 0x5C2C0A00, // 0019 MOVE R11 R5 + 0x5C300C00, // 001A MOVE R12 R6 + 0x5C340E00, // 001B MOVE R13 R7 + 0x7C200A00, // 001C CALL R8 5 + 0x00040208, // 001D ADD R1 R1 R8 + 0x00080510, // 001E ADD R2 R2 K16 + 0x7001FFE1, // 001F JMP #0002 + 0x540DFFFD, // 0020 LDINT R3 -2 + 0x400E0003, // 0021 CONNECT R3 K0 R3 + 0x94040203, // 0022 GETIDX R1 R1 R3 + 0x80040200, // 0023 RET 1 R1 }) ) ); @@ -14015,33 +13257,674 @@ be_local_closure(class_FrameBuffer_blend_pixels, /* name */ be_local_class(FrameBuffer, 2, NULL, - be_nested_map(22, + be_nested_map(24, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(blend_color, 21), be_const_closure(class_FrameBuffer_blend_color_closure) }, - { be_const_key_weak(apply_brightness, 17), be_const_closure(class_FrameBuffer_apply_brightness_closure) }, - { be_const_key_weak(blend_pixels, 15), be_const_closure(class_FrameBuffer_blend_pixels_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_FrameBuffer_tostring_closure) }, - { be_const_key_weak(apply_mask, 12), be_const_closure(class_FrameBuffer_apply_mask_closure) }, + { be_const_key_weak(blend_linear, 14), be_const_closure(class_FrameBuffer_blend_linear_closure) }, + { be_const_key_weak(resize, -1), be_const_closure(class_FrameBuffer_resize_closure) }, { be_const_key_weak(clear, -1), be_const_closure(class_FrameBuffer_clear_closure) }, - { be_const_key_weak(gradient_fill, -1), be_const_closure(class_FrameBuffer_gradient_fill_closure) }, - { be_const_key_weak(blend, -1), be_const_closure(class_FrameBuffer_blend_closure) }, - { be_const_key_weak(set_pixel_color, -1), be_const_closure(class_FrameBuffer_set_pixel_color_closure) }, - { be_const_key_weak(init, 6), be_const_closure(class_FrameBuffer_init_closure) }, - { be_const_key_weak(item, 7), be_const_closure(class_FrameBuffer_item_closure) }, - { be_const_key_weak(width, 19), be_const_var(1) }, - { be_const_key_weak(pixels, -1), be_const_var(0) }, + { be_const_key_weak(init, 7), be_const_closure(class_FrameBuffer_init_closure) }, + { be_const_key_weak(apply_mask, 6), be_const_closure(class_FrameBuffer_apply_mask_closure) }, { be_const_key_weak(dump, -1), be_const_closure(class_FrameBuffer_dump_closure) }, - { be_const_key_weak(copy, -1), be_const_closure(class_FrameBuffer_copy_closure) }, + { be_const_key_weak(set_pixel_color, -1), be_const_closure(class_FrameBuffer_set_pixel_color_closure) }, + { be_const_key_weak(gradient_fill, -1), be_const_closure(class_FrameBuffer_gradient_fill_closure) }, + { be_const_key_weak(blend, 18), be_const_closure(class_FrameBuffer_blend_closure) }, + { be_const_key_weak(blend_pixels, 10), be_const_closure(class_FrameBuffer_blend_pixels_closure) }, + { be_const_key_weak(fill_pixels, 19), be_const_closure(class_FrameBuffer_fill_pixels_closure) }, + { be_const_key_weak(apply_brightness, -1), be_const_closure(class_FrameBuffer_apply_brightness_closure) }, + { be_const_key_weak(pixels, -1), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_FrameBuffer_tostring_closure) }, { be_const_key_weak(BLEND_MODE_NORMAL, -1), be_const_int(0) }, - { be_const_key_weak(get_pixel_color, 2), be_const_closure(class_FrameBuffer_get_pixel_color_closure) }, { be_const_key_weak(apply_opacity, -1), be_const_closure(class_FrameBuffer_apply_opacity_closure) }, - { be_const_key_weak(setitem, -1), be_const_closure(class_FrameBuffer_setitem_closure) }, - { be_const_key_weak(tohex, -1), be_const_closure(class_FrameBuffer_tohex_closure) }, - { be_const_key_weak(to_color, 5), be_const_static_closure(class_FrameBuffer_to_color_closure) }, - { be_const_key_weak(fill_pixels, -1), be_const_closure(class_FrameBuffer_fill_pixels_closure) }, + { be_const_key_weak(blend_color, -1), be_const_closure(class_FrameBuffer_blend_color_closure) }, + { be_const_key_weak(tohex, 15), be_const_closure(class_FrameBuffer_tohex_closure) }, + { be_const_key_weak(get_pixel_color, -1), be_const_closure(class_FrameBuffer_get_pixel_color_closure) }, + { be_const_key_weak(to_color, 21), be_const_static_closure(class_FrameBuffer_to_color_closure) }, + { be_const_key_weak(setitem, 9), be_const_closure(class_FrameBuffer_setitem_closure) }, + { be_const_key_weak(copy, -1), be_const_closure(class_FrameBuffer_copy_closure) }, + { be_const_key_weak(item, -1), be_const_closure(class_FrameBuffer_item_closure) }, + { be_const_key_weak(width, 5), be_const_var(1) }, })), be_str_weak(FrameBuffer) ); +// compact class 'CompositeColorProvider' ktab size: 15, total: 25 (saved 80 bytes) +static const bvalue be_ktab_class_CompositeColorProvider[15] = { + /* K0 */ be_nested_str_weak(providers), + /* K1 */ be_nested_str_weak(push), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(get_color_for_value), + /* K5 */ be_nested_str_weak(_blend_colors), + /* K6 */ be_nested_str_weak(produce_value), + /* K7 */ be_nested_str_weak(CompositeColorProvider_X28providers_X3D_X25s_X2C_X20blend_mode_X3D_X25s_X29), + /* K8 */ be_nested_str_weak(blend_mode), + /* K9 */ be_nested_str_weak(CompositeColorProvider_X28uninitialized_X29), + /* K10 */ be_const_real_hex(0x437F0000), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_nested_str_weak(init), +}; + + +extern const bclass be_class_CompositeColorProvider; + +/******************************************************************** +** Solidified function: add_provider +********************************************************************/ +be_local_closure(class_CompositeColorProvider_add_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_CompositeColorProvider, /* shared constants */ + be_str_weak(add_provider), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_CompositeColorProvider_get_color_for_value, /* name */ + be_nested_proto( + 10, /* 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_CompositeColorProvider, /* shared constants */ + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x600C000C, // 0000 GETGBL R3 G12 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x1C0C0702, // 0003 EQ R3 R3 K2 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x540DFFFE, // 0005 LDINT R3 -1 + 0x80040600, // 0006 RET 1 R3 + 0x600C000C, // 0007 GETGBL R3 G12 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x7C0C0200, // 0009 CALL R3 1 + 0x1C0C0703, // 000A EQ R3 R3 K3 + 0x780E0006, // 000B JMPF R3 #0013 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x940C0702, // 000D GETIDX R3 R3 K2 + 0x8C0C0704, // 000E GETMET R3 R3 K4 + 0x5C140200, // 000F MOVE R5 R1 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C0C0600, // 0011 CALL R3 3 + 0x80040600, // 0012 RET 1 R3 + 0x880C0100, // 0013 GETMBR R3 R0 K0 + 0x940C0702, // 0014 GETIDX R3 R3 K2 + 0x8C0C0704, // 0015 GETMET R3 R3 K4 + 0x5C140200, // 0016 MOVE R5 R1 + 0x5C180400, // 0017 MOVE R6 R2 + 0x7C0C0600, // 0018 CALL R3 3 + 0x58100003, // 0019 LDCONST R4 K3 + 0x6014000C, // 001A GETGBL R5 G12 + 0x88180100, // 001B GETMBR R6 R0 K0 + 0x7C140200, // 001C CALL R5 1 + 0x14140805, // 001D LT R5 R4 R5 + 0x7816000C, // 001E JMPF R5 #002C + 0x88140100, // 001F GETMBR R5 R0 K0 + 0x94140A04, // 0020 GETIDX R5 R5 R4 + 0x8C140B04, // 0021 GETMET R5 R5 K4 + 0x5C1C0200, // 0022 MOVE R7 R1 + 0x5C200400, // 0023 MOVE R8 R2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C180105, // 0025 GETMET R6 R0 K5 + 0x5C200600, // 0026 MOVE R8 R3 + 0x5C240A00, // 0027 MOVE R9 R5 + 0x7C180600, // 0028 CALL R6 3 + 0x5C0C0C00, // 0029 MOVE R3 R6 + 0x00100903, // 002A ADD R4 R4 K3 + 0x7001FFED, // 002B JMP #001A + 0x80040600, // 002C RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_CompositeColorProvider_produce_value, /* name */ + be_nested_proto( + 10, /* 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_CompositeColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x600C000C, // 0000 GETGBL R3 G12 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x1C0C0702, // 0003 EQ R3 R3 K2 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x540DFFFE, // 0005 LDINT R3 -1 + 0x80040600, // 0006 RET 1 R3 + 0x600C000C, // 0007 GETGBL R3 G12 + 0x88100100, // 0008 GETMBR R4 R0 K0 + 0x7C0C0200, // 0009 CALL R3 1 + 0x1C0C0703, // 000A EQ R3 R3 K3 + 0x780E0006, // 000B JMPF R3 #0013 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x940C0702, // 000D GETIDX R3 R3 K2 + 0x8C0C0706, // 000E GETMET R3 R3 K6 + 0x5C140200, // 000F MOVE R5 R1 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C0C0600, // 0011 CALL R3 3 + 0x80040600, // 0012 RET 1 R3 + 0x880C0100, // 0013 GETMBR R3 R0 K0 + 0x940C0702, // 0014 GETIDX R3 R3 K2 + 0x8C0C0706, // 0015 GETMET R3 R3 K6 + 0x5C140200, // 0016 MOVE R5 R1 + 0x5C180400, // 0017 MOVE R6 R2 + 0x7C0C0600, // 0018 CALL R3 3 + 0x58100003, // 0019 LDCONST R4 K3 + 0x6014000C, // 001A GETGBL R5 G12 + 0x88180100, // 001B GETMBR R6 R0 K0 + 0x7C140200, // 001C CALL R5 1 + 0x14140805, // 001D LT R5 R4 R5 + 0x7816000C, // 001E JMPF R5 #002C + 0x88140100, // 001F GETMBR R5 R0 K0 + 0x94140A04, // 0020 GETIDX R5 R5 R4 + 0x8C140B06, // 0021 GETMET R5 R5 K6 + 0x5C1C0200, // 0022 MOVE R7 R1 + 0x5C200400, // 0023 MOVE R8 R2 + 0x7C140600, // 0024 CALL R5 3 + 0x8C180105, // 0025 GETMET R6 R0 K5 + 0x5C200600, // 0026 MOVE R8 R3 + 0x5C240A00, // 0027 MOVE R9 R5 + 0x7C180600, // 0028 CALL R6 3 + 0x5C0C0C00, // 0029 MOVE R3 R6 + 0x00100903, // 002A ADD R4 R4 K3 + 0x7001FFED, // 002B JMP #001A + 0x80040600, // 002C RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_CompositeColorProvider_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_CompositeColorProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0xA802000A, // 0000 EXBLK 0 #000C + 0x60040018, // 0001 GETGBL R1 G24 + 0x58080007, // 0002 LDCONST R2 K7 + 0x600C000C, // 0003 GETGBL R3 G12 + 0x88100100, // 0004 GETMBR R4 R0 K0 + 0x7C0C0200, // 0005 CALL R3 1 + 0x88100108, // 0006 GETMBR R4 R0 K8 + 0x7C040600, // 0007 CALL R1 3 + 0xA8040001, // 0008 EXBLK 1 1 + 0x80040200, // 0009 RET 1 R1 + 0xA8040001, // 000A EXBLK 1 1 + 0x70020004, // 000B JMP #0011 + 0xAC040000, // 000C CATCH R1 0 0 + 0x70020001, // 000D JMP #0010 + 0x80061200, // 000E RET 1 K9 + 0x70020000, // 000F JMP #0011 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _blend_colors +********************************************************************/ +be_local_closure(class_CompositeColorProvider__blend_colors, /* name */ + be_nested_proto( + 23, /* 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_CompositeColorProvider, /* shared constants */ + be_str_weak(_blend_colors), + &be_const_str_solidified, + ( &(const binstruction[151]) { /* code */ + 0x880C0108, // 0000 GETMBR R3 R0 K8 + 0x54120017, // 0001 LDINT R4 24 + 0x3C100204, // 0002 SHR R4 R1 R4 + 0x541600FE, // 0003 LDINT R5 255 + 0x2C100805, // 0004 AND R4 R4 R5 + 0x5416000F, // 0005 LDINT R5 16 + 0x3C140205, // 0006 SHR R5 R1 R5 + 0x541A00FE, // 0007 LDINT R6 255 + 0x2C140A06, // 0008 AND R5 R5 R6 + 0x541A0007, // 0009 LDINT R6 8 + 0x3C180206, // 000A SHR R6 R1 R6 + 0x541E00FE, // 000B LDINT R7 255 + 0x2C180C07, // 000C AND R6 R6 R7 + 0x541E00FE, // 000D LDINT R7 255 + 0x2C1C0207, // 000E AND R7 R1 R7 + 0x54220017, // 000F LDINT R8 24 + 0x3C200408, // 0010 SHR R8 R2 R8 + 0x542600FE, // 0011 LDINT R9 255 + 0x2C201009, // 0012 AND R8 R8 R9 + 0x5426000F, // 0013 LDINT R9 16 + 0x3C240409, // 0014 SHR R9 R2 R9 + 0x542A00FE, // 0015 LDINT R10 255 + 0x2C24120A, // 0016 AND R9 R9 R10 + 0x542A0007, // 0017 LDINT R10 8 + 0x3C28040A, // 0018 SHR R10 R2 R10 + 0x542E00FE, // 0019 LDINT R11 255 + 0x2C28140B, // 001A AND R10 R10 R11 + 0x542E00FE, // 001B LDINT R11 255 + 0x2C2C040B, // 001C AND R11 R2 R11 + 0x4C300000, // 001D LDNIL R12 + 0x4C340000, // 001E LDNIL R13 + 0x4C380000, // 001F LDNIL R14 + 0x4C3C0000, // 0020 LDNIL R15 + 0x1C400702, // 0021 EQ R16 R3 K2 + 0x7842001C, // 0022 JMPF R16 #0040 + 0x0C40110A, // 0023 DIV R16 R8 K10 + 0x60440009, // 0024 GETGBL R17 G9 + 0x044A0610, // 0025 SUB R18 K3 R16 + 0x08480E12, // 0026 MUL R18 R7 R18 + 0x084C1610, // 0027 MUL R19 R11 R16 + 0x00482413, // 0028 ADD R18 R18 R19 + 0x7C440200, // 0029 CALL R17 1 + 0x5C342200, // 002A MOVE R13 R17 + 0x60440009, // 002B GETGBL R17 G9 + 0x044A0610, // 002C SUB R18 K3 R16 + 0x08480C12, // 002D MUL R18 R6 R18 + 0x084C1410, // 002E MUL R19 R10 R16 + 0x00482413, // 002F ADD R18 R18 R19 + 0x7C440200, // 0030 CALL R17 1 + 0x5C382200, // 0031 MOVE R14 R17 + 0x60440009, // 0032 GETGBL R17 G9 + 0x044A0610, // 0033 SUB R18 K3 R16 + 0x08480A12, // 0034 MUL R18 R5 R18 + 0x084C1210, // 0035 MUL R19 R9 R16 + 0x00482413, // 0036 ADD R18 R18 R19 + 0x7C440200, // 0037 CALL R17 1 + 0x5C3C2200, // 0038 MOVE R15 R17 + 0x24440808, // 0039 GT R17 R4 R8 + 0x78460001, // 003A JMPF R17 #003D + 0x5C440800, // 003B MOVE R17 R4 + 0x70020000, // 003C JMP #003E + 0x5C441000, // 003D MOVE R17 R8 + 0x5C302200, // 003E MOVE R12 R17 + 0x7002004C, // 003F JMP #008D + 0x1C400703, // 0040 EQ R16 R3 K3 + 0x78420021, // 0041 JMPF R16 #0064 + 0x00400E0B, // 0042 ADD R16 R7 R11 + 0x5C342000, // 0043 MOVE R13 R16 + 0x00400C0A, // 0044 ADD R16 R6 R10 + 0x5C382000, // 0045 MOVE R14 R16 + 0x00400A09, // 0046 ADD R16 R5 R9 + 0x5C3C2000, // 0047 MOVE R15 R16 + 0x24400808, // 0048 GT R16 R4 R8 + 0x78420001, // 0049 JMPF R16 #004C + 0x5C400800, // 004A MOVE R16 R4 + 0x70020000, // 004B JMP #004D + 0x5C401000, // 004C MOVE R16 R8 + 0x5C302000, // 004D MOVE R12 R16 + 0x544200FE, // 004E LDINT R16 255 + 0x24401A10, // 004F GT R16 R13 R16 + 0x78420001, // 0050 JMPF R16 #0053 + 0x544200FE, // 0051 LDINT R16 255 + 0x70020000, // 0052 JMP #0054 + 0x5C401A00, // 0053 MOVE R16 R13 + 0x5C342000, // 0054 MOVE R13 R16 + 0x544200FE, // 0055 LDINT R16 255 + 0x24401C10, // 0056 GT R16 R14 R16 + 0x78420001, // 0057 JMPF R16 #005A + 0x544200FE, // 0058 LDINT R16 255 + 0x70020000, // 0059 JMP #005B + 0x5C401C00, // 005A MOVE R16 R14 + 0x5C382000, // 005B MOVE R14 R16 + 0x544200FE, // 005C LDINT R16 255 + 0x24401E10, // 005D GT R16 R15 R16 + 0x78420001, // 005E JMPF R16 #0061 + 0x544200FE, // 005F LDINT R16 255 + 0x70020000, // 0060 JMP #0062 + 0x5C401E00, // 0061 MOVE R16 R15 + 0x5C3C2000, // 0062 MOVE R15 R16 + 0x70020028, // 0063 JMP #008D + 0x1C40070B, // 0064 EQ R16 R3 K11 + 0x78420026, // 0065 JMPF R16 #008D + 0xB8421800, // 0066 GETNGBL R16 K12 + 0x8C40210D, // 0067 GETMET R16 R16 K13 + 0x08480E0B, // 0068 MUL R18 R7 R11 + 0x584C0002, // 0069 LDCONST R19 K2 + 0x545200FE, // 006A LDINT R20 255 + 0x545600FE, // 006B LDINT R21 255 + 0x08502815, // 006C MUL R20 R20 R21 + 0x58540002, // 006D LDCONST R21 K2 + 0x545A00FE, // 006E LDINT R22 255 + 0x7C400C00, // 006F CALL R16 6 + 0x5C342000, // 0070 MOVE R13 R16 + 0xB8421800, // 0071 GETNGBL R16 K12 + 0x8C40210D, // 0072 GETMET R16 R16 K13 + 0x08480C0A, // 0073 MUL R18 R6 R10 + 0x584C0002, // 0074 LDCONST R19 K2 + 0x545200FE, // 0075 LDINT R20 255 + 0x545600FE, // 0076 LDINT R21 255 + 0x08502815, // 0077 MUL R20 R20 R21 + 0x58540002, // 0078 LDCONST R21 K2 + 0x545A00FE, // 0079 LDINT R22 255 + 0x7C400C00, // 007A CALL R16 6 + 0x5C382000, // 007B MOVE R14 R16 + 0xB8421800, // 007C GETNGBL R16 K12 + 0x8C40210D, // 007D GETMET R16 R16 K13 + 0x08480A09, // 007E MUL R18 R5 R9 + 0x584C0002, // 007F LDCONST R19 K2 + 0x545200FE, // 0080 LDINT R20 255 + 0x545600FE, // 0081 LDINT R21 255 + 0x08502815, // 0082 MUL R20 R20 R21 + 0x58540002, // 0083 LDCONST R21 K2 + 0x545A00FE, // 0084 LDINT R22 255 + 0x7C400C00, // 0085 CALL R16 6 + 0x5C3C2000, // 0086 MOVE R15 R16 + 0x24400808, // 0087 GT R16 R4 R8 + 0x78420001, // 0088 JMPF R16 #008B + 0x5C400800, // 0089 MOVE R16 R4 + 0x70020000, // 008A JMP #008C + 0x5C401000, // 008B MOVE R16 R8 + 0x5C302000, // 008C MOVE R12 R16 + 0x54420017, // 008D LDINT R16 24 + 0x38401810, // 008E SHL R16 R12 R16 + 0x5446000F, // 008F LDINT R17 16 + 0x38441E11, // 0090 SHL R17 R15 R17 + 0x30402011, // 0091 OR R16 R16 R17 + 0x54460007, // 0092 LDINT R17 8 + 0x38441C11, // 0093 SHL R17 R14 R17 + 0x30402011, // 0094 OR R16 R16 R17 + 0x3040200D, // 0095 OR R16 R16 R13 + 0x80042000, // 0096 RET 1 R16 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_CompositeColorProvider_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_CompositeColorProvider, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050E, // 0003 GETMET R2 R2 K14 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90020002, // 0008 SETMBR R0 K0 R2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: CompositeColorProvider +********************************************************************/ +extern const bclass be_class_ColorProvider; +be_local_class(CompositeColorProvider, + 1, + &be_class_ColorProvider, + be_nested_map(8, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(add_provider, -1), be_const_closure(class_CompositeColorProvider_add_provider_closure) }, + { be_const_key_weak(get_color_for_value, 7), be_const_closure(class_CompositeColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_CompositeColorProvider_init_closure) }, + { be_const_key_weak(PARAMS, 2), 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(blend_mode, -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(enum, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + })) ) } )) }, + { be_const_key_weak(default, -1), be_const_int(0) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_CompositeColorProvider_tostring_closure) }, + { be_const_key_weak(providers, 4), be_const_var(0) }, + { be_const_key_weak(_blend_colors, -1), be_const_closure(class_CompositeColorProvider__blend_colors_closure) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_CompositeColorProvider_produce_value_closure) }, + })), + be_str_weak(CompositeColorProvider) +); + +extern const bclass be_class_PaletteGradientAnimation; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PaletteGradientAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* 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(init), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(palette_gradient), + }), + 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: _update_value_buffer +********************************************************************/ +be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name */ + be_nested_proto( + 16, /* nstack */ + 2, /* argc */ + 2, /* 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(shift_period), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(get_strip_length), + /* K3 */ be_nested_str_weak(value_buffer), + /* K4 */ be_nested_str_weak(resize), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(scale_uint), + /* K7 */ be_const_int(0), + /* K8 */ be_const_real_hex(0x447A0000), + /* K9 */ be_const_int(1), + }), + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x7C0C0200, // 0003 CALL R3 1 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x88140103, // 0005 GETMBR R5 R0 K3 + 0x7C100200, // 0006 CALL R4 1 + 0x20100803, // 0007 NE R4 R4 R3 + 0x78120003, // 0008 JMPF R4 #000D + 0x88100103, // 0009 GETMBR R4 R0 K3 + 0x8C100904, // 000A GETMET R4 R4 K4 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0xB8120A00, // 000D GETNGBL R4 K5 + 0x8C100906, // 000E GETMET R4 R4 K6 + 0x10180202, // 000F MOD R6 R1 R2 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x5C200400, // 0011 MOVE R8 R2 + 0x58240007, // 0012 LDCONST R9 K7 + 0x542A03E7, // 0013 LDINT R10 1000 + 0x7C100C00, // 0014 CALL R4 6 + 0x0C100908, // 0015 DIV R4 R4 K8 + 0x60140009, // 0016 GETGBL R5 G9 + 0x08180803, // 0017 MUL R6 R4 R3 + 0x7C140200, // 0018 CALL R5 1 + 0x58180007, // 0019 LDCONST R6 K7 + 0x141C0C03, // 001A LT R7 R6 R3 + 0x781E000D, // 001B JMPF R7 #002A + 0x001C0C05, // 001C ADD R7 R6 R5 + 0x101C0E03, // 001D MOD R7 R7 R3 + 0x88200103, // 001E GETMBR R8 R0 K3 + 0xB8260A00, // 001F GETNGBL R9 K5 + 0x8C241306, // 0020 GETMET R9 R9 K6 + 0x5C2C0E00, // 0021 MOVE R11 R7 + 0x58300007, // 0022 LDCONST R12 K7 + 0x04340709, // 0023 SUB R13 R3 K9 + 0x58380007, // 0024 LDCONST R14 K7 + 0x543E0063, // 0025 LDINT R15 100 + 0x7C240C00, // 0026 CALL R9 6 + 0x98200C09, // 0027 SETIDX R8 R6 R9 + 0x00180D09, // 0028 ADD R6 R6 K9 + 0x7001FFEF, // 0029 JMP #001A + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PaletteGradientAnimation +********************************************************************/ +extern const bclass be_class_PalettePatternAnimation; +be_local_class(PaletteGradientAnimation, + 0, + &be_class_PalettePatternAnimation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { 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(shift_period, -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(default, -1), be_const_int(10000) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + })) ) } )) }, + })) ) } )) }, + { 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_str_weak(PaletteGradientAnimation) +); + +/******************************************************************** +** Solidified function: create_engine +********************************************************************/ +be_local_closure(create_engine, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(animation_engine), + }), + be_str_weak(create_engine), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 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), @@ -14617,242 +14500,280 @@ be_local_class(EventManager, })), be_str_weak(EventManager) ); -// compact class 'ColorCycleColorProvider' ktab size: 17, total: 36 (saved 152 bytes) -static const bvalue be_ktab_class_ColorCycleColorProvider[17] = { - /* K0 */ be_nested_str_weak(palette), - /* K1 */ be_const_int(0), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(tasmota), - /* K4 */ be_nested_str_weak(scale_uint), - /* K5 */ be_nested_str_weak(cycle_period), - /* K6 */ be_nested_str_weak(current_color), - /* K7 */ be_nested_str_weak(current_index), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(set_param), - /* K10 */ be_nested_str_weak(init), - /* K11 */ be_nested_str_weak(manual), - /* K12 */ be_nested_str_weak(auto), - /* K13 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), - /* K14 */ be_nested_str_weak(ColorCycleColorProvider_X28uninitialized_X29), - /* K15 */ be_nested_str_weak(copy), - /* K16 */ be_nested_str_weak(push), + +/******************************************************************** +** Solidified function: cosine_osc +********************************************************************/ +be_local_closure(cosine_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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(oscillator_value), + /* K2 */ be_nested_str_weak(form), + /* K3 */ be_nested_str_weak(COSINE), + }), + be_str_weak(cosine_osc), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_color_provider +********************************************************************/ +be_local_closure(is_color_provider, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(color_provider), + }), + be_str_weak(is_color_provider), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x6004000F, // 0000 GETGBL R1 G15 + 0x5C080000, // 0001 MOVE R2 R0 + 0xB80E0000, // 0002 GETNGBL R3 K0 + 0x880C0701, // 0003 GETMBR R3 R3 K1 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_event_handlers +********************************************************************/ +be_local_closure(get_event_handlers, /* 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(event_manager), + /* K2 */ be_nested_str_weak(get_handlers), + }), + be_str_weak(get_event_handlers), + &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 'WaveAnimation' ktab size: 41, total: 69 (saved 224 bytes) +static const bvalue be_ktab_class_WaveAnimation[41] = { + /* K0 */ be_nested_str_weak(wave_table), + /* K1 */ be_nested_str_weak(resize), + /* K2 */ be_nested_str_weak(wave_type), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(scale_uint), + /* K6 */ be_const_int(1), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(sine), + /* K9 */ be_nested_str_weak(triangle), + /* K10 */ be_nested_str_weak(square), + /* K11 */ be_nested_str_weak(sawtooth), + /* K12 */ be_nested_str_weak(unknown), + /* K13 */ be_nested_str_weak(color), + /* K14 */ be_nested_str_weak(animation), + /* K15 */ be_nested_str_weak(is_value_provider), + /* K16 */ be_nested_str_weak(0x_X2508x), + /* K17 */ be_nested_str_weak(WaveAnimation_X28_X25s_X2C_X20color_X3D_X25s_X2C_X20freq_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K18 */ be_nested_str_weak(frequency), + /* K19 */ be_nested_str_weak(wave_speed), + /* K20 */ be_nested_str_weak(priority), + /* K21 */ be_nested_str_weak(is_running), + /* K22 */ be_nested_str_weak(engine), + /* K23 */ be_nested_str_weak(get_strip_length), + /* K24 */ be_nested_str_weak(width), + /* K25 */ be_nested_str_weak(current_colors), + /* K26 */ be_nested_str_weak(size), + /* K27 */ be_nested_str_weak(set_pixel_color), + /* K28 */ be_nested_str_weak(_init_wave_table), + /* K29 */ be_nested_str_weak(update), + /* K30 */ be_nested_str_weak(start_time), + /* K31 */ be_nested_str_weak(time_offset), + /* K32 */ be_nested_str_weak(_calculate_wave), + /* K33 */ be_nested_str_weak(init), + /* K34 */ be_nested_str_weak(phase), + /* K35 */ be_nested_str_weak(amplitude), + /* K36 */ be_nested_str_weak(center_level), + /* K37 */ be_nested_str_weak(back_color), + /* K38 */ be_nested_str_weak(is_color_provider), + /* K39 */ be_nested_str_weak(get_color_for_value), + /* K40 */ be_nested_str_weak(resolve_value), }; -extern const bclass be_class_ColorCycleColorProvider; +extern const bclass be_class_WaveAnimation; /******************************************************************** -** Solidified function: get_color_for_value +** Solidified function: _init_wave_table ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* name */ +be_local_closure(class_WaveAnimation__init_wave_table, /* name */ be_nested_proto( 12, /* nstack */ - 3, /* argc */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(get_color_for_value), + &be_ktab_class_WaveAnimation, /* shared constants */ + be_str_weak(_init_wave_table), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x6010000C, // 0001 GETGBL R4 G12 - 0x5C140600, // 0002 MOVE R5 R3 - 0x7C100200, // 0003 CALL R4 1 - 0x1C140901, // 0004 EQ R5 R4 K1 - 0x78160001, // 0005 JMPF R5 #0008 - 0x5415FFFE, // 0006 LDINT R5 -1 - 0x80040A00, // 0007 RET 1 R5 - 0x1C140902, // 0008 EQ R5 R4 K2 - 0x78160001, // 0009 JMPF R5 #000C - 0x94140701, // 000A GETIDX R5 R3 K1 - 0x80040A00, // 000B RET 1 R5 - 0x14140301, // 000C LT R5 R1 K1 - 0x78160001, // 000D JMPF R5 #0010 - 0x58040001, // 000E LDCONST R1 K1 - 0x70020003, // 000F JMP #0014 - 0x54160063, // 0010 LDINT R5 100 - 0x24140205, // 0011 GT R5 R1 R5 - 0x78160000, // 0012 JMPF R5 #0014 - 0x54060063, // 0013 LDINT R1 100 - 0xB8160600, // 0014 GETNGBL R5 K3 - 0x8C140B04, // 0015 GETMET R5 R5 K4 - 0x5C1C0200, // 0016 MOVE R7 R1 - 0x58200001, // 0017 LDCONST R8 K1 - 0x54260063, // 0018 LDINT R9 100 - 0x58280001, // 0019 LDCONST R10 K1 - 0x042C0902, // 001A SUB R11 R4 K2 - 0x7C140C00, // 001B CALL R5 6 - 0x28180A04, // 001C GE R6 R5 R4 - 0x781A0001, // 001D JMPF R6 #0020 - 0x04180902, // 001E SUB R6 R4 K2 - 0x5C140C00, // 001F MOVE R5 R6 - 0x94180605, // 0020 GETIDX R6 R3 R5 - 0x80040C00, // 0021 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_produce_value, /* name */ - be_nested_proto( - 14, /* 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_ColorCycleColorProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x88100105, // 0001 GETMBR R4 R0 K5 - 0x6014000C, // 0002 GETGBL R5 G12 - 0x5C180600, // 0003 MOVE R6 R3 - 0x7C140200, // 0004 CALL R5 1 - 0x1C180B01, // 0005 EQ R6 R5 K1 - 0x781A0001, // 0006 JMPF R6 #0009 - 0x5419FFFE, // 0007 LDINT R6 -1 - 0x80040C00, // 0008 RET 1 R6 - 0x1C180B02, // 0009 EQ R6 R5 K2 - 0x781A0003, // 000A JMPF R6 #000F - 0x94180701, // 000B GETIDX R6 R3 K1 - 0x90020C06, // 000C SETMBR R0 K6 R6 - 0x88180106, // 000D GETMBR R6 R0 K6 - 0x80040C00, // 000E RET 1 R6 - 0x1C180901, // 000F EQ R6 R4 K1 - 0x781A0001, // 0010 JMPF R6 #0013 - 0x88180106, // 0011 GETMBR R6 R0 K6 - 0x80040C00, // 0012 RET 1 R6 - 0x10180404, // 0013 MOD R6 R2 R4 - 0xB81E0600, // 0014 GETNGBL R7 K3 - 0x8C1C0F04, // 0015 GETMET R7 R7 K4 - 0x5C240C00, // 0016 MOVE R9 R6 - 0x58280001, // 0017 LDCONST R10 K1 - 0x042C0902, // 0018 SUB R11 R4 K2 - 0x58300001, // 0019 LDCONST R12 K1 - 0x04340B02, // 001A SUB R13 R5 K2 - 0x7C1C0C00, // 001B CALL R7 6 - 0x28200E05, // 001C GE R8 R7 R5 - 0x78220001, // 001D JMPF R8 #0020 - 0x04200B02, // 001E SUB R8 R5 K2 - 0x5C1C1000, // 001F MOVE R7 R8 - 0x90020E07, // 0020 SETMBR R0 K7 R7 - 0x94200607, // 0021 GETIDX R8 R3 R7 - 0x90020C08, // 0022 SETMBR R0 K6 R8 - 0x88200106, // 0023 GETMBR R8 R0 K6 - 0x80041000, // 0024 RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_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_ColorCycleColorProvider, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0010, // 0001 JMPF R3 #0013 - 0x5C0C0400, // 0002 MOVE R3 R2 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x5C140600, // 0004 MOVE R5 R3 - 0x7C100200, // 0005 CALL R4 1 - 0x24100901, // 0006 GT R4 R4 K1 - 0x78120009, // 0007 JMPF R4 #0012 - 0x88100107, // 0008 GETMBR R4 R0 K7 - 0x6014000C, // 0009 GETGBL R5 G12 - 0x5C180600, // 000A MOVE R6 R3 - 0x7C140200, // 000B CALL R5 1 - 0x28100805, // 000C GE R4 R4 R5 - 0x78120000, // 000D JMPF R4 #000F - 0x90020F01, // 000E SETMBR R0 K7 K1 - 0x88100107, // 000F GETMBR R4 R0 K7 - 0x94100604, // 0010 GETIDX R4 R3 R4 - 0x90020C04, // 0011 SETMBR R0 K6 R4 - 0x70020017, // 0012 JMP #002B - 0x1C0C0308, // 0013 EQ R3 R1 K8 - 0x780E0015, // 0014 JMPF R3 #002B - 0x1C0C0502, // 0015 EQ R3 R2 K2 - 0x780E0013, // 0016 JMPF R3 #002B - 0x880C0100, // 0017 GETMBR R3 R0 K0 - 0x6010000C, // 0018 GETGBL R4 G12 - 0x5C140600, // 0019 MOVE R5 R3 - 0x7C100200, // 001A CALL R4 1 - 0x24100901, // 001B GT R4 R4 K1 - 0x78120009, // 001C JMPF R4 #0027 - 0x88100107, // 001D GETMBR R4 R0 K7 - 0x00100902, // 001E ADD R4 R4 K2 - 0x6014000C, // 001F GETGBL R5 G12 - 0x5C180600, // 0020 MOVE R6 R3 - 0x7C140200, // 0021 CALL R5 1 - 0x10100805, // 0022 MOD R4 R4 R5 - 0x90020E04, // 0023 SETMBR R0 K7 R4 - 0x88100107, // 0024 GETMBR R4 R0 K7 - 0x94100604, // 0025 GETIDX R4 R3 R4 - 0x90020C04, // 0026 SETMBR R0 K6 R4 - 0x8C100109, // 0027 GETMET R4 R0 K9 - 0x58180008, // 0028 LDCONST R6 K8 - 0x581C0001, // 0029 LDCONST R7 K1 - 0x7C100600, // 002A CALL R4 3 - 0x80000000, // 002B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_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_ColorCycleColorProvider, /* 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 - 0x8C08050A, // 0003 GETMET R2 R2 K10 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x940C0501, // 0007 GETIDX R3 R2 K1 - 0x90020C03, // 0008 SETMBR R0 K6 R3 - 0x90020F01, // 0009 SETMBR R0 K7 K1 - 0x80000000, // 000A RET 0 + ( &(const binstruction[108]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x540E00FF, // 0002 LDINT R3 256 + 0x7C040400, // 0003 CALL R1 2 + 0x88040102, // 0004 GETMBR R1 R0 K2 + 0x58080003, // 0005 LDCONST R2 K3 + 0x540E00FF, // 0006 LDINT R3 256 + 0x140C0403, // 0007 LT R3 R2 R3 + 0x780E0061, // 0008 JMPF R3 #006B + 0x580C0003, // 0009 LDCONST R3 K3 + 0x1C100303, // 000A EQ R4 R1 K3 + 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 + 0x58200003, // 0014 LDCONST R8 K3 + 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 + 0x58200003, // 0022 LDCONST R8 K3 + 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 + 0x58200003, // 0030 LDCONST R8 K3 + 0x5426003F, // 0031 LDINT R9 64 + 0x542A007F, // 0032 LDINT R10 128 + 0x582C0003, // 0033 LDCONST R11 K3 + 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 + 0x58200003, // 003B LDCONST R8 K3 + 0x5426003F, // 003C LDINT R9 64 + 0x542A007F, // 003D LDINT R10 128 + 0x582C0003, // 003E LDCONST R11 K3 + 0x7C140C00, // 003F CALL R5 6 + 0x5C0C0A00, // 0040 MOVE R3 R5 + 0x70020024, // 0041 JMP #0067 + 0x1C100306, // 0042 EQ R4 R1 K6 + 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 + 0x581C0003, // 004A LDCONST R7 K3 + 0x5422007F, // 004B LDINT R8 128 + 0x58240003, // 004C LDCONST R9 K3 + 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 + 0x581C0003, // 0055 LDCONST R7 K3 + 0x5422007F, // 0056 LDINT R8 128 + 0x58240003, // 0057 LDCONST R9 K3 + 0x542A00FE, // 0058 LDINT R10 255 + 0x7C100C00, // 0059 CALL R4 6 + 0x5C0C0800, // 005A MOVE R3 R4 + 0x7002000A, // 005B JMP #0067 + 0x1C100307, // 005C EQ R4 R1 K7 + 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 + 0x58100003, // 0063 LDCONST R4 K3 + 0x5C0C0800, // 0064 MOVE R3 R4 + 0x70020000, // 0065 JMP #0067 + 0x5C0C0400, // 0066 MOVE R3 R2 + 0x88100100, // 0067 GETMBR R4 R0 K0 + 0x98100403, // 0068 SETIDX R4 R2 R3 + 0x00080506, // 0069 ADD R2 R2 K6 + 0x7001FF9A, // 006A JMP #0006 + 0x80000000, // 006B RET 0 }) ) ); @@ -14862,7 +14783,913 @@ be_local_closure(class_ColorCycleColorProvider_init, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ +be_local_closure(class_WaveAnimation_tostring, /* name */ + be_nested_proto( + 14, /* 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_WaveAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x40080308, // 0002 CONNECT R2 R1 K8 + 0x40080309, // 0003 CONNECT R2 R1 K9 + 0x4008030A, // 0004 CONNECT R2 R1 K10 + 0x4008030B, // 0005 CONNECT R2 R1 K11 + 0x88080102, // 0006 GETMBR R2 R0 K2 + 0x940C0202, // 0007 GETIDX R3 R1 R2 + 0x4C100000, // 0008 LDNIL R4 + 0x200C0604, // 0009 NE R3 R3 R4 + 0x780E0001, // 000A JMPF R3 #000D + 0x940C0202, // 000B GETIDX R3 R1 R2 + 0x70020000, // 000C JMP #000E + 0x580C000C, // 000D LDCONST R3 K12 + 0x8810010D, // 000E GETMBR R4 R0 K13 + 0x4C140000, // 000F LDNIL R5 + 0xB81A1C00, // 0010 GETNGBL R6 K14 + 0x8C180D0F, // 0011 GETMET R6 R6 K15 + 0x5C200800, // 0012 MOVE R8 R4 + 0x7C180400, // 0013 CALL R6 2 + 0x781A0004, // 0014 JMPF R6 #001A + 0x60180008, // 0015 GETGBL R6 G8 + 0x5C1C0800, // 0016 MOVE R7 R4 + 0x7C180200, // 0017 CALL R6 1 + 0x5C140C00, // 0018 MOVE R5 R6 + 0x70020004, // 0019 JMP #001F + 0x60180018, // 001A GETGBL R6 G24 + 0x581C0010, // 001B LDCONST R7 K16 + 0x5C200800, // 001C MOVE R8 R4 + 0x7C180400, // 001D CALL R6 2 + 0x5C140C00, // 001E MOVE R5 R6 + 0x60180018, // 001F GETGBL R6 G24 + 0x581C0011, // 0020 LDCONST R7 K17 + 0x5C200600, // 0021 MOVE R8 R3 + 0x5C240A00, // 0022 MOVE R9 R5 + 0x88280112, // 0023 GETMBR R10 R0 K18 + 0x882C0113, // 0024 GETMBR R11 R0 K19 + 0x88300114, // 0025 GETMBR R12 R0 K20 + 0x88340115, // 0026 GETMBR R13 R0 K21 + 0x7C180E00, // 0027 CALL R6 7 + 0x80040C00, // 0028 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_WaveAnimation_render, /* 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_WaveAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x880C0115, // 0000 GETMBR R3 R0 K21 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x880C0116, // 0007 GETMBR R3 R0 K22 + 0x8C0C0717, // 0008 GETMET R3 R3 K23 + 0x7C0C0200, // 0009 CALL R3 1 + 0x58100003, // 000A LDCONST R4 K3 + 0x14140803, // 000B LT R5 R4 R3 + 0x7816000E, // 000C JMPF R5 #001C + 0x88140318, // 000D GETMBR R5 R1 K24 + 0x14140805, // 000E LT R5 R4 R5 + 0x78160009, // 000F JMPF R5 #001A + 0x88140119, // 0010 GETMBR R5 R0 K25 + 0x8C140B1A, // 0011 GETMET R5 R5 K26 + 0x7C140200, // 0012 CALL R5 1 + 0x14140805, // 0013 LT R5 R4 R5 + 0x78160004, // 0014 JMPF R5 #001A + 0x8C14031B, // 0015 GETMET R5 R1 K27 + 0x5C1C0800, // 0016 MOVE R7 R4 + 0x88200119, // 0017 GETMBR R8 R0 K25 + 0x94201004, // 0018 GETIDX R8 R8 R4 + 0x7C140600, // 0019 CALL R5 3 + 0x00100906, // 001A ADD R4 R4 K6 + 0x7001FFEE, // 001B JMP #000B + 0x50140200, // 001C LDBOOL R5 1 0 + 0x80040A00, // 001D RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_WaveAnimation_on_param_changed, /* name */ + be_nested_proto( + 5, /* 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_WaveAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x1C0C0302, // 0000 EQ R3 R1 K2 + 0x780E0001, // 0001 JMPF R3 #0004 + 0x8C0C011C, // 0002 GETMET R3 R0 K28 + 0x7C0C0200, // 0003 CALL R3 1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_WaveAnimation_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_WaveAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051D, // 0003 GETMET R2 R2 K29 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x88080113, // 0009 GETMBR R2 R0 K19 + 0x240C0503, // 000A GT R3 R2 K3 + 0x780E0011, // 000B JMPF R3 #001E + 0x880C011E, // 000C GETMBR R3 R0 K30 + 0x040C0203, // 000D SUB R3 R1 R3 + 0xB8120800, // 000E GETNGBL R4 K4 + 0x8C100905, // 000F GETMET R4 R4 K5 + 0x5C180400, // 0010 MOVE R6 R2 + 0x581C0003, // 0011 LDCONST R7 K3 + 0x542200FE, // 0012 LDINT R8 255 + 0x58240003, // 0013 LDCONST R9 K3 + 0x542A0009, // 0014 LDINT R10 10 + 0x7C100C00, // 0015 CALL R4 6 + 0x24140903, // 0016 GT R5 R4 K3 + 0x78160005, // 0017 JMPF R5 #001E + 0x08140604, // 0018 MUL R5 R3 R4 + 0x541A03E7, // 0019 LDINT R6 1000 + 0x0C140A06, // 001A DIV R5 R5 R6 + 0x541A00FF, // 001B LDINT R6 256 + 0x10140A06, // 001C MOD R5 R5 R6 + 0x90023E05, // 001D SETMBR R0 K31 R5 + 0x8C0C0120, // 001E GETMET R3 R0 K32 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x500C0200, // 0021 LDBOOL R3 1 0 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_WaveAnimation_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_WaveAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080521, // 0003 GETMET R2 R2 K33 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90023202, // 0008 SETMBR R0 K25 R2 + 0x90023F03, // 0009 SETMBR R0 K31 K3 + 0x60080012, // 000A GETGBL R2 G18 + 0x7C080000, // 000B CALL R2 0 + 0x90020002, // 000C SETMBR R0 K0 R2 + 0x8C08011C, // 000D GETMET R2 R0 K28 + 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[169]) { /* code */ + 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x8C080517, // 0001 GETMET R2 R2 K23 + 0x7C080200, // 0002 CALL R2 1 + 0x880C0112, // 0003 GETMBR R3 R0 K18 + 0x88100122, // 0004 GETMBR R4 R0 K34 + 0x88140123, // 0005 GETMBR R5 R0 K35 + 0x88180124, // 0006 GETMBR R6 R0 K36 + 0x881C0125, // 0007 GETMBR R7 R0 K37 + 0x8820010D, // 0008 GETMBR R8 R0 K13 + 0x88240119, // 0009 GETMBR R9 R0 K25 + 0x8C24131A, // 000A GETMET R9 R9 K26 + 0x7C240200, // 000B CALL R9 1 + 0x20241202, // 000C NE R9 R9 R2 + 0x78260003, // 000D JMPF R9 #0012 + 0x88240119, // 000E GETMBR R9 R0 K25 + 0x8C241301, // 000F GETMET R9 R9 K1 + 0x5C2C0400, // 0010 MOVE R11 R2 + 0x7C240400, // 0011 CALL R9 2 + 0x58240003, // 0012 LDCONST R9 K3 + 0x14281202, // 0013 LT R10 R9 R2 + 0x782A0092, // 0014 JMPF R10 #00A8 + 0xB82A0800, // 0015 GETNGBL R10 K4 + 0x8C281505, // 0016 GETMET R10 R10 K5 + 0x5C301200, // 0017 MOVE R12 R9 + 0x58340003, // 0018 LDCONST R13 K3 + 0x04380506, // 0019 SUB R14 R2 K6 + 0x583C0003, // 001A LDCONST R15 K3 + 0x544200FE, // 001B LDINT R16 255 + 0x7C280C00, // 001C CALL R10 6 + 0x082C1403, // 001D MUL R11 R10 R3 + 0x5432001F, // 001E LDINT R12 32 + 0x0C2C160C, // 001F DIV R11 R11 R12 + 0x002C1604, // 0020 ADD R11 R11 R4 + 0x8830011F, // 0021 GETMBR R12 R0 K31 + 0x002C160C, // 0022 ADD R11 R11 R12 + 0x543200FE, // 0023 LDINT R12 255 + 0x2C2C160C, // 0024 AND R11 R11 R12 + 0x88300100, // 0025 GETMBR R12 R0 K0 + 0x9430180B, // 0026 GETIDX R12 R12 R11 + 0xB8360800, // 0027 GETNGBL R13 K4 + 0x8C341B05, // 0028 GETMET R13 R13 K5 + 0x5C3C0A00, // 0029 MOVE R15 R5 + 0x58400003, // 002A LDCONST R16 K3 + 0x544600FE, // 002B LDINT R17 255 + 0x58480003, // 002C LDCONST R18 K3 + 0x544E007F, // 002D LDINT R19 128 + 0x7C340C00, // 002E CALL R13 6 + 0x58380003, // 002F LDCONST R14 K3 + 0x543E007F, // 0030 LDINT R15 128 + 0x283C180F, // 0031 GE R15 R12 R15 + 0x783E000D, // 0032 JMPF R15 #0041 + 0x543E007F, // 0033 LDINT R15 128 + 0x043C180F, // 0034 SUB R15 R12 R15 + 0xB8420800, // 0035 GETNGBL R16 K4 + 0x8C402105, // 0036 GETMET R16 R16 K5 + 0x5C481E00, // 0037 MOVE R18 R15 + 0x584C0003, // 0038 LDCONST R19 K3 + 0x5452007E, // 0039 LDINT R20 127 + 0x58540003, // 003A LDCONST R21 K3 + 0x5C581A00, // 003B MOVE R22 R13 + 0x7C400C00, // 003C CALL R16 6 + 0x5C3C2000, // 003D MOVE R15 R16 + 0x00400C0F, // 003E ADD R16 R6 R15 + 0x5C382000, // 003F MOVE R14 R16 + 0x7002000C, // 0040 JMP #004E + 0x543E007F, // 0041 LDINT R15 128 + 0x043C1E0C, // 0042 SUB R15 R15 R12 + 0xB8420800, // 0043 GETNGBL R16 K4 + 0x8C402105, // 0044 GETMET R16 R16 K5 + 0x5C481E00, // 0045 MOVE R18 R15 + 0x584C0003, // 0046 LDCONST R19 K3 + 0x5452007F, // 0047 LDINT R20 128 + 0x58540003, // 0048 LDCONST R21 K3 + 0x5C581A00, // 0049 MOVE R22 R13 + 0x7C400C00, // 004A CALL R16 6 + 0x5C3C2000, // 004B MOVE R15 R16 + 0x04400C0F, // 004C SUB R16 R6 R15 + 0x5C382000, // 004D MOVE R14 R16 + 0x543E00FE, // 004E LDINT R15 255 + 0x243C1C0F, // 004F GT R15 R14 R15 + 0x783E0001, // 0050 JMPF R15 #0053 + 0x543A00FE, // 0051 LDINT R14 255 + 0x70020002, // 0052 JMP #0056 + 0x143C1D03, // 0053 LT R15 R14 K3 + 0x783E0000, // 0054 JMPF R15 #0056 + 0x58380003, // 0055 LDCONST R14 K3 + 0x5C3C0E00, // 0056 MOVE R15 R7 + 0x54420009, // 0057 LDINT R16 10 + 0x24401C10, // 0058 GT R16 R14 R16 + 0x78420049, // 0059 JMPF R16 #00A4 + 0xB8421C00, // 005A GETNGBL R16 K14 + 0x8C402126, // 005B GETMET R16 R16 K38 + 0x5C481000, // 005C MOVE R18 R8 + 0x7C400400, // 005D CALL R16 2 + 0x78420009, // 005E JMPF R16 #0069 + 0x88401127, // 005F GETMBR R16 R8 K39 + 0x4C440000, // 0060 LDNIL R17 + 0x20402011, // 0061 NE R16 R16 R17 + 0x78420005, // 0062 JMPF R16 #0069 + 0x8C401127, // 0063 GETMET R16 R8 K39 + 0x5C481C00, // 0064 MOVE R18 R14 + 0x584C0003, // 0065 LDCONST R19 K3 + 0x7C400600, // 0066 CALL R16 3 + 0x5C3C2000, // 0067 MOVE R15 R16 + 0x7002003A, // 0068 JMP #00A4 + 0x8C400128, // 0069 GETMET R16 R0 K40 + 0x5C481000, // 006A MOVE R18 R8 + 0x584C000D, // 006B LDCONST R19 K13 + 0x54520009, // 006C LDINT R20 10 + 0x08501C14, // 006D MUL R20 R14 R20 + 0x00500214, // 006E ADD R20 R1 R20 + 0x7C400800, // 006F CALL R16 4 + 0x5C3C2000, // 0070 MOVE R15 R16 + 0x54420017, // 0071 LDINT R16 24 + 0x3C401E10, // 0072 SHR R16 R15 R16 + 0x544600FE, // 0073 LDINT R17 255 + 0x2C402011, // 0074 AND R16 R16 R17 + 0x5446000F, // 0075 LDINT R17 16 + 0x3C441E11, // 0076 SHR R17 R15 R17 + 0x544A00FE, // 0077 LDINT R18 255 + 0x2C442212, // 0078 AND R17 R17 R18 + 0x544A0007, // 0079 LDINT R18 8 + 0x3C481E12, // 007A SHR R18 R15 R18 + 0x544E00FE, // 007B LDINT R19 255 + 0x2C482413, // 007C AND R18 R18 R19 + 0x544E00FE, // 007D LDINT R19 255 + 0x2C4C1E13, // 007E AND R19 R15 R19 + 0xB8520800, // 007F GETNGBL R20 K4 + 0x8C502905, // 0080 GETMET R20 R20 K5 + 0x5C581C00, // 0081 MOVE R22 R14 + 0x585C0003, // 0082 LDCONST R23 K3 + 0x546200FE, // 0083 LDINT R24 255 + 0x58640003, // 0084 LDCONST R25 K3 + 0x5C682200, // 0085 MOVE R26 R17 + 0x7C500C00, // 0086 CALL R20 6 + 0x5C442800, // 0087 MOVE R17 R20 + 0xB8520800, // 0088 GETNGBL R20 K4 + 0x8C502905, // 0089 GETMET R20 R20 K5 + 0x5C581C00, // 008A MOVE R22 R14 + 0x585C0003, // 008B LDCONST R23 K3 + 0x546200FE, // 008C LDINT R24 255 + 0x58640003, // 008D LDCONST R25 K3 + 0x5C682400, // 008E MOVE R26 R18 + 0x7C500C00, // 008F CALL R20 6 + 0x5C482800, // 0090 MOVE R18 R20 + 0xB8520800, // 0091 GETNGBL R20 K4 + 0x8C502905, // 0092 GETMET R20 R20 K5 + 0x5C581C00, // 0093 MOVE R22 R14 + 0x585C0003, // 0094 LDCONST R23 K3 + 0x546200FE, // 0095 LDINT R24 255 + 0x58640003, // 0096 LDCONST R25 K3 + 0x5C682600, // 0097 MOVE R26 R19 + 0x7C500C00, // 0098 CALL R20 6 + 0x5C4C2800, // 0099 MOVE R19 R20 + 0x54520017, // 009A LDINT R20 24 + 0x38502014, // 009B SHL R20 R16 R20 + 0x5456000F, // 009C LDINT R21 16 + 0x38542215, // 009D SHL R21 R17 R21 + 0x30502815, // 009E OR R20 R20 R21 + 0x54560007, // 009F LDINT R21 8 + 0x38542415, // 00A0 SHL R21 R18 R21 + 0x30502815, // 00A1 OR R20 R20 R21 + 0x30502813, // 00A2 OR R20 R20 R19 + 0x5C3C2800, // 00A3 MOVE R15 R20 + 0x88400119, // 00A4 GETMBR R16 R0 K25 + 0x9840120F, // 00A5 SETIDX R16 R9 R15 + 0x00241306, // 00A6 ADD R9 R9 K6 + 0x7001FF6A, // 00A7 JMP #0013 + 0x80000000, // 00A8 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: WaveAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(WaveAnimation, + 3, + &be_class_Animation, + be_nested_map(11, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(current_colors, -1), be_const_var(0) }, + { be_const_key_weak(update, -1), be_const_closure(class_WaveAnimation_update_closure) }, + { be_const_key_weak(wave_table, -1), be_const_var(2) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_WaveAnimation_tostring_closure) }, + { be_const_key_weak(render, 7), be_const_closure(class_WaveAnimation_render_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_WaveAnimation_on_param_changed_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_WaveAnimation_init_closure) }, + { be_const_key_weak(time_offset, 1), be_const_var(1) }, + { 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, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(frequency, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(32) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(amplitude, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(color, -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(default, -1), be_const_int(-65536) }, + })) ) } )) }, + { be_const_key_weak(wave_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(50) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(wave_type, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(3) }, + })) ) } )) }, + { be_const_key_weak(back_color, -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(default, -1), be_const_int(-16777216) }, + })) ) } )) }, + { be_const_key_weak(center_level, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(_init_wave_table, 6), be_const_closure(class_WaveAnimation__init_wave_table_closure) }, + { be_const_key_weak(_calculate_wave, -1), be_const_closure(class_WaveAnimation__calculate_wave_closure) }, + })), + be_str_weak(WaveAnimation) +); + +/******************************************************************** +** Solidified function: color_cycle_rainbow +********************************************************************/ +be_local_closure(color_cycle_rainbow, /* name */ + be_nested_proto( + 19, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_const_int(2), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(animation), + /* K8 */ be_nested_str_weak(color_cycle), + /* K9 */ be_nested_str_weak(palette), + /* K10 */ be_nested_str_weak(cycle_period), + }), + be_str_weak(color_cycle_rainbow), + &be_const_str_solidified, + ( &(const binstruction[97]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0203, // 0001 EQ R3 R1 R3 + 0x740E0001, // 0002 JMPT R3 #0005 + 0x140C0300, // 0003 LT R3 R1 K0 + 0x780E0000, // 0004 JMPF R3 #0006 + 0x54060005, // 0005 LDINT R1 6 + 0x600C0012, // 0006 GETGBL R3 G18 + 0x7C0C0000, // 0007 CALL R3 0 + 0x58100001, // 0008 LDCONST R4 K1 + 0x14140801, // 0009 LT R5 R4 R1 + 0x7816004B, // 000A JMPF R5 #0057 + 0xB8160400, // 000B GETNGBL R5 K2 + 0x8C140B03, // 000C GETMET R5 R5 K3 + 0x5C1C0800, // 000D MOVE R7 R4 + 0x58200001, // 000E LDCONST R8 K1 + 0x5C240200, // 000F MOVE R9 R1 + 0x58280001, // 0010 LDCONST R10 K1 + 0x542E0167, // 0011 LDINT R11 360 + 0x7C140C00, // 0012 CALL R5 6 + 0x4C180000, // 0013 LDNIL R6 + 0x4C1C0000, // 0014 LDNIL R7 + 0x4C200000, // 0015 LDNIL R8 + 0x5426003B, // 0016 LDINT R9 60 + 0x0C240A09, // 0017 DIV R9 R5 R9 + 0x542A0005, // 0018 LDINT R10 6 + 0x1024120A, // 0019 MOD R9 R9 R10 + 0x542A003B, // 001A LDINT R10 60 + 0x0C280A0A, // 001B DIV R10 R5 R10 + 0x04281409, // 001C SUB R10 R10 R9 + 0x542E00FE, // 001D LDINT R11 255 + 0x58300001, // 001E LDCONST R12 K1 + 0x60340009, // 001F GETGBL R13 G9 + 0x043A080A, // 0020 SUB R14 K4 R10 + 0x0838160E, // 0021 MUL R14 R11 R14 + 0x7C340200, // 0022 CALL R13 1 + 0x60380009, // 0023 GETGBL R14 G9 + 0x083C160A, // 0024 MUL R15 R11 R10 + 0x7C380200, // 0025 CALL R14 1 + 0x1C3C1301, // 0026 EQ R15 R9 K1 + 0x783E0003, // 0027 JMPF R15 #002C + 0x5C181600, // 0028 MOVE R6 R11 + 0x5C1C1C00, // 0029 MOVE R7 R14 + 0x5C201800, // 002A MOVE R8 R12 + 0x7002001B, // 002B JMP #0048 + 0x1C3C1304, // 002C EQ R15 R9 K4 + 0x783E0003, // 002D JMPF R15 #0032 + 0x5C181A00, // 002E MOVE R6 R13 + 0x5C1C1600, // 002F MOVE R7 R11 + 0x5C201800, // 0030 MOVE R8 R12 + 0x70020015, // 0031 JMP #0048 + 0x1C3C1300, // 0032 EQ R15 R9 K0 + 0x783E0003, // 0033 JMPF R15 #0038 + 0x5C181800, // 0034 MOVE R6 R12 + 0x5C1C1600, // 0035 MOVE R7 R11 + 0x5C201C00, // 0036 MOVE R8 R14 + 0x7002000F, // 0037 JMP #0048 + 0x1C3C1305, // 0038 EQ R15 R9 K5 + 0x783E0003, // 0039 JMPF R15 #003E + 0x5C181800, // 003A MOVE R6 R12 + 0x5C1C1A00, // 003B MOVE R7 R13 + 0x5C201600, // 003C MOVE R8 R11 + 0x70020009, // 003D JMP #0048 + 0x543E0003, // 003E LDINT R15 4 + 0x1C3C120F, // 003F EQ R15 R9 R15 + 0x783E0003, // 0040 JMPF R15 #0045 + 0x5C181C00, // 0041 MOVE R6 R14 + 0x5C1C1800, // 0042 MOVE R7 R12 + 0x5C201600, // 0043 MOVE R8 R11 + 0x70020002, // 0044 JMP #0048 + 0x5C181600, // 0045 MOVE R6 R11 + 0x5C1C1800, // 0046 MOVE R7 R12 + 0x5C201A00, // 0047 MOVE R8 R13 + 0x543E00FE, // 0048 LDINT R15 255 + 0x54420017, // 0049 LDINT R16 24 + 0x383C1E10, // 004A SHL R15 R15 R16 + 0x5442000F, // 004B LDINT R16 16 + 0x38400C10, // 004C SHL R16 R6 R16 + 0x303C1E10, // 004D OR R15 R15 R16 + 0x54420007, // 004E LDINT R16 8 + 0x38400E10, // 004F SHL R16 R7 R16 + 0x303C1E10, // 0050 OR R15 R15 R16 + 0x303C1E08, // 0051 OR R15 R15 R8 + 0x8C400706, // 0052 GETMET R16 R3 K6 + 0x5C481E00, // 0053 MOVE R18 R15 + 0x7C400400, // 0054 CALL R16 2 + 0x00100904, // 0055 ADD R4 R4 K4 + 0x7001FFB1, // 0056 JMP #0009 + 0xB8160E00, // 0057 GETNGBL R5 K7 + 0x8C140B08, // 0058 GETMET R5 R5 K8 + 0x5C1C0000, // 0059 MOVE R7 R0 + 0x7C140400, // 005A CALL R5 2 + 0x90161203, // 005B SETMBR R5 K9 R3 + 0x4C180000, // 005C LDNIL R6 + 0x20180406, // 005D NE R6 R2 R6 + 0x781A0000, // 005E JMPF R6 #0060 + 0x90161402, // 005F SETMBR R5 K10 R2 + 0x80040A00, // 0060 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sparkle_white +********************************************************************/ +be_local_closure(sparkle_white, /* 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(sparkle_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(name), + /* K4 */ be_nested_str_weak(sparkle_white), + }), + be_str_weak(sparkle_white), + &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 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'EventHandler' ktab size: 8, total: 17 (saved 72 bytes) +static const bvalue be_ktab_class_EventHandler[8] = { + /* 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), + /* K7 */ be_nested_str_weak(has_condition), +}; + + +extern const bclass be_class_EventHandler; + +/******************************************************************** +** 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: 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: 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 function: get_info +********************************************************************/ +be_local_closure(class_EventHandler_get_info, /* 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_EventHandler, /* shared constants */ + be_str_weak(get_info), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x88080103, // 0002 GETMBR R2 R0 K3 + 0x98060602, // 0003 SETIDX R1 K3 R2 + 0x88080104, // 0004 GETMBR R2 R0 K4 + 0x98060802, // 0005 SETIDX R1 K4 R2 + 0x88080100, // 0006 GETMBR R2 R0 K0 + 0x98060002, // 0007 SETIDX R1 K0 R2 + 0x88080101, // 0008 GETMBR R2 R0 K1 + 0x4C0C0000, // 0009 LDNIL R3 + 0x20080403, // 000A NE R2 R2 R3 + 0x98060E02, // 000B SETIDX R1 K7 R2 + 0x88080106, // 000C GETMBR R2 R0 K6 + 0x98060C02, // 000D SETIDX R1 K6 R2 + 0x80040200, // 000E RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: EventHandler +********************************************************************/ +be_local_class(EventHandler, + 6, + NULL, + be_nested_map(10, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(set_active, -1), be_const_closure(class_EventHandler_set_active_closure) }, + { be_const_key_weak(metadata, 3), be_const_var(5) }, + { be_const_key_weak(is_active, 0), be_const_var(4) }, + { be_const_key_weak(condition, -1), be_const_var(2) }, + { be_const_key_weak(init, -1), be_const_closure(class_EventHandler_init_closure) }, + { be_const_key_weak(event_name, 4), be_const_var(0) }, + { be_const_key_weak(get_info, -1), be_const_closure(class_EventHandler_get_info_closure) }, + { be_const_key_weak(priority, -1), be_const_var(3) }, + { be_const_key_weak(execute, 1), be_const_closure(class_EventHandler_execute_closure) }, + { be_const_key_weak(callback_func, -1), be_const_var(1) }, + })), + be_str_weak(EventHandler) +); +// compact class 'Animation' ktab size: 27, total: 52 (saved 200 bytes) +static const bvalue be_ktab_class_Animation[27] = { + /* K0 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(priority), + /* K3 */ be_nested_str_weak(duration), + /* K4 */ be_nested_str_weak(loop), + /* K5 */ be_nested_str_weak(is_running), + /* K6 */ be_nested_str_weak(get_color_at), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(get_param_value), + /* K9 */ be_nested_str_weak(color), + /* K10 */ be_nested_str_weak(update), + /* K11 */ be_nested_str_weak(opacity), + /* K12 */ be_nested_str_weak(fill_pixels), + /* K13 */ be_nested_str_weak(apply_brightness), + /* K14 */ be_nested_str_weak(current_time), + /* K15 */ be_nested_str_weak(start_time), + /* K16 */ be_nested_str_weak(tasmota), + /* K17 */ be_nested_str_weak(scale_uint), + /* K18 */ be_nested_str_weak(engine), + /* K19 */ be_nested_str_weak(time_ms), + /* K20 */ be_nested_str_weak(_start_value_providers), + /* K21 */ be_nested_str_weak(init), + /* K22 */ be_nested_str_weak(values), + /* K23 */ be_nested_str_weak(animation), + /* K24 */ be_nested_str_weak(is_value_provider), + /* K25 */ be_nested_str_weak(start), + /* K26 */ be_nested_str_weak(stop_iteration), +}; + + +extern const bclass be_class_Animation; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_Animation_tostring, /* name */ be_nested_proto( 8, /* nstack */ 1, /* argc */ @@ -14872,36 +15699,19 @@ be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + &be_ktab_class_Animation, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA8020012, // 0000 EXBLK 0 #0014 - 0x88040105, // 0001 GETMBR R1 R0 K5 - 0x1C040301, // 0002 EQ R1 R1 K1 - 0x78060001, // 0003 JMPF R1 #0006 - 0x5804000B, // 0004 LDCONST R1 K11 - 0x70020000, // 0005 JMP #0007 - 0x5804000C, // 0006 LDCONST R1 K12 - 0x60080018, // 0007 GETGBL R2 G24 - 0x580C000D, // 0008 LDCONST R3 K13 - 0x6010000C, // 0009 GETGBL R4 G12 - 0x88140100, // 000A GETMBR R5 R0 K0 - 0x7C100200, // 000B CALL R4 1 - 0x88140105, // 000C GETMBR R5 R0 K5 - 0x5C180200, // 000D MOVE R6 R1 - 0x881C0107, // 000E GETMBR R7 R0 K7 - 0x7C080A00, // 000F CALL R2 5 - 0xA8040001, // 0010 EXBLK 1 1 - 0x80040400, // 0011 RET 1 R2 - 0xA8040001, // 0012 EXBLK 1 1 - 0x70020004, // 0013 JMP #0019 - 0xAC040000, // 0014 CATCH R1 0 0 - 0x70020001, // 0015 JMP #0018 - 0x80061C00, // 0016 RET 1 K14 - 0x70020000, // 0017 JMP #0019 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x881C0105, // 0006 GETMBR R7 R0 K5 + 0x7C040C00, // 0007 CALL R1 6 + 0x80040200, // 0008 RET 1 R1 }) ) ); @@ -14909,9 +15719,272 @@ be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ /******************************************************************** -** Solidified function: add_color +** Solidified function: get_color ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_add_color, /* name */ +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 */ + 0x8C080106, // 0000 GETMET R2 R0 K6 + 0x58100007, // 0001 LDCONST R4 K7 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8C0C0108, // 0000 GETMET R3 R0 K8 + 0x58140009, // 0001 LDCONST R5 K9 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_Animation_render, /* 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_Animation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x880C0105, // 0000 GETMBR R3 R0 K5 + 0x5C100600, // 0001 MOVE R4 R3 + 0x78120002, // 0002 JMPF R4 #0006 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100204, // 0004 EQ R4 R1 R4 + 0x78120001, // 0005 JMPF R4 #0008 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x80040800, // 0007 RET 1 R4 + 0x8C10010A, // 0008 GETMET R4 R0 K10 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C100400, // 000A CALL R4 2 + 0x88100109, // 000B GETMBR R4 R0 K9 + 0x8814010B, // 000C GETMBR R5 R0 K11 + 0x8C18030C, // 000D GETMET R6 R1 K12 + 0x5C200800, // 000E MOVE R8 R4 + 0x7C180400, // 000F CALL R6 2 + 0x541A00FE, // 0010 LDINT R6 255 + 0x14180A06, // 0011 LT R6 R5 R6 + 0x781A0002, // 0012 JMPF R6 #0016 + 0x8C18030D, // 0013 GETMET R6 R1 K13 + 0x5C200A00, // 0014 MOVE R8 R5 + 0x7C180400, // 0015 CALL R6 2 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x80040C00, // 0017 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_progress +********************************************************************/ +be_local_closure(class_Animation_get_progress, /* 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_Animation, /* shared constants */ + be_str_weak(get_progress), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x88040103, // 0000 GETMBR R1 R0 K3 + 0x18080307, // 0001 LE R2 R1 K7 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80060E00, // 0003 RET 1 K7 + 0x8808010E, // 0004 GETMBR R2 R0 K14 + 0x880C010F, // 0005 GETMBR R3 R0 K15 + 0x04080403, // 0006 SUB R2 R2 R3 + 0x100C0401, // 0007 MOD R3 R2 R1 + 0x88100104, // 0008 GETMBR R4 R0 K4 + 0x5C140800, // 0009 MOVE R5 R4 + 0x74160003, // 000A JMPT R5 #000F + 0x28140401, // 000B GE R5 R2 R1 + 0x78160001, // 000C JMPF R5 #000F + 0x541600FE, // 000D LDINT R5 255 + 0x80040A00, // 000E RET 1 R5 + 0xB8162000, // 000F GETNGBL R5 K16 + 0x8C140B11, // 0010 GETMET R5 R5 K17 + 0x5C1C0600, // 0011 MOVE R7 R3 + 0x58200007, // 0012 LDCONST R8 K7 + 0x5C240200, // 0013 MOVE R9 R1 + 0x58280007, // 0014 LDCONST R10 K7 + 0x542E00FE, // 0015 LDINT R11 255 + 0x7C140C00, // 0016 CALL R5 6 + 0x80040A00, // 0017 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_Animation_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_Animation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x1C0C0305, // 0000 EQ R3 R1 K5 + 0x780E000E, // 0001 JMPF R3 #0011 + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x1C0C0403, // 0003 EQ R3 R2 R3 + 0x780E0008, // 0004 JMPF R3 #000E + 0x880C0112, // 0005 GETMBR R3 R0 K18 + 0x880C0713, // 0006 GETMBR R3 R3 K19 + 0x90021E03, // 0007 SETMBR R0 K15 R3 + 0x8810010F, // 0008 GETMBR R4 R0 K15 + 0x90021C04, // 0009 SETMBR R0 K14 R4 + 0x8C100114, // 000A GETMET R4 R0 K20 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x70020002, // 000D JMP #0011 + 0x500C0000, // 000E LDBOOL R3 0 0 + 0x1C0C0403, // 000F EQ R3 R2 R3 + 0x780DFFFF, // 0010 JMPF R3 #0011 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[ 9]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080515, // 0003 GETMET R2 R2 K21 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90021F07, // 0006 SETMBR R0 K15 K7 + 0x90021D07, // 0007 SETMBR R0 K14 K7 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_Animation_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_Animation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x500C0200, // 0001 LDBOOL R3 1 0 + 0x980A0A03, // 0002 SETIDX R2 K5 R3 + 0x4C080000, // 0003 LDNIL R2 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x5C080200, // 0006 MOVE R2 R1 + 0x70020001, // 0007 JMP #000A + 0x88080112, // 0008 GETMBR R2 R0 K18 + 0x88080513, // 0009 GETMBR R2 R2 K19 + 0x90021E02, // 000A SETMBR R0 K15 R2 + 0x880C010F, // 000B GETMBR R3 R0 K15 + 0x90021C03, // 000C SETMBR R0 K14 R3 + 0x8C0C0114, // 000D GETMET R3 R0 K20 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x80040000, // 0010 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _start_value_providers +********************************************************************/ +be_local_closure(class_Animation__start_value_providers, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -14921,18 +15994,36 @@ be_local_closure(class_ColorCycleColorProvider_add_color, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ColorCycleColorProvider, /* shared constants */ - be_str_weak(add_color), + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(_start_value_providers), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C0C050F, // 0001 GETMET R3 R2 K15 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C100710, // 0003 GETMET R4 R3 K16 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x90020003, // 0006 SETMBR R0 K0 R3 - 0x80040000, // 0007 RET 1 R0 + ( &(const binstruction[26]) { /* code */ + 0x60080010, // 0000 GETGBL R2 G16 + 0x880C0116, // 0001 GETMBR R3 R0 K22 + 0x7C080200, // 0002 CALL R2 1 + 0xA8020011, // 0003 EXBLK 0 #0016 + 0x5C0C0400, // 0004 MOVE R3 R2 + 0x7C0C0000, // 0005 CALL R3 0 + 0xB8122E00, // 0006 GETNGBL R4 K23 + 0x8C100918, // 0007 GETMET R4 R4 K24 + 0x5C180600, // 0008 MOVE R6 R3 + 0x7C100400, // 0009 CALL R4 2 + 0x78120009, // 000A JMPF R4 #0015 + 0xA8020004, // 000B EXBLK 0 #0011 + 0x8C100719, // 000C GETMET R4 R3 K25 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0xA8040001, // 000F EXBLK 1 1 + 0x70020003, // 0010 JMP #0015 + 0xAC100001, // 0011 CATCH R4 0 1 + 0x70020000, // 0012 JMP #0014 + 0x70020000, // 0013 JMP #0015 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x7001FFED, // 0015 JMP #0004 + 0x5808001A, // 0016 LDCONST R2 K26 + 0xAC080200, // 0017 CATCH R2 1 0 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x80000000, // 0019 RET 0 }) ) ); @@ -14940,112 +16031,565 @@ be_local_closure(class_ColorCycleColorProvider_add_color, /* name */ /******************************************************************** -** Solidified class: ColorCycleColorProvider +** Solidified function: update ********************************************************************/ -extern const bclass be_class_ColorProvider; -be_local_class(ColorCycleColorProvider, +be_local_closure(class_Animation_update, /* name */ + be_nested_proto( + 9, /* 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[29]) { /* code */ + 0x88080105, // 0000 GETMBR R2 R0 K5 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x740E0001, // 0002 JMPT R3 #0005 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x80040600, // 0004 RET 1 R3 + 0x90021C01, // 0005 SETMBR R0 K14 R1 + 0x880C010E, // 0006 GETMBR R3 R0 K14 + 0x8810010F, // 0007 GETMBR R4 R0 K15 + 0x040C0604, // 0008 SUB R3 R3 R4 + 0x88100103, // 0009 GETMBR R4 R0 K3 + 0x88140104, // 000A GETMBR R5 R0 K4 + 0x24180907, // 000B GT R6 R4 K7 + 0x781A000D, // 000C JMPF R6 #001B + 0x28180604, // 000D GE R6 R3 R4 + 0x781A000B, // 000E JMPF R6 #001B + 0x78160005, // 000F JMPF R5 #0016 + 0x0C180604, // 0010 DIV R6 R3 R4 + 0x881C010F, // 0011 GETMBR R7 R0 K15 + 0x08200C04, // 0012 MUL R8 R6 R4 + 0x001C0E08, // 0013 ADD R7 R7 R8 + 0x90021E07, // 0014 SETMBR R0 K15 R7 + 0x70020004, // 0015 JMP #001B + 0x88180116, // 0016 GETMBR R6 R0 K22 + 0x501C0000, // 0017 LDBOOL R7 0 0 + 0x981A0A07, // 0018 SETIDX R6 K5 R7 + 0x50180000, // 0019 LDBOOL R6 0 0 + 0x80040C00, // 001A RET 1 R6 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x80040C00, // 001C RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: Animation +********************************************************************/ +extern const bclass be_class_ParameterizedObject; +be_local_class(Animation, 2, - &be_class_ColorProvider, - be_nested_map(9, + &be_class_ParameterizedObject, + be_nested_map(13, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(current_color, -1), be_const_var(0) }, - { be_const_key_weak(current_index, 0), be_const_var(1) }, - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorCycleColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(produce_value, -1), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_Animation_tostring_closure) }, + { be_const_key_weak(get_color, -1), be_const_closure(class_Animation_get_color_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, + { be_const_key_weak(render, -1), be_const_closure(class_Animation_render_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_Animation_init_closure) }, + { be_const_key_weak(current_time, -1), be_const_var(1) }, + { be_const_key_weak(on_param_changed, 4), be_const_closure(class_Animation_on_param_changed_closure) }, + { be_const_key_weak(get_progress, 5), be_const_closure(class_Animation_get_progress_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_Animation_start_closure) }, + { be_const_key_weak(_start_value_providers, -1), be_const_closure(class_Animation__start_value_providers_closure) }, + { be_const_key_weak(start_time, -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(3, + be_const_map( * be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(cycle_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(priority, -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(default, -1), be_const_int(5000) }, + { be_const_key_weak(default, -1), be_const_int(10) }, { be_const_key_weak(min, -1), be_const_int(0) }, })) ) } )) }, - { be_const_key_weak(next, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(name, 3), 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(default, -1), be_nested_str_weak(animation) }, + { be_const_key_weak(type, -1), be_nested_str_weak(string) }, + })) ) } )) }, + { be_const_key_weak(color, 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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(is_running, 5), 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(default, -1), be_const_bool(0) }, + { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, + })) ) } )) }, + { be_const_key_weak(opacity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(loop, 0), 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(default, -1), be_const_bool(1) }, + { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, + })) ) } )) }, + { be_const_key_weak(duration, -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(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(get_color_at, 2), be_const_closure(class_Animation_get_color_at_closure) }, + })), + be_str_weak(Animation) +); + +/******************************************************************** +** Solidified function: is_user_function +********************************************************************/ +be_local_closure(is_user_function, /* 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[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K2 */ be_nested_str_weak(contains), + }), + be_str_weak(is_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080301, // 0001 GETMBR R2 R1 K1 + 0x8C080502, // 0002 GETMET R2 R2 K2 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C080400, // 0004 CALL R2 2 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: register_user_function +********************************************************************/ +be_local_closure(register_user_function, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(global), + /* K1 */ be_nested_str_weak(_animation_user_functions), + }), + be_str_weak(register_user_function), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0501, // 0001 GETMBR R3 R2 K1 + 0x980C0001, // 0002 SETIDX R3 R0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + +// compact class 'BeaconAnimation' ktab size: 17, total: 21 (saved 32 bytes) +static const bvalue be_ktab_class_BeaconAnimation[17] = { + /* K0 */ be_nested_str_weak(engine), + /* K1 */ be_nested_str_weak(time_ms), + /* K2 */ be_nested_str_weak(width), + /* K3 */ be_nested_str_weak(back_color), + /* K4 */ be_nested_str_weak(pos), + /* K5 */ be_nested_str_weak(slew_size), + /* K6 */ be_nested_str_weak(beacon_size), + /* K7 */ be_nested_str_weak(color), + /* K8 */ be_const_int(-16777216), + /* K9 */ be_nested_str_weak(fill_pixels), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(set_pixel_color), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(tasmota), + /* K14 */ be_nested_str_weak(scale_int), + /* K15 */ be_nested_str_weak(blend_linear), + /* K16 */ be_nested_str_weak(BeaconAnimation_X28color_X3D0x_X2508x_X2C_X20pos_X3D_X25s_X2C_X20beacon_size_X3D_X25s_X2C_X20slew_size_X3D_X25s_X29), +}; + + +extern const bclass be_class_BeaconAnimation; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_BeaconAnimation_render, /* name */ + be_nested_proto( + 23, /* 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_BeaconAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[106]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0203, // 0001 EQ R3 R1 R3 + 0x780E0001, // 0002 JMPF R3 #0005 + 0x500C0000, // 0003 LDBOOL R3 0 0 + 0x80040600, // 0004 RET 1 R3 + 0x4C0C0000, // 0005 LDNIL R3 + 0x1C0C0403, // 0006 EQ R3 R2 R3 + 0x780E0001, // 0007 JMPF R3 #000A + 0x880C0100, // 0008 GETMBR R3 R0 K0 + 0x88080701, // 0009 GETMBR R2 R3 K1 + 0x880C0302, // 000A GETMBR R3 R1 K2 + 0x88100103, // 000B GETMBR R4 R0 K3 + 0x88140104, // 000C GETMBR R5 R0 K4 + 0x88180105, // 000D GETMBR R6 R0 K5 + 0x881C0106, // 000E GETMBR R7 R0 K6 + 0x88200107, // 000F GETMBR R8 R0 K7 + 0x20240908, // 0010 NE R9 R4 K8 + 0x78260002, // 0011 JMPF R9 #0015 + 0x8C240309, // 0012 GETMET R9 R1 K9 + 0x5C2C0800, // 0013 MOVE R11 R4 + 0x7C240400, // 0014 CALL R9 2 + 0x5C240A00, // 0015 MOVE R9 R5 + 0x00280A07, // 0016 ADD R10 R5 R7 + 0x142C130A, // 0017 LT R11 R9 K10 + 0x782E0000, // 0018 JMPF R11 #001A + 0x5824000A, // 0019 LDCONST R9 K10 + 0x282C1403, // 001A GE R11 R10 R3 + 0x782E0000, // 001B JMPF R11 #001D + 0x5C280600, // 001C MOVE R10 R3 + 0x5C2C1200, // 001D MOVE R11 R9 + 0x1430160A, // 001E LT R12 R11 R10 + 0x78320005, // 001F JMPF R12 #0026 + 0x8C30030B, // 0020 GETMET R12 R1 K11 + 0x5C381600, // 0021 MOVE R14 R11 + 0x5C3C1000, // 0022 MOVE R15 R8 + 0x7C300600, // 0023 CALL R12 3 + 0x002C170C, // 0024 ADD R11 R11 K12 + 0x7001FFF7, // 0025 JMP #001E + 0x24300D0A, // 0026 GT R12 R6 K10 + 0x7832003F, // 0027 JMPF R12 #0068 + 0x04300A06, // 0028 SUB R12 R5 R6 + 0x5C340A00, // 0029 MOVE R13 R5 + 0x1438190A, // 002A LT R14 R12 K10 + 0x783A0000, // 002B JMPF R14 #002D + 0x5830000A, // 002C LDCONST R12 K10 + 0x28381A03, // 002D GE R14 R13 R3 + 0x783A0000, // 002E JMPF R14 #0030 + 0x5C340600, // 002F MOVE R13 R3 + 0x5C2C1800, // 0030 MOVE R11 R12 + 0x1438160D, // 0031 LT R14 R11 R13 + 0x783A0013, // 0032 JMPF R14 #0047 + 0xB83A1A00, // 0033 GETNGBL R14 K13 + 0x8C381D0E, // 0034 GETMET R14 R14 K14 + 0x5C401600, // 0035 MOVE R16 R11 + 0x04440A06, // 0036 SUB R17 R5 R6 + 0x0444230C, // 0037 SUB R17 R17 K12 + 0x5C480A00, // 0038 MOVE R18 R5 + 0x544E00FE, // 0039 LDINT R19 255 + 0x5850000A, // 003A LDCONST R20 K10 + 0x7C380C00, // 003B CALL R14 6 + 0x8C3C030F, // 003C GETMET R15 R1 K15 + 0x5C440800, // 003D MOVE R17 R4 + 0x5C481000, // 003E MOVE R18 R8 + 0x5C4C1C00, // 003F MOVE R19 R14 + 0x7C3C0800, // 0040 CALL R15 4 + 0x8C40030B, // 0041 GETMET R16 R1 K11 + 0x5C481600, // 0042 MOVE R18 R11 + 0x5C4C1E00, // 0043 MOVE R19 R15 + 0x7C400600, // 0044 CALL R16 3 + 0x002C170C, // 0045 ADD R11 R11 K12 + 0x7001FFE9, // 0046 JMP #0031 + 0x00380A07, // 0047 ADD R14 R5 R7 + 0x003C0A07, // 0048 ADD R15 R5 R7 + 0x003C1E06, // 0049 ADD R15 R15 R6 + 0x14401D0A, // 004A LT R16 R14 K10 + 0x78420000, // 004B JMPF R16 #004D + 0x5838000A, // 004C LDCONST R14 K10 + 0x28401E03, // 004D GE R16 R15 R3 + 0x78420000, // 004E JMPF R16 #0050 + 0x5C3C0600, // 004F MOVE R15 R3 + 0x5C2C1C00, // 0050 MOVE R11 R14 + 0x1440160F, // 0051 LT R16 R11 R15 + 0x78420014, // 0052 JMPF R16 #0068 + 0xB8421A00, // 0053 GETNGBL R16 K13 + 0x8C40210E, // 0054 GETMET R16 R16 K14 + 0x5C481600, // 0055 MOVE R18 R11 + 0x004C0A07, // 0056 ADD R19 R5 R7 + 0x044C270C, // 0057 SUB R19 R19 K12 + 0x00500A07, // 0058 ADD R20 R5 R7 + 0x00502806, // 0059 ADD R20 R20 R6 + 0x5854000A, // 005A LDCONST R21 K10 + 0x545A00FE, // 005B LDINT R22 255 + 0x7C400C00, // 005C CALL R16 6 + 0x8C44030F, // 005D GETMET R17 R1 K15 + 0x5C4C0800, // 005E MOVE R19 R4 + 0x5C501000, // 005F MOVE R20 R8 + 0x5C542000, // 0060 MOVE R21 R16 + 0x7C440800, // 0061 CALL R17 4 + 0x8C48030B, // 0062 GETMET R18 R1 K11 + 0x5C501600, // 0063 MOVE R20 R11 + 0x5C542200, // 0064 MOVE R21 R17 + 0x7C480600, // 0065 CALL R18 3 + 0x002C170C, // 0066 ADD R11 R11 K12 + 0x7001FFE8, // 0067 JMP #0051 + 0x50300200, // 0068 LDBOOL R12 1 0 + 0x80041800, // 0069 RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_BeaconAnimation_tostring, /* 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_BeaconAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080010, // 0001 LDCONST R2 K16 + 0x880C0107, // 0002 GETMBR R3 R0 K7 + 0x88100104, // 0003 GETMBR R4 R0 K4 + 0x88140106, // 0004 GETMBR R5 R0 K6 + 0x88180105, // 0005 GETMBR R6 R0 K5 + 0x7C040A00, // 0006 CALL R1 5 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: BeaconAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(BeaconAnimation, + 0, + &be_class_Animation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { 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(back_color, 4), 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(default, -1), be_const_int(-16777216) }, + })) ) } )) }, + { be_const_key_weak(color, -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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(slew_size, 0), 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(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(beacon_size, 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(default, -1), be_const_int(1) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(pos, -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(default, -1), be_const_int(0) }, })) ) } )) }, - { be_const_key_weak(palette, 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(default, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(3, - ( (struct bvalue*) &(const bvalue[]) { - be_const_int(-16776961), - be_const_int(-16711936), - be_const_int(-65536), })) ) } )) }, - { be_const_key_weak(type, -1), be_nested_str_weak(instance) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, 5), be_const_closure(class_ColorCycleColorProvider_init_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, - { be_const_key_weak(add_color, -1), be_const_closure(class_ColorCycleColorProvider_add_color_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_BeaconAnimation_render_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_BeaconAnimation_tostring_closure) }, })), - be_str_weak(ColorCycleColorProvider) + be_str_weak(BeaconAnimation) ); -// compact class 'AnimationEngine' ktab size: 47, total: 131 (saved 672 bytes) -static const bvalue be_ktab_class_AnimationEngine[47] = { + +/******************************************************************** +** Solidified function: animation_version_string +********************************************************************/ +be_local_closure(animation_version_string, /* name */ + be_nested_proto( + 9, /* 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(VERSION), + /* K2 */ be_nested_str_weak(_X25s_X2E_X25s_X2E_X25s), + }), + be_str_weak(animation_version_string), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x1C040001, // 0001 EQ R1 R0 R1 + 0x78060001, // 0002 JMPF R1 #0005 + 0xB8060000, // 0003 GETNGBL R1 K0 + 0x88000301, // 0004 GETMBR R0 R1 K1 + 0x54060017, // 0005 LDINT R1 24 + 0x3C040001, // 0006 SHR R1 R0 R1 + 0x540A00FE, // 0007 LDINT R2 255 + 0x2C040202, // 0008 AND R1 R1 R2 + 0x540A000F, // 0009 LDINT R2 16 + 0x3C080002, // 000A SHR R2 R0 R2 + 0x540E00FE, // 000B LDINT R3 255 + 0x2C080403, // 000C AND R2 R2 R3 + 0x540E0007, // 000D LDINT R3 8 + 0x3C0C0003, // 000E SHR R3 R0 R3 + 0x541200FE, // 000F LDINT R4 255 + 0x2C0C0604, // 0010 AND R3 R3 R4 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140002, // 0012 LDCONST R5 K2 + 0x5C180200, // 0013 MOVE R6 R1 + 0x5C1C0400, // 0014 MOVE R7 R2 + 0x5C200600, // 0015 MOVE R8 R3 + 0x7C100800, // 0016 CALL R4 4 + 0x80040800, // 0017 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_value_provider +********************************************************************/ +be_local_closure(is_value_provider, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(value_provider), + }), + be_str_weak(is_value_provider), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x6004000F, // 0000 GETGBL R1 G15 + 0x5C080000, // 0001 MOVE R2 R0 + 0xB80E0000, // 0002 GETNGBL R3 K0 + 0x880C0701, // 0003 GETMBR R3 R3 K1 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'AnimationEngine' ktab size: 50, total: 143 (saved 744 bytes) +static const bvalue be_ktab_class_AnimationEngine[50] = { /* K0 */ be_nested_str_weak(animations), - /* K1 */ be_nested_str_weak(is_running), - /* K2 */ be_nested_str_weak(stop), - /* K3 */ be_nested_str_weak(stop_iteration), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(priority), /* K4 */ be_nested_str_weak(strip), /* K5 */ be_nested_str_weak(clear), /* K6 */ be_nested_str_weak(show), - /* K7 */ be_const_int(1), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(priority), + /* K7 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), + /* K8 */ be_nested_str_weak(is_running), + /* K9 */ be_nested_str_weak(width), /* K10 */ be_nested_str_weak(sequence_managers), /* K11 */ be_nested_str_weak(remove), - /* K12 */ be_nested_str_weak(animation), - /* K13 */ be_nested_str_weak(event_manager), - /* K14 */ be_nested_str_weak(_process_queued_events), - /* K15 */ be_nested_str_weak(value_error), - /* K16 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), - /* K17 */ be_nested_str_weak(width), + /* K12 */ be_nested_str_weak(push), + /* K13 */ be_nested_str_weak(set_pixel_color), + /* K14 */ be_nested_str_weak(frame_buffer), + /* K15 */ be_nested_str_weak(get_pixel_color), + /* K16 */ be_nested_str_weak(value_error), + /* K17 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), /* K18 */ be_nested_str_weak(length), - /* K19 */ be_nested_str_weak(frame_buffer), + /* K19 */ be_nested_str_weak(animation), /* K20 */ be_nested_str_weak(temp_buffer), /* K21 */ be_nested_str_weak(last_update), /* K22 */ be_nested_str_weak(time_ms), /* K23 */ be_nested_str_weak(fast_loop_closure), /* K24 */ be_nested_str_weak(render_needed), - /* K25 */ be_nested_str_weak(set_pixel_color), - /* K26 */ be_nested_str_weak(get_pixel_color), - /* K27 */ be_nested_str_weak(tasmota), - /* K28 */ be_nested_str_weak(remove_fast_loop), - /* K29 */ be_nested_str_weak(start), - /* K30 */ be_nested_str_weak(millis), - /* K31 */ be_nested_str_weak(add_fast_loop), - /* K32 */ be_nested_str_weak(can_show), - /* K33 */ be_nested_str_weak(update), - /* K34 */ be_nested_str_weak(_process_events), - /* K35 */ be_nested_str_weak(_update_and_render), - /* K36 */ be_nested_str_weak(push), - /* K37 */ be_nested_str_weak(_sort_animations), - /* K38 */ be_nested_str_weak(resume), - /* K39 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), - /* K40 */ be_nested_str_weak(stop_sequence), - /* K41 */ be_nested_str_weak(_clear_strip), - /* K42 */ be_nested_str_weak(_render_animations), - /* K43 */ be_nested_str_weak(render), - /* K44 */ be_nested_str_weak(blend_pixels), - /* K45 */ be_nested_str_weak(_output_to_strip), - /* K46 */ be_nested_str_weak(name), + /* K25 */ be_nested_str_weak(stop_sequence), + /* K26 */ be_nested_str_weak(render), + /* K27 */ be_nested_str_weak(blend_pixels), + /* K28 */ be_nested_str_weak(_output_to_strip), + /* K29 */ be_nested_str_weak(name), + /* K30 */ be_nested_str_weak(stop), + /* K31 */ be_nested_str_weak(update), + /* K32 */ be_nested_str_weak(_clear_strip), + /* K33 */ be_nested_str_weak(_render_animations), + /* K34 */ be_nested_str_weak(resume), + /* K35 */ be_nested_str_weak(tasmota), + /* K36 */ be_nested_str_weak(millis), + /* K37 */ be_nested_str_weak(start), + /* K38 */ be_nested_str_weak(add_fast_loop), + /* K39 */ be_nested_str_weak(_sort_animations), + /* K40 */ be_nested_str_weak(_handle_strip_length_change), + /* K41 */ be_nested_str_weak(check_strip_length), + /* K42 */ be_nested_str_weak(resize), + /* K43 */ be_nested_str_weak(stop_iteration), + /* K44 */ be_nested_str_weak(can_show), + /* K45 */ be_nested_str_weak(_process_events), + /* K46 */ be_nested_str_weak(_update_and_render), + /* K47 */ be_nested_str_weak(remove_fast_loop), + /* K48 */ be_nested_str_weak(event_manager), + /* K49 */ be_nested_str_weak(_process_queued_events), }; extern const bclass be_class_AnimationEngine; /******************************************************************** -** Solidified function: interrupt_current +** Solidified function: _sort_animations ********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_current, /* name */ +be_local_closure(class_AnimationEngine__sort_animations, /* name */ be_nested_proto( - 5, /* nstack */ + 8, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -15054,24 +16598,42 @@ be_local_closure(class_AnimationEngine_interrupt_current, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_current), + be_str_weak(_sort_animations), &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 + ( &(const binstruction[33]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 0x88080100, // 0001 GETMBR R2 R0 K0 0x7C040200, // 0002 CALL R1 1 - 0xA8020006, // 0003 EXBLK 0 #000B - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x880C0501, // 0006 GETMBR R3 R2 K1 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0502, // 0008 GETMET R3 R2 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7001FFF8, // 000A JMP #0004 - 0x58040003, // 000B LDCONST R1 K3 - 0xAC040200, // 000C CATCH R1 1 0 - 0xB0080000, // 000D RAISE 2 R0 R0 - 0x80000000, // 000E RET 0 + 0x18080301, // 0003 LE R2 R1 K1 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x58080001, // 0006 LDCONST R2 K1 + 0x140C0401, // 0007 LT R3 R2 R1 + 0x780E0016, // 0008 JMPF R3 #0020 + 0x880C0100, // 0009 GETMBR R3 R0 K0 + 0x940C0602, // 000A GETIDX R3 R3 R2 + 0x5C100400, // 000B MOVE R4 R2 + 0x24140902, // 000C GT R5 R4 K2 + 0x7816000D, // 000D JMPF R5 #001C + 0x04140901, // 000E SUB R5 R4 K1 + 0x88180100, // 000F GETMBR R6 R0 K0 + 0x94140C05, // 0010 GETIDX R5 R6 R5 + 0x88140B03, // 0011 GETMBR R5 R5 K3 + 0x88180703, // 0012 GETMBR R6 R3 K3 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160006, // 0014 JMPF R5 #001C + 0x88140100, // 0015 GETMBR R5 R0 K0 + 0x04180901, // 0016 SUB R6 R4 K1 + 0x881C0100, // 0017 GETMBR R7 R0 K0 + 0x94180E06, // 0018 GETIDX R6 R7 R6 + 0x98140806, // 0019 SETIDX R5 R4 R6 + 0x04100901, // 001A SUB R4 R4 K1 + 0x7001FFEF, // 001B JMP #000C + 0x88140100, // 001C GETMBR R5 R0 K0 + 0x98140803, // 001D SETIDX R5 R4 R3 + 0x00080501, // 001E ADD R2 R2 K1 + 0x7001FFE6, // 001F JMP #0007 + 0x80000000, // 0020 RET 0 }) ) ); @@ -15108,326 +16670,6 @@ be_local_closure(class_AnimationEngine__clear_strip, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_animations -********************************************************************/ -be_local_closure(class_AnimationEngine_get_animations, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(get_animations), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sort_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__sort_animations, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(_sort_animations), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x18080307, // 0003 LE R2 R1 K7 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80000400, // 0005 RET 0 - 0x58080007, // 0006 LDCONST R2 K7 - 0x140C0401, // 0007 LT R3 R2 R1 - 0x780E0016, // 0008 JMPF R3 #0020 - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x940C0602, // 000A GETIDX R3 R3 R2 - 0x5C100400, // 000B MOVE R4 R2 - 0x24140908, // 000C GT R5 R4 K8 - 0x7816000D, // 000D JMPF R5 #001C - 0x04140907, // 000E SUB R5 R4 K7 - 0x88180100, // 000F GETMBR R6 R0 K0 - 0x94140C05, // 0010 GETIDX R5 R6 R5 - 0x88140B09, // 0011 GETMBR R5 R5 K9 - 0x88180709, // 0012 GETMBR R6 R3 K9 - 0x14140A06, // 0013 LT R5 R5 R6 - 0x78160006, // 0014 JMPF R5 #001C - 0x88140100, // 0015 GETMBR R5 R0 K0 - 0x04180907, // 0016 SUB R6 R4 K7 - 0x881C0100, // 0017 GETMBR R7 R0 K0 - 0x94180E06, // 0018 GETIDX R6 R7 R6 - 0x98140806, // 0019 SETIDX R5 R4 R6 - 0x04100907, // 001A SUB R4 R4 K7 - 0x7001FFEF, // 001B JMP #000C - 0x88140100, // 001C GETMBR R5 R0 K0 - 0x98140803, // 001D SETIDX R5 R4 R3 - 0x00080507, // 001E ADD R2 R2 K7 - 0x7001FFE6, // 001F JMP #0007 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_sequence_manager -********************************************************************/ -be_local_closure(class_AnimationEngine_remove_sequence_manager, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(remove_sequence_manager), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0008, // 0001 LDCONST R3 K8 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x8814010A, // 0003 GETMBR R5 R0 K10 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x8810010A, // 0007 GETMBR R4 R0 K10 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x1C100801, // 0009 EQ R4 R4 R1 - 0x78120001, // 000A JMPF R4 #000D - 0x5C080600, // 000B MOVE R2 R3 - 0x70020001, // 000C JMP #000F - 0x000C0707, // 000D ADD R3 R3 K7 - 0x7001FFF2, // 000E JMP #0002 - 0x28100508, // 000F GE R4 R2 K8 - 0x78120005, // 0010 JMPF R4 #0017 - 0x8810010A, // 0011 GETMBR R4 R0 K10 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x80040800, // 0016 RET 1 R4 - 0x50100000, // 0017 LDBOOL R4 0 0 - 0x80040800, // 0018 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_active -********************************************************************/ -be_local_closure(class_AnimationEngine_is_active, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(is_active), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_events -********************************************************************/ -be_local_closure(class_AnimationEngine__process_events, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(_process_events), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB80A1800, // 0000 GETNGBL R2 K12 - 0x8808050D, // 0001 GETMBR R2 R2 K13 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0xB80A1800, // 0005 GETNGBL R2 K12 - 0x8808050D, // 0006 GETMBR R2 R2 K13 - 0x8C08050E, // 0007 GETMET R2 R2 K14 - 0x7C080200, // 0008 CALL R2 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0xB0061F10, // 0003 RAISE 1 K15 K16 - 0x90020801, // 0004 SETMBR R0 K4 R1 - 0x8C080312, // 0005 GETMET R2 R1 K18 - 0x7C080200, // 0006 CALL R2 1 - 0x90022202, // 0007 SETMBR R0 K17 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90020002, // 000A SETMBR R0 K0 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021402, // 000D SETMBR R0 K10 R2 - 0xB80A1800, // 000E GETNGBL R2 K12 - 0x8C080513, // 000F GETMET R2 R2 K19 - 0x88100111, // 0010 GETMBR R4 R0 K17 - 0x7C080400, // 0011 CALL R2 2 - 0x90022602, // 0012 SETMBR R0 K19 R2 - 0xB80A1800, // 0013 GETNGBL R2 K12 - 0x8C080513, // 0014 GETMET R2 R2 K19 - 0x88100111, // 0015 GETMBR R4 R0 K17 - 0x7C080400, // 0016 CALL R2 2 - 0x90022802, // 0017 SETMBR R0 K20 R2 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90020202, // 0019 SETMBR R0 K1 R2 - 0x90022B08, // 001A SETMBR R0 K21 K8 - 0x90022D08, // 001B SETMBR R0 K22 K8 - 0x4C080000, // 001C LDNIL R2 - 0x90022E02, // 001D SETMBR R0 K23 R2 - 0x50080000, // 001E LDBOOL R2 0 0 - 0x90023002, // 001F SETMBR R0 K24 R2 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _output_to_strip -********************************************************************/ -be_local_closure(class_AnimationEngine__output_to_strip, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(_output_to_strip), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x58040008, // 0000 LDCONST R1 K8 - 0x88080111, // 0001 GETMBR R2 R0 K17 - 0x14080202, // 0002 LT R2 R1 R2 - 0x780A0009, // 0003 JMPF R2 #000E - 0x88080104, // 0004 GETMBR R2 R0 K4 - 0x8C080519, // 0005 GETMET R2 R2 K25 - 0x5C100200, // 0006 MOVE R4 R1 - 0x88140113, // 0007 GETMBR R5 R0 K19 - 0x8C140B1A, // 0008 GETMET R5 R5 K26 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x7C140400, // 000A CALL R5 2 - 0x7C080600, // 000B CALL R2 3 - 0x00040307, // 000C ADD R1 R1 K7 - 0x7001FFF2, // 000D JMP #0001 - 0x88080104, // 000E GETMBR R2 R0 K4 - 0x8C080506, // 000F GETMET R2 R2 K6 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x78060009, // 0001 JMPF R1 #000C - 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 - 0x88040117, // 0004 GETMBR R1 R0 K23 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060003, // 0007 JMPF R1 #000C - 0xB8063600, // 0008 GETNGBL R1 K27 - 0x8C04031C, // 0009 GETMET R1 R1 K28 - 0x880C0117, // 000A GETMBR R3 R0 K23 - 0x7C040400, // 000B CALL R1 2 - 0x80040000, // 000C RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: size ********************************************************************/ @@ -15456,9 +16698,9 @@ be_local_closure(class_AnimationEngine_size, /* name */ /******************************************************************** -** Solidified function: resume +** Solidified function: interrupt_all ********************************************************************/ -be_local_closure(class_AnimationEngine_resume, /* name */ +be_local_closure(class_AnimationEngine_interrupt_all, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -15469,14 +16711,475 @@ be_local_closure(class_AnimationEngine_resume, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(resume), + be_str_weak(interrupt_all), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C040105, // 0000 GETMET R1 R0 K5 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_AnimationEngine_tostring, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080007, // 0001 LDCONST R2 K7 + 0x880C0108, // 0002 GETMBR R3 R0 K8 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x88140100, // 0004 GETMBR R5 R0 K0 + 0x7C100200, // 0005 CALL R4 1 + 0x88140109, // 0006 GETMBR R5 R0 K9 + 0x7C040800, // 0007 CALL R1 4 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_strip +********************************************************************/ +be_local_closure(class_AnimationEngine_get_strip, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(get_strip), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_sequence_manager +********************************************************************/ +be_local_closure(class_AnimationEngine_remove_sequence_manager, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(remove_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x5409FFFE, // 0000 LDINT R2 -1 + 0x580C0002, // 0001 LDCONST R3 K2 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x8814010A, // 0003 GETMBR R5 R0 K10 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x8810010A, // 0007 GETMBR R4 R0 K10 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x1C100801, // 0009 EQ R4 R4 R1 + 0x78120001, // 000A JMPF R4 #000D + 0x5C080600, // 000B MOVE R2 R3 + 0x70020001, // 000C JMP #000F + 0x000C0701, // 000D ADD R3 R3 K1 + 0x7001FFF2, // 000E JMP #0002 + 0x28100502, // 000F GE R4 R2 K2 + 0x78120005, // 0010 JMPF R4 #0017 + 0x8810010A, // 0011 GETMBR R4 R0 K10 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x80040800, // 0016 RET 1 R4 + 0x50100000, // 0017 LDBOOL R4 0 0 + 0x80040800, // 0018 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add_sequence_manager +********************************************************************/ +be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ + be_str_weak(add_sequence_manager), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x74060001, // 0001 JMPT R1 #0004 - 0x8C04011D, // 0002 GETMET R1 R0 K29 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 + 0x8808010A, // 0000 GETMBR R2 R0 K10 + 0x8C08050C, // 0001 GETMET R2 R2 K12 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _output_to_strip +********************************************************************/ +be_local_closure(class_AnimationEngine__output_to_strip, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(_output_to_strip), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x58040002, // 0000 LDCONST R1 K2 + 0x88080109, // 0001 GETMBR R2 R0 K9 + 0x14080202, // 0002 LT R2 R1 R2 + 0x780A0009, // 0003 JMPF R2 #000E + 0x88080104, // 0004 GETMBR R2 R0 K4 + 0x8C08050D, // 0005 GETMET R2 R2 K13 + 0x5C100200, // 0006 MOVE R4 R1 + 0x8814010E, // 0007 GETMBR R5 R0 K14 + 0x8C140B0F, // 0008 GETMET R5 R5 K15 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x7C140400, // 000A CALL R5 2 + 0x7C080600, // 000B CALL R2 3 + 0x00040301, // 000C ADD R1 R1 K1 + 0x7001FFF2, // 000D JMP #0001 + 0x88080104, // 000E GETMBR R2 R0 K4 + 0x8C080506, // 000F GETMET R2 R2 K6 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0xB0062111, // 0003 RAISE 1 K16 K17 + 0x90020801, // 0004 SETMBR R0 K4 R1 + 0x8C080312, // 0005 GETMET R2 R1 K18 + 0x7C080200, // 0006 CALL R2 1 + 0x90021202, // 0007 SETMBR R0 K9 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90020002, // 000A SETMBR R0 K0 R2 + 0x60080012, // 000B GETGBL R2 G18 + 0x7C080000, // 000C CALL R2 0 + 0x90021402, // 000D SETMBR R0 K10 R2 + 0xB80A2600, // 000E GETNGBL R2 K19 + 0x8C08050E, // 000F GETMET R2 R2 K14 + 0x88100109, // 0010 GETMBR R4 R0 K9 + 0x7C080400, // 0011 CALL R2 2 + 0x90021C02, // 0012 SETMBR R0 K14 R2 + 0xB80A2600, // 0013 GETNGBL R2 K19 + 0x8C08050E, // 0014 GETMET R2 R2 K14 + 0x88100109, // 0015 GETMBR R4 R0 K9 + 0x7C080400, // 0016 CALL R2 2 + 0x90022802, // 0017 SETMBR R0 K20 R2 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x90021002, // 0019 SETMBR R0 K8 R2 + 0x90022B02, // 001A SETMBR R0 K21 K2 + 0x90022D02, // 001B SETMBR R0 K22 K2 + 0x4C080000, // 001C LDNIL R2 + 0x90022E02, // 001D SETMBR R0 K23 R2 + 0x50080000, // 001E LDBOOL R2 0 0 + 0x90023002, // 001F SETMBR R0 K24 R2 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear +********************************************************************/ +be_local_closure(class_AnimationEngine_clear, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(clear), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x58040002, // 0003 LDCONST R1 K2 + 0x6008000C, // 0004 GETGBL R2 G12 + 0x880C010A, // 0005 GETMBR R3 R0 K10 + 0x7C080200, // 0006 CALL R2 1 + 0x14080202, // 0007 LT R2 R1 R2 + 0x780A0005, // 0008 JMPF R2 #000F + 0x8808010A, // 0009 GETMBR R2 R0 K10 + 0x94080401, // 000A GETIDX R2 R2 R1 + 0x8C080519, // 000B GETMET R2 R2 K25 + 0x7C080200, // 000C CALL R2 1 + 0x00040301, // 000D ADD R1 R1 K1 + 0x7001FFF4, // 000E JMP #0004 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90021402, // 0011 SETMBR R0 K10 R2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90023002, // 0013 SETMBR R0 K24 R2 + 0x80040000, // 0014 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _render_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__render_animations, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(_render_animations), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x880C010E, // 0000 GETMBR R3 R0 K14 + 0x8C0C0705, // 0001 GETMET R3 R3 K5 + 0x7C0C0200, // 0002 CALL R3 1 + 0x580C0002, // 0003 LDCONST R3 K2 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C100200, // 0006 CALL R4 1 + 0x14100604, // 0007 LT R4 R3 R4 + 0x7812000E, // 0008 JMPF R4 #0018 + 0x94100203, // 0009 GETIDX R4 R1 R3 + 0x88140114, // 000A GETMBR R5 R0 K20 + 0x8C140B05, // 000B GETMET R5 R5 K5 + 0x7C140200, // 000C CALL R5 1 + 0x8C14091A, // 000D GETMET R5 R4 K26 + 0x881C0114, // 000E GETMBR R7 R0 K20 + 0x5C200400, // 000F MOVE R8 R2 + 0x7C140600, // 0010 CALL R5 3 + 0x78160003, // 0011 JMPF R5 #0016 + 0x8818010E, // 0012 GETMBR R6 R0 K14 + 0x8C180D1B, // 0013 GETMET R6 R6 K27 + 0x88200114, // 0014 GETMBR R8 R0 K20 + 0x7C180400, // 0015 CALL R6 2 + 0x000C0701, // 0016 ADD R3 R3 K1 + 0x7001FFEB, // 0017 JMP #0004 + 0x8C10011C, // 0018 GETMET R4 R0 K28 + 0x7C100200, // 0019 CALL R4 1 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_animation +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_animation, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_animation), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x58080002, // 0000 LDCONST R2 K2 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100100, // 0002 GETMBR R4 R0 K0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0012, // 0005 JMPF R3 #0019 + 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x8810071D, // 0008 GETMBR R4 R3 K29 + 0x4C140000, // 0009 LDNIL R5 + 0x20100805, // 000A NE R4 R4 R5 + 0x7812000A, // 000B JMPF R4 #0017 + 0x8810071D, // 000C GETMBR R4 R3 K29 + 0x1C100801, // 000D EQ R4 R4 R1 + 0x78120007, // 000E JMPF R4 #0017 + 0x8C10071E, // 000F GETMET R4 R3 K30 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C100400, // 0011 CALL R4 2 + 0x88100100, // 0012 GETMBR R4 R0 K0 + 0x8C10090B, // 0013 GETMET R4 R4 K11 + 0x5C180400, // 0014 MOVE R6 R2 + 0x7C100400, // 0015 CALL R4 2 + 0x80000800, // 0016 RET 0 + 0x00080501, // 0017 ADD R2 R2 K1 + 0x7001FFE7, // 0018 JMP #0001 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_and_render +********************************************************************/ +be_local_closure(class_AnimationEngine__update_and_render, /* name */ + be_nested_proto( + 9, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(_update_and_render), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0x58080002, // 0000 LDCONST R2 K2 + 0x580C0002, // 0001 LDCONST R3 K2 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140100, // 0003 GETMBR R5 R0 K0 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120011, // 0006 JMPF R4 #0019 + 0x88100100, // 0007 GETMBR R4 R0 K0 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x8C14091F, // 0009 GETMET R5 R4 K31 + 0x5C1C0200, // 000A MOVE R7 R1 + 0x7C140400, // 000B CALL R5 2 + 0x78160004, // 000C JMPF R5 #0012 + 0x88180908, // 000D GETMBR R6 R4 K8 + 0x781A0002, // 000E JMPF R6 #0012 + 0x00080501, // 000F ADD R2 R2 K1 + 0x000C0701, // 0010 ADD R3 R3 K1 + 0x70020005, // 0011 JMP #0018 + 0x88180100, // 0012 GETMBR R6 R0 K0 + 0x8C180D0B, // 0013 GETMET R6 R6 K11 + 0x5C200600, // 0014 MOVE R8 R3 + 0x7C180400, // 0015 CALL R6 2 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x90023006, // 0017 SETMBR R0 K24 R6 + 0x7001FFE8, // 0018 JMP #0002 + 0x1C100502, // 0019 EQ R4 R2 K2 + 0x78120006, // 001A JMPF R4 #0022 + 0x88100118, // 001B GETMBR R4 R0 K24 + 0x78120003, // 001C JMPF R4 #0021 + 0x8C100120, // 001D GETMET R4 R0 K32 + 0x7C100200, // 001E CALL R4 1 + 0x50100000, // 001F LDBOOL R4 0 0 + 0x90023004, // 0020 SETMBR R0 K24 R4 + 0x80000800, // 0021 RET 0 + 0x8C100121, // 0022 GETMET R4 R0 K33 + 0x88180100, // 0023 GETMBR R6 R0 K0 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C100600, // 0025 CALL R4 3 + 0x50100000, // 0026 LDBOOL R4 0 0 + 0x90023004, // 0027 SETMBR R0 K24 R4 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resume_after +********************************************************************/ +be_local_closure(class_AnimationEngine_resume_after, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(resume_after), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C080122, // 0000 GETMET R2 R0 K34 + 0x7C080200, // 0001 CALL R2 1 + 0x80000000, // 0002 RET 0 }) ) ); @@ -15524,12 +17227,12 @@ be_local_closure(class_AnimationEngine_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x88040108, // 0000 GETMBR R1 R0 K8 0x74060021, // 0001 JMPT R1 #0024 0x50040200, // 0002 LDBOOL R1 1 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 - 0xB8063600, // 0004 GETNGBL R1 K27 - 0x8C04031E, // 0005 GETMET R1 R1 K30 + 0x90021001, // 0003 SETMBR R0 K8 R1 + 0xB8064600, // 0004 GETNGBL R1 K35 + 0x8C040324, // 0005 GETMET R1 R1 K36 0x7C040200, // 0006 CALL R1 1 0x540A0009, // 0007 LDINT R2 10 0x04040202, // 0008 SUB R1 R1 R2 @@ -15540,9 +17243,9 @@ be_local_closure(class_AnimationEngine_start, /* name */ 0x78060001, // 000D JMPF R1 #0010 0x84040000, // 000E CLOSURE R1 P0 0x90022E01, // 000F SETMBR R0 K23 R1 - 0x58040008, // 0010 LDCONST R1 K8 - 0xB80A3600, // 0011 GETNGBL R2 K27 - 0x8C08051E, // 0012 GETMET R2 R2 K30 + 0x58040002, // 0010 LDCONST R1 K2 + 0xB80A4600, // 0011 GETNGBL R2 K35 + 0x8C080524, // 0012 GETMET R2 R2 K36 0x7C080200, // 0013 CALL R2 1 0x600C000C, // 0014 GETGBL R3 G12 0x88100100, // 0015 GETMBR R4 R0 K0 @@ -15551,13 +17254,13 @@ be_local_closure(class_AnimationEngine_start, /* name */ 0x780E0006, // 0018 JMPF R3 #0020 0x880C0100, // 0019 GETMBR R3 R0 K0 0x940C0601, // 001A GETIDX R3 R3 R1 - 0x8C0C071D, // 001B GETMET R3 R3 K29 + 0x8C0C0725, // 001B GETMET R3 R3 K37 0x5C140400, // 001C MOVE R5 R2 0x7C0C0400, // 001D CALL R3 2 - 0x00040307, // 001E ADD R1 R1 K7 + 0x00040301, // 001E ADD R1 R1 K1 0x7001FFF3, // 001F JMP #0014 - 0xB80E3600, // 0020 GETNGBL R3 K27 - 0x8C0C071F, // 0021 GETMET R3 R3 K31 + 0xB80E4600, // 0020 GETNGBL R3 K35 + 0x8C0C0726, // 0021 GETMET R3 R3 K38 0x88140117, // 0022 GETMBR R5 R0 K23 0x7C0C0400, // 0023 CALL R3 2 0xA0000000, // 0024 CLOSE R0 @@ -15568,382 +17271,6 @@ be_local_closure(class_AnimationEngine_start, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: on_tick -********************************************************************/ -be_local_closure(class_AnimationEngine_on_tick, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(on_tick), - &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ - 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x4C080000, // 0004 LDNIL R2 - 0x1C080202, // 0005 EQ R2 R1 R2 - 0x780A0003, // 0006 JMPF R2 #000B - 0xB80A3600, // 0007 GETNGBL R2 K27 - 0x8C08051E, // 0008 GETMET R2 R2 K30 - 0x7C080200, // 0009 CALL R2 1 - 0x5C040400, // 000A MOVE R1 R2 - 0x90022C01, // 000B SETMBR R0 K22 R1 - 0x88080115, // 000C GETMBR R2 R0 K21 - 0x04080202, // 000D SUB R2 R1 R2 - 0x540E0004, // 000E LDINT R3 5 - 0x140C0403, // 000F LT R3 R2 R3 - 0x780E0001, // 0010 JMPF R3 #0013 - 0x500C0200, // 0011 LDBOOL R3 1 0 - 0x80040600, // 0012 RET 1 R3 - 0x90022A01, // 0013 SETMBR R0 K21 R1 - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x880C0720, // 0015 GETMBR R3 R3 K32 - 0x4C100000, // 0016 LDNIL R4 - 0x200C0604, // 0017 NE R3 R3 R4 - 0x780E0005, // 0018 JMPF R3 #001F - 0x880C0104, // 0019 GETMBR R3 R0 K4 - 0x8C0C0720, // 001A GETMET R3 R3 K32 - 0x7C0C0200, // 001B CALL R3 1 - 0x740E0001, // 001C JMPT R3 #001F - 0x500C0200, // 001D LDBOOL R3 1 0 - 0x80040600, // 001E RET 1 R3 - 0x580C0008, // 001F LDCONST R3 K8 - 0x6010000C, // 0020 GETGBL R4 G12 - 0x8814010A, // 0021 GETMBR R5 R0 K10 - 0x7C100200, // 0022 CALL R4 1 - 0x14100604, // 0023 LT R4 R3 R4 - 0x78120005, // 0024 JMPF R4 #002B - 0x8810010A, // 0025 GETMBR R4 R0 K10 - 0x94100803, // 0026 GETIDX R4 R4 R3 - 0x8C100921, // 0027 GETMET R4 R4 K33 - 0x7C100200, // 0028 CALL R4 1 - 0x000C0707, // 0029 ADD R3 R3 K7 - 0x7001FFF4, // 002A JMP #0020 - 0x8C100122, // 002B GETMET R4 R0 K34 - 0x5C180200, // 002C MOVE R6 R1 - 0x7C100400, // 002D CALL R4 2 - 0x8C100123, // 002E GETMET R4 R0 K35 - 0x5C180200, // 002F MOVE R6 R1 - 0x7C100400, // 0030 CALL R4 2 - 0x50100200, // 0031 LDBOOL R4 1 0 - 0x80040800, // 0032 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_animation -********************************************************************/ -be_local_closure(class_AnimationEngine_add_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_AnimationEngine, /* shared constants */ - be_str_weak(add_animation), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x58080008, // 0000 LDCONST R2 K8 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0007, // 0005 JMPF R3 #000E - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x1C0C0601, // 0008 EQ R3 R3 R1 - 0x780E0001, // 0009 JMPF R3 #000C - 0x500C0000, // 000A LDBOOL R3 0 0 - 0x80040600, // 000B RET 1 R3 - 0x00080507, // 000C ADD R2 R2 K7 - 0x7001FFF2, // 000D JMP #0001 - 0x880C0100, // 000E GETMBR R3 R0 K0 - 0x8C0C0724, // 000F GETMET R3 R3 K36 - 0x5C140200, // 0010 MOVE R5 R1 - 0x7C0C0400, // 0011 CALL R3 2 - 0x8C0C0125, // 0012 GETMET R3 R0 K37 - 0x7C0C0200, // 0013 CALL R3 1 - 0x880C0101, // 0014 GETMBR R3 R0 K1 - 0x780E0001, // 0015 JMPF R3 #0018 - 0x8C0C031D, // 0016 GETMET R3 R1 K29 - 0x7C0C0200, // 0017 CALL R3 1 - 0x500C0200, // 0018 LDBOOL R3 1 0 - 0x90023003, // 0019 SETMBR R0 K24 R3 - 0x500C0200, // 001A LDBOOL R3 1 0 - 0x80040600, // 001B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: cleanup -********************************************************************/ -be_local_closure(class_AnimationEngine_cleanup, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(cleanup), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C040102, // 0000 GETMET R1 R0 K2 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040105, // 0002 GETMET R1 R0 K5 - 0x7C040200, // 0003 CALL R1 1 - 0x4C040000, // 0004 LDNIL R1 - 0x90022601, // 0005 SETMBR R0 K19 R1 - 0x4C040000, // 0006 LDNIL R1 - 0x90022801, // 0007 SETMBR R0 K20 R1 - 0x4C040000, // 0008 LDNIL R1 - 0x90020801, // 0009 SETMBR R0 K4 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resume_after -********************************************************************/ -be_local_closure(class_AnimationEngine_resume_after, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(resume_after), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C080126, // 0000 GETMET R2 R0 K38 - 0x7C080200, // 0001 CALL R2 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_AnimationEngine_tostring, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080027, // 0001 LDCONST R2 K39 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140100, // 0004 GETMBR R5 R0 K0 - 0x7C100200, // 0005 CALL R4 1 - 0x88140111, // 0006 GETMBR R5 R0 K17 - 0x7C040800, // 0007 CALL R1 4 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(class_AnimationEngine_clear, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(clear), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x58040008, // 0003 LDCONST R1 K8 - 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C010A, // 0005 GETMBR R3 R0 K10 - 0x7C080200, // 0006 CALL R2 1 - 0x14080202, // 0007 LT R2 R1 R2 - 0x780A0005, // 0008 JMPF R2 #000F - 0x8808010A, // 0009 GETMBR R2 R0 K10 - 0x94080401, // 000A GETIDX R2 R2 R1 - 0x8C080528, // 000B GETMET R2 R2 K40 - 0x7C080200, // 000C CALL R2 1 - 0x00040307, // 000D ADD R1 R1 K7 - 0x7001FFF4, // 000E JMP #0004 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90021402, // 0011 SETMBR R0 K10 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90023002, // 0013 SETMBR R0 K24 R2 - 0x80040000, // 0014 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_strip_length -********************************************************************/ -be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ - be_str_weak(get_strip_length), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_and_render -********************************************************************/ -be_local_closure(class_AnimationEngine__update_and_render, /* name */ - be_nested_proto( - 9, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(_update_and_render), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x58080008, // 0000 LDCONST R2 K8 - 0x580C0008, // 0001 LDCONST R3 K8 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140100, // 0003 GETMBR R5 R0 K0 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120011, // 0006 JMPF R4 #0019 - 0x88100100, // 0007 GETMBR R4 R0 K0 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x8C140921, // 0009 GETMET R5 R4 K33 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x7C140400, // 000B CALL R5 2 - 0x78160004, // 000C JMPF R5 #0012 - 0x88180901, // 000D GETMBR R6 R4 K1 - 0x781A0002, // 000E JMPF R6 #0012 - 0x00080507, // 000F ADD R2 R2 K7 - 0x000C0707, // 0010 ADD R3 R3 K7 - 0x70020005, // 0011 JMP #0018 - 0x88180100, // 0012 GETMBR R6 R0 K0 - 0x8C180D0B, // 0013 GETMET R6 R6 K11 - 0x5C200600, // 0014 MOVE R8 R3 - 0x7C180400, // 0015 CALL R6 2 - 0x50180200, // 0016 LDBOOL R6 1 0 - 0x90023006, // 0017 SETMBR R0 K24 R6 - 0x7001FFE8, // 0018 JMP #0002 - 0x1C100508, // 0019 EQ R4 R2 K8 - 0x78120006, // 001A JMPF R4 #0022 - 0x88100118, // 001B GETMBR R4 R0 K24 - 0x78120003, // 001C JMPF R4 #0021 - 0x8C100129, // 001D GETMET R4 R0 K41 - 0x7C100200, // 001E CALL R4 1 - 0x50100000, // 001F LDBOOL R4 0 0 - 0x90023004, // 0020 SETMBR R0 K24 R4 - 0x80000800, // 0021 RET 0 - 0x8C10012A, // 0022 GETMET R4 R0 K42 - 0x88180100, // 0023 GETMBR R6 R0 K0 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C100600, // 0025 CALL R4 3 - 0x50100000, // 0026 LDBOOL R4 0 0 - 0x90023004, // 0027 SETMBR R0 K24 R4 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: interrupt_all -********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_all, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_all), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040105, // 0000 GETMET R1 R0 K5 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: remove_animation ********************************************************************/ @@ -15962,7 +17289,7 @@ be_local_closure(class_AnimationEngine_remove_animation, /* name */ &be_const_str_solidified, ( &(const binstruction[27]) { /* code */ 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0008, // 0001 LDCONST R3 K8 + 0x580C0002, // 0001 LDCONST R3 K2 0x6010000C, // 0002 GETGBL R4 G12 0x88140100, // 0003 GETMBR R5 R0 K0 0x7C100200, // 0004 CALL R4 1 @@ -15974,9 +17301,9 @@ be_local_closure(class_AnimationEngine_remove_animation, /* name */ 0x78120001, // 000A JMPF R4 #000D 0x5C080600, // 000B MOVE R2 R3 0x70020001, // 000C JMP #000F - 0x000C0707, // 000D ADD R3 R3 K7 + 0x000C0701, // 000D ADD R3 R3 K1 0x7001FFF2, // 000E JMP #0002 - 0x28100508, // 000F GE R4 R2 K8 + 0x28100502, // 000F GE R4 R2 K2 0x78120007, // 0010 JMPF R4 #0019 0x88100100, // 0011 GETMBR R4 R0 K0 0x8C10090B, // 0012 GETMET R4 R4 K11 @@ -15995,12 +17322,12 @@ be_local_closure(class_AnimationEngine_remove_animation, /* name */ /******************************************************************** -** Solidified function: _render_animations +** Solidified function: add_animation ********************************************************************/ -be_local_closure(class_AnimationEngine__render_animations, /* name */ +be_local_closure(class_AnimationEngine_add_animation, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 6, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16008,36 +17335,37 @@ be_local_closure(class_AnimationEngine__render_animations, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_render_animations), + be_str_weak(add_animation), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x880C0113, // 0000 GETMBR R3 R0 K19 - 0x8C0C0705, // 0001 GETMET R3 R3 K5 - 0x7C0C0200, // 0002 CALL R3 1 - 0x580C0008, // 0003 LDCONST R3 K8 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C100200, // 0006 CALL R4 1 - 0x14100604, // 0007 LT R4 R3 R4 - 0x7812000E, // 0008 JMPF R4 #0018 - 0x94100203, // 0009 GETIDX R4 R1 R3 - 0x88140114, // 000A GETMBR R5 R0 K20 - 0x8C140B05, // 000B GETMET R5 R5 K5 - 0x7C140200, // 000C CALL R5 1 - 0x8C14092B, // 000D GETMET R5 R4 K43 - 0x881C0114, // 000E GETMBR R7 R0 K20 - 0x5C200400, // 000F MOVE R8 R2 - 0x7C140600, // 0010 CALL R5 3 - 0x78160003, // 0011 JMPF R5 #0016 - 0x88180113, // 0012 GETMBR R6 R0 K19 - 0x8C180D2C, // 0013 GETMET R6 R6 K44 - 0x88200114, // 0014 GETMBR R8 R0 K20 - 0x7C180400, // 0015 CALL R6 2 - 0x000C0707, // 0016 ADD R3 R3 K7 - 0x7001FFEB, // 0017 JMP #0004 - 0x8C10012D, // 0018 GETMET R4 R0 K45 - 0x7C100200, // 0019 CALL R4 1 - 0x80000000, // 001A RET 0 + ( &(const binstruction[28]) { /* code */ + 0x58080002, // 0000 LDCONST R2 K2 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100100, // 0002 GETMBR R4 R0 K0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0007, // 0005 JMPF R3 #000E + 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x1C0C0601, // 0008 EQ R3 R3 R1 + 0x780E0001, // 0009 JMPF R3 #000C + 0x500C0000, // 000A LDBOOL R3 0 0 + 0x80040600, // 000B RET 1 R3 + 0x00080501, // 000C ADD R2 R2 K1 + 0x7001FFF2, // 000D JMP #0001 + 0x880C0100, // 000E GETMBR R3 R0 K0 + 0x8C0C070C, // 000F GETMET R3 R3 K12 + 0x5C140200, // 0010 MOVE R5 R1 + 0x7C0C0400, // 0011 CALL R3 2 + 0x8C0C0127, // 0012 GETMET R3 R0 K39 + 0x7C0C0200, // 0013 CALL R3 1 + 0x880C0108, // 0014 GETMBR R3 R0 K8 + 0x780E0001, // 0015 JMPF R3 #0018 + 0x8C0C0325, // 0016 GETMET R3 R1 K37 + 0x7C0C0200, // 0017 CALL R3 1 + 0x500C0200, // 0018 LDBOOL R3 1 0 + 0x90023003, // 0019 SETMBR R0 K24 R3 + 0x500C0200, // 001A LDBOOL R3 1 0 + 0x80040600, // 001B RET 1 R3 }) ) ); @@ -16045,11 +17373,11 @@ be_local_closure(class_AnimationEngine__render_animations, /* name */ /******************************************************************** -** Solidified function: get_strip +** Solidified function: resume ********************************************************************/ -be_local_closure(class_AnimationEngine_get_strip, /* name */ +be_local_closure(class_AnimationEngine_resume, /* name */ be_nested_proto( - 2, /* nstack */ + 3, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16058,11 +17386,14 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(get_strip), + be_str_weak(resume), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x74060001, // 0001 JMPT R1 #0004 + 0x8C040125, // 0002 GETMET R1 R0 K37 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 }) ) ); @@ -16070,9 +17401,72 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ /******************************************************************** -** Solidified function: add_sequence_manager +** Solidified function: check_strip_length ********************************************************************/ -be_local_closure(class_AnimationEngine_add_sequence_manager, /* name */ +be_local_closure(class_AnimationEngine_check_strip_length, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(check_strip_length), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040312, // 0001 GETMET R1 R1 K18 + 0x7C040200, // 0002 CALL R1 1 + 0x88080109, // 0003 GETMBR R2 R0 K9 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080128, // 0006 GETMET R2 R0 K40 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x80040400, // 000A RET 1 R2 + 0x50080000, // 000B LDBOOL R2 0 0 + 0x80040400, // 000C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_strip_length +********************************************************************/ +be_local_closure(class_AnimationEngine_get_strip_length, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(get_strip_length), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040129, // 0000 GETMET R1 R0 K41 + 0x7C040200, // 0001 CALL R1 1 + 0x88040109, // 0002 GETMBR R1 R0 K9 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _handle_strip_length_change +********************************************************************/ +be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -16083,14 +17477,24 @@ be_local_closure(class_AnimationEngine_add_sequence_manager, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(add_sequence_manager), + be_str_weak(_handle_strip_length_change), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8808010A, // 0000 GETMBR R2 R0 K10 - 0x8C080524, // 0001 GETMET R2 R2 K36 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040000, // 0004 RET 1 R0 + ( &(const binstruction[15]) { /* code */ + 0x18080302, // 0000 LE R2 R1 K2 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x90021201, // 0003 SETMBR R0 K9 R1 + 0x8808010E, // 0004 GETMBR R2 R0 K14 + 0x8C08052A, // 0005 GETMET R2 R2 K42 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080114, // 0008 GETMBR R2 R0 K20 + 0x8C08052A, // 0009 GETMET R2 R2 K42 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x90023002, // 000D SETMBR R0 K24 R2 + 0x80000000, // 000E RET 0 }) ) ); @@ -16098,9 +17502,106 @@ be_local_closure(class_AnimationEngine_add_sequence_manager, /* name */ /******************************************************************** -** Solidified function: interrupt_animation +** Solidified function: is_active ********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ +be_local_closure(class_AnimationEngine_is_active, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(is_active), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_current +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_current, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_current), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0xA8020006, // 0003 EXBLK 0 #000B + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x880C0508, // 0006 GETMBR R3 R2 K8 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C051E, // 0008 GETMET R3 R2 K30 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7001FFF8, // 000A JMP #0004 + 0x5804002B, // 000B LDCONST R1 K43 + 0xAC040200, // 000C CATCH R1 1 0 + 0xB0080000, // 000D RAISE 2 R0 R0 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: cleanup +********************************************************************/ +be_local_closure(class_AnimationEngine_cleanup, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(cleanup), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C04011E, // 0000 GETMET R1 R0 K30 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040105, // 0002 GETMET R1 R0 K5 + 0x7C040200, // 0003 CALL R1 1 + 0x4C040000, // 0004 LDNIL R1 + 0x90021C01, // 0005 SETMBR R0 K14 R1 + 0x4C040000, // 0006 LDNIL R1 + 0x90022801, // 0007 SETMBR R0 K20 R1 + 0x4C040000, // 0008 LDNIL R1 + 0x90020801, // 0009 SETMBR R0 K4 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_tick +********************************************************************/ +be_local_closure(class_AnimationEngine_on_tick, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ @@ -16111,35 +17612,156 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_animation), + be_str_weak(on_tick), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x58080008, // 0000 LDCONST R2 K8 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100100, // 0002 GETMBR R4 R0 K0 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8810072E, // 0008 GETMBR R4 R3 K46 - 0x4C140000, // 0009 LDNIL R5 - 0x20100805, // 000A NE R4 R4 R5 - 0x7812000A, // 000B JMPF R4 #0017 - 0x8810072E, // 000C GETMBR R4 R3 K46 - 0x1C100801, // 000D EQ R4 R4 R1 - 0x78120007, // 000E JMPF R4 #0017 - 0x8C100702, // 000F GETMET R4 R3 K2 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C100400, // 0011 CALL R4 2 - 0x88100100, // 0012 GETMBR R4 R0 K0 - 0x8C10090B, // 0013 GETMET R4 R4 K11 - 0x5C180400, // 0014 MOVE R6 R2 - 0x7C100400, // 0015 CALL R4 2 - 0x80000800, // 0016 RET 0 - 0x00080507, // 0017 ADD R2 R2 K7 - 0x7001FFE7, // 0018 JMP #0001 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[53]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x740A0001, // 0001 JMPT R2 #0004 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x80040400, // 0003 RET 1 R2 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x780A0003, // 0006 JMPF R2 #000B + 0xB80A4600, // 0007 GETNGBL R2 K35 + 0x8C080524, // 0008 GETMET R2 R2 K36 + 0x7C080200, // 0009 CALL R2 1 + 0x5C040400, // 000A MOVE R1 R2 + 0x8C080129, // 000B GETMET R2 R0 K41 + 0x7C080200, // 000C CALL R2 1 + 0x90022C01, // 000D SETMBR R0 K22 R1 + 0x88080115, // 000E GETMBR R2 R0 K21 + 0x04080202, // 000F SUB R2 R1 R2 + 0x540E0004, // 0010 LDINT R3 5 + 0x140C0403, // 0011 LT R3 R2 R3 + 0x780E0001, // 0012 JMPF R3 #0015 + 0x500C0200, // 0013 LDBOOL R3 1 0 + 0x80040600, // 0014 RET 1 R3 + 0x90022A01, // 0015 SETMBR R0 K21 R1 + 0x880C0104, // 0016 GETMBR R3 R0 K4 + 0x880C072C, // 0017 GETMBR R3 R3 K44 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E0005, // 001A JMPF R3 #0021 + 0x880C0104, // 001B GETMBR R3 R0 K4 + 0x8C0C072C, // 001C GETMET R3 R3 K44 + 0x7C0C0200, // 001D CALL R3 1 + 0x740E0001, // 001E JMPT R3 #0021 + 0x500C0200, // 001F LDBOOL R3 1 0 + 0x80040600, // 0020 RET 1 R3 + 0x580C0002, // 0021 LDCONST R3 K2 + 0x6010000C, // 0022 GETGBL R4 G12 + 0x8814010A, // 0023 GETMBR R5 R0 K10 + 0x7C100200, // 0024 CALL R4 1 + 0x14100604, // 0025 LT R4 R3 R4 + 0x78120005, // 0026 JMPF R4 #002D + 0x8810010A, // 0027 GETMBR R4 R0 K10 + 0x94100803, // 0028 GETIDX R4 R4 R3 + 0x8C10091F, // 0029 GETMET R4 R4 K31 + 0x7C100200, // 002A CALL R4 1 + 0x000C0701, // 002B ADD R3 R3 K1 + 0x7001FFF4, // 002C JMP #0022 + 0x8C10012D, // 002D GETMET R4 R0 K45 + 0x5C180200, // 002E MOVE R6 R1 + 0x7C100400, // 002F CALL R4 2 + 0x8C10012E, // 0030 GETMET R4 R0 K46 + 0x5C180200, // 0031 MOVE R6 R1 + 0x7C100400, // 0032 CALL R4 2 + 0x50100200, // 0033 LDBOOL R4 1 0 + 0x80040800, // 0034 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_AnimationEngine_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_AnimationEngine, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x78060009, // 0001 JMPF R1 #000C + 0x50040000, // 0002 LDBOOL R1 0 0 + 0x90021001, // 0003 SETMBR R0 K8 R1 + 0x88040117, // 0004 GETMBR R1 R0 K23 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060003, // 0007 JMPF R1 #000C + 0xB8064600, // 0008 GETNGBL R1 K35 + 0x8C04032F, // 0009 GETMET R1 R1 K47 + 0x880C0117, // 000A GETMBR R3 R0 K23 + 0x7C040400, // 000B CALL R1 2 + 0x80040000, // 000C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_animations +********************************************************************/ +be_local_closure(class_AnimationEngine_get_animations, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(get_animations), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_events +********************************************************************/ +be_local_closure(class_AnimationEngine__process_events, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(_process_events), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB80A2600, // 0000 GETNGBL R2 K19 + 0x88080530, // 0001 GETMBR R2 R2 K48 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0xB80A2600, // 0005 GETNGBL R2 K19 + 0x88080530, // 0006 GETMBR R2 R2 K48 + 0x8C080531, // 0007 GETMET R2 R2 K49 + 0x7C080200, // 0008 CALL R2 1 + 0x80000000, // 0009 RET 0 }) ) ); @@ -16152,56 +17774,138 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ be_local_class(AnimationEngine, 11, NULL, - be_nested_map(38, + be_nested_map(40, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(interrupt_current, 20), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, - { be_const_key_weak(animations, -1), be_const_var(2) }, - { be_const_key_weak(add_sequence_manager, -1), be_const_closure(class_AnimationEngine_add_sequence_manager_closure) }, - { be_const_key_weak(get_animations, 17), be_const_closure(class_AnimationEngine_get_animations_closure) }, { be_const_key_weak(_sort_animations, -1), be_const_closure(class_AnimationEngine__sort_animations_closure) }, - { be_const_key_weak(remove_sequence_manager, -1), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, - { be_const_key_weak(strip, -1), be_const_var(0) }, { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, - { be_const_key_weak(get_strip, -1), be_const_closure(class_AnimationEngine_get_strip_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_AnimationEngine_start_closure) }, - { be_const_key_weak(_output_to_strip, -1), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, - { be_const_key_weak(is_active, 23), be_const_closure(class_AnimationEngine_is_active_closure) }, - { be_const_key_weak(init, 6), be_const_closure(class_AnimationEngine_init_closure) }, - { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, - { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, + { be_const_key_weak(get_animations, -1), be_const_closure(class_AnimationEngine_get_animations_closure) }, + { be_const_key_weak(width, -1), be_const_var(1) }, + { be_const_key_weak(size, 39), be_const_closure(class_AnimationEngine_size_closure) }, + { be_const_key_weak(tostring, 1), be_const_closure(class_AnimationEngine_tostring_closure) }, + { be_const_key_weak(_clear_strip, 38), be_const_closure(class_AnimationEngine__clear_strip_closure) }, + { be_const_key_weak(remove_sequence_manager, 2), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, + { be_const_key_weak(add_sequence_manager, -1), be_const_closure(class_AnimationEngine_add_sequence_manager_closure) }, { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, - { be_const_key_weak(width, 9), be_const_var(1) }, - { be_const_key_weak(frame_buffer, 31), be_const_var(4) }, - { be_const_key_weak(add_animation, 15), be_const_closure(class_AnimationEngine_add_animation_closure) }, - { be_const_key_weak(remove_animation, 1), be_const_closure(class_AnimationEngine_remove_animation_closure) }, - { be_const_key_weak(resume_after, 18), be_const_closure(class_AnimationEngine_resume_after_closure) }, - { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, - { be_const_key_weak(_update_and_render, 36), be_const_closure(class_AnimationEngine__update_and_render_closure) }, - { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, - { be_const_key_weak(time_ms, 29), be_const_var(8) }, - { be_const_key_weak(is_running, -1), be_const_var(6) }, - { be_const_key_weak(last_update, 26), be_const_var(7) }, - { be_const_key_weak(interrupt_all, 2), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, - { be_const_key_weak(get_strip_length, -1), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, + { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, + { be_const_key_weak(interrupt_current, -1), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_AnimationEngine_tostring_closure) }, - { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, - { be_const_key_weak(render_needed, -1), be_const_var(10) }, - { be_const_key_weak(_clear_strip, 8), be_const_closure(class_AnimationEngine__clear_strip_closure) }, + { be_const_key_weak(interrupt_animation, 17), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, + { be_const_key_weak(_update_and_render, -1), be_const_closure(class_AnimationEngine__update_and_render_closure) }, + { be_const_key_weak(resume_after, 3), be_const_closure(class_AnimationEngine_resume_after_closure) }, { be_const_key_weak(sequence_managers, -1), be_const_var(3) }, - { be_const_key_weak(size, -1), be_const_closure(class_AnimationEngine_size_closure) }, - { be_const_key_weak(interrupt_animation, -1), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, + { be_const_key_weak(time_ms, -1), be_const_var(8) }, + { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, + { be_const_key_weak(_handle_strip_length_change, -1), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, + { be_const_key_weak(remove_animation, 28), be_const_closure(class_AnimationEngine_remove_animation_closure) }, + { be_const_key_weak(is_running, 16), be_const_var(6) }, + { be_const_key_weak(get_strip_length, 24), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, + { be_const_key_weak(render_needed, -1), be_const_var(10) }, + { be_const_key_weak(last_update, -1), be_const_var(7) }, + { be_const_key_weak(add_animation, 30), be_const_closure(class_AnimationEngine_add_animation_closure) }, + { be_const_key_weak(animations, 29), be_const_var(2) }, + { be_const_key_weak(check_strip_length, 22), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, + { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, + { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, + { be_const_key_weak(frame_buffer, -1), be_const_var(4) }, + { be_const_key_weak(start, 19), be_const_closure(class_AnimationEngine_start_closure) }, + { be_const_key_weak(is_active, -1), be_const_closure(class_AnimationEngine_is_active_closure) }, + { be_const_key_weak(strip, -1), be_const_var(0) }, + { be_const_key_weak(clear, 11), be_const_closure(class_AnimationEngine_clear_closure) }, + { be_const_key_weak(init, 10), be_const_closure(class_AnimationEngine_init_closure) }, + { be_const_key_weak(_output_to_strip, 9), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, + { be_const_key_weak(get_strip, -1), be_const_closure(class_AnimationEngine_get_strip_closure) }, + { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, })), be_str_weak(AnimationEngine) ); -extern const bclass be_class_PaletteGradientAnimation; +/******************************************************************** +** 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: noise_single_color +********************************************************************/ +be_local_closure(noise_single_color, /* 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(noise_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(scale), + /* K4 */ be_nested_str_weak(speed), + /* K5 */ be_nested_str_weak(octaves), + /* K6 */ be_const_int(1), + }), + be_str_weak(noise_single_color), + &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 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0031, // 0006 LDINT R2 50 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A001D, // 0008 LDINT R2 30 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x90060B06, // 000A SETMBR R1 K5 K6 + 0x80040200, // 000B RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +extern const bclass be_class_PaletteMeterAnimation; /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_init, /* name */ +be_local_closure(class_PaletteMeterAnimation_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -16214,7 +17918,7 @@ be_local_closure(class_PaletteGradientAnimation_init, /* name */ ( &(const bvalue[ 3]) { /* constants */ /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_gradient), + /* K2 */ be_nested_str_weak(palette_meter), }), be_str_weak(init), &be_const_str_solidified, @@ -16236,9 +17940,9 @@ 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_PaletteMeterAnimation__update_value_buffer, /* name */ be_nested_proto( - 16, /* nstack */ + 12, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -16246,8 +17950,8 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(shift_period), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(value_func), /* K1 */ be_nested_str_weak(engine), /* K2 */ be_nested_str_weak(get_strip_length), /* K3 */ be_nested_str_weak(value_buffer), @@ -16255,55 +17959,53 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name /* K5 */ be_nested_str_weak(tasmota), /* K6 */ be_nested_str_weak(scale_uint), /* K7 */ be_const_int(0), - /* K8 */ be_const_real_hex(0x447A0000), - /* K9 */ be_const_int(1), + /* K8 */ be_const_int(1), }), be_str_weak(_update_value_buffer), &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ + ( &(const binstruction[42]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x88140103, // 0005 GETMBR R5 R0 K3 - 0x7C100200, // 0006 CALL R4 1 - 0x20100803, // 0007 NE R4 R4 R3 - 0x78120003, // 0008 JMPF R4 #000D - 0x88100103, // 0009 GETMBR R4 R0 K3 - 0x8C100904, // 000A GETMET R4 R4 K4 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0xB8120A00, // 000D GETNGBL R4 K5 - 0x8C100906, // 000E GETMET R4 R4 K6 - 0x10180202, // 000F MOD R6 R1 R2 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x5C200400, // 0011 MOVE R8 R2 - 0x58240007, // 0012 LDCONST R9 K7 - 0x542A03E7, // 0013 LDINT R10 1000 - 0x7C100C00, // 0014 CALL R4 6 - 0x0C100908, // 0015 DIV R4 R4 K8 - 0x60140009, // 0016 GETGBL R5 G9 - 0x08180803, // 0017 MUL R6 R4 R3 - 0x7C140200, // 0018 CALL R5 1 - 0x58180007, // 0019 LDCONST R6 K7 - 0x141C0C03, // 001A LT R7 R6 R3 - 0x781E000D, // 001B JMPF R7 #002A - 0x001C0C05, // 001C ADD R7 R6 R5 - 0x101C0E03, // 001D MOD R7 R7 R3 - 0x88200103, // 001E GETMBR R8 R0 K3 - 0xB8260A00, // 001F GETNGBL R9 K5 - 0x8C241306, // 0020 GETMET R9 R9 K6 - 0x5C2C0E00, // 0021 MOVE R11 R7 - 0x58300007, // 0022 LDCONST R12 K7 - 0x04340709, // 0023 SUB R13 R3 K9 - 0x58380007, // 0024 LDCONST R14 K7 - 0x543E0063, // 0025 LDINT R15 100 - 0x7C240C00, // 0026 CALL R9 6 - 0x98200C09, // 0027 SETIDX R8 R6 R9 - 0x00180D09, // 0028 ADD R6 R6 K9 - 0x7001FFEF, // 0029 JMP #001A - 0x80000000, // 002A RET 0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C0C0403, // 0002 EQ R3 R2 R3 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x6010000C, // 0008 GETGBL R4 G12 + 0x88140103, // 0009 GETMBR R5 R0 K3 + 0x7C100200, // 000A CALL R4 1 + 0x20100803, // 000B NE R4 R4 R3 + 0x78120003, // 000C JMPF R4 #0011 + 0x88100103, // 000D GETMBR R4 R0 K3 + 0x8C100904, // 000E GETMET R4 R4 K4 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x5C100400, // 0011 MOVE R4 R2 + 0x5C140200, // 0012 MOVE R5 R1 + 0x5C180000, // 0013 MOVE R6 R0 + 0x7C100400, // 0014 CALL R4 2 + 0xB8160A00, // 0015 GETNGBL R5 K5 + 0x8C140B06, // 0016 GETMET R5 R5 K6 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x58200007, // 0018 LDCONST R8 K7 + 0x54260063, // 0019 LDINT R9 100 + 0x58280007, // 001A LDCONST R10 K7 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C140C00, // 001C CALL R5 6 + 0x58180007, // 001D LDCONST R6 K7 + 0x141C0C03, // 001E LT R7 R6 R3 + 0x781E0008, // 001F JMPF R7 #0029 + 0x881C0103, // 0020 GETMBR R7 R0 K3 + 0x14200C05, // 0021 LT R8 R6 R5 + 0x78220001, // 0022 JMPF R8 #0025 + 0x54220063, // 0023 LDINT R8 100 + 0x70020000, // 0024 JMP #0026 + 0x58200007, // 0025 LDCONST R8 K7 + 0x981C0C08, // 0026 SETIDX R7 R6 R8 + 0x00180D08, // 0027 ADD R6 R6 K8 + 0x7001FFF4, // 0028 JMP #001E + 0x80000000, // 0029 RET 0 }) ) ); @@ -16311,10 +18013,10 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name /******************************************************************** -** Solidified class: PaletteGradientAnimation +** Solidified class: PaletteMeterAnimation ********************************************************************/ extern const bclass be_class_PalettePatternAnimation; -be_local_class(PaletteGradientAnimation, +be_local_class(PaletteMeterAnimation, 0, &be_class_PalettePatternAnimation, be_nested_map(3, @@ -16322,18 +18024,1429 @@ be_local_class(PaletteGradientAnimation, { 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(shift_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(value_func, -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(default, -1), be_const_int(10000) }, + { be_const_key_weak(default, -1), be_const_nil() }, + { be_const_key_weak(type, -1), be_nested_str_weak(function) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(init, -1), be_const_closure(class_PaletteMeterAnimation_init_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteMeterAnimation__update_value_buffer_closure) }, + })), + be_str_weak(PaletteMeterAnimation) +); + +/******************************************************************** +** Solidified function: ease_in +********************************************************************/ +be_local_closure(ease_in, /* 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_nested_str_weak(EASE_IN), + }), + be_str_weak(ease_in), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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_nested_str_weak(SAWTOOTH), + }), + be_str_weak(ramp), + &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 + 0xB80A0000, // 0004 GETNGBL R2 K0 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x80040200, // 0007 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: pulsating_color_provider +********************************************************************/ +be_local_closure(pulsating_color_provider, /* 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_color), + /* K2 */ be_nested_str_weak(curve_factor), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(duration), + }), + be_str_weak(pulsating_color_provider), + &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: 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[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(solid), + }), + be_str_weak(solid), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040300, // 0001 GETMET R1 R1 K0 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x90060302, // 0004 SETMBR R1 K1 K2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +extern const bclass be_class_PaletteWaveAnimation; + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PaletteWaveAnimation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* 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(init), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(palette_wave), + }), + 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: _update_value_buffer +********************************************************************/ +be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ + be_nested_proto( + 19, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(wave_period), + /* K1 */ be_nested_str_weak(wave_length), + /* K2 */ be_nested_str_weak(engine), + /* K3 */ be_nested_str_weak(get_strip_length), + /* K4 */ be_nested_str_weak(value_buffer), + /* K5 */ be_nested_str_weak(resize), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_uint), + /* K8 */ be_const_int(0), + /* K9 */ be_const_real_hex(0x447A0000), + /* K10 */ be_nested_str_weak(sine_int), + /* K11 */ be_nested_str_weak(scale_int), + /* K12 */ be_const_int(1), + }), + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x8C100903, // 0003 GETMET R4 R4 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x6014000C, // 0005 GETGBL R5 G12 + 0x88180104, // 0006 GETMBR R6 R0 K4 + 0x7C140200, // 0007 CALL R5 1 + 0x20140A04, // 0008 NE R5 R5 R4 + 0x78160003, // 0009 JMPF R5 #000E + 0x88140104, // 000A GETMBR R5 R0 K4 + 0x8C140B05, // 000B GETMET R5 R5 K5 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x7C140400, // 000D CALL R5 2 + 0xB8160C00, // 000E GETNGBL R5 K6 + 0x8C140B07, // 000F GETMET R5 R5 K7 + 0x101C0202, // 0010 MOD R7 R1 R2 + 0x58200008, // 0011 LDCONST R8 K8 + 0x5C240400, // 0012 MOVE R9 R2 + 0x58280008, // 0013 LDCONST R10 K8 + 0x542E03E7, // 0014 LDINT R11 1000 + 0x7C140C00, // 0015 CALL R5 6 + 0x0C140B09, // 0016 DIV R5 R5 K9 + 0x60180009, // 0017 GETGBL R6 G9 + 0x081C0A03, // 0018 MUL R7 R5 R3 + 0x7C180200, // 0019 CALL R6 1 + 0x581C0008, // 001A LDCONST R7 K8 + 0x14200E04, // 001B LT R8 R7 R4 + 0x78220019, // 001C JMPF R8 #0037 + 0x00200E06, // 001D ADD R8 R7 R6 + 0x10201003, // 001E MOD R8 R8 R3 + 0xB8260C00, // 001F GETNGBL R9 K6 + 0x8C241307, // 0020 GETMET R9 R9 K7 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x58300008, // 0022 LDCONST R12 K8 + 0x5C340600, // 0023 MOVE R13 R3 + 0x58380008, // 0024 LDCONST R14 K8 + 0x543E7FFE, // 0025 LDINT R15 32767 + 0x7C240C00, // 0026 CALL R9 6 + 0xB82A0C00, // 0027 GETNGBL R10 K6 + 0x8C28150A, // 0028 GETMET R10 R10 K10 + 0x5C301200, // 0029 MOVE R12 R9 + 0x7C280400, // 002A CALL R10 2 + 0x882C0104, // 002B GETMBR R11 R0 K4 + 0xB8320C00, // 002C GETNGBL R12 K6 + 0x8C30190B, // 002D GETMET R12 R12 K11 + 0x5C381400, // 002E MOVE R14 R10 + 0x543DEFFF, // 002F LDINT R15 -4096 + 0x54420FFF, // 0030 LDINT R16 4096 + 0x58440008, // 0031 LDCONST R17 K8 + 0x544A0063, // 0032 LDINT R18 100 + 0x7C300C00, // 0033 CALL R12 6 + 0x982C0E0C, // 0034 SETIDX R11 R7 R12 + 0x001C0F0C, // 0035 ADD R7 R7 K12 + 0x7001FFE3, // 0036 JMP #001B + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PaletteWaveAnimation +********************************************************************/ +extern const bclass be_class_PalettePatternAnimation; +be_local_class(PaletteWaveAnimation, + 0, + &be_class_PalettePatternAnimation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { 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(wave_period, -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(default, -1), be_const_int(5000) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + })) ) } )) }, + { be_const_key_weak(wave_length, -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(default, -1), be_const_int(10) }, { be_const_key_weak(min, -1), be_const_int(1) }, })) ) } )) }, })) ) } )) }, - { 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(init, -1), be_const_closure(class_PaletteWaveAnimation_init_closure) }, + { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteWaveAnimation__update_value_buffer_closure) }, })), - be_str_weak(PaletteGradientAnimation) + be_str_weak(PaletteWaveAnimation) ); +// compact class 'PlasmaAnimation' ktab size: 46, total: 93 (saved 376 bytes) +static const bvalue be_ktab_class_PlasmaAnimation[46] = { + /* K0 */ be_nested_str_weak(start), + /* K1 */ be_nested_str_weak(color), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(rich_palette), + /* K4 */ be_nested_str_weak(engine), + /* K5 */ be_nested_str_weak(palette), + /* K6 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K7 */ be_nested_str_weak(cycle_period), + /* K8 */ be_nested_str_weak(transition_type), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(brightness), + /* K11 */ be_nested_str_weak(range_min), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(range_max), + /* K14 */ be_nested_str_weak(time_phase), + /* K15 */ be_nested_str_weak(is_value_provider), + /* K16 */ be_nested_str_weak(0x_X2508x), + /* K17 */ be_nested_str_weak(PlasmaAnimation_X28color_X3D_X25s_X2C_X20freq_x_X3D_X25s_X2C_X20freq_y_X3D_X25s_X2C_X20time_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K18 */ be_nested_str_weak(freq_x), + /* K19 */ be_nested_str_weak(freq_y), + /* K20 */ be_nested_str_weak(time_speed), + /* K21 */ be_nested_str_weak(priority), + /* K22 */ be_nested_str_weak(is_running), + /* K23 */ be_nested_str_weak(init), + /* K24 */ be_nested_str_weak(current_colors), + /* K25 */ be_nested_str_weak(_initialize_colors), + /* K26 */ be_nested_str_weak(update), + /* K27 */ be_nested_str_weak(start_time), + /* K28 */ be_nested_str_weak(tasmota), + /* K29 */ be_nested_str_weak(scale_uint), + /* K30 */ be_nested_str_weak(_calculate_plasma), + /* K31 */ be_nested_str_weak(get_strip_length), + /* K32 */ be_nested_str_weak(resize), + /* K33 */ be_const_int(-16777216), + /* K34 */ be_nested_str_weak(set_param), + /* K35 */ be_nested_str_weak(phase_x), + /* K36 */ be_nested_str_weak(phase_y), + /* K37 */ be_nested_str_weak(blend_mode), + /* K38 */ be_nested_str_weak(_sine), + /* K39 */ be_const_int(2), + /* K40 */ be_nested_str_weak(is_color_provider), + /* K41 */ be_nested_str_weak(get_color_for_value), + /* K42 */ be_nested_str_weak(resolve_value), + /* K43 */ be_nested_str_weak(width), + /* K44 */ be_nested_str_weak(set_pixel_color), + /* K45 */ be_nested_str_weak(sine_int), +}; + + +extern const bclass be_class_PlasmaAnimation; + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* 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 + 0x4C0C0000, // 0007 LDNIL R3 + 0x1C080403, // 0008 EQ R2 R2 R3 + 0x780A000F, // 0009 JMPF R2 #001A + 0xB80A0400, // 000A GETNGBL R2 K2 + 0x8C080503, // 000B GETMET R2 R2 K3 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x7C080400, // 000D CALL R2 2 + 0xB80E0400, // 000E GETNGBL R3 K2 + 0x880C0706, // 000F GETMBR R3 R3 K6 + 0x900A0A03, // 0010 SETMBR R2 K5 R3 + 0x540E1387, // 0011 LDINT R3 5000 + 0x900A0E03, // 0012 SETMBR R2 K7 R3 + 0x900A1109, // 0013 SETMBR R2 K8 K9 + 0x540E00FE, // 0014 LDINT R3 255 + 0x900A1403, // 0015 SETMBR R2 K10 R3 + 0x900A170C, // 0016 SETMBR R2 K11 K12 + 0x540E00FE, // 0017 LDINT R3 255 + 0x900A1A03, // 0018 SETMBR R2 K13 R3 + 0x90020202, // 0019 SETMBR R0 K1 R2 + 0x90021D0C, // 001A SETMBR R0 K14 K12 + 0x80040000, // 001B RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_PlasmaAnimation_tostring, /* name */ + be_nested_proto( + 11, /* 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_PlasmaAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0xB80E0400, // 0002 GETNGBL R3 K2 + 0x8C0C070F, // 0003 GETMET R3 R3 K15 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x780E0004, // 0006 JMPF R3 #000C + 0x600C0008, // 0007 GETGBL R3 G8 + 0x5C100400, // 0008 MOVE R4 R2 + 0x7C0C0200, // 0009 CALL R3 1 + 0x5C040600, // 000A MOVE R1 R3 + 0x70020004, // 000B JMP #0011 + 0x600C0018, // 000C GETGBL R3 G24 + 0x58100010, // 000D LDCONST R4 K16 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x5C040600, // 0010 MOVE R1 R3 + 0x600C0018, // 0011 GETGBL R3 G24 + 0x58100011, // 0012 LDCONST R4 K17 + 0x5C140200, // 0013 MOVE R5 R1 + 0x88180112, // 0014 GETMBR R6 R0 K18 + 0x881C0113, // 0015 GETMBR R7 R0 K19 + 0x88200114, // 0016 GETMBR R8 R0 K20 + 0x88240115, // 0017 GETMBR R9 R0 K21 + 0x88280116, // 0018 GETMBR R10 R0 K22 + 0x7C0C0E00, // 0019 CALL R3 7 + 0x80040600, // 001A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080517, // 0003 GETMET R2 R2 K23 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90021D0C, // 0006 SETMBR R0 K14 K12 + 0x60080012, // 0007 GETGBL R2 G18 + 0x7C080000, // 0008 CALL R2 0 + 0x90023002, // 0009 SETMBR R0 K24 R2 + 0x8C080119, // 000A GETMET R2 R0 K25 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051A, // 0003 GETMET R2 R2 K26 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x88080114, // 0009 GETMBR R2 R0 K20 + 0x240C050C, // 000A GT R3 R2 K12 + 0x780E0011, // 000B JMPF R3 #001E + 0x880C011B, // 000C GETMBR R3 R0 K27 + 0x040C0203, // 000D SUB R3 R1 R3 + 0xB8123800, // 000E GETNGBL R4 K28 + 0x8C10091D, // 000F GETMET R4 R4 K29 + 0x5C180400, // 0010 MOVE R6 R2 + 0x581C000C, // 0011 LDCONST R7 K12 + 0x542200FE, // 0012 LDINT R8 255 + 0x5824000C, // 0013 LDCONST R9 K12 + 0x542A0007, // 0014 LDINT R10 8 + 0x7C100C00, // 0015 CALL R4 6 + 0x2414090C, // 0016 GT R5 R4 K12 + 0x78160005, // 0017 JMPF R5 #001E + 0x08140604, // 0018 MUL R5 R3 R4 + 0x541A03E7, // 0019 LDINT R6 1000 + 0x0C140A06, // 001A DIV R5 R5 R6 + 0x541A00FF, // 001B LDINT R6 256 + 0x10140A06, // 001C MOD R5 R5 R6 + 0x90021C05, // 001D SETMBR R0 K14 R5 + 0x8C0C011E, // 001E GETMET R3 R0 K30 + 0x5C140200, // 001F MOVE R5 R1 + 0x7C0C0400, // 0020 CALL R3 2 + 0x500C0200, // 0021 LDBOOL R3 1 0 + 0x80040600, // 0022 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_colors +********************************************************************/ +be_local_closure(class_PlasmaAnimation__initialize_colors, /* 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_PlasmaAnimation, /* shared constants */ + be_str_weak(_initialize_colors), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C04031F, // 0001 GETMET R1 R1 K31 + 0x7C040200, // 0002 CALL R1 1 + 0x88080118, // 0003 GETMBR R2 R0 K24 + 0x8C080520, // 0004 GETMET R2 R2 K32 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x5808000C, // 0007 LDCONST R2 K12 + 0x140C0401, // 0008 LT R3 R2 R1 + 0x780E0003, // 0009 JMPF R3 #000E + 0x880C0118, // 000A GETMBR R3 R0 K24 + 0x980C0521, // 000B SETIDX R3 R2 K33 + 0x00080509, // 000C ADD R2 R2 K9 + 0x7001FFF9, // 000D JMP #0008 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_PlasmaAnimation_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_PlasmaAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x1C0C0301, // 0000 EQ R3 R1 K1 + 0x780E0015, // 0001 JMPF R3 #0018 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0403, // 0003 EQ R3 R2 R3 + 0x780E0012, // 0004 JMPF R3 #0018 + 0xB80E0400, // 0005 GETNGBL R3 K2 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x88140104, // 0007 GETMBR R5 R0 K4 + 0x7C0C0400, // 0008 CALL R3 2 + 0xB8120400, // 0009 GETNGBL R4 K2 + 0x88100906, // 000A GETMBR R4 R4 K6 + 0x900E0A04, // 000B SETMBR R3 K5 R4 + 0x54121387, // 000C LDINT R4 5000 + 0x900E0E04, // 000D SETMBR R3 K7 R4 + 0x900E1109, // 000E SETMBR R3 K8 K9 + 0x541200FE, // 000F LDINT R4 255 + 0x900E1404, // 0010 SETMBR R3 K10 R4 + 0x900E170C, // 0011 SETMBR R3 K11 K12 + 0x541200FE, // 0012 LDINT R4 255 + 0x900E1A04, // 0013 SETMBR R3 K13 R4 + 0x8C100122, // 0014 GETMET R4 R0 K34 + 0x58180001, // 0015 LDCONST R6 K1 + 0x5C1C0600, // 0016 MOVE R7 R3 + 0x7C100600, // 0017 CALL R4 3 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_plasma +********************************************************************/ +be_local_closure(class_PlasmaAnimation__calculate_plasma, /* name */ + be_nested_proto( + 21, /* 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_PlasmaAnimation, /* shared constants */ + be_str_weak(_calculate_plasma), + &be_const_str_solidified, + ( &(const binstruction[103]) { /* code */ + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C08051F, // 0001 GETMET R2 R2 K31 + 0x7C080200, // 0002 CALL R2 1 + 0x600C000C, // 0003 GETGBL R3 G12 + 0x88100118, // 0004 GETMBR R4 R0 K24 + 0x7C0C0200, // 0005 CALL R3 1 + 0x200C0602, // 0006 NE R3 R3 R2 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C0119, // 0008 GETMET R3 R0 K25 + 0x7C0C0200, // 0009 CALL R3 1 + 0x880C0112, // 000A GETMBR R3 R0 K18 + 0x88100113, // 000B GETMBR R4 R0 K19 + 0x88140123, // 000C GETMBR R5 R0 K35 + 0x88180124, // 000D GETMBR R6 R0 K36 + 0x881C0125, // 000E GETMBR R7 R0 K37 + 0x88200101, // 000F GETMBR R8 R0 K1 + 0x5824000C, // 0010 LDCONST R9 K12 + 0x14281202, // 0011 LT R10 R9 R2 + 0x782A0052, // 0012 JMPF R10 #0066 + 0xB82A3800, // 0013 GETNGBL R10 K28 + 0x8C28151D, // 0014 GETMET R10 R10 K29 + 0x5C301200, // 0015 MOVE R12 R9 + 0x5834000C, // 0016 LDCONST R13 K12 + 0x04380509, // 0017 SUB R14 R2 K9 + 0x583C000C, // 0018 LDCONST R15 K12 + 0x544200FE, // 0019 LDINT R16 255 + 0x7C280C00, // 001A CALL R10 6 + 0x8C2C0126, // 001B GETMET R11 R0 K38 + 0x08341403, // 001C MUL R13 R10 R3 + 0x543A001F, // 001D LDINT R14 32 + 0x0C341A0E, // 001E DIV R13 R13 R14 + 0x00341A05, // 001F ADD R13 R13 R5 + 0x8838010E, // 0020 GETMBR R14 R0 K14 + 0x00341A0E, // 0021 ADD R13 R13 R14 + 0x7C2C0400, // 0022 CALL R11 2 + 0x8C300126, // 0023 GETMET R12 R0 K38 + 0x08381404, // 0024 MUL R14 R10 R4 + 0x543E001F, // 0025 LDINT R15 32 + 0x0C381C0F, // 0026 DIV R14 R14 R15 + 0x00381C06, // 0027 ADD R14 R14 R6 + 0x883C010E, // 0028 GETMBR R15 R0 K14 + 0x083C1F27, // 0029 MUL R15 R15 K39 + 0x00381C0F, // 002A ADD R14 R14 R15 + 0x7C300400, // 002B CALL R12 2 + 0x5834000C, // 002C LDCONST R13 K12 + 0x1C380F0C, // 002D EQ R14 R7 K12 + 0x783A0003, // 002E JMPF R14 #0033 + 0x0038160C, // 002F ADD R14 R11 R12 + 0x0C381D27, // 0030 DIV R14 R14 K39 + 0x5C341C00, // 0031 MOVE R13 R14 + 0x7002000E, // 0032 JMP #0042 + 0x1C380F09, // 0033 EQ R14 R7 K9 + 0x783A0009, // 0034 JMPF R14 #003F + 0xB83A3800, // 0035 GETNGBL R14 K28 + 0x8C381D1D, // 0036 GETMET R14 R14 K29 + 0x5C401600, // 0037 MOVE R16 R11 + 0x5844000C, // 0038 LDCONST R17 K12 + 0x544A00FE, // 0039 LDINT R18 255 + 0x584C000C, // 003A LDCONST R19 K12 + 0x5C501800, // 003B MOVE R20 R12 + 0x7C380C00, // 003C CALL R14 6 + 0x5C341C00, // 003D MOVE R13 R14 + 0x70020002, // 003E JMP #0042 + 0x0038160C, // 003F ADD R14 R11 R12 + 0x0C381D27, // 0040 DIV R14 R14 K39 + 0x5C341C00, // 0041 MOVE R13 R14 + 0x543A00FE, // 0042 LDINT R14 255 + 0x24381A0E, // 0043 GT R14 R13 R14 + 0x783A0001, // 0044 JMPF R14 #0047 + 0x543600FE, // 0045 LDINT R13 255 + 0x70020002, // 0046 JMP #004A + 0x14381B0C, // 0047 LT R14 R13 K12 + 0x783A0000, // 0048 JMPF R14 #004A + 0x5834000C, // 0049 LDCONST R13 K12 + 0x58380021, // 004A LDCONST R14 K33 + 0xB83E0400, // 004B GETNGBL R15 K2 + 0x8C3C1F28, // 004C GETMET R15 R15 K40 + 0x5C441000, // 004D MOVE R17 R8 + 0x7C3C0400, // 004E CALL R15 2 + 0x783E0009, // 004F JMPF R15 #005A + 0x883C1129, // 0050 GETMBR R15 R8 K41 + 0x4C400000, // 0051 LDNIL R16 + 0x203C1E10, // 0052 NE R15 R15 R16 + 0x783E0005, // 0053 JMPF R15 #005A + 0x8C3C1129, // 0054 GETMET R15 R8 K41 + 0x5C441A00, // 0055 MOVE R17 R13 + 0x5848000C, // 0056 LDCONST R18 K12 + 0x7C3C0600, // 0057 CALL R15 3 + 0x5C381E00, // 0058 MOVE R14 R15 + 0x70020007, // 0059 JMP #0062 + 0x8C3C012A, // 005A GETMET R15 R0 K42 + 0x5C441000, // 005B MOVE R17 R8 + 0x58480001, // 005C LDCONST R18 K1 + 0x544E0009, // 005D LDINT R19 10 + 0x084C1A13, // 005E MUL R19 R13 R19 + 0x004C0213, // 005F ADD R19 R1 R19 + 0x7C3C0800, // 0060 CALL R15 4 + 0x5C381E00, // 0061 MOVE R14 R15 + 0x883C0118, // 0062 GETMBR R15 R0 K24 + 0x983C120E, // 0063 SETIDX R15 R9 R14 + 0x00241309, // 0064 ADD R9 R9 K9 + 0x7001FFAA, // 0065 JMP #0011 + 0x80000000, // 0066 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_PlasmaAnimation_render, /* 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_PlasmaAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x880C0116, // 0000 GETMBR R3 R0 K22 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x880C0104, // 0007 GETMBR R3 R0 K4 + 0x8C0C071F, // 0008 GETMET R3 R3 K31 + 0x7C0C0200, // 0009 CALL R3 1 + 0x5810000C, // 000A LDCONST R4 K12 + 0x14140803, // 000B LT R5 R4 R3 + 0x78160009, // 000C JMPF R5 #0017 + 0x8814032B, // 000D GETMBR R5 R1 K43 + 0x14140805, // 000E LT R5 R4 R5 + 0x78160004, // 000F JMPF R5 #0015 + 0x8C14032C, // 0010 GETMET R5 R1 K44 + 0x5C1C0800, // 0011 MOVE R7 R4 + 0x88200118, // 0012 GETMBR R8 R0 K24 + 0x94201004, // 0013 GETIDX R8 R8 R4 + 0x7C140600, // 0014 CALL R5 3 + 0x00100909, // 0015 ADD R4 R4 K9 + 0x7001FFF3, // 0016 JMP #000B + 0x50140200, // 0017 LDBOOL R5 1 0 + 0x80040A00, // 0018 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _sine +********************************************************************/ +be_local_closure(class_PlasmaAnimation__sine, /* 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_PlasmaAnimation, /* shared constants */ + be_str_weak(_sine), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0xB80A3800, // 0000 GETNGBL R2 K28 + 0x8C08051D, // 0001 GETMET R2 R2 K29 + 0x5C100200, // 0002 MOVE R4 R1 + 0x5814000C, // 0003 LDCONST R5 K12 + 0x541A00FE, // 0004 LDINT R6 255 + 0x581C000C, // 0005 LDCONST R7 K12 + 0x54227FFE, // 0006 LDINT R8 32767 + 0x7C080C00, // 0007 CALL R2 6 + 0xB80E3800, // 0008 GETNGBL R3 K28 + 0x8C0C072D, // 0009 GETMET R3 R3 K45 + 0x5C140400, // 000A MOVE R5 R2 + 0x7C0C0400, // 000B CALL R3 2 + 0xB8123800, // 000C GETNGBL R4 K28 + 0x8C10091D, // 000D GETMET R4 R4 K29 + 0x5C180600, // 000E MOVE R6 R3 + 0x541DEFFF, // 000F LDINT R7 -4096 + 0x54220FFF, // 0010 LDINT R8 4096 + 0x5824000C, // 0011 LDCONST R9 K12 + 0x542A00FE, // 0012 LDINT R10 255 + 0x7C100C00, // 0013 CALL R4 6 + 0x80040800, // 0014 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: PlasmaAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(PlasmaAnimation, + 2, + &be_class_Animation, + be_nested_map(12, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_sine, -1), be_const_closure(class_PlasmaAnimation__sine_closure) }, + { be_const_key_weak(tostring, 2), be_const_closure(class_PlasmaAnimation_tostring_closure) }, + { be_const_key_weak(render, 5), be_const_closure(class_PlasmaAnimation_render_closure) }, + { be_const_key_weak(init, 9), be_const_closure(class_PlasmaAnimation_init_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_PlasmaAnimation_update_closure) }, + { be_const_key_weak(_calculate_plasma, 7), be_const_closure(class_PlasmaAnimation__calculate_plasma_closure) }, + { be_const_key_weak(_initialize_colors, -1), be_const_closure(class_PlasmaAnimation__initialize_colors_closure) }, + { be_const_key_weak(on_param_changed, 6), be_const_closure(class_PlasmaAnimation_on_param_changed_closure) }, + { be_const_key_weak(time_phase, -1), be_const_var(1) }, + { be_const_key_weak(current_colors, 10), 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(7, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(phase_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(64) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(freq_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(32) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(blend_mode, 4), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(2) }, + })) ) } )) }, + { be_const_key_weak(time_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(50) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(color, 3), 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(default, -1), be_const_nil() }, + })) ) } )) }, + { be_const_key_weak(phase_x, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(freq_y, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(23) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(start, 0), be_const_closure(class_PlasmaAnimation_start_closure) }, + })), + be_str_weak(PlasmaAnimation) +); + +/******************************************************************** +** Solidified function: shift_scroll_left +********************************************************************/ +be_local_closure(shift_scroll_left, /* 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(shift_animation), + /* K2 */ be_nested_str_weak(direction), + /* K3 */ be_nested_str_weak(shift_speed), + /* K4 */ be_nested_str_weak(wrap_around), + }), + be_str_weak(shift_scroll_left), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A007F, // 0006 LDINT R2 128 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x50080200, // 0008 LDBOOL R2 1 0 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sparkle_rainbow +********************************************************************/ +be_local_closure(sparkle_rainbow, /* 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[11]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(rich_palette), + /* K2 */ be_nested_str_weak(palette), + /* K3 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K4 */ be_nested_str_weak(cycle_period), + /* K5 */ be_nested_str_weak(transition_type), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(sparkle_animation), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_nested_str_weak(name), + /* K10 */ be_nested_str_weak(sparkle_rainbow), + }), + be_str_weak(sparkle_rainbow), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* 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 + 0x88080503, // 0005 GETMBR R2 R2 K3 + 0x90060402, // 0006 SETMBR R1 K2 R2 + 0x540A1387, // 0007 LDINT R2 5000 + 0x90060802, // 0008 SETMBR R1 K4 R2 + 0x90060B06, // 0009 SETMBR R1 K5 K6 + 0xB80A0000, // 000A GETNGBL R2 K0 + 0x8C080507, // 000B GETMET R2 R2 K7 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C080400, // 000D CALL R2 2 + 0x900A1001, // 000E SETMBR R2 K8 R1 + 0x900A130A, // 000F SETMBR R2 K9 K10 + 0x80040400, // 0010 RET 1 R2 + }) + ) +); +/*******************************************************************/ + +// compact class 'CrenelPositionAnimation' ktab size: 21, total: 27 (saved 48 bytes) +static const bvalue be_ktab_class_CrenelPositionAnimation[21] = { + /* K0 */ be_nested_str_weak(is_running), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(time_ms), + /* K3 */ be_nested_str_weak(width), + /* K4 */ be_nested_str_weak(back_color), + /* K5 */ be_nested_str_weak(pos), + /* K6 */ be_nested_str_weak(pulse_size), + /* K7 */ be_nested_str_weak(low_size), + /* K8 */ be_nested_str_weak(nb_pulse), + /* K9 */ be_nested_str_weak(color), + /* K10 */ be_const_int(-16777216), + /* K11 */ be_nested_str_weak(fill_pixels), + /* K12 */ be_const_int(0), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(set_pixel_color), + /* K15 */ be_nested_str_weak(get_param), + /* K16 */ be_nested_str_weak(animation), + /* K17 */ be_nested_str_weak(is_value_provider), + /* K18 */ be_nested_str_weak(0x_X2508x), + /* K19 */ be_nested_str_weak(CrenelPositionAnimation_X28color_X3D_X25s_X2C_X20pos_X3D_X25s_X2C_X20pulse_size_X3D_X25s_X2C_X20low_size_X3D_X25s_X2C_X20nb_pulse_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K20 */ be_nested_str_weak(priority), +}; + + +extern const bclass be_class_CrenelPositionAnimation; + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_CrenelPositionAnimation_render, /* name */ + be_nested_proto( + 16, /* 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_CrenelPositionAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[76]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0001, // 0009 JMPF R3 #000C + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x88080702, // 000B GETMBR R2 R3 K2 + 0x880C0303, // 000C GETMBR R3 R1 K3 + 0x88100104, // 000D GETMBR R4 R0 K4 + 0x88140105, // 000E GETMBR R5 R0 K5 + 0x88180106, // 000F GETMBR R6 R0 K6 + 0x881C0107, // 0010 GETMBR R7 R0 K7 + 0x88200108, // 0011 GETMBR R8 R0 K8 + 0x88240109, // 0012 GETMBR R9 R0 K9 + 0x60280009, // 0013 GETGBL R10 G9 + 0x002C0C07, // 0014 ADD R11 R6 R7 + 0x7C280200, // 0015 CALL R10 1 + 0x202C090A, // 0016 NE R11 R4 K10 + 0x782E0002, // 0017 JMPF R11 #001B + 0x8C2C030B, // 0018 GETMET R11 R1 K11 + 0x5C340800, // 0019 MOVE R13 R4 + 0x7C2C0400, // 001A CALL R11 2 + 0x182C150C, // 001B LE R11 R10 K12 + 0x782E0000, // 001C JMPF R11 #001E + 0x5828000D, // 001D LDCONST R10 K13 + 0x1C2C110C, // 001E EQ R11 R8 K12 + 0x782E0001, // 001F JMPF R11 #0022 + 0x502C0200, // 0020 LDBOOL R11 1 0 + 0x80041600, // 0021 RET 1 R11 + 0x142C110C, // 0022 LT R11 R8 K12 + 0x782E0006, // 0023 JMPF R11 #002B + 0x002C0A06, // 0024 ADD R11 R5 R6 + 0x042C170D, // 0025 SUB R11 R11 K13 + 0x102C160A, // 0026 MOD R11 R11 R10 + 0x042C1606, // 0027 SUB R11 R11 R6 + 0x002C170D, // 0028 ADD R11 R11 K13 + 0x5C141600, // 0029 MOVE R5 R11 + 0x70020007, // 002A JMP #0033 + 0x442C1400, // 002B NEG R11 R10 + 0x142C0A0B, // 002C LT R11 R5 R11 + 0x782E0004, // 002D JMPF R11 #0033 + 0x202C110C, // 002E NE R11 R8 K12 + 0x782E0002, // 002F JMPF R11 #0033 + 0x00140A0A, // 0030 ADD R5 R5 R10 + 0x0420110D, // 0031 SUB R8 R8 K13 + 0x7001FFF7, // 0032 JMP #002B + 0x142C0A03, // 0033 LT R11 R5 R3 + 0x782E0014, // 0034 JMPF R11 #004A + 0x202C110C, // 0035 NE R11 R8 K12 + 0x782E0012, // 0036 JMPF R11 #004A + 0x582C000C, // 0037 LDCONST R11 K12 + 0x14300B0C, // 0038 LT R12 R5 K12 + 0x78320001, // 0039 JMPF R12 #003C + 0x44300A00, // 003A NEG R12 R5 + 0x5C2C1800, // 003B MOVE R11 R12 + 0x14301606, // 003C LT R12 R11 R6 + 0x78320008, // 003D JMPF R12 #0047 + 0x00300A0B, // 003E ADD R12 R5 R11 + 0x14301803, // 003F LT R12 R12 R3 + 0x78320005, // 0040 JMPF R12 #0047 + 0x8C30030E, // 0041 GETMET R12 R1 K14 + 0x00380A0B, // 0042 ADD R14 R5 R11 + 0x5C3C1200, // 0043 MOVE R15 R9 + 0x7C300600, // 0044 CALL R12 3 + 0x002C170D, // 0045 ADD R11 R11 K13 + 0x7001FFF4, // 0046 JMP #003C + 0x00140A0A, // 0047 ADD R5 R5 R10 + 0x0420110D, // 0048 SUB R8 R8 K13 + 0x7001FFE8, // 0049 JMP #0033 + 0x502C0200, // 004A LDBOOL R11 1 0 + 0x80041600, // 004B RET 1 R11 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_CrenelPositionAnimation_tostring, /* 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_CrenelPositionAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C08010F, // 0001 GETMET R2 R0 K15 + 0x58100009, // 0002 LDCONST R4 K9 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E2000, // 0004 GETNGBL R3 K16 + 0x8C0C0711, // 0005 GETMET R3 R3 K17 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0004, // 0008 JMPF R3 #000E + 0x600C0008, // 0009 GETGBL R3 G8 + 0x5C100400, // 000A MOVE R4 R2 + 0x7C0C0200, // 000B CALL R3 1 + 0x5C040600, // 000C MOVE R1 R3 + 0x70020004, // 000D JMP #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100012, // 000F LDCONST R4 K18 + 0x88140109, // 0010 GETMBR R5 R0 K9 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x58100013, // 0014 LDCONST R4 K19 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x881C0106, // 0017 GETMBR R7 R0 K6 + 0x88200107, // 0018 GETMBR R8 R0 K7 + 0x88240108, // 0019 GETMBR R9 R0 K8 + 0x88280114, // 001A GETMBR R10 R0 K20 + 0x882C0100, // 001B GETMBR R11 R0 K0 + 0x7C0C1000, // 001C CALL R3 8 + 0x80040600, // 001D RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: CrenelPositionAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(CrenelPositionAnimation, + 0, + &be_class_Animation, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { 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(color, -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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(nb_pulse, -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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(pulse_size, -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(default, -1), be_const_int(1) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(pos, -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(default, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(back_color, 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(default, -1), be_const_int(-16777216) }, + })) ) } )) }, + { be_const_key_weak(low_size, -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(default, -1), be_const_int(3) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(render, 2), be_const_closure(class_CrenelPositionAnimation_render_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_CrenelPositionAnimation_tostring_closure) }, + })), + be_str_weak(CrenelPositionAnimation) +); + +/******************************************************************** +** Solidified function: plasma_rainbow +********************************************************************/ +be_local_closure(plasma_rainbow, /* 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[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(plasma_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(time_speed), + /* K4 */ be_nested_str_weak(name), + /* K5 */ be_nested_str_weak(plasma_rainbow), + }), + be_str_weak(plasma_rainbow), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x4C080000, // 0004 LDNIL R2 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0031, // 0006 LDINT R2 50 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x90060905, // 0008 SETMBR R1 K4 K5 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[ 5]) { /* 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), + }), + be_str_weak(animation_init), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* 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 + 0x80040200, // 0009 RET 1 R1 + }) + ) +); +/*******************************************************************/ + // compact class 'ParameterizedObject' ktab size: 44, total: 88 (saved 352 bytes) static const bvalue be_ktab_class_ParameterizedObject[44] = { /* K0 */ be_nested_str_weak(introspect), @@ -17323,3767 +20436,6 @@ be_local_class(ParameterizedObject, })), be_str_weak(ParameterizedObject) ); - -/******************************************************************** -** Solidified function: is_color_provider -********************************************************************/ -be_local_closure(is_color_provider, /* 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(color_provider), - }), - be_str_weak(is_color_provider), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x6004000F, // 0000 GETGBL R1 G15 - 0x5C080000, // 0001 MOVE R2 R0 - 0xB80E0000, // 0002 GETNGBL R3 K0 - 0x880C0701, // 0003 GETMBR R3 R3 K1 - 0x7C040400, // 0004 CALL R1 2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_event_handlers -********************************************************************/ -be_local_closure(get_event_handlers, /* 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(event_manager), - /* K2 */ be_nested_str_weak(get_handlers), - }), - be_str_weak(get_event_handlers), - &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 'WaveAnimation' ktab size: 41, total: 69 (saved 224 bytes) -static const bvalue be_ktab_class_WaveAnimation[41] = { - /* K0 */ be_nested_str_weak(wave_table), - /* K1 */ be_nested_str_weak(resize), - /* K2 */ be_nested_str_weak(wave_type), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(scale_uint), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(sine), - /* K9 */ be_nested_str_weak(triangle), - /* K10 */ be_nested_str_weak(square), - /* K11 */ be_nested_str_weak(sawtooth), - /* K12 */ be_nested_str_weak(unknown), - /* K13 */ be_nested_str_weak(color), - /* K14 */ be_nested_str_weak(animation), - /* K15 */ be_nested_str_weak(is_value_provider), - /* K16 */ be_nested_str_weak(0x_X2508x), - /* K17 */ be_nested_str_weak(WaveAnimation_X28_X25s_X2C_X20color_X3D_X25s_X2C_X20freq_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K18 */ be_nested_str_weak(frequency), - /* K19 */ be_nested_str_weak(wave_speed), - /* K20 */ be_nested_str_weak(priority), - /* K21 */ be_nested_str_weak(is_running), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(get_strip_length), - /* K24 */ be_nested_str_weak(width), - /* K25 */ be_nested_str_weak(current_colors), - /* K26 */ be_nested_str_weak(size), - /* K27 */ be_nested_str_weak(set_pixel_color), - /* K28 */ be_nested_str_weak(_init_wave_table), - /* K29 */ be_nested_str_weak(update), - /* K30 */ be_nested_str_weak(start_time), - /* K31 */ be_nested_str_weak(time_offset), - /* K32 */ be_nested_str_weak(_calculate_wave), - /* K33 */ be_nested_str_weak(init), - /* K34 */ be_nested_str_weak(phase), - /* K35 */ be_nested_str_weak(amplitude), - /* K36 */ be_nested_str_weak(center_level), - /* K37 */ be_nested_str_weak(back_color), - /* K38 */ be_nested_str_weak(is_color_provider), - /* K39 */ be_nested_str_weak(get_color_for_value), - /* K40 */ be_nested_str_weak(resolve_value), -}; - - -extern const bclass be_class_WaveAnimation; - -/******************************************************************** -** Solidified function: _init_wave_table -********************************************************************/ -be_local_closure(class_WaveAnimation__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_WaveAnimation, /* shared constants */ - be_str_weak(_init_wave_table), - &be_const_str_solidified, - ( &(const binstruction[108]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x540E00FF, // 0002 LDINT R3 256 - 0x7C040400, // 0003 CALL R1 2 - 0x88040102, // 0004 GETMBR R1 R0 K2 - 0x58080003, // 0005 LDCONST R2 K3 - 0x540E00FF, // 0006 LDINT R3 256 - 0x140C0403, // 0007 LT R3 R2 R3 - 0x780E0061, // 0008 JMPF R3 #006B - 0x580C0003, // 0009 LDCONST R3 K3 - 0x1C100303, // 000A EQ R4 R1 K3 - 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 - 0x58200003, // 0014 LDCONST R8 K3 - 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 - 0x58200003, // 0022 LDCONST R8 K3 - 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 - 0x58200003, // 0030 LDCONST R8 K3 - 0x5426003F, // 0031 LDINT R9 64 - 0x542A007F, // 0032 LDINT R10 128 - 0x582C0003, // 0033 LDCONST R11 K3 - 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 - 0x58200003, // 003B LDCONST R8 K3 - 0x5426003F, // 003C LDINT R9 64 - 0x542A007F, // 003D LDINT R10 128 - 0x582C0003, // 003E LDCONST R11 K3 - 0x7C140C00, // 003F CALL R5 6 - 0x5C0C0A00, // 0040 MOVE R3 R5 - 0x70020024, // 0041 JMP #0067 - 0x1C100306, // 0042 EQ R4 R1 K6 - 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 - 0x581C0003, // 004A LDCONST R7 K3 - 0x5422007F, // 004B LDINT R8 128 - 0x58240003, // 004C LDCONST R9 K3 - 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 - 0x581C0003, // 0055 LDCONST R7 K3 - 0x5422007F, // 0056 LDINT R8 128 - 0x58240003, // 0057 LDCONST R9 K3 - 0x542A00FE, // 0058 LDINT R10 255 - 0x7C100C00, // 0059 CALL R4 6 - 0x5C0C0800, // 005A MOVE R3 R4 - 0x7002000A, // 005B JMP #0067 - 0x1C100307, // 005C EQ R4 R1 K7 - 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 - 0x58100003, // 0063 LDCONST R4 K3 - 0x5C0C0800, // 0064 MOVE R3 R4 - 0x70020000, // 0065 JMP #0067 - 0x5C0C0400, // 0066 MOVE R3 R2 - 0x88100100, // 0067 GETMBR R4 R0 K0 - 0x98100403, // 0068 SETIDX R4 R2 R3 - 0x00080506, // 0069 ADD R2 R2 K6 - 0x7001FF9A, // 006A JMP #0006 - 0x80000000, // 006B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_WaveAnimation_tostring, /* name */ - be_nested_proto( - 14, /* 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_WaveAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x40080308, // 0002 CONNECT R2 R1 K8 - 0x40080309, // 0003 CONNECT R2 R1 K9 - 0x4008030A, // 0004 CONNECT R2 R1 K10 - 0x4008030B, // 0005 CONNECT R2 R1 K11 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x940C0202, // 0007 GETIDX R3 R1 R2 - 0x4C100000, // 0008 LDNIL R4 - 0x200C0604, // 0009 NE R3 R3 R4 - 0x780E0001, // 000A JMPF R3 #000D - 0x940C0202, // 000B GETIDX R3 R1 R2 - 0x70020000, // 000C JMP #000E - 0x580C000C, // 000D LDCONST R3 K12 - 0x8810010D, // 000E GETMBR R4 R0 K13 - 0x4C140000, // 000F LDNIL R5 - 0xB81A1C00, // 0010 GETNGBL R6 K14 - 0x8C180D0F, // 0011 GETMET R6 R6 K15 - 0x5C200800, // 0012 MOVE R8 R4 - 0x7C180400, // 0013 CALL R6 2 - 0x781A0004, // 0014 JMPF R6 #001A - 0x60180008, // 0015 GETGBL R6 G8 - 0x5C1C0800, // 0016 MOVE R7 R4 - 0x7C180200, // 0017 CALL R6 1 - 0x5C140C00, // 0018 MOVE R5 R6 - 0x70020004, // 0019 JMP #001F - 0x60180018, // 001A GETGBL R6 G24 - 0x581C0010, // 001B LDCONST R7 K16 - 0x5C200800, // 001C MOVE R8 R4 - 0x7C180400, // 001D CALL R6 2 - 0x5C140C00, // 001E MOVE R5 R6 - 0x60180018, // 001F GETGBL R6 G24 - 0x581C0011, // 0020 LDCONST R7 K17 - 0x5C200600, // 0021 MOVE R8 R3 - 0x5C240A00, // 0022 MOVE R9 R5 - 0x88280112, // 0023 GETMBR R10 R0 K18 - 0x882C0113, // 0024 GETMBR R11 R0 K19 - 0x88300114, // 0025 GETMBR R12 R0 K20 - 0x88340115, // 0026 GETMBR R13 R0 K21 - 0x7C180E00, // 0027 CALL R6 7 - 0x80040C00, // 0028 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_WaveAnimation_render, /* 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_WaveAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x880C0116, // 0007 GETMBR R3 R0 K22 - 0x8C0C0717, // 0008 GETMET R3 R3 K23 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100003, // 000A LDCONST R4 K3 - 0x14140803, // 000B LT R5 R4 R3 - 0x7816000E, // 000C JMPF R5 #001C - 0x88140318, // 000D GETMBR R5 R1 K24 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160009, // 000F JMPF R5 #001A - 0x88140119, // 0010 GETMBR R5 R0 K25 - 0x8C140B1A, // 0011 GETMET R5 R5 K26 - 0x7C140200, // 0012 CALL R5 1 - 0x14140805, // 0013 LT R5 R4 R5 - 0x78160004, // 0014 JMPF R5 #001A - 0x8C14031B, // 0015 GETMET R5 R1 K27 - 0x5C1C0800, // 0016 MOVE R7 R4 - 0x88200119, // 0017 GETMBR R8 R0 K25 - 0x94201004, // 0018 GETIDX R8 R8 R4 - 0x7C140600, // 0019 CALL R5 3 - 0x00100906, // 001A ADD R4 R4 K6 - 0x7001FFEE, // 001B JMP #000B - 0x50140200, // 001C LDBOOL R5 1 0 - 0x80040A00, // 001D RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_WaveAnimation_on_param_changed, /* name */ - be_nested_proto( - 5, /* 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_WaveAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x1C0C0302, // 0000 EQ R3 R1 K2 - 0x780E0001, // 0001 JMPF R3 #0004 - 0x8C0C011C, // 0002 GETMET R3 R0 K28 - 0x7C0C0200, // 0003 CALL R3 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_WaveAnimation_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_WaveAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051D, // 0003 GETMET R2 R2 K29 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080113, // 0009 GETMBR R2 R0 K19 - 0x240C0503, // 000A GT R3 R2 K3 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C011E, // 000C GETMBR R3 R0 K30 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8120800, // 000E GETNGBL R4 K4 - 0x8C100905, // 000F GETMET R4 R4 K5 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C0003, // 0011 LDCONST R7 K3 - 0x542200FE, // 0012 LDINT R8 255 - 0x58240003, // 0013 LDCONST R9 K3 - 0x542A0009, // 0014 LDINT R10 10 - 0x7C100C00, // 0015 CALL R4 6 - 0x24140903, // 0016 GT R5 R4 K3 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 0x90023E05, // 001D SETMBR R0 K31 R5 - 0x8C0C0120, // 001E GETMET R3 R0 K32 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_WaveAnimation_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_WaveAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080521, // 0003 GETMET R2 R2 K33 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90023202, // 0008 SETMBR R0 K25 R2 - 0x90023F03, // 0009 SETMBR R0 K31 K3 - 0x60080012, // 000A GETGBL R2 G18 - 0x7C080000, // 000B CALL R2 0 - 0x90020002, // 000C SETMBR R0 K0 R2 - 0x8C08011C, // 000D GETMET R2 R0 K28 - 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[169]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 - 0x8C080517, // 0001 GETMET R2 R2 K23 - 0x7C080200, // 0002 CALL R2 1 - 0x880C0112, // 0003 GETMBR R3 R0 K18 - 0x88100122, // 0004 GETMBR R4 R0 K34 - 0x88140123, // 0005 GETMBR R5 R0 K35 - 0x88180124, // 0006 GETMBR R6 R0 K36 - 0x881C0125, // 0007 GETMBR R7 R0 K37 - 0x8820010D, // 0008 GETMBR R8 R0 K13 - 0x88240119, // 0009 GETMBR R9 R0 K25 - 0x8C24131A, // 000A GETMET R9 R9 K26 - 0x7C240200, // 000B CALL R9 1 - 0x20241202, // 000C NE R9 R9 R2 - 0x78260003, // 000D JMPF R9 #0012 - 0x88240119, // 000E GETMBR R9 R0 K25 - 0x8C241301, // 000F GETMET R9 R9 K1 - 0x5C2C0400, // 0010 MOVE R11 R2 - 0x7C240400, // 0011 CALL R9 2 - 0x58240003, // 0012 LDCONST R9 K3 - 0x14281202, // 0013 LT R10 R9 R2 - 0x782A0092, // 0014 JMPF R10 #00A8 - 0xB82A0800, // 0015 GETNGBL R10 K4 - 0x8C281505, // 0016 GETMET R10 R10 K5 - 0x5C301200, // 0017 MOVE R12 R9 - 0x58340003, // 0018 LDCONST R13 K3 - 0x04380506, // 0019 SUB R14 R2 K6 - 0x583C0003, // 001A LDCONST R15 K3 - 0x544200FE, // 001B LDINT R16 255 - 0x7C280C00, // 001C CALL R10 6 - 0x082C1403, // 001D MUL R11 R10 R3 - 0x5432001F, // 001E LDINT R12 32 - 0x0C2C160C, // 001F DIV R11 R11 R12 - 0x002C1604, // 0020 ADD R11 R11 R4 - 0x8830011F, // 0021 GETMBR R12 R0 K31 - 0x002C160C, // 0022 ADD R11 R11 R12 - 0x543200FE, // 0023 LDINT R12 255 - 0x2C2C160C, // 0024 AND R11 R11 R12 - 0x88300100, // 0025 GETMBR R12 R0 K0 - 0x9430180B, // 0026 GETIDX R12 R12 R11 - 0xB8360800, // 0027 GETNGBL R13 K4 - 0x8C341B05, // 0028 GETMET R13 R13 K5 - 0x5C3C0A00, // 0029 MOVE R15 R5 - 0x58400003, // 002A LDCONST R16 K3 - 0x544600FE, // 002B LDINT R17 255 - 0x58480003, // 002C LDCONST R18 K3 - 0x544E007F, // 002D LDINT R19 128 - 0x7C340C00, // 002E CALL R13 6 - 0x58380003, // 002F LDCONST R14 K3 - 0x543E007F, // 0030 LDINT R15 128 - 0x283C180F, // 0031 GE R15 R12 R15 - 0x783E000D, // 0032 JMPF R15 #0041 - 0x543E007F, // 0033 LDINT R15 128 - 0x043C180F, // 0034 SUB R15 R12 R15 - 0xB8420800, // 0035 GETNGBL R16 K4 - 0x8C402105, // 0036 GETMET R16 R16 K5 - 0x5C481E00, // 0037 MOVE R18 R15 - 0x584C0003, // 0038 LDCONST R19 K3 - 0x5452007E, // 0039 LDINT R20 127 - 0x58540003, // 003A LDCONST R21 K3 - 0x5C581A00, // 003B MOVE R22 R13 - 0x7C400C00, // 003C CALL R16 6 - 0x5C3C2000, // 003D MOVE R15 R16 - 0x00400C0F, // 003E ADD R16 R6 R15 - 0x5C382000, // 003F MOVE R14 R16 - 0x7002000C, // 0040 JMP #004E - 0x543E007F, // 0041 LDINT R15 128 - 0x043C1E0C, // 0042 SUB R15 R15 R12 - 0xB8420800, // 0043 GETNGBL R16 K4 - 0x8C402105, // 0044 GETMET R16 R16 K5 - 0x5C481E00, // 0045 MOVE R18 R15 - 0x584C0003, // 0046 LDCONST R19 K3 - 0x5452007F, // 0047 LDINT R20 128 - 0x58540003, // 0048 LDCONST R21 K3 - 0x5C581A00, // 0049 MOVE R22 R13 - 0x7C400C00, // 004A CALL R16 6 - 0x5C3C2000, // 004B MOVE R15 R16 - 0x04400C0F, // 004C SUB R16 R6 R15 - 0x5C382000, // 004D MOVE R14 R16 - 0x543E00FE, // 004E LDINT R15 255 - 0x243C1C0F, // 004F GT R15 R14 R15 - 0x783E0001, // 0050 JMPF R15 #0053 - 0x543A00FE, // 0051 LDINT R14 255 - 0x70020002, // 0052 JMP #0056 - 0x143C1D03, // 0053 LT R15 R14 K3 - 0x783E0000, // 0054 JMPF R15 #0056 - 0x58380003, // 0055 LDCONST R14 K3 - 0x5C3C0E00, // 0056 MOVE R15 R7 - 0x54420009, // 0057 LDINT R16 10 - 0x24401C10, // 0058 GT R16 R14 R16 - 0x78420049, // 0059 JMPF R16 #00A4 - 0xB8421C00, // 005A GETNGBL R16 K14 - 0x8C402126, // 005B GETMET R16 R16 K38 - 0x5C481000, // 005C MOVE R18 R8 - 0x7C400400, // 005D CALL R16 2 - 0x78420009, // 005E JMPF R16 #0069 - 0x88401127, // 005F GETMBR R16 R8 K39 - 0x4C440000, // 0060 LDNIL R17 - 0x20402011, // 0061 NE R16 R16 R17 - 0x78420005, // 0062 JMPF R16 #0069 - 0x8C401127, // 0063 GETMET R16 R8 K39 - 0x5C481C00, // 0064 MOVE R18 R14 - 0x584C0003, // 0065 LDCONST R19 K3 - 0x7C400600, // 0066 CALL R16 3 - 0x5C3C2000, // 0067 MOVE R15 R16 - 0x7002003A, // 0068 JMP #00A4 - 0x8C400128, // 0069 GETMET R16 R0 K40 - 0x5C481000, // 006A MOVE R18 R8 - 0x584C000D, // 006B LDCONST R19 K13 - 0x54520009, // 006C LDINT R20 10 - 0x08501C14, // 006D MUL R20 R14 R20 - 0x00500214, // 006E ADD R20 R1 R20 - 0x7C400800, // 006F CALL R16 4 - 0x5C3C2000, // 0070 MOVE R15 R16 - 0x54420017, // 0071 LDINT R16 24 - 0x3C401E10, // 0072 SHR R16 R15 R16 - 0x544600FE, // 0073 LDINT R17 255 - 0x2C402011, // 0074 AND R16 R16 R17 - 0x5446000F, // 0075 LDINT R17 16 - 0x3C441E11, // 0076 SHR R17 R15 R17 - 0x544A00FE, // 0077 LDINT R18 255 - 0x2C442212, // 0078 AND R17 R17 R18 - 0x544A0007, // 0079 LDINT R18 8 - 0x3C481E12, // 007A SHR R18 R15 R18 - 0x544E00FE, // 007B LDINT R19 255 - 0x2C482413, // 007C AND R18 R18 R19 - 0x544E00FE, // 007D LDINT R19 255 - 0x2C4C1E13, // 007E AND R19 R15 R19 - 0xB8520800, // 007F GETNGBL R20 K4 - 0x8C502905, // 0080 GETMET R20 R20 K5 - 0x5C581C00, // 0081 MOVE R22 R14 - 0x585C0003, // 0082 LDCONST R23 K3 - 0x546200FE, // 0083 LDINT R24 255 - 0x58640003, // 0084 LDCONST R25 K3 - 0x5C682200, // 0085 MOVE R26 R17 - 0x7C500C00, // 0086 CALL R20 6 - 0x5C442800, // 0087 MOVE R17 R20 - 0xB8520800, // 0088 GETNGBL R20 K4 - 0x8C502905, // 0089 GETMET R20 R20 K5 - 0x5C581C00, // 008A MOVE R22 R14 - 0x585C0003, // 008B LDCONST R23 K3 - 0x546200FE, // 008C LDINT R24 255 - 0x58640003, // 008D LDCONST R25 K3 - 0x5C682400, // 008E MOVE R26 R18 - 0x7C500C00, // 008F CALL R20 6 - 0x5C482800, // 0090 MOVE R18 R20 - 0xB8520800, // 0091 GETNGBL R20 K4 - 0x8C502905, // 0092 GETMET R20 R20 K5 - 0x5C581C00, // 0093 MOVE R22 R14 - 0x585C0003, // 0094 LDCONST R23 K3 - 0x546200FE, // 0095 LDINT R24 255 - 0x58640003, // 0096 LDCONST R25 K3 - 0x5C682600, // 0097 MOVE R26 R19 - 0x7C500C00, // 0098 CALL R20 6 - 0x5C4C2800, // 0099 MOVE R19 R20 - 0x54520017, // 009A LDINT R20 24 - 0x38502014, // 009B SHL R20 R16 R20 - 0x5456000F, // 009C LDINT R21 16 - 0x38542215, // 009D SHL R21 R17 R21 - 0x30502815, // 009E OR R20 R20 R21 - 0x54560007, // 009F LDINT R21 8 - 0x38542415, // 00A0 SHL R21 R18 R21 - 0x30502815, // 00A1 OR R20 R20 R21 - 0x30502813, // 00A2 OR R20 R20 R19 - 0x5C3C2800, // 00A3 MOVE R15 R20 - 0x88400119, // 00A4 GETMBR R16 R0 K25 - 0x9840120F, // 00A5 SETIDX R16 R9 R15 - 0x00241306, // 00A6 ADD R9 R9 K6 - 0x7001FF6A, // 00A7 JMP #0013 - 0x80000000, // 00A8 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: WaveAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(WaveAnimation, - 3, - &be_class_Animation, - be_nested_map(11, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(current_colors, -1), be_const_var(0) }, - { be_const_key_weak(update, -1), be_const_closure(class_WaveAnimation_update_closure) }, - { be_const_key_weak(wave_table, -1), be_const_var(2) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_WaveAnimation_tostring_closure) }, - { be_const_key_weak(render, 7), be_const_closure(class_WaveAnimation_render_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_WaveAnimation_on_param_changed_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_WaveAnimation_init_closure) }, - { be_const_key_weak(time_offset, 1), be_const_var(1) }, - { 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, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(frequency, 5), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(32) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(amplitude, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, -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(default, -1), be_const_int(-65536) }, - })) ) } )) }, - { be_const_key_weak(wave_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(50) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(wave_type, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(3) }, - })) ) } )) }, - { be_const_key_weak(back_color, -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(default, -1), be_const_int(-16777216) }, - })) ) } )) }, - { be_const_key_weak(center_level, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(_init_wave_table, 6), be_const_closure(class_WaveAnimation__init_wave_table_closure) }, - { be_const_key_weak(_calculate_wave, -1), be_const_closure(class_WaveAnimation__calculate_wave_closure) }, - })), - be_str_weak(WaveAnimation) -); - -/******************************************************************** -** 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(COSINE), - }), - be_str_weak(smooth), - &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 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: twinkle_rainbow -********************************************************************/ -be_local_closure(twinkle_rainbow, /* 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[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(twinkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(density), - /* K4 */ be_nested_str_weak(twinkle_speed), - /* K5 */ be_nested_str_weak(fade_speed), - /* K6 */ be_nested_str_weak(min_brightness), - /* K7 */ be_nested_str_weak(max_brightness), - }), - be_str_weak(twinkle_rainbow), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0077, // 0006 LDINT R2 120 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A0005, // 0008 LDINT R2 6 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x540A00B3, // 000A LDINT R2 180 - 0x90060A02, // 000B SETMBR R1 K5 R2 - 0x540A001F, // 000C LDINT R2 32 - 0x90060C02, // 000D SETMBR R1 K6 R2 - 0x540A00FE, // 000E LDINT R2 255 - 0x90060E02, // 000F SETMBR R1 K7 R2 - 0x80040200, // 0010 RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// compact class 'EventHandler' ktab size: 8, total: 17 (saved 72 bytes) -static const bvalue be_ktab_class_EventHandler[8] = { - /* 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), - /* K7 */ be_nested_str_weak(has_condition), -}; - - -extern const bclass be_class_EventHandler; - -/******************************************************************** -** 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: 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: 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 function: get_info -********************************************************************/ -be_local_closure(class_EventHandler_get_info, /* 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_EventHandler, /* shared constants */ - be_str_weak(get_info), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x88080103, // 0002 GETMBR R2 R0 K3 - 0x98060602, // 0003 SETIDX R1 K3 R2 - 0x88080104, // 0004 GETMBR R2 R0 K4 - 0x98060802, // 0005 SETIDX R1 K4 R2 - 0x88080100, // 0006 GETMBR R2 R0 K0 - 0x98060002, // 0007 SETIDX R1 K0 R2 - 0x88080101, // 0008 GETMBR R2 R0 K1 - 0x4C0C0000, // 0009 LDNIL R3 - 0x20080403, // 000A NE R2 R2 R3 - 0x98060E02, // 000B SETIDX R1 K7 R2 - 0x88080106, // 000C GETMBR R2 R0 K6 - 0x98060C02, // 000D SETIDX R1 K6 R2 - 0x80040200, // 000E RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: EventHandler -********************************************************************/ -be_local_class(EventHandler, - 6, - NULL, - be_nested_map(10, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(set_active, -1), be_const_closure(class_EventHandler_set_active_closure) }, - { be_const_key_weak(metadata, 3), be_const_var(5) }, - { be_const_key_weak(is_active, 0), be_const_var(4) }, - { be_const_key_weak(condition, -1), be_const_var(2) }, - { be_const_key_weak(init, -1), be_const_closure(class_EventHandler_init_closure) }, - { be_const_key_weak(event_name, 4), be_const_var(0) }, - { be_const_key_weak(get_info, -1), be_const_closure(class_EventHandler_get_info_closure) }, - { be_const_key_weak(priority, -1), be_const_var(3) }, - { be_const_key_weak(execute, 1), be_const_closure(class_EventHandler_execute_closure) }, - { be_const_key_weak(callback_func, -1), be_const_var(1) }, - })), - be_str_weak(EventHandler) -); -// compact class 'Animation' ktab size: 27, total: 52 (saved 200 bytes) -static const bvalue be_ktab_class_Animation[27] = { - /* K0 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(priority), - /* K3 */ be_nested_str_weak(duration), - /* K4 */ be_nested_str_weak(loop), - /* K5 */ be_nested_str_weak(is_running), - /* K6 */ be_nested_str_weak(get_color_at), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(get_param_value), - /* K9 */ be_nested_str_weak(color), - /* K10 */ be_nested_str_weak(update), - /* K11 */ be_nested_str_weak(opacity), - /* K12 */ be_nested_str_weak(fill_pixels), - /* K13 */ be_nested_str_weak(apply_brightness), - /* K14 */ be_nested_str_weak(current_time), - /* K15 */ be_nested_str_weak(start_time), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(scale_uint), - /* K18 */ be_nested_str_weak(engine), - /* K19 */ be_nested_str_weak(time_ms), - /* K20 */ be_nested_str_weak(_start_value_providers), - /* K21 */ be_nested_str_weak(init), - /* K22 */ be_nested_str_weak(values), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(is_value_provider), - /* K25 */ be_nested_str_weak(start), - /* K26 */ be_nested_str_weak(stop_iteration), -}; - - -extern const bclass be_class_Animation; - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_Animation_tostring, /* 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_Animation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 - 0x881C0105, // 0006 GETMBR R7 R0 K5 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x8C080106, // 0000 GETMET R2 R0 K6 - 0x58100007, // 0001 LDCONST R4 K7 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x58140009, // 0001 LDCONST R5 K9 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_Animation_render, /* 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_Animation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x880C0105, // 0000 GETMBR R3 R0 K5 - 0x5C100600, // 0001 MOVE R4 R3 - 0x78120002, // 0002 JMPF R4 #0006 - 0x4C100000, // 0003 LDNIL R4 - 0x1C100204, // 0004 EQ R4 R1 R4 - 0x78120001, // 0005 JMPF R4 #0008 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x80040800, // 0007 RET 1 R4 - 0x8C10010A, // 0008 GETMET R4 R0 K10 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x88100109, // 000B GETMBR R4 R0 K9 - 0x8814010B, // 000C GETMBR R5 R0 K11 - 0x8C18030C, // 000D GETMET R6 R1 K12 - 0x5C200800, // 000E MOVE R8 R4 - 0x7C180400, // 000F CALL R6 2 - 0x541A00FE, // 0010 LDINT R6 255 - 0x14180A06, // 0011 LT R6 R5 R6 - 0x781A0002, // 0012 JMPF R6 #0016 - 0x8C18030D, // 0013 GETMET R6 R1 K13 - 0x5C200A00, // 0014 MOVE R8 R5 - 0x7C180400, // 0015 CALL R6 2 - 0x50180200, // 0016 LDBOOL R6 1 0 - 0x80040C00, // 0017 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_progress -********************************************************************/ -be_local_closure(class_Animation_get_progress, /* 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_Animation, /* shared constants */ - be_str_weak(get_progress), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x88040103, // 0000 GETMBR R1 R0 K3 - 0x18080307, // 0001 LE R2 R1 K7 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80060E00, // 0003 RET 1 K7 - 0x8808010E, // 0004 GETMBR R2 R0 K14 - 0x880C010F, // 0005 GETMBR R3 R0 K15 - 0x04080403, // 0006 SUB R2 R2 R3 - 0x100C0401, // 0007 MOD R3 R2 R1 - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x5C140800, // 0009 MOVE R5 R4 - 0x74160003, // 000A JMPT R5 #000F - 0x28140401, // 000B GE R5 R2 R1 - 0x78160001, // 000C JMPF R5 #000F - 0x541600FE, // 000D LDINT R5 255 - 0x80040A00, // 000E RET 1 R5 - 0xB8162000, // 000F GETNGBL R5 K16 - 0x8C140B11, // 0010 GETMET R5 R5 K17 - 0x5C1C0600, // 0011 MOVE R7 R3 - 0x58200007, // 0012 LDCONST R8 K7 - 0x5C240200, // 0013 MOVE R9 R1 - 0x58280007, // 0014 LDCONST R10 K7 - 0x542E00FE, // 0015 LDINT R11 255 - 0x7C140C00, // 0016 CALL R5 6 - 0x80040A00, // 0017 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_Animation_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_Animation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x1C0C0305, // 0000 EQ R3 R1 K5 - 0x780E000E, // 0001 JMPF R3 #0011 - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x1C0C0403, // 0003 EQ R3 R2 R3 - 0x780E0008, // 0004 JMPF R3 #000E - 0x880C0112, // 0005 GETMBR R3 R0 K18 - 0x880C0713, // 0006 GETMBR R3 R3 K19 - 0x90021E03, // 0007 SETMBR R0 K15 R3 - 0x8810010F, // 0008 GETMBR R4 R0 K15 - 0x90021C04, // 0009 SETMBR R0 K14 R4 - 0x8C100114, // 000A GETMET R4 R0 K20 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0x70020002, // 000D JMP #0011 - 0x500C0000, // 000E LDBOOL R3 0 0 - 0x1C0C0403, // 000F EQ R3 R2 R3 - 0x780DFFFF, // 0010 JMPF R3 #0011 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[ 9]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080515, // 0003 GETMET R2 R2 K21 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90021F07, // 0006 SETMBR R0 K15 K7 - 0x90021D07, // 0007 SETMBR R0 K14 K7 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_Animation_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_Animation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 - 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x980A0A03, // 0002 SETIDX R2 K5 R3 - 0x4C080000, // 0003 LDNIL R2 - 0x20080202, // 0004 NE R2 R1 R2 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x5C080200, // 0006 MOVE R2 R1 - 0x70020001, // 0007 JMP #000A - 0x88080112, // 0008 GETMBR R2 R0 K18 - 0x88080513, // 0009 GETMBR R2 R2 K19 - 0x90021E02, // 000A SETMBR R0 K15 R2 - 0x880C010F, // 000B GETMBR R3 R0 K15 - 0x90021C03, // 000C SETMBR R0 K14 R3 - 0x8C0C0114, // 000D GETMET R3 R0 K20 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x80040000, // 0010 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _start_value_providers -********************************************************************/ -be_local_closure(class_Animation__start_value_providers, /* 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_Animation, /* shared constants */ - be_str_weak(_start_value_providers), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0116, // 0001 GETMBR R3 R0 K22 - 0x7C080200, // 0002 CALL R2 1 - 0xA8020011, // 0003 EXBLK 0 #0016 - 0x5C0C0400, // 0004 MOVE R3 R2 - 0x7C0C0000, // 0005 CALL R3 0 - 0xB8122E00, // 0006 GETNGBL R4 K23 - 0x8C100918, // 0007 GETMET R4 R4 K24 - 0x5C180600, // 0008 MOVE R6 R3 - 0x7C100400, // 0009 CALL R4 2 - 0x78120009, // 000A JMPF R4 #0015 - 0xA8020004, // 000B EXBLK 0 #0011 - 0x8C100719, // 000C GETMET R4 R3 K25 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C100400, // 000E CALL R4 2 - 0xA8040001, // 000F EXBLK 1 1 - 0x70020003, // 0010 JMP #0015 - 0xAC100001, // 0011 CATCH R4 0 1 - 0x70020000, // 0012 JMP #0014 - 0x70020000, // 0013 JMP #0015 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x7001FFED, // 0015 JMP #0004 - 0x5808001A, // 0016 LDCONST R2 K26 - 0xAC080200, // 0017 CATCH R2 1 0 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_Animation_update, /* name */ - be_nested_proto( - 9, /* 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[29]) { /* code */ - 0x88080105, // 0000 GETMBR R2 R0 K5 - 0x5C0C0400, // 0001 MOVE R3 R2 - 0x740E0001, // 0002 JMPT R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x90021C01, // 0005 SETMBR R0 K14 R1 - 0x880C010E, // 0006 GETMBR R3 R0 K14 - 0x8810010F, // 0007 GETMBR R4 R0 K15 - 0x040C0604, // 0008 SUB R3 R3 R4 - 0x88100103, // 0009 GETMBR R4 R0 K3 - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x24180907, // 000B GT R6 R4 K7 - 0x781A000D, // 000C JMPF R6 #001B - 0x28180604, // 000D GE R6 R3 R4 - 0x781A000B, // 000E JMPF R6 #001B - 0x78160005, // 000F JMPF R5 #0016 - 0x0C180604, // 0010 DIV R6 R3 R4 - 0x881C010F, // 0011 GETMBR R7 R0 K15 - 0x08200C04, // 0012 MUL R8 R6 R4 - 0x001C0E08, // 0013 ADD R7 R7 R8 - 0x90021E07, // 0014 SETMBR R0 K15 R7 - 0x70020004, // 0015 JMP #001B - 0x88180116, // 0016 GETMBR R6 R0 K22 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x981A0A07, // 0018 SETIDX R6 K5 R7 - 0x50180000, // 0019 LDBOOL R6 0 0 - 0x80040C00, // 001A RET 1 R6 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x80040C00, // 001C RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: Animation -********************************************************************/ -extern const bclass be_class_ParameterizedObject; -be_local_class(Animation, - 2, - &be_class_ParameterizedObject, - be_nested_map(13, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, -1), be_const_closure(class_Animation_tostring_closure) }, - { be_const_key_weak(get_color, -1), be_const_closure(class_Animation_get_color_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, - { be_const_key_weak(render, -1), be_const_closure(class_Animation_render_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Animation_init_closure) }, - { be_const_key_weak(current_time, -1), be_const_var(1) }, - { be_const_key_weak(on_param_changed, 4), be_const_closure(class_Animation_on_param_changed_closure) }, - { be_const_key_weak(get_progress, 5), be_const_closure(class_Animation_get_progress_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_Animation_start_closure) }, - { be_const_key_weak(_start_value_providers, -1), be_const_closure(class_Animation__start_value_providers_closure) }, - { be_const_key_weak(start_time, -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(7, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(priority, -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(default, -1), be_const_int(10) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(name, 3), 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(default, -1), be_nested_str_weak(animation) }, - { be_const_key_weak(type, -1), be_nested_str_weak(string) }, - })) ) } )) }, - { be_const_key_weak(color, 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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(is_running, 5), 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(default, -1), be_const_bool(0) }, - { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, - })) ) } )) }, - { be_const_key_weak(opacity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(loop, 0), 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(default, -1), be_const_bool(1) }, - { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, - })) ) } )) }, - { be_const_key_weak(duration, -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(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(get_color_at, 2), be_const_closure(class_Animation_get_color_at_closure) }, - })), - be_str_weak(Animation) -); - -/******************************************************************** -** Solidified function: is_user_function -********************************************************************/ -be_local_closure(is_user_function, /* 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), - /* K2 */ be_nested_str_weak(contains), - }), - be_str_weak(is_user_function), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080301, // 0001 GETMBR R2 R1 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: register_user_function -********************************************************************/ -be_local_closure(register_user_function, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), - }), - be_str_weak(register_user_function), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0501, // 0001 GETMBR R3 R2 K1 - 0x980C0001, // 0002 SETIDX R3 R0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - -// compact class 'BeaconAnimation' ktab size: 18, total: 22 (saved 32 bytes) -static const bvalue be_ktab_class_BeaconAnimation[18] = { - /* K0 */ be_nested_str_weak(engine), - /* K1 */ be_nested_str_weak(time_ms), - /* K2 */ be_nested_str_weak(width), - /* K3 */ be_nested_str_weak(back_color), - /* K4 */ be_nested_str_weak(pos), - /* K5 */ be_nested_str_weak(slew_size), - /* K6 */ be_nested_str_weak(beacon_size), - /* K7 */ be_nested_str_weak(color), - /* K8 */ be_const_int(-16777216), - /* K9 */ be_nested_str_weak(fill_pixels), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(set_pixel_color), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(tasmota), - /* K14 */ be_nested_str_weak(scale_uint), - /* K15 */ be_const_int(16777215), - /* K16 */ be_nested_str_weak(blend), - /* K17 */ be_nested_str_weak(BeaconAnimation_X28color_X3D0x_X2508x_X2C_X20pos_X3D_X25s_X2C_X20beacon_size_X3D_X25s_X2C_X20slew_size_X3D_X25s_X29), -}; - - -extern const bclass be_class_BeaconAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_BeaconAnimation_render, /* 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_BeaconAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0001, // 0002 JMPF R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x4C0C0000, // 0005 LDNIL R3 - 0x1C0C0403, // 0006 EQ R3 R2 R3 - 0x780E0001, // 0007 JMPF R3 #000A - 0x880C0100, // 0008 GETMBR R3 R0 K0 - 0x88080701, // 0009 GETMBR R2 R3 K1 - 0x880C0302, // 000A GETMBR R3 R1 K2 - 0x88100103, // 000B GETMBR R4 R0 K3 - 0x88140104, // 000C GETMBR R5 R0 K4 - 0x88180105, // 000D GETMBR R6 R0 K5 - 0x881C0106, // 000E GETMBR R7 R0 K6 - 0x88200107, // 000F GETMBR R8 R0 K7 - 0x20240908, // 0010 NE R9 R4 K8 - 0x78260002, // 0011 JMPF R9 #0015 - 0x8C240309, // 0012 GETMET R9 R1 K9 - 0x5C2C0800, // 0013 MOVE R11 R4 - 0x7C240400, // 0014 CALL R9 2 - 0x5C240A00, // 0015 MOVE R9 R5 - 0x00280A07, // 0016 ADD R10 R5 R7 - 0x142C130A, // 0017 LT R11 R9 K10 - 0x782E0000, // 0018 JMPF R11 #001A - 0x5824000A, // 0019 LDCONST R9 K10 - 0x282C1403, // 001A GE R11 R10 R3 - 0x782E0000, // 001B JMPF R11 #001D - 0x5C280600, // 001C MOVE R10 R3 - 0x5C2C1200, // 001D MOVE R11 R9 - 0x1430160A, // 001E LT R12 R11 R10 - 0x78320005, // 001F JMPF R12 #0026 - 0x8C30030B, // 0020 GETMET R12 R1 K11 - 0x5C381600, // 0021 MOVE R14 R11 - 0x5C3C1000, // 0022 MOVE R15 R8 - 0x7C300600, // 0023 CALL R12 3 - 0x002C170C, // 0024 ADD R11 R11 K12 - 0x7001FFF7, // 0025 JMP #001E - 0x24300D0A, // 0026 GT R12 R6 K10 - 0x78320054, // 0027 JMPF R12 #007D - 0x04300A06, // 0028 SUB R12 R5 R6 - 0x5C340A00, // 0029 MOVE R13 R5 - 0x1438190A, // 002A LT R14 R12 K10 - 0x783A0000, // 002B JMPF R14 #002D - 0x5830000A, // 002C LDCONST R12 K10 - 0x28381A03, // 002D GE R14 R13 R3 - 0x783A0000, // 002E JMPF R14 #0030 - 0x5C340600, // 002F MOVE R13 R3 - 0x5C2C1800, // 0030 MOVE R11 R12 - 0x1438160D, // 0031 LT R14 R11 R13 - 0x783A001D, // 0032 JMPF R14 #0051 - 0x4C380000, // 0033 LDNIL R14 - 0x1C3C0D0C, // 0034 EQ R15 R6 K12 - 0x783E0001, // 0035 JMPF R15 #0038 - 0x543A007F, // 0036 LDINT R14 128 - 0x70020008, // 0037 JMP #0041 - 0xB83E1A00, // 0038 GETNGBL R15 K13 - 0x8C3C1F0E, // 0039 GETMET R15 R15 K14 - 0x5C441600, // 003A MOVE R17 R11 - 0x04480A06, // 003B SUB R18 R5 R6 - 0x044C0B0C, // 003C SUB R19 R5 K12 - 0x545200FE, // 003D LDINT R20 255 - 0x5854000A, // 003E LDCONST R21 K10 - 0x7C3C0C00, // 003F CALL R15 6 - 0x5C381E00, // 0040 MOVE R14 R15 - 0x543E00FE, // 0041 LDINT R15 255 - 0x043C1E0E, // 0042 SUB R15 R15 R14 - 0x54420017, // 0043 LDINT R16 24 - 0x38401E10, // 0044 SHL R16 R15 R16 - 0x2C44110F, // 0045 AND R17 R8 K15 - 0x30402011, // 0046 OR R16 R16 R17 - 0x8C440310, // 0047 GETMET R17 R1 K16 - 0x5C4C0800, // 0048 MOVE R19 R4 - 0x5C502000, // 0049 MOVE R20 R16 - 0x7C440600, // 004A CALL R17 3 - 0x8C48030B, // 004B GETMET R18 R1 K11 - 0x5C501600, // 004C MOVE R20 R11 - 0x5C542200, // 004D MOVE R21 R17 - 0x7C480600, // 004E CALL R18 3 - 0x002C170C, // 004F ADD R11 R11 K12 - 0x7001FFDF, // 0050 JMP #0031 - 0x00380A07, // 0051 ADD R14 R5 R7 - 0x003C0A07, // 0052 ADD R15 R5 R7 - 0x003C1E06, // 0053 ADD R15 R15 R6 - 0x14401D0A, // 0054 LT R16 R14 K10 - 0x78420000, // 0055 JMPF R16 #0057 - 0x5838000A, // 0056 LDCONST R14 K10 - 0x28401E03, // 0057 GE R16 R15 R3 - 0x78420000, // 0058 JMPF R16 #005A - 0x5C3C0600, // 0059 MOVE R15 R3 - 0x5C2C1C00, // 005A MOVE R11 R14 - 0x1440160F, // 005B LT R16 R11 R15 - 0x7842001F, // 005C JMPF R16 #007D - 0x4C400000, // 005D LDNIL R16 - 0x1C440D0C, // 005E EQ R17 R6 K12 - 0x78460001, // 005F JMPF R17 #0062 - 0x5442007F, // 0060 LDINT R16 128 - 0x7002000A, // 0061 JMP #006D - 0xB8461A00, // 0062 GETNGBL R17 K13 - 0x8C44230E, // 0063 GETMET R17 R17 K14 - 0x5C4C1600, // 0064 MOVE R19 R11 - 0x00500A07, // 0065 ADD R20 R5 R7 - 0x00540A07, // 0066 ADD R21 R5 R7 - 0x00542A06, // 0067 ADD R21 R21 R6 - 0x04542B0C, // 0068 SUB R21 R21 K12 - 0x5858000A, // 0069 LDCONST R22 K10 - 0x545E00FE, // 006A LDINT R23 255 - 0x7C440C00, // 006B CALL R17 6 - 0x5C402200, // 006C MOVE R16 R17 - 0x544600FE, // 006D LDINT R17 255 - 0x04442210, // 006E SUB R17 R17 R16 - 0x544A0017, // 006F LDINT R18 24 - 0x38482212, // 0070 SHL R18 R17 R18 - 0x2C4C110F, // 0071 AND R19 R8 K15 - 0x30482413, // 0072 OR R18 R18 R19 - 0x8C4C0310, // 0073 GETMET R19 R1 K16 - 0x5C540800, // 0074 MOVE R21 R4 - 0x5C582400, // 0075 MOVE R22 R18 - 0x7C4C0600, // 0076 CALL R19 3 - 0x8C50030B, // 0077 GETMET R20 R1 K11 - 0x5C581600, // 0078 MOVE R22 R11 - 0x5C5C2600, // 0079 MOVE R23 R19 - 0x7C500600, // 007A CALL R20 3 - 0x002C170C, // 007B ADD R11 R11 K12 - 0x7001FFDD, // 007C JMP #005B - 0x50300200, // 007D LDBOOL R12 1 0 - 0x80041800, // 007E RET 1 R12 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_BeaconAnimation_tostring, /* 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_BeaconAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080011, // 0001 LDCONST R2 K17 - 0x880C0107, // 0002 GETMBR R3 R0 K7 - 0x88100104, // 0003 GETMBR R4 R0 K4 - 0x88140106, // 0004 GETMBR R5 R0 K6 - 0x88180105, // 0005 GETMBR R6 R0 K5 - 0x7C040A00, // 0006 CALL R1 5 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: BeaconAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(BeaconAnimation, - 0, - &be_class_Animation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { 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(back_color, 4), 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(default, -1), be_const_int(-16777216) }, - })) ) } )) }, - { be_const_key_weak(color, -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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(slew_size, 0), 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(default, -1), be_const_int(0) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(beacon_size, 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(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(pos, -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(default, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(render, 2), be_const_closure(class_BeaconAnimation_render_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_BeaconAnimation_tostring_closure) }, - })), - be_str_weak(BeaconAnimation) -); - -/******************************************************************** -** Solidified function: animation_version_string -********************************************************************/ -be_local_closure(animation_version_string, /* name */ - be_nested_proto( - 9, /* 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(VERSION), - /* K2 */ be_nested_str_weak(_X25s_X2E_X25s_X2E_X25s), - }), - be_str_weak(animation_version_string), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x1C040001, // 0001 EQ R1 R0 R1 - 0x78060001, // 0002 JMPF R1 #0005 - 0xB8060000, // 0003 GETNGBL R1 K0 - 0x88000301, // 0004 GETMBR R0 R1 K1 - 0x54060017, // 0005 LDINT R1 24 - 0x3C040001, // 0006 SHR R1 R0 R1 - 0x540A00FE, // 0007 LDINT R2 255 - 0x2C040202, // 0008 AND R1 R1 R2 - 0x540A000F, // 0009 LDINT R2 16 - 0x3C080002, // 000A SHR R2 R0 R2 - 0x540E00FE, // 000B LDINT R3 255 - 0x2C080403, // 000C AND R2 R2 R3 - 0x540E0007, // 000D LDINT R3 8 - 0x3C0C0003, // 000E SHR R3 R0 R3 - 0x541200FE, // 000F LDINT R4 255 - 0x2C0C0604, // 0010 AND R3 R3 R4 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140002, // 0012 LDCONST R5 K2 - 0x5C180200, // 0013 MOVE R6 R1 - 0x5C1C0400, // 0014 MOVE R7 R2 - 0x5C200600, // 0015 MOVE R8 R3 - 0x7C100800, // 0016 CALL R4 4 - 0x80040800, // 0017 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: color_cycle_rainbow -********************************************************************/ -be_local_closure(color_cycle_rainbow, /* name */ - be_nested_proto( - 19, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_const_int(2), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(animation), - /* K8 */ be_nested_str_weak(color_cycle), - /* K9 */ be_nested_str_weak(palette), - /* K10 */ be_nested_str_weak(cycle_period), - }), - be_str_weak(color_cycle_rainbow), - &be_const_str_solidified, - ( &(const binstruction[97]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x740E0001, // 0002 JMPT R3 #0005 - 0x140C0300, // 0003 LT R3 R1 K0 - 0x780E0000, // 0004 JMPF R3 #0006 - 0x54060005, // 0005 LDINT R1 6 - 0x600C0012, // 0006 GETGBL R3 G18 - 0x7C0C0000, // 0007 CALL R3 0 - 0x58100001, // 0008 LDCONST R4 K1 - 0x14140801, // 0009 LT R5 R4 R1 - 0x7816004B, // 000A JMPF R5 #0057 - 0xB8160400, // 000B GETNGBL R5 K2 - 0x8C140B03, // 000C GETMET R5 R5 K3 - 0x5C1C0800, // 000D MOVE R7 R4 - 0x58200001, // 000E LDCONST R8 K1 - 0x5C240200, // 000F MOVE R9 R1 - 0x58280001, // 0010 LDCONST R10 K1 - 0x542E0167, // 0011 LDINT R11 360 - 0x7C140C00, // 0012 CALL R5 6 - 0x4C180000, // 0013 LDNIL R6 - 0x4C1C0000, // 0014 LDNIL R7 - 0x4C200000, // 0015 LDNIL R8 - 0x5426003B, // 0016 LDINT R9 60 - 0x0C240A09, // 0017 DIV R9 R5 R9 - 0x542A0005, // 0018 LDINT R10 6 - 0x1024120A, // 0019 MOD R9 R9 R10 - 0x542A003B, // 001A LDINT R10 60 - 0x0C280A0A, // 001B DIV R10 R5 R10 - 0x04281409, // 001C SUB R10 R10 R9 - 0x542E00FE, // 001D LDINT R11 255 - 0x58300001, // 001E LDCONST R12 K1 - 0x60340009, // 001F GETGBL R13 G9 - 0x043A080A, // 0020 SUB R14 K4 R10 - 0x0838160E, // 0021 MUL R14 R11 R14 - 0x7C340200, // 0022 CALL R13 1 - 0x60380009, // 0023 GETGBL R14 G9 - 0x083C160A, // 0024 MUL R15 R11 R10 - 0x7C380200, // 0025 CALL R14 1 - 0x1C3C1301, // 0026 EQ R15 R9 K1 - 0x783E0003, // 0027 JMPF R15 #002C - 0x5C181600, // 0028 MOVE R6 R11 - 0x5C1C1C00, // 0029 MOVE R7 R14 - 0x5C201800, // 002A MOVE R8 R12 - 0x7002001B, // 002B JMP #0048 - 0x1C3C1304, // 002C EQ R15 R9 K4 - 0x783E0003, // 002D JMPF R15 #0032 - 0x5C181A00, // 002E MOVE R6 R13 - 0x5C1C1600, // 002F MOVE R7 R11 - 0x5C201800, // 0030 MOVE R8 R12 - 0x70020015, // 0031 JMP #0048 - 0x1C3C1300, // 0032 EQ R15 R9 K0 - 0x783E0003, // 0033 JMPF R15 #0038 - 0x5C181800, // 0034 MOVE R6 R12 - 0x5C1C1600, // 0035 MOVE R7 R11 - 0x5C201C00, // 0036 MOVE R8 R14 - 0x7002000F, // 0037 JMP #0048 - 0x1C3C1305, // 0038 EQ R15 R9 K5 - 0x783E0003, // 0039 JMPF R15 #003E - 0x5C181800, // 003A MOVE R6 R12 - 0x5C1C1A00, // 003B MOVE R7 R13 - 0x5C201600, // 003C MOVE R8 R11 - 0x70020009, // 003D JMP #0048 - 0x543E0003, // 003E LDINT R15 4 - 0x1C3C120F, // 003F EQ R15 R9 R15 - 0x783E0003, // 0040 JMPF R15 #0045 - 0x5C181C00, // 0041 MOVE R6 R14 - 0x5C1C1800, // 0042 MOVE R7 R12 - 0x5C201600, // 0043 MOVE R8 R11 - 0x70020002, // 0044 JMP #0048 - 0x5C181600, // 0045 MOVE R6 R11 - 0x5C1C1800, // 0046 MOVE R7 R12 - 0x5C201A00, // 0047 MOVE R8 R13 - 0x543E00FE, // 0048 LDINT R15 255 - 0x54420017, // 0049 LDINT R16 24 - 0x383C1E10, // 004A SHL R15 R15 R16 - 0x5442000F, // 004B LDINT R16 16 - 0x38400C10, // 004C SHL R16 R6 R16 - 0x303C1E10, // 004D OR R15 R15 R16 - 0x54420007, // 004E LDINT R16 8 - 0x38400E10, // 004F SHL R16 R7 R16 - 0x303C1E10, // 0050 OR R15 R15 R16 - 0x303C1E08, // 0051 OR R15 R15 R8 - 0x8C400706, // 0052 GETMET R16 R3 K6 - 0x5C481E00, // 0053 MOVE R18 R15 - 0x7C400400, // 0054 CALL R16 2 - 0x00100904, // 0055 ADD R4 R4 K4 - 0x7001FFB1, // 0056 JMP #0009 - 0xB8160E00, // 0057 GETNGBL R5 K7 - 0x8C140B08, // 0058 GETMET R5 R5 K8 - 0x5C1C0000, // 0059 MOVE R7 R0 - 0x7C140400, // 005A CALL R5 2 - 0x90161203, // 005B SETMBR R5 K9 R3 - 0x4C180000, // 005C LDNIL R6 - 0x20180406, // 005D NE R6 R2 R6 - 0x781A0000, // 005E JMPF R6 #0060 - 0x90161402, // 005F SETMBR R5 K10 R2 - 0x80040A00, // 0060 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sparkle_white -********************************************************************/ -be_local_closure(sparkle_white, /* 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(sparkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(name), - /* K4 */ be_nested_str_weak(sparkle_white), - }), - be_str_weak(sparkle_white), - &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 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: noise_single_color -********************************************************************/ -be_local_closure(noise_single_color, /* 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(noise_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(scale), - /* K4 */ be_nested_str_weak(speed), - /* K5 */ be_nested_str_weak(octaves), - /* K6 */ be_const_int(1), - }), - be_str_weak(noise_single_color), - &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 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0031, // 0006 LDINT R2 50 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x540A001D, // 0008 LDINT R2 30 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x90060B06, // 000A SETMBR R1 K5 K6 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -extern const bclass be_class_PaletteMeterAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PaletteMeterAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* 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(init), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_meter), - }), - 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: _update_value_buffer -********************************************************************/ -be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(value_func), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(get_strip_length), - /* K3 */ be_nested_str_weak(value_buffer), - /* K4 */ be_nested_str_weak(resize), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), - /* K7 */ be_const_int(0), - /* K8 */ be_const_int(1), - }), - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C0C0403, // 0002 EQ R3 R2 R3 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80000600, // 0004 RET 0 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x6010000C, // 0008 GETGBL R4 G12 - 0x88140103, // 0009 GETMBR R5 R0 K3 - 0x7C100200, // 000A CALL R4 1 - 0x20100803, // 000B NE R4 R4 R3 - 0x78120003, // 000C JMPF R4 #0011 - 0x88100103, // 000D GETMBR R4 R0 K3 - 0x8C100904, // 000E GETMET R4 R4 K4 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x5C100400, // 0011 MOVE R4 R2 - 0x5C140200, // 0012 MOVE R5 R1 - 0x5C180000, // 0013 MOVE R6 R0 - 0x7C100400, // 0014 CALL R4 2 - 0xB8160A00, // 0015 GETNGBL R5 K5 - 0x8C140B06, // 0016 GETMET R5 R5 K6 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x58200007, // 0018 LDCONST R8 K7 - 0x54260063, // 0019 LDINT R9 100 - 0x58280007, // 001A LDCONST R10 K7 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C140C00, // 001C CALL R5 6 - 0x58180007, // 001D LDCONST R6 K7 - 0x141C0C03, // 001E LT R7 R6 R3 - 0x781E0008, // 001F JMPF R7 #0029 - 0x881C0103, // 0020 GETMBR R7 R0 K3 - 0x14200C05, // 0021 LT R8 R6 R5 - 0x78220001, // 0022 JMPF R8 #0025 - 0x54220063, // 0023 LDINT R8 100 - 0x70020000, // 0024 JMP #0026 - 0x58200007, // 0025 LDCONST R8 K7 - 0x981C0C08, // 0026 SETIDX R7 R6 R8 - 0x00180D08, // 0027 ADD R6 R6 K8 - 0x7001FFF4, // 0028 JMP #001E - 0x80000000, // 0029 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PaletteMeterAnimation -********************************************************************/ -extern const bclass be_class_PalettePatternAnimation; -be_local_class(PaletteMeterAnimation, - 0, - &be_class_PalettePatternAnimation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { 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(value_func, -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(default, -1), be_const_nil() }, - { be_const_key_weak(type, -1), be_nested_str_weak(function) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteMeterAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteMeterAnimation__update_value_buffer_closure) }, - })), - be_str_weak(PaletteMeterAnimation) -); - -/******************************************************************** -** 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(ELASTIC), - }), - be_str_weak(elastic), - &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 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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_nested_str_weak(SAWTOOTH), - }), - be_str_weak(ramp), - &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 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 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: ease_in -********************************************************************/ -be_local_closure(ease_in, /* 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_nested_str_weak(EASE_IN), - }), - be_str_weak(ease_in), - &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 - 0xB80A0000, // 0004 GETNGBL R2 K0 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 - }) - ) -); -/*******************************************************************/ - -// compact class 'StripLengthProvider' ktab size: 5, total: 8 (saved 24 bytes) -static const bvalue be_ktab_class_StripLengthProvider[5] = { - /* K0 */ be_nested_str_weak(engine), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(width), - /* K3 */ be_nested_str_weak(StripLengthProvider_X28length_X3D_X25s_X29), - /* K4 */ be_nested_str_weak(StripLengthProvider_X28length_X3Dunknown_X29), -}; - - -extern const bclass be_class_StripLengthProvider; - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_StripLengthProvider_produce_value, /* name */ - be_nested_proto( - 5, /* 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_StripLengthProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0000, // 0003 JMPF R3 #0005 - 0x80060200, // 0004 RET 1 K1 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x880C0702, // 0006 GETMBR R3 R3 K2 - 0x80040600, // 0007 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_StripLengthProvider_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_StripLengthProvider, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0xA802000F, // 0000 EXBLK 0 #0011 - 0x88040100, // 0001 GETMBR R1 R0 K0 - 0x4C080000, // 0002 LDNIL R2 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060002, // 0004 JMPF R1 #0008 - 0x88040100, // 0005 GETMBR R1 R0 K0 - 0x88040302, // 0006 GETMBR R1 R1 K2 - 0x70020000, // 0007 JMP #0009 - 0x58040001, // 0008 LDCONST R1 K1 - 0x60080018, // 0009 GETGBL R2 G24 - 0x580C0003, // 000A LDCONST R3 K3 - 0x5C100200, // 000B MOVE R4 R1 - 0x7C080400, // 000C CALL R2 2 - 0xA8040001, // 000D EXBLK 1 1 - 0x80040400, // 000E RET 1 R2 - 0xA8040001, // 000F EXBLK 1 1 - 0x70020004, // 0010 JMP #0016 - 0xAC040000, // 0011 CATCH R1 0 0 - 0x70020001, // 0012 JMP #0015 - 0x80060800, // 0013 RET 1 K4 - 0x70020000, // 0014 JMP #0016 - 0xB0080000, // 0015 RAISE 2 R0 R0 - 0x80000000, // 0016 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: StripLengthProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(StripLengthProvider, - 0, - &be_class_ValueProvider, - be_nested_map(2, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, -1), be_const_closure(class_StripLengthProvider_tostring_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_StripLengthProvider_produce_value_closure) }, - })), - be_str_weak(StripLengthProvider) -); - -/******************************************************************** -** Solidified function: shift_scroll_left -********************************************************************/ -be_local_closure(shift_scroll_left, /* 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(shift_animation), - /* K2 */ be_nested_str_weak(direction), - /* K3 */ be_nested_str_weak(shift_speed), - /* K4 */ be_nested_str_weak(wrap_around), - }), - be_str_weak(shift_scroll_left), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409FFFE, // 0004 LDINT R2 -1 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A007F, // 0006 LDINT R2 128 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x50080200, // 0008 LDBOOL R2 1 0 - 0x90060802, // 0009 SETMBR R1 K4 R2 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sparkle_rainbow -********************************************************************/ -be_local_closure(sparkle_rainbow, /* 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[11]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(rich_palette), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(PALETTE_RAINBOW), - /* K4 */ be_nested_str_weak(cycle_period), - /* K5 */ be_nested_str_weak(transition_type), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(sparkle_animation), - /* K8 */ be_nested_str_weak(color), - /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(sparkle_rainbow), - }), - be_str_weak(sparkle_rainbow), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* 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 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x540A1387, // 0007 LDINT R2 5000 - 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x90060B06, // 0009 SETMBR R1 K5 K6 - 0xB80A0000, // 000A GETNGBL R2 K0 - 0x8C080507, // 000B GETMET R2 R2 K7 - 0x5C100000, // 000C MOVE R4 R0 - 0x7C080400, // 000D CALL R2 2 - 0x900A1001, // 000E SETMBR R2 K8 R1 - 0x900A130A, // 000F SETMBR R2 K9 K10 - 0x80040400, // 0010 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -// compact class 'CrenelPositionAnimation' ktab size: 21, total: 27 (saved 48 bytes) -static const bvalue be_ktab_class_CrenelPositionAnimation[21] = { - /* K0 */ be_nested_str_weak(is_running), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(time_ms), - /* K3 */ be_nested_str_weak(width), - /* K4 */ be_nested_str_weak(back_color), - /* K5 */ be_nested_str_weak(pos), - /* K6 */ be_nested_str_weak(pulse_size), - /* K7 */ be_nested_str_weak(low_size), - /* K8 */ be_nested_str_weak(nb_pulse), - /* K9 */ be_nested_str_weak(color), - /* K10 */ be_const_int(-16777216), - /* K11 */ be_nested_str_weak(fill_pixels), - /* K12 */ be_const_int(0), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(set_pixel_color), - /* K15 */ be_nested_str_weak(get_param), - /* K16 */ be_nested_str_weak(animation), - /* K17 */ be_nested_str_weak(is_value_provider), - /* K18 */ be_nested_str_weak(0x_X2508x), - /* K19 */ be_nested_str_weak(CrenelPositionAnimation_X28color_X3D_X25s_X2C_X20pos_X3D_X25s_X2C_X20pulse_size_X3D_X25s_X2C_X20low_size_X3D_X25s_X2C_X20nb_pulse_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K20 */ be_nested_str_weak(priority), -}; - - -extern const bclass be_class_CrenelPositionAnimation; - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_CrenelPositionAnimation_render, /* name */ - be_nested_proto( - 16, /* 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_CrenelPositionAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[76]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0001, // 0009 JMPF R3 #000C - 0x880C0101, // 000A GETMBR R3 R0 K1 - 0x88080702, // 000B GETMBR R2 R3 K2 - 0x880C0303, // 000C GETMBR R3 R1 K3 - 0x88100104, // 000D GETMBR R4 R0 K4 - 0x88140105, // 000E GETMBR R5 R0 K5 - 0x88180106, // 000F GETMBR R6 R0 K6 - 0x881C0107, // 0010 GETMBR R7 R0 K7 - 0x88200108, // 0011 GETMBR R8 R0 K8 - 0x88240109, // 0012 GETMBR R9 R0 K9 - 0x60280009, // 0013 GETGBL R10 G9 - 0x002C0C07, // 0014 ADD R11 R6 R7 - 0x7C280200, // 0015 CALL R10 1 - 0x202C090A, // 0016 NE R11 R4 K10 - 0x782E0002, // 0017 JMPF R11 #001B - 0x8C2C030B, // 0018 GETMET R11 R1 K11 - 0x5C340800, // 0019 MOVE R13 R4 - 0x7C2C0400, // 001A CALL R11 2 - 0x182C150C, // 001B LE R11 R10 K12 - 0x782E0000, // 001C JMPF R11 #001E - 0x5828000D, // 001D LDCONST R10 K13 - 0x1C2C110C, // 001E EQ R11 R8 K12 - 0x782E0001, // 001F JMPF R11 #0022 - 0x502C0200, // 0020 LDBOOL R11 1 0 - 0x80041600, // 0021 RET 1 R11 - 0x142C110C, // 0022 LT R11 R8 K12 - 0x782E0006, // 0023 JMPF R11 #002B - 0x002C0A06, // 0024 ADD R11 R5 R6 - 0x042C170D, // 0025 SUB R11 R11 K13 - 0x102C160A, // 0026 MOD R11 R11 R10 - 0x042C1606, // 0027 SUB R11 R11 R6 - 0x002C170D, // 0028 ADD R11 R11 K13 - 0x5C141600, // 0029 MOVE R5 R11 - 0x70020007, // 002A JMP #0033 - 0x442C1400, // 002B NEG R11 R10 - 0x142C0A0B, // 002C LT R11 R5 R11 - 0x782E0004, // 002D JMPF R11 #0033 - 0x202C110C, // 002E NE R11 R8 K12 - 0x782E0002, // 002F JMPF R11 #0033 - 0x00140A0A, // 0030 ADD R5 R5 R10 - 0x0420110D, // 0031 SUB R8 R8 K13 - 0x7001FFF7, // 0032 JMP #002B - 0x142C0A03, // 0033 LT R11 R5 R3 - 0x782E0014, // 0034 JMPF R11 #004A - 0x202C110C, // 0035 NE R11 R8 K12 - 0x782E0012, // 0036 JMPF R11 #004A - 0x582C000C, // 0037 LDCONST R11 K12 - 0x14300B0C, // 0038 LT R12 R5 K12 - 0x78320001, // 0039 JMPF R12 #003C - 0x44300A00, // 003A NEG R12 R5 - 0x5C2C1800, // 003B MOVE R11 R12 - 0x14301606, // 003C LT R12 R11 R6 - 0x78320008, // 003D JMPF R12 #0047 - 0x00300A0B, // 003E ADD R12 R5 R11 - 0x14301803, // 003F LT R12 R12 R3 - 0x78320005, // 0040 JMPF R12 #0047 - 0x8C30030E, // 0041 GETMET R12 R1 K14 - 0x00380A0B, // 0042 ADD R14 R5 R11 - 0x5C3C1200, // 0043 MOVE R15 R9 - 0x7C300600, // 0044 CALL R12 3 - 0x002C170D, // 0045 ADD R11 R11 K13 - 0x7001FFF4, // 0046 JMP #003C - 0x00140A0A, // 0047 ADD R5 R5 R10 - 0x0420110D, // 0048 SUB R8 R8 K13 - 0x7001FFE8, // 0049 JMP #0033 - 0x502C0200, // 004A LDBOOL R11 1 0 - 0x80041600, // 004B RET 1 R11 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_CrenelPositionAnimation_tostring, /* 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_CrenelPositionAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x8C08010F, // 0001 GETMET R2 R0 K15 - 0x58100009, // 0002 LDCONST R4 K9 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E2000, // 0004 GETNGBL R3 K16 - 0x8C0C0711, // 0005 GETMET R3 R3 K17 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x600C0008, // 0009 GETGBL R3 G8 - 0x5C100400, // 000A MOVE R4 R2 - 0x7C0C0200, // 000B CALL R3 1 - 0x5C040600, // 000C MOVE R1 R3 - 0x70020004, // 000D JMP #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100012, // 000F LDCONST R4 K18 - 0x88140109, // 0010 GETMBR R5 R0 K9 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C040600, // 0012 MOVE R1 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100013, // 0014 LDCONST R4 K19 - 0x5C140200, // 0015 MOVE R5 R1 - 0x88180105, // 0016 GETMBR R6 R0 K5 - 0x881C0106, // 0017 GETMBR R7 R0 K6 - 0x88200107, // 0018 GETMBR R8 R0 K7 - 0x88240108, // 0019 GETMBR R9 R0 K8 - 0x88280114, // 001A GETMBR R10 R0 K20 - 0x882C0100, // 001B GETMBR R11 R0 K0 - 0x7C0C1000, // 001C CALL R3 8 - 0x80040600, // 001D RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: CrenelPositionAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(CrenelPositionAnimation, - 0, - &be_class_Animation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { 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(color, -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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(nb_pulse, -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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(pulse_size, -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(default, -1), be_const_int(1) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(pos, -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(default, -1), be_const_int(0) }, - })) ) } )) }, - { be_const_key_weak(back_color, 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(default, -1), be_const_int(-16777216) }, - })) ) } )) }, - { be_const_key_weak(low_size, -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(default, -1), be_const_int(3) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(render, 2), be_const_closure(class_CrenelPositionAnimation_render_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_CrenelPositionAnimation_tostring_closure) }, - })), - be_str_weak(CrenelPositionAnimation) -); - -/******************************************************************** -** Solidified function: plasma_rainbow -********************************************************************/ -be_local_closure(plasma_rainbow, /* 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[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(plasma_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(time_speed), - /* K4 */ be_nested_str_weak(name), - /* K5 */ be_nested_str_weak(plasma_rainbow), - }), - be_str_weak(plasma_rainbow), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A0031, // 0006 LDINT R2 50 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x90060905, // 0008 SETMBR R1 K4 K5 - 0x80040200, // 0009 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[ 5]) { /* 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), - }), - be_str_weak(animation_init), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* 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 - 0x80040200, // 0009 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(solid), - }), - be_str_weak(solid), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040300, // 0001 GETMET R1 R1 K0 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x90060302, // 0004 SETMBR R1 K1 K2 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -extern const bclass be_class_PaletteWaveAnimation; - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_PaletteWaveAnimation_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* 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(init), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_wave), - }), - 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: _update_value_buffer -********************************************************************/ -be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ - be_nested_proto( - 19, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(wave_period), - /* K1 */ be_nested_str_weak(wave_length), - /* K2 */ be_nested_str_weak(engine), - /* K3 */ be_nested_str_weak(get_strip_length), - /* K4 */ be_nested_str_weak(value_buffer), - /* K5 */ be_nested_str_weak(resize), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_uint), - /* K8 */ be_const_int(0), - /* K9 */ be_const_real_hex(0x447A0000), - /* K10 */ be_nested_str_weak(sine_int), - /* K11 */ be_nested_str_weak(scale_int), - /* K12 */ be_const_int(1), - }), - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x8C100903, // 0003 GETMET R4 R4 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x6014000C, // 0005 GETGBL R5 G12 - 0x88180104, // 0006 GETMBR R6 R0 K4 - 0x7C140200, // 0007 CALL R5 1 - 0x20140A04, // 0008 NE R5 R5 R4 - 0x78160003, // 0009 JMPF R5 #000E - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x8C140B05, // 000B GETMET R5 R5 K5 - 0x5C1C0800, // 000C MOVE R7 R4 - 0x7C140400, // 000D CALL R5 2 - 0xB8160C00, // 000E GETNGBL R5 K6 - 0x8C140B07, // 000F GETMET R5 R5 K7 - 0x101C0202, // 0010 MOD R7 R1 R2 - 0x58200008, // 0011 LDCONST R8 K8 - 0x5C240400, // 0012 MOVE R9 R2 - 0x58280008, // 0013 LDCONST R10 K8 - 0x542E03E7, // 0014 LDINT R11 1000 - 0x7C140C00, // 0015 CALL R5 6 - 0x0C140B09, // 0016 DIV R5 R5 K9 - 0x60180009, // 0017 GETGBL R6 G9 - 0x081C0A03, // 0018 MUL R7 R5 R3 - 0x7C180200, // 0019 CALL R6 1 - 0x581C0008, // 001A LDCONST R7 K8 - 0x14200E04, // 001B LT R8 R7 R4 - 0x78220019, // 001C JMPF R8 #0037 - 0x00200E06, // 001D ADD R8 R7 R6 - 0x10201003, // 001E MOD R8 R8 R3 - 0xB8260C00, // 001F GETNGBL R9 K6 - 0x8C241307, // 0020 GETMET R9 R9 K7 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x58300008, // 0022 LDCONST R12 K8 - 0x5C340600, // 0023 MOVE R13 R3 - 0x58380008, // 0024 LDCONST R14 K8 - 0x543E7FFE, // 0025 LDINT R15 32767 - 0x7C240C00, // 0026 CALL R9 6 - 0xB82A0C00, // 0027 GETNGBL R10 K6 - 0x8C28150A, // 0028 GETMET R10 R10 K10 - 0x5C301200, // 0029 MOVE R12 R9 - 0x7C280400, // 002A CALL R10 2 - 0x882C0104, // 002B GETMBR R11 R0 K4 - 0xB8320C00, // 002C GETNGBL R12 K6 - 0x8C30190B, // 002D GETMET R12 R12 K11 - 0x5C381400, // 002E MOVE R14 R10 - 0x543DEFFF, // 002F LDINT R15 -4096 - 0x54420FFF, // 0030 LDINT R16 4096 - 0x58440008, // 0031 LDCONST R17 K8 - 0x544A0063, // 0032 LDINT R18 100 - 0x7C300C00, // 0033 CALL R12 6 - 0x982C0E0C, // 0034 SETIDX R11 R7 R12 - 0x001C0F0C, // 0035 ADD R7 R7 K12 - 0x7001FFE3, // 0036 JMP #001B - 0x80000000, // 0037 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: PaletteWaveAnimation -********************************************************************/ -extern const bclass be_class_PalettePatternAnimation; -be_local_class(PaletteWaveAnimation, - 0, - &be_class_PalettePatternAnimation, - be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { 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(wave_period, -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(default, -1), be_const_int(5000) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - })) ) } )) }, - { be_const_key_weak(wave_length, -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(default, -1), be_const_int(10) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteWaveAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteWaveAnimation__update_value_buffer_closure) }, - })), - be_str_weak(PaletteWaveAnimation) -); -// compact class 'TwinkleAnimation' ktab size: 37, total: 67 (saved 240 bytes) -static const bvalue be_ktab_class_TwinkleAnimation[37] = { - /* K0 */ be_nested_str_weak(twinkle_speed), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(set_param), - /* K3 */ be_nested_str_weak(fade_speed), - /* K4 */ be_nested_str_weak(density), - /* K5 */ be_nested_str_weak(min_brightness), - /* K6 */ be_nested_str_weak(max_brightness), - /* K7 */ be_nested_str_weak(color), - /* K8 */ be_nested_str_weak(engine), - /* K9 */ be_nested_str_weak(get_strip_length), - /* K10 */ be_nested_str_weak(twinkle_states), - /* K11 */ be_nested_str_weak(_initialize_arrays), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str_weak(current_colors), - /* K14 */ be_nested_str_weak(tasmota), - /* K15 */ be_nested_str_weak(scale_uint), - /* K16 */ be_const_int(16777215), - /* K17 */ be_nested_str_weak(_random_range), - /* K18 */ be_nested_str_weak(get_param), - /* K19 */ be_nested_str_weak(animation), - /* K20 */ be_nested_str_weak(is_value_provider), - /* K21 */ be_nested_str_weak(0x_X2508x), - /* K22 */ be_nested_str_weak(TwinkleAnimation_X28color_X3D_X25s_X2C_X20density_X3D_X25s_X2C_X20twinkle_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K23 */ be_nested_str_weak(priority), - /* K24 */ be_nested_str_weak(is_running), - /* K25 */ be_nested_str_weak(init), - /* K26 */ be_nested_str_weak(last_update), - /* K27 */ be_nested_str_weak(random_seed), - /* K28 */ be_nested_str_weak(time_ms), - /* K29 */ be_nested_str_weak(width), - /* K30 */ be_nested_str_weak(set_pixel_color), - /* K31 */ be_nested_str_weak(update), - /* K32 */ be_nested_str_weak(_update_twinkle_simulation), - /* K33 */ be_nested_str_weak(resize), - /* K34 */ be_const_int(1103515245), - /* K35 */ be_const_int(2147483647), - /* K36 */ be_nested_str_weak(_random), -}; - - -extern const bclass be_class_TwinkleAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0010, // 0001 JMPF R3 #0013 - 0x540E0031, // 0002 LDINT R3 50 - 0x280C0403, // 0003 GE R3 R2 R3 - 0x780E000D, // 0004 JMPF R3 #0013 - 0x540E03E7, // 0005 LDINT R3 1000 - 0x0C0C0602, // 0006 DIV R3 R3 R2 - 0x14100701, // 0007 LT R4 R3 K1 - 0x78120001, // 0008 JMPF R4 #000B - 0x580C0001, // 0009 LDCONST R3 K1 - 0x70020003, // 000A JMP #000F - 0x54120013, // 000B LDINT R4 20 - 0x24100604, // 000C GT R4 R3 R4 - 0x78120000, // 000D JMPF R4 #000F - 0x540E0013, // 000E LDINT R3 20 - 0x8C100102, // 000F GETMET R4 R0 K2 - 0x58180000, // 0010 LDCONST R6 K0 - 0x5C1C0600, // 0011 MOVE R7 R3 - 0x7C100600, // 0012 CALL R4 3 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_twinkle_simulation -********************************************************************/ -be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ - be_nested_proto( - 18, /* 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_TwinkleAnimation, /* shared constants */ - be_str_weak(_update_twinkle_simulation), - &be_const_str_solidified, - ( &(const binstruction[94]) { /* code */ - 0x88080103, // 0000 GETMBR R2 R0 K3 - 0x880C0104, // 0001 GETMBR R3 R0 K4 - 0x88100105, // 0002 GETMBR R4 R0 K5 - 0x88140106, // 0003 GETMBR R5 R0 K6 - 0x88180107, // 0004 GETMBR R6 R0 K7 - 0x881C0108, // 0005 GETMBR R7 R0 K8 - 0x8C1C0F09, // 0006 GETMET R7 R7 K9 - 0x7C1C0200, // 0007 CALL R7 1 - 0x6020000C, // 0008 GETGBL R8 G12 - 0x8824010A, // 0009 GETMBR R9 R0 K10 - 0x7C200200, // 000A CALL R8 1 - 0x20201007, // 000B NE R8 R8 R7 - 0x78220001, // 000C JMPF R8 #000F - 0x8C20010B, // 000D GETMET R8 R0 K11 - 0x7C200200, // 000E CALL R8 1 - 0x5820000C, // 000F LDCONST R8 K12 - 0x14241007, // 0010 LT R9 R8 R7 - 0x7826001F, // 0011 JMPF R9 #0032 - 0x8824010D, // 0012 GETMBR R9 R0 K13 - 0x94241208, // 0013 GETIDX R9 R9 R8 - 0x542A0017, // 0014 LDINT R10 24 - 0x3C28120A, // 0015 SHR R10 R9 R10 - 0x542E00FE, // 0016 LDINT R11 255 - 0x2C28140B, // 0017 AND R10 R10 R11 - 0x242C150C, // 0018 GT R11 R10 K12 - 0x782E0015, // 0019 JMPF R11 #0030 - 0xB82E1C00, // 001A GETNGBL R11 K14 - 0x8C2C170F, // 001B GETMET R11 R11 K15 - 0x5C340400, // 001C MOVE R13 R2 - 0x5838000C, // 001D LDCONST R14 K12 - 0x543E00FE, // 001E LDINT R15 255 - 0x58400001, // 001F LDCONST R16 K1 - 0x54460013, // 0020 LDINT R17 20 - 0x7C2C0C00, // 0021 CALL R11 6 - 0x1830140B, // 0022 LE R12 R10 R11 - 0x78320004, // 0023 JMPF R12 #0029 - 0x8830010A, // 0024 GETMBR R12 R0 K10 - 0x9830110C, // 0025 SETIDX R12 R8 K12 - 0x8830010D, // 0026 GETMBR R12 R0 K13 - 0x9830110C, // 0027 SETIDX R12 R8 K12 - 0x70020006, // 0028 JMP #0030 - 0x0430140B, // 0029 SUB R12 R10 R11 - 0x2C341310, // 002A AND R13 R9 K16 - 0x8838010D, // 002B GETMBR R14 R0 K13 - 0x543E0017, // 002C LDINT R15 24 - 0x383C180F, // 002D SHL R15 R12 R15 - 0x303C1E0D, // 002E OR R15 R15 R13 - 0x9838100F, // 002F SETIDX R14 R8 R15 - 0x00201101, // 0030 ADD R8 R8 K1 - 0x7001FFDD, // 0031 JMP #0010 - 0x5824000C, // 0032 LDCONST R9 K12 - 0x14281207, // 0033 LT R10 R9 R7 - 0x782A0027, // 0034 JMPF R10 #005D - 0x8828010A, // 0035 GETMBR R10 R0 K10 - 0x94281409, // 0036 GETIDX R10 R10 R9 - 0x1C28150C, // 0037 EQ R10 R10 K12 - 0x782A0021, // 0038 JMPF R10 #005B - 0x8C280111, // 0039 GETMET R10 R0 K17 - 0x543200FE, // 003A LDINT R12 255 - 0x7C280400, // 003B CALL R10 2 - 0x14281403, // 003C LT R10 R10 R3 - 0x782A001C, // 003D JMPF R10 #005B - 0x8C280111, // 003E GETMET R10 R0 K17 - 0x04300A04, // 003F SUB R12 R5 R4 - 0x00301901, // 0040 ADD R12 R12 K1 - 0x7C280400, // 0041 CALL R10 2 - 0x0028080A, // 0042 ADD R10 R4 R10 - 0x5C2C0C00, // 0043 MOVE R11 R6 - 0x5432000F, // 0044 LDINT R12 16 - 0x3C30160C, // 0045 SHR R12 R11 R12 - 0x543600FE, // 0046 LDINT R13 255 - 0x2C30180D, // 0047 AND R12 R12 R13 - 0x54360007, // 0048 LDINT R13 8 - 0x3C34160D, // 0049 SHR R13 R11 R13 - 0x543A00FE, // 004A LDINT R14 255 - 0x2C341A0E, // 004B AND R13 R13 R14 - 0x543A00FE, // 004C LDINT R14 255 - 0x2C38160E, // 004D AND R14 R11 R14 - 0x883C010A, // 004E GETMBR R15 R0 K10 - 0x983C1301, // 004F SETIDX R15 R9 K1 - 0x883C010D, // 0050 GETMBR R15 R0 K13 - 0x54420017, // 0051 LDINT R16 24 - 0x38401410, // 0052 SHL R16 R10 R16 - 0x5446000F, // 0053 LDINT R17 16 - 0x38441811, // 0054 SHL R17 R12 R17 - 0x30402011, // 0055 OR R16 R16 R17 - 0x54460007, // 0056 LDINT R17 8 - 0x38441A11, // 0057 SHL R17 R13 R17 - 0x30402011, // 0058 OR R16 R16 R17 - 0x3040200E, // 0059 OR R16 R16 R14 - 0x983C1210, // 005A SETIDX R15 R9 R16 - 0x00241301, // 005B ADD R9 R9 K1 - 0x7001FFD5, // 005C JMP #0033 - 0x80000000, // 005D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_TwinkleAnimation_tostring, /* name */ - be_nested_proto( - 10, /* 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_TwinkleAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x8C080112, // 0001 GETMET R2 R0 K18 - 0x58100007, // 0002 LDCONST R4 K7 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E2600, // 0004 GETNGBL R3 K19 - 0x8C0C0714, // 0005 GETMET R3 R3 K20 - 0x5C140400, // 0006 MOVE R5 R2 - 0x7C0C0400, // 0007 CALL R3 2 - 0x780E0004, // 0008 JMPF R3 #000E - 0x600C0008, // 0009 GETGBL R3 G8 - 0x5C100400, // 000A MOVE R4 R2 - 0x7C0C0200, // 000B CALL R3 1 - 0x5C040600, // 000C MOVE R1 R3 - 0x70020004, // 000D JMP #0013 - 0x600C0018, // 000E GETGBL R3 G24 - 0x58100015, // 000F LDCONST R4 K21 - 0x88140107, // 0010 GETMBR R5 R0 K7 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C040600, // 0012 MOVE R1 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100016, // 0014 LDCONST R4 K22 - 0x5C140200, // 0015 MOVE R5 R1 - 0x88180104, // 0016 GETMBR R6 R0 K4 - 0x881C0100, // 0017 GETMBR R7 R0 K0 - 0x88200117, // 0018 GETMBR R8 R0 K23 - 0x88240118, // 0019 GETMBR R9 R0 K24 - 0x7C0C0C00, // 001A CALL R3 6 - 0x80040600, // 001B RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080519, // 0003 GETMET R2 R2 K25 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90021402, // 0008 SETMBR R0 K10 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90021A02, // 000B SETMBR R0 K13 R2 - 0x9002350C, // 000C SETMBR R0 K26 K12 - 0x88080108, // 000D GETMBR R2 R0 K8 - 0x8808051C, // 000E GETMBR R2 R2 K28 - 0x540EFFFF, // 000F LDINT R3 65536 - 0x10080403, // 0010 MOD R2 R2 R3 - 0x90023602, // 0011 SETMBR R0 K27 R2 - 0x8C08010B, // 0012 GETMET R2 R0 K11 - 0x7C080200, // 0013 CALL R2 1 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_TwinkleAnimation_render, /* name */ - be_nested_proto( - 11, /* 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_TwinkleAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0x880C0118, // 0000 GETMBR R3 R0 K24 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0001, // 0009 JMPF R3 #000C - 0x880C0108, // 000A GETMBR R3 R0 K8 - 0x8808071C, // 000B GETMBR R2 R3 K28 - 0x880C0108, // 000C GETMBR R3 R0 K8 - 0x8C0C0709, // 000D GETMET R3 R3 K9 - 0x7C0C0200, // 000E CALL R3 1 - 0x6010000C, // 000F GETGBL R4 G12 - 0x8814010A, // 0010 GETMBR R5 R0 K10 - 0x7C100200, // 0011 CALL R4 1 - 0x20100803, // 0012 NE R4 R4 R3 - 0x78120001, // 0013 JMPF R4 #0016 - 0x8C10010B, // 0014 GETMET R4 R0 K11 - 0x7C100200, // 0015 CALL R4 1 - 0x50100000, // 0016 LDBOOL R4 0 0 - 0x5814000C, // 0017 LDCONST R5 K12 - 0x14180A03, // 0018 LT R6 R5 R3 - 0x781A0011, // 0019 JMPF R6 #002C - 0x8818031D, // 001A GETMBR R6 R1 K29 - 0x14180A06, // 001B LT R6 R5 R6 - 0x781A000C, // 001C JMPF R6 #002A - 0x8818010D, // 001D GETMBR R6 R0 K13 - 0x94180C05, // 001E GETIDX R6 R6 R5 - 0x541E0017, // 001F LDINT R7 24 - 0x3C1C0C07, // 0020 SHR R7 R6 R7 - 0x542200FE, // 0021 LDINT R8 255 - 0x2C1C0E08, // 0022 AND R7 R7 R8 - 0x241C0F0C, // 0023 GT R7 R7 K12 - 0x781E0004, // 0024 JMPF R7 #002A - 0x8C1C031E, // 0025 GETMET R7 R1 K30 - 0x5C240A00, // 0026 MOVE R9 R5 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x7C1C0600, // 0028 CALL R7 3 - 0x50100200, // 0029 LDBOOL R4 1 0 - 0x00140B01, // 002A ADD R5 R5 K1 - 0x7001FFEB, // 002B JMP #0018 - 0x80040800, // 002C RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08051F, // 0003 GETMET R2 R2 K31 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x4C080000, // 0009 LDNIL R2 - 0x1C080202, // 000A EQ R2 R1 R2 - 0x780A0001, // 000B JMPF R2 #000E - 0x88080108, // 000C GETMBR R2 R0 K8 - 0x8804051C, // 000D GETMBR R1 R2 K28 - 0x88080100, // 000E GETMBR R2 R0 K0 - 0x540E03E7, // 000F LDINT R3 1000 - 0x0C0C0602, // 0010 DIV R3 R3 R2 - 0x8810011A, // 0011 GETMBR R4 R0 K26 - 0x04100204, // 0012 SUB R4 R1 R4 - 0x28100803, // 0013 GE R4 R4 R3 - 0x78120003, // 0014 JMPF R4 #0019 - 0x90023401, // 0015 SETMBR R0 K26 R1 - 0x8C100120, // 0016 GETMET R4 R0 K32 - 0x5C180200, // 0017 MOVE R6 R1 - 0x7C100400, // 0018 CALL R4 2 - 0x50100200, // 0019 LDBOOL R4 1 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_arrays -********************************************************************/ -be_local_closure(class_TwinkleAnimation__initialize_arrays, /* 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_TwinkleAnimation, /* shared constants */ - be_str_weak(_initialize_arrays), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x8C040309, // 0001 GETMET R1 R1 K9 - 0x7C040200, // 0002 CALL R1 1 - 0x8808010A, // 0003 GETMBR R2 R0 K10 - 0x8C080521, // 0004 GETMET R2 R2 K33 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x8808010D, // 0007 GETMBR R2 R0 K13 - 0x8C080521, // 0008 GETMET R2 R2 K33 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x5808000C, // 000B LDCONST R2 K12 - 0x140C0401, // 000C LT R3 R2 R1 - 0x780E0005, // 000D JMPF R3 #0014 - 0x880C010A, // 000E GETMBR R3 R0 K10 - 0x980C050C, // 000F SETIDX R3 R2 K12 - 0x880C010D, // 0010 GETMBR R3 R0 K13 - 0x980C050C, // 0011 SETIDX R3 R2 K12 - 0x00080501, // 0012 ADD R2 R2 K1 - 0x7001FFF7, // 0013 JMP #000C - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_TwinkleAnimation__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_TwinkleAnimation, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x8804011B, // 0000 GETMBR R1 R0 K27 - 0x08040322, // 0001 MUL R1 R1 K34 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040323, // 0004 AND R1 R1 K35 - 0x90023601, // 0005 SETMBR R0 K27 R1 - 0x8804011B, // 0006 GETMBR R1 R0 K27 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random_range -********************************************************************/ -be_local_closure(class_TwinkleAnimation__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_TwinkleAnimation, /* shared constants */ - be_str_weak(_random_range), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x1808030C, // 0000 LE R2 R1 K12 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80061800, // 0002 RET 1 K12 - 0x8C080124, // 0003 GETMET R2 R0 K36 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: TwinkleAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(TwinkleAnimation, - 4, - &be_class_Animation, - be_nested_map(14, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_random_range, -1), be_const_closure(class_TwinkleAnimation__random_range_closure) }, - { be_const_key_weak(twinkle_states, -1), be_const_var(0) }, - { be_const_key_weak(init, -1), be_const_closure(class_TwinkleAnimation_init_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_TwinkleAnimation_tostring_closure) }, - { be_const_key_weak(random_seed, -1), be_const_var(3) }, - { 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(fade_speed, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(180) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(twinkle_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(6) }, - { be_const_key_weak(min, -1), be_const_int(1) }, - { be_const_key_weak(max, 1), be_const_int(5000) }, - })) ) } )) }, - { be_const_key_weak(density, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(128) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(max_brightness, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(color, -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(default, -1), be_const_int(-1) }, - })) ) } )) }, - { be_const_key_weak(min_brightness, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(32) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - })) ) } )) }, - { be_const_key_weak(_random, 9), be_const_closure(class_TwinkleAnimation__random_closure) }, - { be_const_key_weak(last_update, -1), be_const_var(2) }, - { be_const_key_weak(update, -1), be_const_closure(class_TwinkleAnimation_update_closure) }, - { be_const_key_weak(_initialize_arrays, 10), be_const_closure(class_TwinkleAnimation__initialize_arrays_closure) }, - { be_const_key_weak(render, 2), be_const_closure(class_TwinkleAnimation_render_closure) }, - { be_const_key_weak(current_colors, -1), be_const_var(1) }, - { be_const_key_weak(_update_twinkle_simulation, 1), be_const_closure(class_TwinkleAnimation__update_twinkle_simulation_closure) }, - { be_const_key_weak(on_param_changed, 0), be_const_closure(class_TwinkleAnimation_on_param_changed_closure) }, - })), - be_str_weak(TwinkleAnimation) -); // compact class 'SparkleAnimation' ktab size: 42, total: 76 (saved 272 bytes) static const bvalue be_ktab_class_SparkleAnimation[42] = { /* K0 */ be_const_int(0), @@ -21771,9 +21123,9 @@ be_local_class(SparkleAnimation, ); /******************************************************************** -** Solidified function: sine +** Solidified function: twinkle_classic ********************************************************************/ -be_local_closure(sine, /* name */ +be_local_closure(twinkle_classic, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -21783,60 +21135,36 @@ be_local_closure(sine, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(oscillator_value), - /* K2 */ be_nested_str_weak(form), - /* K3 */ be_nested_str_weak(SINE), + /* K1 */ be_nested_str_weak(twinkle_animation), + /* K2 */ be_nested_str_weak(color), + /* K3 */ be_nested_str_weak(density), + /* K4 */ be_nested_str_weak(twinkle_speed), + /* K5 */ be_nested_str_weak(fade_speed), + /* K6 */ be_nested_str_weak(min_brightness), + /* K7 */ be_nested_str_weak(max_brightness), }), - be_str_weak(sine), + be_str_weak(twinkle_classic), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[17]) { /* 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 - 0x88080503, // 0005 GETMBR R2 R2 K3 - 0x90060402, // 0006 SETMBR R1 K2 R2 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: pulsating_color_provider -********************************************************************/ -be_local_closure(pulsating_color_provider, /* 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_color), - /* K2 */ be_nested_str_weak(curve_factor), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(duration), - }), - be_str_weak(pulsating_color_provider), - &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 + 0x5409FFFE, // 0004 LDINT R2 -1 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A0095, // 0006 LDINT R2 150 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x540A0005, // 0008 LDINT R2 6 + 0x90060802, // 0009 SETMBR R1 K4 R2 + 0x540A00B3, // 000A LDINT R2 180 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x540A001F, // 000C LDINT R2 32 + 0x90060C02, // 000D SETMBR R1 K6 R2 + 0x540A00FE, // 000E LDINT R2 255 + 0x90060E02, // 000F SETMBR R1 K7 R2 + 0x80040200, // 0010 RET 1 R1 }) ) ); @@ -21892,6 +21220,955 @@ be_local_closure(twinkle_gentle, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: noise_fractal +********************************************************************/ +be_local_closure(noise_fractal, /* 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[18]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(noise_animation), + /* K2 */ be_nested_str_weak(rich_palette), + /* K3 */ be_nested_str_weak(palette), + /* K4 */ be_nested_str_weak(PALETTE_RAINBOW), + /* K5 */ be_nested_str_weak(cycle_period), + /* K6 */ be_nested_str_weak(transition_type), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(brightness), + /* K9 */ be_nested_str_weak(range_min), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(scale), + /* K14 */ be_nested_str_weak(speed), + /* K15 */ be_nested_str_weak(octaves), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(persistence), + }), + be_str_weak(noise_fractal), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* 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 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x540E001D, // 0014 LDINT R3 30 + 0x90061A03, // 0015 SETMBR R1 K13 R3 + 0x540E0013, // 0016 LDINT R3 20 + 0x90061C03, // 0017 SETMBR R1 K14 R3 + 0x90061F10, // 0018 SETMBR R1 K15 K16 + 0x540E007F, // 0019 LDINT R3 128 + 0x90062203, // 001A SETMBR R1 K17 R3 + 0x80040200, // 001B RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'TwinkleAnimation' ktab size: 37, total: 67 (saved 240 bytes) +static const bvalue be_ktab_class_TwinkleAnimation[37] = { + /* K0 */ be_nested_str_weak(twinkle_speed), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(set_param), + /* K3 */ be_nested_str_weak(fade_speed), + /* K4 */ be_nested_str_weak(density), + /* K5 */ be_nested_str_weak(min_brightness), + /* K6 */ be_nested_str_weak(max_brightness), + /* K7 */ be_nested_str_weak(color), + /* K8 */ be_nested_str_weak(engine), + /* K9 */ be_nested_str_weak(get_strip_length), + /* K10 */ be_nested_str_weak(twinkle_states), + /* K11 */ be_nested_str_weak(_initialize_arrays), + /* K12 */ be_const_int(0), + /* K13 */ be_nested_str_weak(current_colors), + /* K14 */ be_nested_str_weak(tasmota), + /* K15 */ be_nested_str_weak(scale_uint), + /* K16 */ be_const_int(16777215), + /* K17 */ be_nested_str_weak(_random_range), + /* K18 */ be_nested_str_weak(get_param), + /* K19 */ be_nested_str_weak(animation), + /* K20 */ be_nested_str_weak(is_value_provider), + /* K21 */ be_nested_str_weak(0x_X2508x), + /* K22 */ be_nested_str_weak(TwinkleAnimation_X28color_X3D_X25s_X2C_X20density_X3D_X25s_X2C_X20twinkle_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K23 */ be_nested_str_weak(priority), + /* K24 */ be_nested_str_weak(is_running), + /* K25 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(last_update), + /* K27 */ be_nested_str_weak(random_seed), + /* K28 */ be_nested_str_weak(time_ms), + /* K29 */ be_nested_str_weak(width), + /* K30 */ be_nested_str_weak(set_pixel_color), + /* K31 */ be_nested_str_weak(update), + /* K32 */ be_nested_str_weak(_update_twinkle_simulation), + /* K33 */ be_nested_str_weak(resize), + /* K34 */ be_const_int(1103515245), + /* K35 */ be_const_int(2147483647), + /* K36 */ be_nested_str_weak(_random), +}; + + +extern const bclass be_class_TwinkleAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x780E0010, // 0001 JMPF R3 #0013 + 0x540E0031, // 0002 LDINT R3 50 + 0x280C0403, // 0003 GE R3 R2 R3 + 0x780E000D, // 0004 JMPF R3 #0013 + 0x540E03E7, // 0005 LDINT R3 1000 + 0x0C0C0602, // 0006 DIV R3 R3 R2 + 0x14100701, // 0007 LT R4 R3 K1 + 0x78120001, // 0008 JMPF R4 #000B + 0x580C0001, // 0009 LDCONST R3 K1 + 0x70020003, // 000A JMP #000F + 0x54120013, // 000B LDINT R4 20 + 0x24100604, // 000C GT R4 R3 R4 + 0x78120000, // 000D JMPF R4 #000F + 0x540E0013, // 000E LDINT R3 20 + 0x8C100102, // 000F GETMET R4 R0 K2 + 0x58180000, // 0010 LDCONST R6 K0 + 0x5C1C0600, // 0011 MOVE R7 R3 + 0x7C100600, // 0012 CALL R4 3 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_twinkle_simulation +********************************************************************/ +be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ + be_nested_proto( + 18, /* 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_TwinkleAnimation, /* shared constants */ + be_str_weak(_update_twinkle_simulation), + &be_const_str_solidified, + ( &(const binstruction[94]) { /* code */ + 0x88080103, // 0000 GETMBR R2 R0 K3 + 0x880C0104, // 0001 GETMBR R3 R0 K4 + 0x88100105, // 0002 GETMBR R4 R0 K5 + 0x88140106, // 0003 GETMBR R5 R0 K6 + 0x88180107, // 0004 GETMBR R6 R0 K7 + 0x881C0108, // 0005 GETMBR R7 R0 K8 + 0x8C1C0F09, // 0006 GETMET R7 R7 K9 + 0x7C1C0200, // 0007 CALL R7 1 + 0x6020000C, // 0008 GETGBL R8 G12 + 0x8824010A, // 0009 GETMBR R9 R0 K10 + 0x7C200200, // 000A CALL R8 1 + 0x20201007, // 000B NE R8 R8 R7 + 0x78220001, // 000C JMPF R8 #000F + 0x8C20010B, // 000D GETMET R8 R0 K11 + 0x7C200200, // 000E CALL R8 1 + 0x5820000C, // 000F LDCONST R8 K12 + 0x14241007, // 0010 LT R9 R8 R7 + 0x7826001F, // 0011 JMPF R9 #0032 + 0x8824010D, // 0012 GETMBR R9 R0 K13 + 0x94241208, // 0013 GETIDX R9 R9 R8 + 0x542A0017, // 0014 LDINT R10 24 + 0x3C28120A, // 0015 SHR R10 R9 R10 + 0x542E00FE, // 0016 LDINT R11 255 + 0x2C28140B, // 0017 AND R10 R10 R11 + 0x242C150C, // 0018 GT R11 R10 K12 + 0x782E0015, // 0019 JMPF R11 #0030 + 0xB82E1C00, // 001A GETNGBL R11 K14 + 0x8C2C170F, // 001B GETMET R11 R11 K15 + 0x5C340400, // 001C MOVE R13 R2 + 0x5838000C, // 001D LDCONST R14 K12 + 0x543E00FE, // 001E LDINT R15 255 + 0x58400001, // 001F LDCONST R16 K1 + 0x54460013, // 0020 LDINT R17 20 + 0x7C2C0C00, // 0021 CALL R11 6 + 0x1830140B, // 0022 LE R12 R10 R11 + 0x78320004, // 0023 JMPF R12 #0029 + 0x8830010A, // 0024 GETMBR R12 R0 K10 + 0x9830110C, // 0025 SETIDX R12 R8 K12 + 0x8830010D, // 0026 GETMBR R12 R0 K13 + 0x9830110C, // 0027 SETIDX R12 R8 K12 + 0x70020006, // 0028 JMP #0030 + 0x0430140B, // 0029 SUB R12 R10 R11 + 0x2C341310, // 002A AND R13 R9 K16 + 0x8838010D, // 002B GETMBR R14 R0 K13 + 0x543E0017, // 002C LDINT R15 24 + 0x383C180F, // 002D SHL R15 R12 R15 + 0x303C1E0D, // 002E OR R15 R15 R13 + 0x9838100F, // 002F SETIDX R14 R8 R15 + 0x00201101, // 0030 ADD R8 R8 K1 + 0x7001FFDD, // 0031 JMP #0010 + 0x5824000C, // 0032 LDCONST R9 K12 + 0x14281207, // 0033 LT R10 R9 R7 + 0x782A0027, // 0034 JMPF R10 #005D + 0x8828010A, // 0035 GETMBR R10 R0 K10 + 0x94281409, // 0036 GETIDX R10 R10 R9 + 0x1C28150C, // 0037 EQ R10 R10 K12 + 0x782A0021, // 0038 JMPF R10 #005B + 0x8C280111, // 0039 GETMET R10 R0 K17 + 0x543200FE, // 003A LDINT R12 255 + 0x7C280400, // 003B CALL R10 2 + 0x14281403, // 003C LT R10 R10 R3 + 0x782A001C, // 003D JMPF R10 #005B + 0x8C280111, // 003E GETMET R10 R0 K17 + 0x04300A04, // 003F SUB R12 R5 R4 + 0x00301901, // 0040 ADD R12 R12 K1 + 0x7C280400, // 0041 CALL R10 2 + 0x0028080A, // 0042 ADD R10 R4 R10 + 0x5C2C0C00, // 0043 MOVE R11 R6 + 0x5432000F, // 0044 LDINT R12 16 + 0x3C30160C, // 0045 SHR R12 R11 R12 + 0x543600FE, // 0046 LDINT R13 255 + 0x2C30180D, // 0047 AND R12 R12 R13 + 0x54360007, // 0048 LDINT R13 8 + 0x3C34160D, // 0049 SHR R13 R11 R13 + 0x543A00FE, // 004A LDINT R14 255 + 0x2C341A0E, // 004B AND R13 R13 R14 + 0x543A00FE, // 004C LDINT R14 255 + 0x2C38160E, // 004D AND R14 R11 R14 + 0x883C010A, // 004E GETMBR R15 R0 K10 + 0x983C1301, // 004F SETIDX R15 R9 K1 + 0x883C010D, // 0050 GETMBR R15 R0 K13 + 0x54420017, // 0051 LDINT R16 24 + 0x38401410, // 0052 SHL R16 R10 R16 + 0x5446000F, // 0053 LDINT R17 16 + 0x38441811, // 0054 SHL R17 R12 R17 + 0x30402011, // 0055 OR R16 R16 R17 + 0x54460007, // 0056 LDINT R17 8 + 0x38441A11, // 0057 SHL R17 R13 R17 + 0x30402011, // 0058 OR R16 R16 R17 + 0x3040200E, // 0059 OR R16 R16 R14 + 0x983C1210, // 005A SETIDX R15 R9 R16 + 0x00241301, // 005B ADD R9 R9 K1 + 0x7001FFD5, // 005C JMP #0033 + 0x80000000, // 005D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_TwinkleAnimation_tostring, /* name */ + be_nested_proto( + 10, /* 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_TwinkleAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x8C080112, // 0001 GETMET R2 R0 K18 + 0x58100007, // 0002 LDCONST R4 K7 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E2600, // 0004 GETNGBL R3 K19 + 0x8C0C0714, // 0005 GETMET R3 R3 K20 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x780E0004, // 0008 JMPF R3 #000E + 0x600C0008, // 0009 GETGBL R3 G8 + 0x5C100400, // 000A MOVE R4 R2 + 0x7C0C0200, // 000B CALL R3 1 + 0x5C040600, // 000C MOVE R1 R3 + 0x70020004, // 000D JMP #0013 + 0x600C0018, // 000E GETGBL R3 G24 + 0x58100015, // 000F LDCONST R4 K21 + 0x88140107, // 0010 GETMBR R5 R0 K7 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x58100016, // 0014 LDCONST R4 K22 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180104, // 0016 GETMBR R6 R0 K4 + 0x881C0100, // 0017 GETMBR R7 R0 K0 + 0x88200117, // 0018 GETMBR R8 R0 K23 + 0x88240118, // 0019 GETMBR R9 R0 K24 + 0x7C0C0C00, // 001A CALL R3 6 + 0x80040600, // 001B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080519, // 0003 GETMET R2 R2 K25 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90021402, // 0008 SETMBR R0 K10 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90021A02, // 000B SETMBR R0 K13 R2 + 0x9002350C, // 000C SETMBR R0 K26 K12 + 0x88080108, // 000D GETMBR R2 R0 K8 + 0x8808051C, // 000E GETMBR R2 R2 K28 + 0x540EFFFF, // 000F LDINT R3 65536 + 0x10080403, // 0010 MOD R2 R2 R3 + 0x90023602, // 0011 SETMBR R0 K27 R2 + 0x8C08010B, // 0012 GETMET R2 R0 K11 + 0x7C080200, // 0013 CALL R2 1 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_TwinkleAnimation_render, /* name */ + be_nested_proto( + 11, /* 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_TwinkleAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0x880C0118, // 0000 GETMBR R3 R0 K24 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x4C0C0000, // 0002 LDNIL R3 + 0x1C0C0203, // 0003 EQ R3 R1 R3 + 0x780E0001, // 0004 JMPF R3 #0007 + 0x500C0000, // 0005 LDBOOL R3 0 0 + 0x80040600, // 0006 RET 1 R3 + 0x4C0C0000, // 0007 LDNIL R3 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x780E0001, // 0009 JMPF R3 #000C + 0x880C0108, // 000A GETMBR R3 R0 K8 + 0x8808071C, // 000B GETMBR R2 R3 K28 + 0x880C0108, // 000C GETMBR R3 R0 K8 + 0x8C0C0709, // 000D GETMET R3 R3 K9 + 0x7C0C0200, // 000E CALL R3 1 + 0x6010000C, // 000F GETGBL R4 G12 + 0x8814010A, // 0010 GETMBR R5 R0 K10 + 0x7C100200, // 0011 CALL R4 1 + 0x20100803, // 0012 NE R4 R4 R3 + 0x78120001, // 0013 JMPF R4 #0016 + 0x8C10010B, // 0014 GETMET R4 R0 K11 + 0x7C100200, // 0015 CALL R4 1 + 0x50100000, // 0016 LDBOOL R4 0 0 + 0x5814000C, // 0017 LDCONST R5 K12 + 0x14180A03, // 0018 LT R6 R5 R3 + 0x781A0011, // 0019 JMPF R6 #002C + 0x8818031D, // 001A GETMBR R6 R1 K29 + 0x14180A06, // 001B LT R6 R5 R6 + 0x781A000C, // 001C JMPF R6 #002A + 0x8818010D, // 001D GETMBR R6 R0 K13 + 0x94180C05, // 001E GETIDX R6 R6 R5 + 0x541E0017, // 001F LDINT R7 24 + 0x3C1C0C07, // 0020 SHR R7 R6 R7 + 0x542200FE, // 0021 LDINT R8 255 + 0x2C1C0E08, // 0022 AND R7 R7 R8 + 0x241C0F0C, // 0023 GT R7 R7 K12 + 0x781E0004, // 0024 JMPF R7 #002A + 0x8C1C031E, // 0025 GETMET R7 R1 K30 + 0x5C240A00, // 0026 MOVE R9 R5 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x7C1C0600, // 0028 CALL R7 3 + 0x50100200, // 0029 LDBOOL R4 1 0 + 0x00140B01, // 002A ADD R5 R5 K1 + 0x7001FFEB, // 002B JMP #0018 + 0x80040800, // 002C RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_TwinkleAnimation_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_TwinkleAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051F, // 0003 GETMET R2 R2 K31 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x4C080000, // 0009 LDNIL R2 + 0x1C080202, // 000A EQ R2 R1 R2 + 0x780A0001, // 000B JMPF R2 #000E + 0x88080108, // 000C GETMBR R2 R0 K8 + 0x8804051C, // 000D GETMBR R1 R2 K28 + 0x88080100, // 000E GETMBR R2 R0 K0 + 0x540E03E7, // 000F LDINT R3 1000 + 0x0C0C0602, // 0010 DIV R3 R3 R2 + 0x8810011A, // 0011 GETMBR R4 R0 K26 + 0x04100204, // 0012 SUB R4 R1 R4 + 0x28100803, // 0013 GE R4 R4 R3 + 0x78120003, // 0014 JMPF R4 #0019 + 0x90023401, // 0015 SETMBR R0 K26 R1 + 0x8C100120, // 0016 GETMET R4 R0 K32 + 0x5C180200, // 0017 MOVE R6 R1 + 0x7C100400, // 0018 CALL R4 2 + 0x50100200, // 0019 LDBOOL R4 1 0 + 0x80040800, // 001A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_arrays +********************************************************************/ +be_local_closure(class_TwinkleAnimation__initialize_arrays, /* 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_TwinkleAnimation, /* shared constants */ + be_str_weak(_initialize_arrays), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x8C040309, // 0001 GETMET R1 R1 K9 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010A, // 0003 GETMBR R2 R0 K10 + 0x8C080521, // 0004 GETMET R2 R2 K33 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x8808010D, // 0007 GETMBR R2 R0 K13 + 0x8C080521, // 0008 GETMET R2 R2 K33 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x5808000C, // 000B LDCONST R2 K12 + 0x140C0401, // 000C LT R3 R2 R1 + 0x780E0005, // 000D JMPF R3 #0014 + 0x880C010A, // 000E GETMBR R3 R0 K10 + 0x980C050C, // 000F SETIDX R3 R2 K12 + 0x880C010D, // 0010 GETMBR R3 R0 K13 + 0x980C050C, // 0011 SETIDX R3 R2 K12 + 0x00080501, // 0012 ADD R2 R2 K1 + 0x7001FFF7, // 0013 JMP #000C + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _random +********************************************************************/ +be_local_closure(class_TwinkleAnimation__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_TwinkleAnimation, /* shared constants */ + be_str_weak(_random), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x08040322, // 0001 MUL R1 R1 K34 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040323, // 0004 AND R1 R1 K35 + 0x90023601, // 0005 SETMBR R0 K27 R1 + 0x8804011B, // 0006 GETMBR R1 R0 K27 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _random_range +********************************************************************/ +be_local_closure(class_TwinkleAnimation__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_TwinkleAnimation, /* shared constants */ + be_str_weak(_random_range), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x1808030C, // 0000 LE R2 R1 K12 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80061800, // 0002 RET 1 K12 + 0x8C080124, // 0003 GETMET R2 R0 K36 + 0x7C080200, // 0004 CALL R2 1 + 0x10080401, // 0005 MOD R2 R2 R1 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: TwinkleAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(TwinkleAnimation, + 4, + &be_class_Animation, + be_nested_map(14, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_random_range, -1), be_const_closure(class_TwinkleAnimation__random_range_closure) }, + { be_const_key_weak(twinkle_states, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_TwinkleAnimation_init_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_TwinkleAnimation_tostring_closure) }, + { be_const_key_weak(random_seed, -1), be_const_var(3) }, + { 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(fade_speed, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(180) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(twinkle_speed, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(6) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(5000) }, + })) ) } )) }, + { be_const_key_weak(density, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(128) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(max_brightness, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(color, -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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(min_brightness, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(32) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(_random, 9), be_const_closure(class_TwinkleAnimation__random_closure) }, + { be_const_key_weak(last_update, -1), be_const_var(2) }, + { be_const_key_weak(update, -1), be_const_closure(class_TwinkleAnimation_update_closure) }, + { be_const_key_weak(_initialize_arrays, 10), be_const_closure(class_TwinkleAnimation__initialize_arrays_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_TwinkleAnimation_render_closure) }, + { be_const_key_weak(current_colors, -1), be_const_var(1) }, + { be_const_key_weak(_update_twinkle_simulation, 1), be_const_closure(class_TwinkleAnimation__update_twinkle_simulation_closure) }, + { be_const_key_weak(on_param_changed, 0), be_const_closure(class_TwinkleAnimation_on_param_changed_closure) }, + })), + be_str_weak(TwinkleAnimation) +); +// compact class 'BreatheColorProvider' ktab size: 18, total: 29 (saved 88 bytes) +static const bvalue be_ktab_class_BreatheColorProvider[18] = { + /* K0 */ be_nested_str_weak(BreatheColorProvider_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X29), + /* K1 */ be_nested_str_weak(base_color), + /* K2 */ be_nested_str_weak(min_brightness), + /* K3 */ be_nested_str_weak(max_brightness), + /* K4 */ be_nested_str_weak(duration), + /* K5 */ be_nested_str_weak(curve_factor), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(form), + /* K8 */ be_nested_str_weak(animation), + /* K9 */ be_nested_str_weak(COSINE), + /* K10 */ be_nested_str_weak(on_param_changed), + /* K11 */ be_nested_str_weak(produce_value), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_const_int(0), + /* K15 */ be_nested_str_weak(init), + /* K16 */ be_nested_str_weak(min_value), + /* K17 */ be_nested_str_weak(max_value), +}; + + +extern const bclass be_class_BreatheColorProvider; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_BreatheColorProvider_tostring, /* 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_BreatheColorProvider, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080000, // 0001 LDCONST R2 K0 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x88100102, // 0003 GETMBR R4 R0 K2 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x881C0105, // 0006 GETMBR R7 R0 K5 + 0x7C040C00, // 0007 CALL R1 6 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_BreatheColorProvider_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_BreatheColorProvider, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x1C0C0305, // 0000 EQ R3 R1 K5 + 0x780E0008, // 0001 JMPF R3 #000B + 0x1C0C0506, // 0002 EQ R3 R2 K6 + 0x780E0003, // 0003 JMPF R3 #0008 + 0xB80E1000, // 0004 GETNGBL R3 K8 + 0x880C0709, // 0005 GETMBR R3 R3 K9 + 0x90020E03, // 0006 SETMBR R0 K7 R3 + 0x70020002, // 0007 JMP #000B + 0xB80E1000, // 0008 GETNGBL R3 K8 + 0x880C0709, // 0009 GETMBR R3 R3 K9 + 0x90020E03, // 000A SETMBR R0 K7 R3 + 0x600C0003, // 000B GETGBL R3 G3 + 0x5C100000, // 000C MOVE R4 R0 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C070A, // 000E GETMET R3 R3 K10 + 0x5C140200, // 000F MOVE R5 R1 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C0C0600, // 0011 CALL R3 3 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_BreatheColorProvider_produce_value, /* 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_BreatheColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[82]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C070B, // 0003 GETMET R3 R3 K11 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x88100105, // 0007 GETMBR R4 R0 K5 + 0x5C140600, // 0008 MOVE R5 R3 + 0x24180906, // 0009 GT R6 R4 K6 + 0x781A0019, // 000A JMPF R6 #0025 + 0xB81A1800, // 000B GETNGBL R6 K12 + 0x8C180D0D, // 000C GETMET R6 R6 K13 + 0x5C200600, // 000D MOVE R8 R3 + 0x5824000E, // 000E LDCONST R9 K14 + 0x542A00FE, // 000F LDINT R10 255 + 0x582C000E, // 0010 LDCONST R11 K14 + 0x54321FFF, // 0011 LDINT R12 8192 + 0x7C180C00, // 0012 CALL R6 6 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x24200F06, // 0014 GT R8 R7 K6 + 0x78220005, // 0015 JMPF R8 #001C + 0x08200C06, // 0016 MUL R8 R6 R6 + 0x54261FFF, // 0017 LDINT R9 8192 + 0x0C201009, // 0018 DIV R8 R8 R9 + 0x5C181000, // 0019 MOVE R6 R8 + 0x041C0F06, // 001A SUB R7 R7 K6 + 0x7001FFF7, // 001B JMP #0014 + 0xB8221800, // 001C GETNGBL R8 K12 + 0x8C20110D, // 001D GETMET R8 R8 K13 + 0x5C280C00, // 001E MOVE R10 R6 + 0x582C000E, // 001F LDCONST R11 K14 + 0x54321FFF, // 0020 LDINT R12 8192 + 0x5834000E, // 0021 LDCONST R13 K14 + 0x543A00FE, // 0022 LDINT R14 255 + 0x7C200C00, // 0023 CALL R8 6 + 0x5C141000, // 0024 MOVE R5 R8 + 0xB81A1800, // 0025 GETNGBL R6 K12 + 0x8C180D0D, // 0026 GETMET R6 R6 K13 + 0x5C200A00, // 0027 MOVE R8 R5 + 0x5824000E, // 0028 LDCONST R9 K14 + 0x542A00FE, // 0029 LDINT R10 255 + 0x882C0102, // 002A GETMBR R11 R0 K2 + 0x88300103, // 002B GETMBR R12 R0 K3 + 0x7C180C00, // 002C CALL R6 6 + 0x881C0101, // 002D GETMBR R7 R0 K1 + 0x54220017, // 002E LDINT R8 24 + 0x3C200E08, // 002F SHR R8 R7 R8 + 0x542600FE, // 0030 LDINT R9 255 + 0x2C201009, // 0031 AND R8 R8 R9 + 0x5426000F, // 0032 LDINT R9 16 + 0x3C240E09, // 0033 SHR R9 R7 R9 + 0x542A00FE, // 0034 LDINT R10 255 + 0x2C24120A, // 0035 AND R9 R9 R10 + 0x542A0007, // 0036 LDINT R10 8 + 0x3C280E0A, // 0037 SHR R10 R7 R10 + 0x542E00FE, // 0038 LDINT R11 255 + 0x2C28140B, // 0039 AND R10 R10 R11 + 0x542E00FE, // 003A LDINT R11 255 + 0x2C2C0E0B, // 003B AND R11 R7 R11 + 0x08301206, // 003C MUL R12 R9 R6 + 0x543600FE, // 003D LDINT R13 255 + 0x0C30180D, // 003E DIV R12 R12 R13 + 0x5C241800, // 003F MOVE R9 R12 + 0x08301406, // 0040 MUL R12 R10 R6 + 0x543600FE, // 0041 LDINT R13 255 + 0x0C30180D, // 0042 DIV R12 R12 R13 + 0x5C281800, // 0043 MOVE R10 R12 + 0x08301606, // 0044 MUL R12 R11 R6 + 0x543600FE, // 0045 LDINT R13 255 + 0x0C30180D, // 0046 DIV R12 R12 R13 + 0x5C2C1800, // 0047 MOVE R11 R12 + 0x54320017, // 0048 LDINT R12 24 + 0x3830100C, // 0049 SHL R12 R8 R12 + 0x5436000F, // 004A LDINT R13 16 + 0x3834120D, // 004B SHL R13 R9 R13 + 0x3030180D, // 004C OR R12 R12 R13 + 0x54360007, // 004D LDINT R13 8 + 0x3834140D, // 004E SHL R13 R10 R13 + 0x3030180D, // 004F OR R12 R12 R13 + 0x3030180B, // 0050 OR R12 R12 R11 + 0x80041800, // 0051 RET 1 R12 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_BreatheColorProvider_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_BreatheColorProvider, /* 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 + 0x8C08050F, // 0003 GETMET R2 R2 K15 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0xB80A1000, // 0006 GETNGBL R2 K8 + 0x88080509, // 0007 GETMBR R2 R2 K9 + 0x90020E02, // 0008 SETMBR R0 K7 R2 + 0x9002210E, // 0009 SETMBR R0 K16 K14 + 0x540A00FE, // 000A LDINT R2 255 + 0x90022202, // 000B SETMBR R0 K17 R2 + 0x540A0BB7, // 000C LDINT R2 3000 + 0x90020802, // 000D SETMBR R0 K4 R2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: BreatheColorProvider +********************************************************************/ +extern const bclass be_class_OscillatorValueProvider; +be_local_class(BreatheColorProvider, + 0, + &be_class_OscillatorValueProvider, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, 1), be_const_closure(class_BreatheColorProvider_tostring_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_BreatheColorProvider_init_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_BreatheColorProvider_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[]) { + { be_const_key_weak(base_color, -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(default, -1), be_const_int(-1) }, + })) ) } )) }, + { be_const_key_weak(max_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(255) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(curve_factor, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(2) }, + { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(max, 1), be_const_int(5) }, + })) ) } )) }, + { be_const_key_weak(min_brightness, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(produce_value, -1), be_const_closure(class_BreatheColorProvider_produce_value_closure) }, + })), + be_str_weak(BreatheColorProvider) +); + extern const bclass be_class_ColorProvider; /******************************************************************** @@ -22052,134 +22329,135 @@ be_local_class(ValueProvider, ********************************************************************/ be_local_module(animation, "animation", - be_nested_map(126, + be_nested_map(127, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, - { be_const_key_weak(PALETTE_FIRE, 47), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, - { be_const_key_weak(shift_scroll_right, 24), be_const_closure(shift_scroll_right_closure) }, + { be_const_key_weak(init_strip, 111), be_const_closure(animation_init_strip_closure) }, + { be_const_key_weak(trigger_event, 40), be_const_closure(trigger_event_closure) }, { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, - { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, { be_const_key_weak(value_provider, -1), be_const_class(be_class_ValueProvider) }, - { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, - { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, - { be_const_key_weak(sawtooth, -1), be_const_closure(sawtooth_closure) }, - { be_const_key_weak(create_stop_step, 50), be_const_closure(create_stop_step_closure) }, - { be_const_key_weak(composite_color, 89), be_const_class(be_class_CompositeColorProvider) }, - { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, - { be_const_key_weak(color_provider, -1), be_const_class(be_class_ColorProvider) }, - { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, - { be_const_key_weak(breathe_color, 75), be_const_class(be_class_BreatheColorProvider) }, - { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, - { be_const_key_weak(comet_animation, -1), be_const_class(be_class_CometAnimation) }, - { be_const_key_weak(pulsating_color, 46), be_const_closure(pulsating_color_provider_closure) }, - { be_const_key_weak(SINE, 97), be_const_int(5) }, - { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, - { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, - { be_const_key_weak(sine, -1), be_const_closure(sine_closure) }, - { be_const_key_weak(create_wait_step, 58), be_const_closure(create_wait_step_closure) }, - { be_const_key_weak(wave_animation, 74), be_const_class(be_class_WaveAnimation) }, - { be_const_key_weak(sparkle_animation, -1), be_const_class(be_class_SparkleAnimation) }, - { be_const_key_weak(bounce, -1), be_const_closure(bounce_closure) }, - { be_const_key_weak(get_user_function, 21), be_const_closure(get_user_function_closure) }, - { be_const_key_weak(rich_palette, 116), be_const_class(be_class_RichPaletteColorProvider) }, - { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, - { be_const_key_weak(wave_single_sine, 77), be_const_closure(wave_single_sine_closure) }, - { be_const_key_weak(solid, -1), be_const_closure(solid_closure) }, - { be_const_key_weak(create_play_step, 117), be_const_closure(create_play_step_closure) }, - { be_const_key_weak(jitter_animation, 81), be_const_class(be_class_JitterAnimation) }, - { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, - { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, - { be_const_key_weak(frame_buffer, 15), be_const_class(be_class_FrameBuffer) }, - { be_const_key_weak(gradient_rainbow_radial, 115), be_const_closure(gradient_rainbow_radial_closure) }, - { be_const_key_weak(noise_single_color, -1), be_const_closure(noise_single_color_closure) }, - { be_const_key_weak(bounce_animation, -1), be_const_class(be_class_BounceAnimation) }, - { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, - { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, + { be_const_key_weak(strip_length, 38), be_const_class(be_class_StripLengthProvider) }, + { be_const_key_weak(fire_animation, -1), be_const_class(be_class_FireAnimation) }, + { be_const_key_weak(oscillator_value, 119), be_const_class(be_class_OscillatorValueProvider) }, + { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, { be_const_key_weak(PALETTE_OCEAN, -1), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, - { be_const_key_weak(rich_palette_animation, 111), be_const_class(be_class_RichPaletteAnimation) }, - { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, - { be_const_key_weak(plasma_animation, 92), be_const_class(be_class_PlasmaAnimation) }, - { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, - { be_const_key_weak(strip_length, 37), be_const_class(be_class_StripLengthProvider) }, - { be_const_key_weak(pulsating_animation, 61), be_const_closure(pulsating_animation_closure) }, - { be_const_key_weak(twinkle_intense, 85), be_const_closure(twinkle_intense_closure) }, - { be_const_key_weak(triangle, -1), be_const_closure(triangle_closure) }, - { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, - { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, - { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, - { be_const_key_weak(wave_custom, -1), be_const_closure(wave_custom_closure) }, - { be_const_key_weak(scale_static, 94), be_const_closure(scale_static_closure) }, - { be_const_key_weak(smooth, -1), be_const_closure(smooth_closure) }, - { be_const_key_weak(parameterized_object, 17), be_const_class(be_class_ParameterizedObject) }, - { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, - { be_const_key_weak(color_cycle_rainbow, 120), be_const_closure(color_cycle_rainbow_closure) }, - { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, - { be_const_key_weak(init_strip, 34), be_const_closure(animation_init_strip_closure) }, - { be_const_key_weak(palette_meter_animation, 41), be_const_class(be_class_PaletteMeterAnimation) }, - { be_const_key_weak(rich_palette_rainbow, 28), be_const_closure(rich_palette_rainbow_closure) }, - { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, - { be_const_key_weak(linear, 5), be_const_closure(linear_closure) }, - { be_const_key_weak(crenel_position_animation, -1), be_const_class(be_class_CrenelPositionAnimation) }, - { be_const_key_weak(LINEAR, 82), be_const_int(1) }, - { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, - { be_const_key_weak(static_value, 112), be_const_class(be_class_StaticValueProvider) }, - { be_const_key_weak(sparkle_white, -1), be_const_closure(sparkle_white_closure) }, - { be_const_key_weak(fire_animation, 99), be_const_class(be_class_FireAnimation) }, - { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, - { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, - { be_const_key_weak(jitter_all, -1), be_const_closure(jitter_all_closure) }, - { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, - { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, - { be_const_key_weak(animation_controller, -1), be_const_closure(animation_controller_closure) }, - { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, - { be_const_key_weak(scale_animation, 52), be_const_class(be_class_ScaleAnimation) }, - { be_const_key_weak(twinkle_solid, 101), be_const_closure(twinkle_solid_closure) }, - { be_const_key_weak(PALETTE_SUNSET_TICKS, 118), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, - { be_const_key_weak(is_user_function, 114), be_const_closure(is_user_function_closure) }, - { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, - { be_const_key_weak(color_cycle, -1), be_const_class(be_class_ColorCycleColorProvider) }, - { be_const_key_weak(square, -1), be_const_closure(square_closure) }, - { be_const_key_weak(twinkle_rainbow, -1), be_const_closure(twinkle_rainbow_closure) }, - { be_const_key_weak(global, -1), be_const_closure(animation_global_closure) }, - { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, - { be_const_key_weak(PALETTE_FOREST, 12), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, - { be_const_key_weak(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, - { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, - { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, - { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, - { be_const_key_weak(clear_all_event_handlers, 3), be_const_closure(clear_all_event_handlers_closure) }, - { be_const_key_weak(closure_value, 98), be_const_class(be_class_ClosureValueProvider) }, - { be_const_key_weak(is_color_provider, -1), be_const_closure(is_color_provider_closure) }, - { be_const_key_weak(bounce_basic, 53), be_const_closure(bounce_basic_closure) }, - { be_const_key_weak(plasma_fast, 67), be_const_closure(plasma_fast_closure) }, - { be_const_key_weak(trigger_event, -1), be_const_closure(trigger_event_closure) }, - { be_const_key_weak(create_engine, 123), be_const_closure(create_engine_closure) }, - { be_const_key_weak(twinkle_classic, 19), be_const_closure(twinkle_classic_closure) }, - { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, - { be_const_key_weak(bounce_constrained, 125), be_const_closure(bounce_constrained_closure) }, - { be_const_key_weak(palette_wave_animation, -1), be_const_class(be_class_PaletteWaveAnimation) }, - { be_const_key_weak(gradient_animation, -1), be_const_class(be_class_GradientAnimation) }, - { be_const_key_weak(breathe_animation, 69), be_const_class(be_class_BreatheAnimation) }, - { be_const_key_weak(EASE_OUT, 30), be_const_int(7) }, - { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, - { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, - { be_const_key_weak(jitter_position, 68), be_const_closure(jitter_position_closure) }, - { be_const_key_weak(EventManager, 11), be_const_class(be_class_EventManager) }, - { be_const_key_weak(COSINE, -1), be_const_int(4) }, - { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, - { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, - { be_const_key_weak(bounce_gravity, -1), be_const_closure(bounce_gravity_closure) }, + { be_const_key_weak(bounce_basic, 21), be_const_closure(bounce_basic_closure) }, + { be_const_key_weak(color_provider, 44), be_const_class(be_class_ColorProvider) }, + { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, + { be_const_key_weak(set_event_active, 83), be_const_closure(set_event_active_closure) }, + { be_const_key_weak(linear, 26), be_const_closure(linear_closure) }, + { be_const_key_weak(PALETTE_SUNSET_TICKS, -1), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, + { be_const_key_weak(jitter_color, 35), be_const_closure(jitter_color_closure) }, + { be_const_key_weak(breathe_color, -1), be_const_class(be_class_BreatheColorProvider) }, + { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, + { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, { be_const_key_weak(shift_animation, -1), be_const_class(be_class_ShiftAnimation) }, - { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_OscillatorValueProvider) }, - { be_const_key_weak(VERSION, -1), be_const_int(65536) }, - { be_const_key_weak(shift_fast_scroll, -1), be_const_closure(shift_fast_scroll_closure) }, - { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, - { be_const_key_weak(color_cycle_from_palette, -1), be_const_closure(color_cycle_from_palette_closure) }, - { be_const_key_weak(shift_scroll_left, -1), be_const_closure(shift_scroll_left_closure) }, - { be_const_key_weak(SQUARE, -1), be_const_int(3) }, - { be_const_key_weak(palette_pattern_animation, -1), be_const_class(be_class_PalettePatternAnimation) }, - { be_const_key_weak(PALETTE_RGB, -1), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, + { be_const_key_weak(PALETTE_FOREST, -1), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, + { be_const_key_weak(SAWTOOTH, 49), be_const_int(1) }, + { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, + { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, + { be_const_key_weak(wave_rainbow_sine, 60), be_const_closure(wave_rainbow_sine_closure) }, + { be_const_key_weak(twinkle_classic, -1), be_const_closure(twinkle_classic_closure) }, { be_const_key_weak(scale_oscillate, -1), be_const_closure(scale_oscillate_closure) }, + { be_const_key_weak(wave_animation, 29), be_const_class(be_class_WaveAnimation) }, + { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, + { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, + { be_const_key_weak(plasma_fast, 33), be_const_closure(plasma_fast_closure) }, + { be_const_key_weak(jitter_animation, -1), be_const_class(be_class_JitterAnimation) }, + { be_const_key_weak(crenel_position_animation, 43), be_const_class(be_class_CrenelPositionAnimation) }, + { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, + { be_const_key_weak(shift_scroll_left, -1), be_const_closure(shift_scroll_left_closure) }, + { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, + { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, + { be_const_key_weak(palette_wave_animation, -1), be_const_class(be_class_PaletteWaveAnimation) }, + { be_const_key_weak(twinkle_rainbow, -1), be_const_closure(twinkle_rainbow_closure) }, + { be_const_key_weak(solid, -1), be_const_closure(solid_closure) }, + { be_const_key_weak(global, 86), be_const_closure(animation_global_closure) }, + { be_const_key_weak(bounce_gravity, 66), be_const_closure(bounce_gravity_closure) }, + { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, + { be_const_key_weak(wave_custom, -1), be_const_closure(wave_custom_closure) }, + { be_const_key_weak(gradient_rainbow_radial, 81), be_const_closure(gradient_rainbow_radial_closure) }, + { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, + { be_const_key_weak(create_stop_step, 116), be_const_closure(create_stop_step_closure) }, + { be_const_key_weak(create_wait_step, -1), be_const_closure(create_wait_step_closure) }, + { be_const_key_weak(ease_in, 72), be_const_closure(ease_in_closure) }, + { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_PaletteMeterAnimation) }, + { be_const_key_weak(breathe_animation, -1), be_const_class(be_class_BreatheAnimation) }, + { be_const_key_weak(rich_palette_rainbow, -1), be_const_closure(rich_palette_rainbow_closure) }, + { be_const_key_weak(rich_palette_animation, 102), be_const_class(be_class_RichPaletteAnimation) }, + { be_const_key_weak(shift_scroll_right, -1), be_const_closure(shift_scroll_right_closure) }, + { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, + { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, + { be_const_key_weak(create_engine, 77), be_const_closure(create_engine_closure) }, + { be_const_key_weak(jitter_position, 27), be_const_closure(jitter_position_closure) }, + { be_const_key_weak(parameterized_object, 16), be_const_class(be_class_ParameterizedObject) }, + { be_const_key_weak(twinkle_solid, -1), be_const_closure(twinkle_solid_closure) }, + { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, + { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(gradient_animation, 69), be_const_class(be_class_GradientAnimation) }, + { be_const_key_weak(version_string, 96), be_const_closure(animation_version_string_closure) }, + { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, + { be_const_key_weak(beacon_animation, 94), be_const_class(be_class_BeaconAnimation) }, + { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_FrameBuffer) }, + { be_const_key_weak(color_cycle_from_palette, 107), be_const_closure(color_cycle_from_palette_closure) }, + { be_const_key_weak(comet_animation, -1), be_const_class(be_class_CometAnimation) }, + { be_const_key_weak(LINEAR, 71), be_const_int(1) }, + { be_const_key_weak(SINE, -1), be_const_int(5) }, + { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, + { be_const_key_weak(rich_palette, -1), be_const_class(be_class_RichPaletteColorProvider) }, + { be_const_key_weak(noise_single_color, -1), be_const_closure(noise_single_color_closure) }, + { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, + { be_const_key_weak(PALETTE_FIRE, 103), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, + { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, + { be_const_key_weak(color_cycle, 99), be_const_class(be_class_ColorCycleColorProvider) }, + { be_const_key_weak(get_user_function, -1), be_const_closure(get_user_function_closure) }, + { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, + { be_const_key_weak(EventManager, 85), be_const_class(be_class_EventManager) }, + { be_const_key_weak(bounce_animation, -1), be_const_class(be_class_BounceAnimation) }, + { be_const_key_weak(animation_controller, -1), be_const_closure(animation_controller_closure) }, + { be_const_key_weak(create_closure_value, 10), 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(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, + { be_const_key_weak(triangle, -1), be_const_closure(triangle_closure) }, + { be_const_key_weak(scale_static, -1), be_const_closure(scale_static_closure) }, + { be_const_key_weak(sparkle_white, -1), be_const_closure(sparkle_white_closure) }, + { be_const_key_weak(noise_rainbow, 75), be_const_closure(noise_rainbow_closure) }, + { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, + { be_const_key_weak(scale_animation, 64), be_const_class(be_class_ScaleAnimation) }, + { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, + { be_const_key_weak(unregister_event_handler, 112), be_const_closure(unregister_event_handler_closure) }, + { be_const_key_weak(square, -1), be_const_closure(square_closure) }, + { be_const_key_weak(register_event_handler, 54), be_const_closure(register_event_handler_closure) }, + { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, + { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, + { be_const_key_weak(jitter_all, -1), be_const_closure(jitter_all_closure) }, + { be_const_key_weak(sawtooth, -1), be_const_closure(sawtooth_closure) }, + { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, + { be_const_key_weak(bounce, 6), be_const_closure(bounce_closure) }, + { be_const_key_weak(shift_fast_scroll, 114), be_const_closure(shift_fast_scroll_closure) }, + { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, + { be_const_key_weak(animation, 17), be_const_class(be_class_Animation) }, + { be_const_key_weak(SQUARE, -1), be_const_int(3) }, + { be_const_key_weak(VERSION, -1), be_const_int(65536) }, + { be_const_key_weak(create_play_step, 34), be_const_closure(create_play_step_closure) }, + { be_const_key_weak(color_cycle_rainbow, -1), be_const_closure(color_cycle_rainbow_closure) }, + { be_const_key_weak(twinkle_gentle, 3), be_const_closure(twinkle_gentle_closure) }, + { be_const_key_weak(palette_pattern_animation, -1), be_const_class(be_class_PalettePatternAnimation) }, + { be_const_key_weak(wave_single_sine, -1), be_const_closure(wave_single_sine_closure) }, + { be_const_key_weak(twinkle_intense, -1), be_const_closure(twinkle_intense_closure) }, + { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, + { be_const_key_weak(ease_out, 95), be_const_closure(ease_out_closure) }, + { be_const_key_weak(list_user_functions, 25), be_const_closure(list_user_functions_closure) }, + { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, + { be_const_key_weak(PALETTE_RGB, 20), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(ELASTIC, 48), be_const_int(8) }, + { be_const_key_weak(sparkle_animation, -1), be_const_class(be_class_SparkleAnimation) }, + { be_const_key_weak(static_color, 50), be_const_class(be_class_StaticColorProvider) }, + { be_const_key_weak(is_color_provider, 61), be_const_closure(is_color_provider_closure) }, + { be_const_key_weak(smooth, 2), be_const_closure(smooth_closure) }, + { be_const_key_weak(COSINE, 36), be_const_int(4) }, + { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, + { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, })) ); 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 6380a1117..0834688ab 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -2352,6 +2352,704 @@ be_local_closure(create_eof_token, /* name */ extern const bclass be_class_SimpleDSLTranspiler; +/******************************************************************** +** Solidified function: expect_keyword +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(KEYWORD), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), + }), + be_str_weak(expect_keyword), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x780E000B, // 0004 JMPF R3 #0011 + 0x880C0501, // 0005 GETMBR R3 R2 K1 + 0xB8120400, // 0006 GETNGBL R4 K2 + 0x88100903, // 0007 GETMBR R4 R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x1C0C0604, // 0009 EQ R3 R3 R4 + 0x780E0005, // 000A JMPF R3 #0011 + 0x880C0505, // 000B GETMBR R3 R2 K5 + 0x1C0C0601, // 000C EQ R3 R3 R1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0106, // 000E GETMET R3 R0 K6 + 0x7C0C0200, // 000F CALL R3 1 + 0x70020005, // 0010 JMP #0017 + 0x8C0C0107, // 0011 GETMET R3 R0 K7 + 0x60140018, // 0012 GETGBL R5 G24 + 0x58180008, // 0013 LDCONST R6 K8 + 0x5C1C0200, // 0014 MOVE R7 R1 + 0x7C140400, // 0015 CALL R5 2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_init, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(tokens), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(output), + /* K4 */ be_nested_str_weak(errors), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(first_statement), + /* K7 */ be_nested_str_weak(strip_initialized), + /* K8 */ be_nested_str_weak(sequence_names), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x5C080200, // 0003 MOVE R2 R1 + 0x70020001, // 0004 JMP #0007 + 0x60080012, // 0005 GETGBL R2 G18 + 0x7C080000, // 0006 CALL R2 0 + 0x90020002, // 0007 SETMBR R0 K0 R2 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90020602, // 000B SETMBR R0 K3 R2 + 0x60080012, // 000C GETGBL R2 G18 + 0x7C080000, // 000D CALL R2 0 + 0x90020802, // 000E SETMBR R0 K4 R2 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90020A02, // 0011 SETMBR R0 K5 R2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90020C02, // 0013 SETMBR R0 K6 R2 + 0x50080000, // 0014 LDBOOL R2 0 0 + 0x90020E02, // 0015 SETMBR R0 K7 R2 + 0x60080013, // 0016 GETGBL R2 G19 + 0x7C080000, // 0017 CALL R2 0 + 0x90021002, // 0018 SETMBR R0 K8 R2 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace_including_newlines +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(NEWLINE), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace_including_newlines), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060015, // 0002 JMPT R1 #0019 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000E, // 0007 JMPF R2 #0017 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x740A0005, // 000D JMPT R2 #0014 + 0x88080302, // 000E GETMBR R2 R1 K2 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x880C0704, // 0010 GETMBR R3 R3 K4 + 0x880C0706, // 0011 GETMBR R3 R3 K6 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080107, // 0014 GETMET R2 R0 K7 + 0x7C080200, // 0015 CALL R2 1 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(startswith), + /* K2 */ be_nested_str_weak(0x), + /* K3 */ be_nested_str_weak(0xFF_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(_X23), + /* K7 */ be_nested_str_weak(0x_X25s), + /* K8 */ be_const_int(1), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), + /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), + /* K12 */ be_nested_str_weak(animation_dsl), + /* K13 */ be_nested_str_weak(is_color_name), + /* K14 */ be_nested_str_weak(get_named_color_value), + /* K15 */ be_nested_str_weak(0xFFFFFFFF), + }), + be_str_weak(convert_color), + &be_const_str_solidified, + ( &(const binstruction[110]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0013, // 0005 JMPF R3 #001A + 0x600C000C, // 0006 GETGBL R3 G12 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x54120009, // 0009 LDINT R4 10 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x780E0001, // 000B JMPF R3 #000E + 0x80040200, // 000C RET 1 R1 + 0x7002000B, // 000D JMP #001A + 0x600C000C, // 000E GETGBL R3 G12 + 0x5C100200, // 000F MOVE R4 R1 + 0x7C0C0200, // 0010 CALL R3 1 + 0x54120007, // 0011 LDINT R4 8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0005, // 0013 JMPF R3 #001A + 0x600C0018, // 0014 GETGBL R3 G24 + 0x58100003, // 0015 LDCONST R4 K3 + 0x40160905, // 0016 CONNECT R5 K4 K5 + 0x94140205, // 0017 GETIDX R5 R1 R5 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80040600, // 0019 RET 1 R3 + 0x8C0C0501, // 001A GETMET R3 R2 K1 + 0x5C140200, // 001B MOVE R5 R1 + 0x58180006, // 001C LDCONST R6 K6 + 0x7C0C0600, // 001D CALL R3 3 + 0x780E0044, // 001E JMPF R3 #0064 + 0x600C000C, // 001F GETGBL R3 G12 + 0x5C100200, // 0020 MOVE R4 R1 + 0x7C0C0200, // 0021 CALL R3 1 + 0x54120008, // 0022 LDINT R4 9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0006, // 0024 JMPF R3 #002C + 0x600C0018, // 0025 GETGBL R3 G24 + 0x58100007, // 0026 LDCONST R4 K7 + 0x40161105, // 0027 CONNECT R5 K8 K5 + 0x94140205, // 0028 GETIDX R5 R1 R5 + 0x7C0C0400, // 0029 CALL R3 2 + 0x80040600, // 002A RET 1 R3 + 0x70020037, // 002B JMP #0064 + 0x600C000C, // 002C GETGBL R3 G12 + 0x5C100200, // 002D MOVE R4 R1 + 0x7C0C0200, // 002E CALL R3 1 + 0x54120006, // 002F LDINT R4 7 + 0x1C0C0604, // 0030 EQ R3 R3 R4 + 0x780E0006, // 0031 JMPF R3 #0039 + 0x600C0018, // 0032 GETGBL R3 G24 + 0x58100003, // 0033 LDCONST R4 K3 + 0x40161105, // 0034 CONNECT R5 K8 K5 + 0x94140205, // 0035 GETIDX R5 R1 R5 + 0x7C0C0400, // 0036 CALL R3 2 + 0x80040600, // 0037 RET 1 R3 + 0x7002002A, // 0038 JMP #0064 + 0x600C000C, // 0039 GETGBL R3 G12 + 0x5C100200, // 003A MOVE R4 R1 + 0x7C0C0200, // 003B CALL R3 1 + 0x54120004, // 003C LDINT R4 5 + 0x1C0C0604, // 003D EQ R3 R3 R4 + 0x780E0011, // 003E JMPF R3 #0051 + 0x940C0308, // 003F GETIDX R3 R1 K8 + 0x94100304, // 0040 GETIDX R4 R1 K4 + 0x94140309, // 0041 GETIDX R5 R1 K9 + 0x541A0003, // 0042 LDINT R6 4 + 0x94180206, // 0043 GETIDX R6 R1 R6 + 0x601C0018, // 0044 GETGBL R7 G24 + 0x5820000A, // 0045 LDCONST R8 K10 + 0x5C240600, // 0046 MOVE R9 R3 + 0x5C280600, // 0047 MOVE R10 R3 + 0x5C2C0800, // 0048 MOVE R11 R4 + 0x5C300800, // 0049 MOVE R12 R4 + 0x5C340A00, // 004A MOVE R13 R5 + 0x5C380A00, // 004B MOVE R14 R5 + 0x5C3C0C00, // 004C MOVE R15 R6 + 0x5C400C00, // 004D MOVE R16 R6 + 0x7C1C1200, // 004E CALL R7 9 + 0x80040E00, // 004F RET 1 R7 + 0x70020012, // 0050 JMP #0064 + 0x600C000C, // 0051 GETGBL R3 G12 + 0x5C100200, // 0052 MOVE R4 R1 + 0x7C0C0200, // 0053 CALL R3 1 + 0x54120003, // 0054 LDINT R4 4 + 0x1C0C0604, // 0055 EQ R3 R3 R4 + 0x780E000C, // 0056 JMPF R3 #0064 + 0x940C0308, // 0057 GETIDX R3 R1 K8 + 0x94100304, // 0058 GETIDX R4 R1 K4 + 0x94140309, // 0059 GETIDX R5 R1 K9 + 0x60180018, // 005A GETGBL R6 G24 + 0x581C000B, // 005B LDCONST R7 K11 + 0x5C200600, // 005C MOVE R8 R3 + 0x5C240600, // 005D MOVE R9 R3 + 0x5C280800, // 005E MOVE R10 R4 + 0x5C2C0800, // 005F MOVE R11 R4 + 0x5C300A00, // 0060 MOVE R12 R5 + 0x5C340A00, // 0061 MOVE R13 R5 + 0x7C180E00, // 0062 CALL R6 7 + 0x80040C00, // 0063 RET 1 R6 + 0xB80E1800, // 0064 GETNGBL R3 K12 + 0x8C0C070D, // 0065 GETMET R3 R3 K13 + 0x5C140200, // 0066 MOVE R5 R1 + 0x7C0C0400, // 0067 CALL R3 2 + 0x780E0003, // 0068 JMPF R3 #006D + 0x8C0C010E, // 0069 GETMET R3 R0 K14 + 0x5C140200, // 006A MOVE R5 R1 + 0x7C0C0400, // 006B CALL R3 2 + 0x80040600, // 006C RET 1 R3 + 0x80061E00, // 006D RET 1 K15 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _generate_anonymous_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[33]) { /* constants */ + /* K0 */ be_nested_str_weak(push), + /* K1 */ be_nested_str_weak(_X28def_X20_X28engine_X29), + /* K2 */ be_nested_str_weak(_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29), + /* K3 */ be_nested_str_weak(expect_left_paren), + /* K4 */ be_nested_str_weak(_create_animation_instance_for_validation), + /* K5 */ be_nested_str_weak(at_end), + /* K6 */ be_nested_str_weak(check_right_paren), + /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K8 */ be_nested_str_weak(expect_identifier), + /* K9 */ be_nested_str_weak(_validate_single_parameter), + /* K10 */ be_nested_str_weak(expect_assign), + /* K11 */ be_nested_str_weak(process_value), + /* K12 */ be_nested_str_weak(argument), + /* K13 */ be_nested_str_weak(collect_inline_comment), + /* K14 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K15 */ be_nested_str_weak(current), + /* K16 */ be_nested_str_weak(type), + /* K17 */ be_nested_str_weak(animation_dsl), + /* K18 */ be_nested_str_weak(Token), + /* K19 */ be_nested_str_weak(COMMENT), + /* K20 */ be_nested_str_weak(next), + /* K21 */ be_nested_str_weak(COMMA), + /* K22 */ be_nested_str_weak(NEWLINE), + /* K23 */ be_nested_str_weak(error), + /* K24 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K25 */ be_nested_str_weak(expect_right_paren), + /* K26 */ be_nested_str_weak(_X20_X20return_X20provider), + /* K27 */ be_nested_str_weak(end_X29_X28engine_X29), + /* K28 */ be_nested_str_weak(), + /* K29 */ be_const_int(0), + /* K30 */ be_const_int(1), + /* K31 */ be_nested_str_weak(_X0A), + /* K32 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_generate_anonymous_function_call), + &be_const_str_solidified, + ( &(const binstruction[145]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x8C0C0500, // 0002 GETMET R3 R2 K0 + 0x58140001, // 0003 LDCONST R5 K1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x8C0C0500, // 0005 GETMET R3 R2 K0 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x7C140400, // 0009 CALL R5 2 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x8C0C0104, // 000D GETMET R3 R0 K4 + 0x5C140200, // 000E MOVE R5 R1 + 0x7C0C0400, // 000F CALL R3 2 + 0x8C100105, // 0010 GETMET R4 R0 K5 + 0x7C100200, // 0011 CALL R4 1 + 0x74120060, // 0012 JMPT R4 #0074 + 0x8C100106, // 0013 GETMET R4 R0 K6 + 0x7C100200, // 0014 CALL R4 1 + 0x7412005D, // 0015 JMPT R4 #0074 + 0x8C100107, // 0016 GETMET R4 R0 K7 + 0x7C100200, // 0017 CALL R4 1 + 0x8C100106, // 0018 GETMET R4 R0 K6 + 0x7C100200, // 0019 CALL R4 1 + 0x78120000, // 001A JMPF R4 #001C + 0x70020057, // 001B JMP #0074 + 0x8C100108, // 001C GETMET R4 R0 K8 + 0x7C100200, // 001D CALL R4 1 + 0x4C140000, // 001E LDNIL R5 + 0x20140605, // 001F NE R5 R3 R5 + 0x78160004, // 0020 JMPF R5 #0026 + 0x8C140109, // 0021 GETMET R5 R0 K9 + 0x5C1C0200, // 0022 MOVE R7 R1 + 0x5C200800, // 0023 MOVE R8 R4 + 0x5C240600, // 0024 MOVE R9 R3 + 0x7C140800, // 0025 CALL R5 4 + 0x8C14010A, // 0026 GETMET R5 R0 K10 + 0x7C140200, // 0027 CALL R5 1 + 0x8C14010B, // 0028 GETMET R5 R0 K11 + 0x581C000C, // 0029 LDCONST R7 K12 + 0x7C140400, // 002A CALL R5 2 + 0x8C18010D, // 002B GETMET R6 R0 K13 + 0x7C180200, // 002C CALL R6 1 + 0x8C1C0500, // 002D GETMET R7 R2 K0 + 0x60240018, // 002E GETGBL R9 G24 + 0x5828000E, // 002F LDCONST R10 K14 + 0x5C2C0800, // 0030 MOVE R11 R4 + 0x5C300A00, // 0031 MOVE R12 R5 + 0x5C340C00, // 0032 MOVE R13 R6 + 0x7C240800, // 0033 CALL R9 4 + 0x7C1C0400, // 0034 CALL R7 2 + 0x8C1C0105, // 0035 GETMET R7 R0 K5 + 0x7C1C0200, // 0036 CALL R7 1 + 0x741E000F, // 0037 JMPT R7 #0048 + 0x8C1C010F, // 0038 GETMET R7 R0 K15 + 0x7C1C0200, // 0039 CALL R7 1 + 0x4C200000, // 003A LDNIL R8 + 0x20200E08, // 003B NE R8 R7 R8 + 0x78220008, // 003C JMPF R8 #0046 + 0x88200F10, // 003D GETMBR R8 R7 K16 + 0xB8262200, // 003E GETNGBL R9 K17 + 0x88241312, // 003F GETMBR R9 R9 K18 + 0x88241313, // 0040 GETMBR R9 R9 K19 + 0x1C201009, // 0041 EQ R8 R8 R9 + 0x78220002, // 0042 JMPF R8 #0046 + 0x8C200114, // 0043 GETMET R8 R0 K20 + 0x7C200200, // 0044 CALL R8 1 + 0x70020000, // 0045 JMP #0047 + 0x70020000, // 0046 JMP #0048 + 0x7001FFEC, // 0047 JMP #0035 + 0x8C1C010F, // 0048 GETMET R7 R0 K15 + 0x7C1C0200, // 0049 CALL R7 1 + 0x4C200000, // 004A LDNIL R8 + 0x201C0E08, // 004B NE R7 R7 R8 + 0x781E000C, // 004C JMPF R7 #005A + 0x8C1C010F, // 004D GETMET R7 R0 K15 + 0x7C1C0200, // 004E CALL R7 1 + 0x881C0F10, // 004F GETMBR R7 R7 K16 + 0xB8222200, // 0050 GETNGBL R8 K17 + 0x88201112, // 0051 GETMBR R8 R8 K18 + 0x88201115, // 0052 GETMBR R8 R8 K21 + 0x1C1C0E08, // 0053 EQ R7 R7 R8 + 0x781E0004, // 0054 JMPF R7 #005A + 0x8C1C0114, // 0055 GETMET R7 R0 K20 + 0x7C1C0200, // 0056 CALL R7 1 + 0x8C1C0107, // 0057 GETMET R7 R0 K7 + 0x7C1C0200, // 0058 CALL R7 1 + 0x70020018, // 0059 JMP #0073 + 0x8C1C010F, // 005A GETMET R7 R0 K15 + 0x7C1C0200, // 005B CALL R7 1 + 0x4C200000, // 005C LDNIL R8 + 0x201C0E08, // 005D NE R7 R7 R8 + 0x781E000C, // 005E JMPF R7 #006C + 0x8C1C010F, // 005F GETMET R7 R0 K15 + 0x7C1C0200, // 0060 CALL R7 1 + 0x881C0F10, // 0061 GETMBR R7 R7 K16 + 0xB8222200, // 0062 GETNGBL R8 K17 + 0x88201112, // 0063 GETMBR R8 R8 K18 + 0x88201116, // 0064 GETMBR R8 R8 K22 + 0x1C1C0E08, // 0065 EQ R7 R7 R8 + 0x781E0004, // 0066 JMPF R7 #006C + 0x8C1C0114, // 0067 GETMET R7 R0 K20 + 0x7C1C0200, // 0068 CALL R7 1 + 0x8C1C0107, // 0069 GETMET R7 R0 K7 + 0x7C1C0200, // 006A CALL R7 1 + 0x70020006, // 006B JMP #0073 + 0x8C1C0106, // 006C GETMET R7 R0 K6 + 0x7C1C0200, // 006D CALL R7 1 + 0x741E0003, // 006E JMPT R7 #0073 + 0x8C1C0117, // 006F GETMET R7 R0 K23 + 0x58240018, // 0070 LDCONST R9 K24 + 0x7C1C0400, // 0071 CALL R7 2 + 0x70020000, // 0072 JMP #0074 + 0x7001FF9B, // 0073 JMP #0010 + 0x8C100119, // 0074 GETMET R4 R0 K25 + 0x7C100200, // 0075 CALL R4 1 + 0x8C100500, // 0076 GETMET R4 R2 K0 + 0x5818001A, // 0077 LDCONST R6 K26 + 0x7C100400, // 0078 CALL R4 2 + 0x8C100500, // 0079 GETMET R4 R2 K0 + 0x5818001B, // 007A LDCONST R6 K27 + 0x7C100400, // 007B CALL R4 2 + 0x5810001C, // 007C LDCONST R4 K28 + 0x60140010, // 007D GETGBL R5 G16 + 0x6018000C, // 007E GETGBL R6 G12 + 0x5C1C0400, // 007F MOVE R7 R2 + 0x7C180200, // 0080 CALL R6 1 + 0x04180D1E, // 0081 SUB R6 R6 K30 + 0x401A3A06, // 0082 CONNECT R6 K29 R6 + 0x7C140200, // 0083 CALL R5 1 + 0xA8020007, // 0084 EXBLK 0 #008D + 0x5C180A00, // 0085 MOVE R6 R5 + 0x7C180000, // 0086 CALL R6 0 + 0x241C0D1D, // 0087 GT R7 R6 K29 + 0x781E0000, // 0088 JMPF R7 #008A + 0x0010091F, // 0089 ADD R4 R4 K31 + 0x941C0406, // 008A GETIDX R7 R2 R6 + 0x00100807, // 008B ADD R4 R4 R7 + 0x7001FFF7, // 008C JMP #0085 + 0x58140020, // 008D LDCONST R5 K32 + 0xAC140200, // 008E CATCH R5 1 0 + 0xB0080000, // 008F RAISE 2 R0 R0 + 0x80040800, // 0090 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: validate_user_name +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(Token), + /* K2 */ be_nested_str_weak(color_names), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K5 */ be_nested_str_weak(stop_iteration), + /* K6 */ be_nested_str_weak(statement_keywords), + /* K7 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + }), + be_str_weak(validate_user_name), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x600C0010, // 0000 GETGBL R3 G16 + 0xB8120000, // 0001 GETNGBL R4 K0 + 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x88100902, // 0003 GETMBR R4 R4 K2 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA802000F, // 0005 EXBLK 0 #0016 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x1C140204, // 0008 EQ R5 R1 R4 + 0x7816000A, // 0009 JMPF R5 #0015 + 0x8C140103, // 000A GETMET R5 R0 K3 + 0x601C0018, // 000B GETGBL R7 G24 + 0x58200004, // 000C LDCONST R8 K4 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280200, // 000E MOVE R10 R1 + 0x5C2C0200, // 000F MOVE R11 R1 + 0x7C1C0800, // 0010 CALL R7 4 + 0x7C140400, // 0011 CALL R5 2 + 0x50140000, // 0012 LDBOOL R5 0 0 + 0xA8040001, // 0013 EXBLK 1 1 + 0x80040A00, // 0014 RET 1 R5 + 0x7001FFEF, // 0015 JMP #0006 + 0x580C0005, // 0016 LDCONST R3 K5 + 0xAC0C0200, // 0017 CATCH R3 1 0 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x600C0010, // 0019 GETGBL R3 G16 + 0xB8120000, // 001A GETNGBL R4 K0 + 0x88100901, // 001B GETMBR R4 R4 K1 + 0x88100906, // 001C GETMBR R4 R4 K6 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x1C140204, // 0021 EQ R5 R1 R4 + 0x7816000B, // 0022 JMPF R5 #002F + 0x8C140103, // 0023 GETMET R5 R0 K3 + 0x601C0018, // 0024 GETGBL R7 G24 + 0x58200007, // 0025 LDCONST R8 K7 + 0x5C240200, // 0026 MOVE R9 R1 + 0x5C280400, // 0027 MOVE R10 R2 + 0x5C2C0200, // 0028 MOVE R11 R1 + 0x5C300200, // 0029 MOVE R12 R1 + 0x7C1C0A00, // 002A CALL R7 5 + 0x7C140400, // 002B CALL R5 2 + 0x50140000, // 002C LDBOOL R5 0 0 + 0xA8040001, // 002D EXBLK 1 1 + 0x80040A00, // 002E RET 1 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0005, // 0030 LDCONST R3 K5 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x500C0200, // 0033 LDBOOL R3 1 0 + 0x80040600, // 0034 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_colon +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COLON), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), + }), + be_str_weak(expect_colon), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_named_color_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* 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_dsl), + /* K1 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K2 */ be_nested_str_weak(named_colors), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(0xFFFFFFFF), + }), + be_str_weak(get_named_color_value), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x88080502, // 0002 GETMBR R2 R2 K2 + 0x8C080503, // 0003 GETMET R2 R2 K3 + 0x5C100200, // 0004 MOVE R4 R1 + 0x58140004, // 0005 LDCONST R5 K4 + 0x7C080600, // 0006 CALL R2 3 + 0x80040400, // 0007 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_percentage_value ********************************************************************/ @@ -2440,532 +3138,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name * /******************************************************************** -** Solidified function: _process_named_arguments_generic +** Solidified function: expect_identifier ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_create_instance_for_validation), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K5 */ be_nested_str_weak(expect_identifier), - /* K6 */ be_nested_str_weak(_validate_single_parameter), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(argument), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K13 */ be_nested_str_weak(current), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_nested_str_weak(animation_dsl), - /* K16 */ be_nested_str_weak(Token), - /* K17 */ be_nested_str_weak(COMMENT), - /* K18 */ be_nested_str_weak(next), - /* K19 */ be_nested_str_weak(COMMA), - /* K20 */ be_nested_str_weak(NEWLINE), - /* K21 */ be_nested_str_weak(error), - /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K23 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_generic), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x5C140400, // 0003 MOVE R5 R2 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100102, // 0005 GETMET R4 R0 K2 - 0x7C100200, // 0006 CALL R4 1 - 0x74120061, // 0007 JMPT R4 #006A - 0x8C100103, // 0008 GETMET R4 R0 K3 - 0x7C100200, // 0009 CALL R4 1 - 0x7412005E, // 000A JMPT R4 #006A - 0x8C100104, // 000B GETMET R4 R0 K4 - 0x7C100200, // 000C CALL R4 1 - 0x8C100103, // 000D GETMET R4 R0 K3 - 0x7C100200, // 000E CALL R4 1 - 0x78120000, // 000F JMPF R4 #0011 - 0x70020058, // 0010 JMP #006A - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x7C100200, // 0012 CALL R4 1 - 0x4C140000, // 0013 LDNIL R5 - 0x20140605, // 0014 NE R5 R3 R5 - 0x78160004, // 0015 JMPF R5 #001B - 0x8C140106, // 0016 GETMET R5 R0 K6 - 0x5C1C0400, // 0017 MOVE R7 R2 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C140800, // 001A CALL R5 4 - 0x8C140107, // 001B GETMET R5 R0 K7 - 0x7C140200, // 001C CALL R5 1 - 0x8C140108, // 001D GETMET R5 R0 K8 - 0x581C0009, // 001E LDCONST R7 K9 - 0x7C140400, // 001F CALL R5 2 - 0x8C18010A, // 0020 GETMET R6 R0 K10 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010B, // 0022 GETMET R7 R0 K11 - 0x60240018, // 0023 GETGBL R9 G24 - 0x5828000C, // 0024 LDCONST R10 K12 - 0x5C2C0200, // 0025 MOVE R11 R1 - 0x5C300800, // 0026 MOVE R12 R4 - 0x5C340A00, // 0027 MOVE R13 R5 - 0x5C380C00, // 0028 MOVE R14 R6 - 0x7C240A00, // 0029 CALL R9 5 - 0x7C1C0400, // 002A CALL R7 2 - 0x8C1C0102, // 002B GETMET R7 R0 K2 - 0x7C1C0200, // 002C CALL R7 1 - 0x741E000F, // 002D JMPT R7 #003E - 0x8C1C010D, // 002E GETMET R7 R0 K13 - 0x7C1C0200, // 002F CALL R7 1 - 0x4C200000, // 0030 LDNIL R8 - 0x20200E08, // 0031 NE R8 R7 R8 - 0x78220008, // 0032 JMPF R8 #003C - 0x88200F0E, // 0033 GETMBR R8 R7 K14 - 0xB8261E00, // 0034 GETNGBL R9 K15 - 0x88241310, // 0035 GETMBR R9 R9 K16 - 0x88241311, // 0036 GETMBR R9 R9 K17 - 0x1C201009, // 0037 EQ R8 R8 R9 - 0x78220002, // 0038 JMPF R8 #003C - 0x8C200112, // 0039 GETMET R8 R0 K18 - 0x7C200200, // 003A CALL R8 1 - 0x70020000, // 003B JMP #003D - 0x70020000, // 003C JMP #003E - 0x7001FFEC, // 003D JMP #002B - 0x8C1C010D, // 003E GETMET R7 R0 K13 - 0x7C1C0200, // 003F CALL R7 1 - 0x4C200000, // 0040 LDNIL R8 - 0x201C0E08, // 0041 NE R7 R7 R8 - 0x781E000C, // 0042 JMPF R7 #0050 - 0x8C1C010D, // 0043 GETMET R7 R0 K13 - 0x7C1C0200, // 0044 CALL R7 1 - 0x881C0F0E, // 0045 GETMBR R7 R7 K14 - 0xB8221E00, // 0046 GETNGBL R8 K15 - 0x88201110, // 0047 GETMBR R8 R8 K16 - 0x88201113, // 0048 GETMBR R8 R8 K19 - 0x1C1C0E08, // 0049 EQ R7 R7 R8 - 0x781E0004, // 004A JMPF R7 #0050 - 0x8C1C0112, // 004B GETMET R7 R0 K18 - 0x7C1C0200, // 004C CALL R7 1 - 0x8C1C0104, // 004D GETMET R7 R0 K4 - 0x7C1C0200, // 004E CALL R7 1 - 0x70020018, // 004F JMP #0069 - 0x8C1C010D, // 0050 GETMET R7 R0 K13 - 0x7C1C0200, // 0051 CALL R7 1 - 0x4C200000, // 0052 LDNIL R8 - 0x201C0E08, // 0053 NE R7 R7 R8 - 0x781E000C, // 0054 JMPF R7 #0062 - 0x8C1C010D, // 0055 GETMET R7 R0 K13 - 0x7C1C0200, // 0056 CALL R7 1 - 0x881C0F0E, // 0057 GETMBR R7 R7 K14 - 0xB8221E00, // 0058 GETNGBL R8 K15 - 0x88201110, // 0059 GETMBR R8 R8 K16 - 0x88201114, // 005A GETMBR R8 R8 K20 - 0x1C1C0E08, // 005B EQ R7 R7 R8 - 0x781E0004, // 005C JMPF R7 #0062 - 0x8C1C0112, // 005D GETMET R7 R0 K18 - 0x7C1C0200, // 005E CALL R7 1 - 0x8C1C0104, // 005F GETMET R7 R0 K4 - 0x7C1C0200, // 0060 CALL R7 1 - 0x70020006, // 0061 JMP #0069 - 0x8C1C0103, // 0062 GETMET R7 R0 K3 - 0x7C1C0200, // 0063 CALL R7 1 - 0x741E0003, // 0064 JMPT R7 #0069 - 0x8C1C0115, // 0065 GETMET R7 R0 K21 - 0x58240016, // 0066 LDCONST R9 K22 - 0x7C1C0400, // 0067 CALL R7 2 - 0x70020000, // 0068 JMP #006A - 0x7001FF9A, // 0069 JMP #0005 - 0x8C100117, // 006A GETMET R4 R0 K23 - 0x7C100200, // 006B CALL R4 1 - 0x80000000, // 006C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_create_animation_instance_for_validation), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K5 */ be_nested_str_weak(expect_identifier), - /* K6 */ be_nested_str_weak(_validate_single_parameter), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(argument), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K13 */ be_nested_str_weak(current), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_nested_str_weak(animation_dsl), - /* K16 */ be_nested_str_weak(Token), - /* K17 */ be_nested_str_weak(COMMENT), - /* K18 */ be_nested_str_weak(next), - /* K19 */ be_nested_str_weak(COMMA), - /* K20 */ be_nested_str_weak(NEWLINE), - /* K21 */ be_nested_str_weak(error), - /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K23 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_for_animation), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x5C140400, // 0003 MOVE R5 R2 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100102, // 0005 GETMET R4 R0 K2 - 0x7C100200, // 0006 CALL R4 1 - 0x74120061, // 0007 JMPT R4 #006A - 0x8C100103, // 0008 GETMET R4 R0 K3 - 0x7C100200, // 0009 CALL R4 1 - 0x7412005E, // 000A JMPT R4 #006A - 0x8C100104, // 000B GETMET R4 R0 K4 - 0x7C100200, // 000C CALL R4 1 - 0x8C100103, // 000D GETMET R4 R0 K3 - 0x7C100200, // 000E CALL R4 1 - 0x78120000, // 000F JMPF R4 #0011 - 0x70020058, // 0010 JMP #006A - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x7C100200, // 0012 CALL R4 1 - 0x4C140000, // 0013 LDNIL R5 - 0x20140605, // 0014 NE R5 R3 R5 - 0x78160004, // 0015 JMPF R5 #001B - 0x8C140106, // 0016 GETMET R5 R0 K6 - 0x5C1C0400, // 0017 MOVE R7 R2 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C140800, // 001A CALL R5 4 - 0x8C140107, // 001B GETMET R5 R0 K7 - 0x7C140200, // 001C CALL R5 1 - 0x8C140108, // 001D GETMET R5 R0 K8 - 0x581C0009, // 001E LDCONST R7 K9 - 0x7C140400, // 001F CALL R5 2 - 0x8C18010A, // 0020 GETMET R6 R0 K10 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010B, // 0022 GETMET R7 R0 K11 - 0x60240018, // 0023 GETGBL R9 G24 - 0x5828000C, // 0024 LDCONST R10 K12 - 0x5C2C0200, // 0025 MOVE R11 R1 - 0x5C300800, // 0026 MOVE R12 R4 - 0x5C340A00, // 0027 MOVE R13 R5 - 0x5C380C00, // 0028 MOVE R14 R6 - 0x7C240A00, // 0029 CALL R9 5 - 0x7C1C0400, // 002A CALL R7 2 - 0x8C1C0102, // 002B GETMET R7 R0 K2 - 0x7C1C0200, // 002C CALL R7 1 - 0x741E000F, // 002D JMPT R7 #003E - 0x8C1C010D, // 002E GETMET R7 R0 K13 - 0x7C1C0200, // 002F CALL R7 1 - 0x4C200000, // 0030 LDNIL R8 - 0x20200E08, // 0031 NE R8 R7 R8 - 0x78220008, // 0032 JMPF R8 #003C - 0x88200F0E, // 0033 GETMBR R8 R7 K14 - 0xB8261E00, // 0034 GETNGBL R9 K15 - 0x88241310, // 0035 GETMBR R9 R9 K16 - 0x88241311, // 0036 GETMBR R9 R9 K17 - 0x1C201009, // 0037 EQ R8 R8 R9 - 0x78220002, // 0038 JMPF R8 #003C - 0x8C200112, // 0039 GETMET R8 R0 K18 - 0x7C200200, // 003A CALL R8 1 - 0x70020000, // 003B JMP #003D - 0x70020000, // 003C JMP #003E - 0x7001FFEC, // 003D JMP #002B - 0x8C1C010D, // 003E GETMET R7 R0 K13 - 0x7C1C0200, // 003F CALL R7 1 - 0x4C200000, // 0040 LDNIL R8 - 0x201C0E08, // 0041 NE R7 R7 R8 - 0x781E000C, // 0042 JMPF R7 #0050 - 0x8C1C010D, // 0043 GETMET R7 R0 K13 - 0x7C1C0200, // 0044 CALL R7 1 - 0x881C0F0E, // 0045 GETMBR R7 R7 K14 - 0xB8221E00, // 0046 GETNGBL R8 K15 - 0x88201110, // 0047 GETMBR R8 R8 K16 - 0x88201113, // 0048 GETMBR R8 R8 K19 - 0x1C1C0E08, // 0049 EQ R7 R7 R8 - 0x781E0004, // 004A JMPF R7 #0050 - 0x8C1C0112, // 004B GETMET R7 R0 K18 - 0x7C1C0200, // 004C CALL R7 1 - 0x8C1C0104, // 004D GETMET R7 R0 K4 - 0x7C1C0200, // 004E CALL R7 1 - 0x70020018, // 004F JMP #0069 - 0x8C1C010D, // 0050 GETMET R7 R0 K13 - 0x7C1C0200, // 0051 CALL R7 1 - 0x4C200000, // 0052 LDNIL R8 - 0x201C0E08, // 0053 NE R7 R7 R8 - 0x781E000C, // 0054 JMPF R7 #0062 - 0x8C1C010D, // 0055 GETMET R7 R0 K13 - 0x7C1C0200, // 0056 CALL R7 1 - 0x881C0F0E, // 0057 GETMBR R7 R7 K14 - 0xB8221E00, // 0058 GETNGBL R8 K15 - 0x88201110, // 0059 GETMBR R8 R8 K16 - 0x88201114, // 005A GETMBR R8 R8 K20 - 0x1C1C0E08, // 005B EQ R7 R7 R8 - 0x781E0004, // 005C JMPF R7 #0062 - 0x8C1C0112, // 005D GETMET R7 R0 K18 - 0x7C1C0200, // 005E CALL R7 1 - 0x8C1C0104, // 005F GETMET R7 R0 K4 - 0x7C1C0200, // 0060 CALL R7 1 - 0x70020006, // 0061 JMP #0069 - 0x8C1C0103, // 0062 GETMET R7 R0 K3 - 0x7C1C0200, // 0063 CALL R7 1 - 0x741E0003, // 0064 JMPT R7 #0069 - 0x8C1C0115, // 0065 GETMET R7 R0 K21 - 0x58240016, // 0066 LDCONST R9 K22 - 0x7C1C0400, // 0067 CALL R7 2 - 0x70020000, // 0068 JMP #006A - 0x7001FF9A, // 0069 JMP #0005 - 0x8C100117, // 006A GETMET R4 R0 K23 - 0x7C100200, // 006B CALL R4 1 - 0x80000000, // 006C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* 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(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_PAREN), - }), - be_str_weak(check_right_paren), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_value), - /* K5 */ be_nested_str_weak(argument), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(current), - /* K8 */ be_nested_str_weak(type), - /* K9 */ be_nested_str_weak(animation_dsl), - /* K10 */ be_nested_str_weak(Token), - /* K11 */ be_nested_str_weak(COMMA), - /* K12 */ be_nested_str_weak(next), - /* K13 */ be_nested_str_weak(error), - /* K14 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K15 */ be_nested_str_weak(expect_right_paren), - /* K16 */ be_nested_str_weak(), - /* K17 */ be_const_int(0), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(_X2C_X20), - /* K20 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A002A, // 0006 JMPT R2 #0032 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A0027, // 0009 JMPT R2 #0032 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x7C080200, // 000B CALL R2 1 - 0x8C080102, // 000C GETMET R2 R0 K2 - 0x7C080200, // 000D CALL R2 1 - 0x780A0000, // 000E JMPF R2 #0010 - 0x70020021, // 000F JMP #0032 - 0x8C080104, // 0010 GETMET R2 R0 K4 - 0x58100005, // 0011 LDCONST R4 K5 - 0x7C080400, // 0012 CALL R2 2 - 0x8C0C0306, // 0013 GETMET R3 R1 K6 - 0x5C140400, // 0014 MOVE R5 R2 - 0x7C0C0400, // 0015 CALL R3 2 - 0x8C0C0103, // 0016 GETMET R3 R0 K3 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C0107, // 0018 GETMET R3 R0 K7 - 0x7C0C0200, // 0019 CALL R3 1 - 0x4C100000, // 001A LDNIL R4 - 0x200C0604, // 001B NE R3 R3 R4 - 0x780E000C, // 001C JMPF R3 #002A - 0x8C0C0107, // 001D GETMET R3 R0 K7 - 0x7C0C0200, // 001E CALL R3 1 - 0x880C0708, // 001F GETMBR R3 R3 K8 - 0xB8121200, // 0020 GETNGBL R4 K9 - 0x8810090A, // 0021 GETMBR R4 R4 K10 - 0x8810090B, // 0022 GETMBR R4 R4 K11 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0004, // 0024 JMPF R3 #002A - 0x8C0C010C, // 0025 GETMET R3 R0 K12 - 0x7C0C0200, // 0026 CALL R3 1 - 0x8C0C0103, // 0027 GETMET R3 R0 K3 - 0x7C0C0200, // 0028 CALL R3 1 - 0x70020006, // 0029 JMP #0031 - 0x8C0C0102, // 002A GETMET R3 R0 K2 - 0x7C0C0200, // 002B CALL R3 1 - 0x740E0003, // 002C JMPT R3 #0031 - 0x8C0C010D, // 002D GETMET R3 R0 K13 - 0x5814000E, // 002E LDCONST R5 K14 - 0x7C0C0400, // 002F CALL R3 2 - 0x70020000, // 0030 JMP #0032 - 0x7001FFD1, // 0031 JMP #0004 - 0x8C08010F, // 0032 GETMET R2 R0 K15 - 0x7C080200, // 0033 CALL R2 1 - 0x58080010, // 0034 LDCONST R2 K16 - 0x600C0010, // 0035 GETGBL R3 G16 - 0x6010000C, // 0036 GETGBL R4 G12 - 0x5C140200, // 0037 MOVE R5 R1 - 0x7C100200, // 0038 CALL R4 1 - 0x04100912, // 0039 SUB R4 R4 K18 - 0x40122204, // 003A CONNECT R4 K17 R4 - 0x7C0C0200, // 003B CALL R3 1 - 0xA8020007, // 003C EXBLK 0 #0045 - 0x5C100600, // 003D MOVE R4 R3 - 0x7C100000, // 003E CALL R4 0 - 0x24140911, // 003F GT R5 R4 K17 - 0x78160000, // 0040 JMPF R5 #0042 - 0x00080513, // 0041 ADD R2 R2 K19 - 0x94140204, // 0042 GETIDX R5 R1 R4 - 0x00080405, // 0043 ADD R2 R2 R5 - 0x7001FFF7, // 0044 JMP #003D - 0x580C0014, // 0045 LDCONST R3 K20 - 0xAC0C0200, // 0046 CATCH R3 1 0 - 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x80040400, // 0048 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_identifier_char -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* 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(a), - /* K1 */ be_nested_str_weak(z), - /* K2 */ be_nested_str_weak(A), - /* K3 */ be_nested_str_weak(Z), - /* K4 */ be_nested_str_weak(0), - /* K5 */ be_nested_str_weak(9), - /* K6 */ be_nested_str_weak(_), - }), - be_str_weak(is_identifier_char), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x28080300, // 0000 GE R2 R1 K0 - 0x780A0001, // 0001 JMPF R2 #0004 - 0x18080301, // 0002 LE R2 R1 K1 - 0x740A000A, // 0003 JMPT R2 #000F - 0x28080302, // 0004 GE R2 R1 K2 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x18080303, // 0006 LE R2 R1 K3 - 0x740A0006, // 0007 JMPT R2 #000F - 0x28080304, // 0008 GE R2 R1 K4 - 0x780A0001, // 0009 JMPF R2 #000C - 0x18080305, // 000A LE R2 R1 K5 - 0x740A0002, // 000B JMPT R2 #000F - 0x1C080306, // 000C EQ R2 R1 K6 - 0x740A0000, // 000D JMPT R2 #000F - 0x50080001, // 000E LDBOOL R2 0 1 - 0x50080200, // 000F LDBOOL R2 1 0 - 0x80040400, // 0010 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: collect_inline_comment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -2975,647 +3150,61 @@ be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMENT), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(value), - /* K7 */ be_nested_str_weak(next), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(collect_inline_comment), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x88080306, // 000B GETMBR R2 R1 K6 - 0x000A0A02, // 000C ADD R2 K5 R2 - 0x8C0C0107, // 000D GETMET R3 R0 K7 - 0x7C0C0200, // 000E CALL R3 1 - 0x80040400, // 000F RET 1 R2 - 0x80061000, // 0010 RET 1 K8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_number -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* 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(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(NUMBER), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20number), - /* K9 */ be_nested_str_weak(0), - }), - be_str_weak(expect_number), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040400, // 000E RET 1 R2 - 0x70020003, // 000F JMP #0014 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x58100008, // 0011 LDCONST R4 K8 - 0x7C080400, // 0012 CALL R2 2 - 0x80061200, // 0013 RET 1 K9 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_computation_closure -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_operand_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28self_X2C_X20param_name_X2C_X20time_ms_X29_X20return_X20_X28_X25s_X20_X25s_X20_X25s_X29_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), - }), - be_str_weak(create_computation_closure), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140101, // 0001 GETMET R5 R0 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x7C140400, // 0003 CALL R5 2 - 0x8C180101, // 0004 GETMET R6 R0 K1 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0902, // 0007 GETMET R7 R4 K2 - 0x5C240A00, // 0008 MOVE R9 R5 - 0x58280003, // 0009 LDCONST R10 K3 - 0x7C1C0600, // 000A CALL R7 3 - 0x281C0F04, // 000B GE R7 R7 K4 - 0x781E0006, // 000C JMPF R7 #0014 - 0x8C1C0905, // 000D GETMET R7 R4 K5 - 0x5C240A00, // 000E MOVE R9 R5 - 0x58280003, // 000F LDCONST R10 K3 - 0x582C0006, // 0010 LDCONST R11 K6 - 0x7C1C0800, // 0011 CALL R7 4 - 0x5C140E00, // 0012 MOVE R5 R7 - 0x7001FFF2, // 0013 JMP #0007 - 0x8C1C0902, // 0014 GETMET R7 R4 K2 - 0x5C240C00, // 0015 MOVE R9 R6 - 0x58280003, // 0016 LDCONST R10 K3 - 0x7C1C0600, // 0017 CALL R7 3 - 0x281C0F04, // 0018 GE R7 R7 K4 - 0x781E0006, // 0019 JMPF R7 #0021 - 0x8C1C0905, // 001A GETMET R7 R4 K5 - 0x5C240C00, // 001B MOVE R9 R6 - 0x58280003, // 001C LDCONST R10 K3 - 0x582C0006, // 001D LDCONST R11 K6 - 0x7C1C0800, // 001E CALL R7 4 - 0x5C180E00, // 001F MOVE R6 R7 - 0x7001FFF2, // 0020 JMP #0014 - 0x601C0018, // 0021 GETGBL R7 G24 - 0x58200007, // 0022 LDCONST R8 K7 - 0x5C240A00, // 0023 MOVE R9 R5 - 0x5C280400, // 0024 MOVE R10 R2 - 0x5C2C0C00, // 0025 MOVE R11 R6 - 0x7C1C0800, // 0026 CALL R7 4 - 0x60200018, // 0027 GETGBL R8 G24 - 0x58240008, // 0028 LDCONST R9 K8 - 0x5C280E00, // 0029 MOVE R10 R7 - 0x7C200400, // 002A CALL R8 2 - 0x80041000, // 002B RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_named_color_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* 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_dsl), - /* K1 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K2 */ be_nested_str_weak(named_colors), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(0xFFFFFFFF), - }), - be_str_weak(get_named_color_value), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x88080502, // 0002 GETMBR R2 R2 K2 - 0x8C080503, // 0003 GETMET R2 R2 K3 - 0x5C100200, // 0004 MOVE R4 R1 - 0x58140004, // 0005 LDCONST R5 K4 - 0x7C080600, // 0006 CALL R2 3 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_whitespace_including_newlines -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(NEWLINE), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace_including_newlines), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060015, // 0002 JMPT R1 #0019 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000E, // 0007 JMPF R2 #0017 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x740A0005, // 000D JMPT R2 #0014 - 0x88080302, // 000E GETMBR R2 R1 K2 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x880C0704, // 0010 GETMBR R3 R3 K4 - 0x880C0706, // 0011 GETMBR R3 R3 K6 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080107, // 0014 GETMET R2 R0 K7 - 0x7C080200, // 0015 CALL R2 1 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_factory_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 2, /* 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(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(function), - /* K4 */ be_nested_str_weak(class), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(MockEngine), - }), - be_str_weak(_validate_factory_function), - &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0xA8020032, // 0000 EXBLK 0 #0034 - 0xA40E0000, // 0001 IMPORT R3 K0 - 0x8C100701, // 0002 GETMET R4 R3 K1 - 0xB81A0400, // 0003 GETNGBL R6 K2 - 0x5C1C0200, // 0004 MOVE R7 R1 - 0x7C100600, // 0005 CALL R4 3 - 0x74120002, // 0006 JMPT R4 #000A - 0x50100000, // 0007 LDBOOL R4 0 0 - 0xA8040001, // 0008 EXBLK 1 1 - 0x80040800, // 0009 RET 1 R4 - 0xB8120400, // 000A GETNGBL R4 K2 - 0x88100801, // 000B GETMBR R4 R4 R1 - 0x60140004, // 000C GETGBL R5 G4 - 0x5C180800, // 000D MOVE R6 R4 - 0x7C140200, // 000E CALL R5 1 - 0x20180B03, // 000F NE R6 R5 K3 - 0x781A0004, // 0010 JMPF R6 #0016 - 0x20180B04, // 0011 NE R6 R5 K4 - 0x781A0002, // 0012 JMPF R6 #0016 - 0x50180000, // 0013 LDBOOL R6 0 0 - 0xA8040001, // 0014 EXBLK 1 1 - 0x80040C00, // 0015 RET 1 R6 - 0x4C180000, // 0016 LDNIL R6 - 0x1C180406, // 0017 EQ R6 R2 R6 - 0x781A0002, // 0018 JMPF R6 #001C - 0x50180200, // 0019 LDBOOL R6 1 0 - 0xA8040001, // 001A EXBLK 1 1 - 0x80040C00, // 001B RET 1 R6 - 0xB81A0A00, // 001C GETNGBL R6 K5 - 0x8C180D06, // 001D GETMET R6 R6 K6 - 0x7C180200, // 001E CALL R6 1 - 0xA802000A, // 001F EXBLK 0 #002B - 0x5C1C0800, // 0020 MOVE R7 R4 - 0x5C200C00, // 0021 MOVE R8 R6 - 0x7C1C0200, // 0022 CALL R7 1 - 0x6020000F, // 0023 GETGBL R8 G15 - 0x5C240E00, // 0024 MOVE R9 R7 - 0x5C280400, // 0025 MOVE R10 R2 - 0x7C200400, // 0026 CALL R8 2 - 0xA8040002, // 0027 EXBLK 1 2 - 0x80041000, // 0028 RET 1 R8 - 0xA8040001, // 0029 EXBLK 1 1 - 0x70020006, // 002A JMP #0032 - 0xAC1C0002, // 002B CATCH R7 0 2 - 0x70020003, // 002C JMP #0031 - 0x50240000, // 002D LDBOOL R9 0 0 - 0xA8040001, // 002E EXBLK 1 1 - 0x80041200, // 002F RET 1 R9 - 0x70020000, // 0030 JMP #0032 - 0xB0080000, // 0031 RAISE 2 R0 R0 - 0xA8040001, // 0032 EXBLK 1 1 - 0x70020005, // 0033 JMP #003A - 0xAC0C0002, // 0034 CATCH R3 0 2 - 0x70020002, // 0035 JMP #0039 - 0x50140000, // 0036 LDBOOL R5 0 0 - 0x80040A00, // 0037 RET 1 R5 - 0x70020000, // 0038 JMP #003A - 0xB0080000, // 0039 RAISE 2 R0 R0 - 0x80000000, // 003A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_use_as_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* 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(color), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(startup), - /* K4 */ be_nested_str_weak(shutdown), - /* K5 */ be_nested_str_weak(button_press), - /* K6 */ be_nested_str_weak(button_hold), - /* K7 */ be_nested_str_weak(motion_detected), - /* K8 */ be_nested_str_weak(brightness_change), - /* K9 */ be_nested_str_weak(timer), - /* K10 */ be_nested_str_weak(time), - /* K11 */ be_nested_str_weak(sound_peak), - /* K12 */ be_nested_str_weak(network_message), - /* K13 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(can_use_as_identifier), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x400C0502, // 0004 CONNECT R3 R2 K2 - 0x400C0503, // 0005 CONNECT R3 R2 K3 - 0x400C0504, // 0006 CONNECT R3 R2 K4 - 0x400C0505, // 0007 CONNECT R3 R2 K5 - 0x400C0506, // 0008 CONNECT R3 R2 K6 - 0x400C0507, // 0009 CONNECT R3 R2 K7 - 0x400C0508, // 000A CONNECT R3 R2 K8 - 0x400C0509, // 000B CONNECT R3 R2 K9 - 0x400C050A, // 000C CONNECT R3 R2 K10 - 0x400C050B, // 000D CONNECT R3 R2 K11 - 0x400C050C, // 000E CONNECT R3 R2 K12 - 0x600C0010, // 000F GETGBL R3 G16 - 0x5C100400, // 0010 MOVE R4 R2 - 0x7C0C0200, // 0011 CALL R3 1 - 0xA8020007, // 0012 EXBLK 0 #001B - 0x5C100600, // 0013 MOVE R4 R3 - 0x7C100000, // 0014 CALL R4 0 - 0x1C140204, // 0015 EQ R5 R1 R4 - 0x78160002, // 0016 JMPF R5 #001A - 0x50140200, // 0017 LDBOOL R5 1 0 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040A00, // 0019 RET 1 R5 - 0x7001FFF7, // 001A JMP #0013 - 0x580C000D, // 001B LDCONST R3 K13 - 0xAC0C0200, // 001C CATCH R3 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x500C0000, // 001E LDBOOL R3 0 0 - 0x80040600, // 001F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(process_multiplicative_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(PLUS), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K11 */ be_nested_str_weak(is_computed_expression_string), - /* K12 */ be_nested_str_weak(create_computation_closure_from_string), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100101, // 0004 GETMET R4 R0 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x74120021, // 0006 JMPT R4 #0029 - 0x8C100102, // 0007 GETMET R4 R0 K2 - 0x7C100200, // 0008 CALL R4 1 - 0x4C140000, // 0009 LDNIL R5 - 0x20140805, // 000A NE R5 R4 R5 - 0x7816001A, // 000B JMPF R5 #0027 - 0x88140903, // 000C GETMBR R5 R4 K3 - 0xB81A0800, // 000D GETNGBL R6 K4 - 0x88180D05, // 000E GETMBR R6 R6 K5 - 0x88180D06, // 000F GETMBR R6 R6 K6 - 0x1C140A06, // 0010 EQ R5 R5 R6 - 0x74160005, // 0011 JMPT R5 #0018 - 0x88140903, // 0012 GETMBR R5 R4 K3 - 0xB81A0800, // 0013 GETNGBL R6 K4 - 0x88180D05, // 0014 GETMBR R6 R6 K5 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x1C140A06, // 0016 EQ R5 R5 R6 - 0x7816000E, // 0017 JMPF R5 #0027 - 0x88140908, // 0018 GETMBR R5 R4 K8 - 0x8C180109, // 0019 GETMET R6 R0 K9 - 0x7C180200, // 001A CALL R6 1 - 0x8C180100, // 001B GETMET R6 R0 K0 - 0x5C200200, // 001C MOVE R8 R1 - 0x50240000, // 001D LDBOOL R9 0 0 - 0x7C180600, // 001E CALL R6 3 - 0x601C0018, // 001F GETGBL R7 G24 - 0x5820000A, // 0020 LDCONST R8 K10 - 0x5C240600, // 0021 MOVE R9 R3 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x5C2C0C00, // 0023 MOVE R11 R6 - 0x7C1C0800, // 0024 CALL R7 4 - 0x5C0C0E00, // 0025 MOVE R3 R7 - 0x70020000, // 0026 JMP #0028 - 0x70020000, // 0027 JMP #0029 - 0x7001FFDA, // 0028 JMP #0004 - 0x780A0008, // 0029 JMPF R2 #0033 - 0x8C10010B, // 002A GETMET R4 R0 K11 - 0x5C180600, // 002B MOVE R6 R3 - 0x7C100400, // 002C CALL R4 2 - 0x78120004, // 002D JMPF R4 #0033 - 0x8C10010C, // 002E GETMET R4 R0 K12 - 0x5C180600, // 002F MOVE R6 R3 - 0x7C100400, // 0030 CALL R4 2 - 0x80040800, // 0031 RET 1 R4 - 0x70020000, // 0032 JMP #0034 - 0x80040600, // 0033 RET 1 R3 - 0x80000000, // 0034 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(animation_dsl), /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), + /* K4 */ be_nested_str_weak(IDENTIFIER), + /* K5 */ be_nested_str_weak(COLOR), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(can_use_as_identifier), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(error), + /* K11 */ be_nested_str_weak(Expected_X20identifier), + /* K12 */ be_nested_str_weak(unknown), }), - be_str_weak(expect_right_paren), + be_str_weak(expect_identifier), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[37]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E + 0x780A001A, // 0004 JMPF R2 #0020 0x88080301, // 0005 GETMBR R2 R1 K1 0xB80E0400, // 0006 GETNGBL R3 K2 0x880C0703, // 0007 GETMBR R3 R3 K3 0x880C0704, // 0008 GETMBR R3 R3 K4 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* 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(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X28), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(animation_X2Eglobal), - /* K5 */ be_nested_str_weak(animation_X2E), - /* K6 */ be_nested_str_weak(_), - }), - be_str_weak(is_computed_expression), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140901, // 0001 GETMET R5 R4 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x58200002, // 0003 LDCONST R8 K2 - 0x7C140600, // 0004 CALL R5 3 - 0x28140B03, // 0005 GE R5 R5 K3 - 0x7416002A, // 0006 JMPT R5 #0032 - 0x8C140901, // 0007 GETMET R5 R4 K1 - 0x5C1C0600, // 0008 MOVE R7 R3 - 0x58200002, // 0009 LDCONST R8 K2 - 0x7C140600, // 000A CALL R5 3 - 0x28140B03, // 000B GE R5 R5 K3 - 0x74160024, // 000C JMPT R5 #0032 - 0x8C140901, // 000D GETMET R5 R4 K1 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x58200004, // 000F LDCONST R8 K4 - 0x7C140600, // 0010 CALL R5 3 - 0x28140B03, // 0011 GE R5 R5 K3 - 0x7416001E, // 0012 JMPT R5 #0032 - 0x8C140901, // 0013 GETMET R5 R4 K1 - 0x5C1C0600, // 0014 MOVE R7 R3 - 0x58200004, // 0015 LDCONST R8 K4 - 0x7C140600, // 0016 CALL R5 3 - 0x28140B03, // 0017 GE R5 R5 K3 - 0x74160018, // 0018 JMPT R5 #0032 - 0x8C140901, // 0019 GETMET R5 R4 K1 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x58200005, // 001B LDCONST R8 K5 - 0x7C140600, // 001C CALL R5 3 - 0x28140B03, // 001D GE R5 R5 K3 - 0x74160012, // 001E JMPT R5 #0032 - 0x8C140901, // 001F GETMET R5 R4 K1 - 0x5C1C0600, // 0020 MOVE R7 R3 - 0x58200005, // 0021 LDCONST R8 K5 - 0x7C140600, // 0022 CALL R5 3 - 0x28140B03, // 0023 GE R5 R5 K3 - 0x7416000C, // 0024 JMPT R5 #0032 - 0x8C140901, // 0025 GETMET R5 R4 K1 - 0x5C1C0200, // 0026 MOVE R7 R1 - 0x58200006, // 0027 LDCONST R8 K6 - 0x7C140600, // 0028 CALL R5 3 - 0x28140B03, // 0029 GE R5 R5 K3 - 0x74160006, // 002A JMPT R5 #0032 - 0x8C140901, // 002B GETMET R5 R4 K1 - 0x5C1C0600, // 002C MOVE R7 R3 - 0x58200006, // 002D LDCONST R8 K6 - 0x7C140600, // 002E CALL R5 3 - 0x28140B03, // 002F GE R5 R5 K3 - 0x74160000, // 0030 JMPT R5 #0032 - 0x50140001, // 0031 LDBOOL R5 0 1 - 0x50140200, // 0032 LDBOOL R5 1 0 - 0x80040A00, // 0033 RET 1 R5 + 0x740A000F, // 000A JMPT R2 #001B + 0x88080301, // 000B GETMBR R2 R1 K1 + 0xB80E0400, // 000C GETNGBL R3 K2 + 0x880C0703, // 000D GETMBR R3 R3 K3 + 0x880C0705, // 000E GETMBR R3 R3 K5 + 0x1C080403, // 000F EQ R2 R2 R3 + 0x740A0009, // 0010 JMPT R2 #001B + 0x88080301, // 0011 GETMBR R2 R1 K1 + 0xB80E0400, // 0012 GETNGBL R3 K2 + 0x880C0703, // 0013 GETMBR R3 R3 K3 + 0x880C0706, // 0014 GETMBR R3 R3 K6 + 0x1C080403, // 0015 EQ R2 R2 R3 + 0x780A0008, // 0016 JMPF R2 #0020 + 0x8C080107, // 0017 GETMET R2 R0 K7 + 0x88100308, // 0018 GETMBR R4 R1 K8 + 0x7C080400, // 0019 CALL R2 2 + 0x780A0004, // 001A JMPF R2 #0020 + 0x88080308, // 001B GETMBR R2 R1 K8 + 0x8C0C0109, // 001C GETMET R3 R0 K9 + 0x7C0C0200, // 001D CALL R3 1 + 0x80040400, // 001E RET 1 R2 + 0x70020003, // 001F JMP #0024 + 0x8C08010A, // 0020 GETMET R2 R0 K10 + 0x5810000B, // 0021 LDCONST R4 K11 + 0x7C080400, // 0022 CALL R2 2 + 0x80061800, // 0023 RET 1 K12 + 0x80000000, // 0024 RET 0 }) ) ); @@ -3813,11 +3402,66 @@ be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ /******************************************************************** -** Solidified function: convert_time_to_ms +** Solidified function: expect_number ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ + 1, /* argc */ + 2, /* 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(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(NUMBER), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20number), + /* K9 */ be_nested_str_weak(0), + }), + be_str_weak(expect_number), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040400, // 000E RET 1 R2 + 0x70020003, // 000F JMP #0014 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x58100008, // 0011 LDCONST R4 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x80061200, // 0013 RET 1 K9 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_expression, /* name */ + be_nested_proto( + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3825,82 +3469,692 @@ be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(process_additive_expression), + }), + be_str_weak(process_expression), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x50140200, // 0002 LDBOOL R5 1 0 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_factory_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* 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(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(function), + /* K4 */ be_nested_str_weak(class), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(MockEngine), + }), + be_str_weak(_validate_factory_function), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0xA8020032, // 0000 EXBLK 0 #0034 + 0xA40E0000, // 0001 IMPORT R3 K0 + 0x8C100701, // 0002 GETMET R4 R3 K1 + 0xB81A0400, // 0003 GETNGBL R6 K2 + 0x5C1C0200, // 0004 MOVE R7 R1 + 0x7C100600, // 0005 CALL R4 3 + 0x74120002, // 0006 JMPT R4 #000A + 0x50100000, // 0007 LDBOOL R4 0 0 + 0xA8040001, // 0008 EXBLK 1 1 + 0x80040800, // 0009 RET 1 R4 + 0xB8120400, // 000A GETNGBL R4 K2 + 0x88100801, // 000B GETMBR R4 R4 R1 + 0x60140004, // 000C GETGBL R5 G4 + 0x5C180800, // 000D MOVE R6 R4 + 0x7C140200, // 000E CALL R5 1 + 0x20180B03, // 000F NE R6 R5 K3 + 0x781A0004, // 0010 JMPF R6 #0016 + 0x20180B04, // 0011 NE R6 R5 K4 + 0x781A0002, // 0012 JMPF R6 #0016 + 0x50180000, // 0013 LDBOOL R6 0 0 + 0xA8040001, // 0014 EXBLK 1 1 + 0x80040C00, // 0015 RET 1 R6 + 0x4C180000, // 0016 LDNIL R6 + 0x1C180406, // 0017 EQ R6 R2 R6 + 0x781A0002, // 0018 JMPF R6 #001C + 0x50180200, // 0019 LDBOOL R6 1 0 + 0xA8040001, // 001A EXBLK 1 1 + 0x80040C00, // 001B RET 1 R6 + 0xB81A0A00, // 001C GETNGBL R6 K5 + 0x8C180D06, // 001D GETMET R6 R6 K6 + 0x7C180200, // 001E CALL R6 1 + 0xA802000A, // 001F EXBLK 0 #002B + 0x5C1C0800, // 0020 MOVE R7 R4 + 0x5C200C00, // 0021 MOVE R8 R6 + 0x7C1C0200, // 0022 CALL R7 1 + 0x6020000F, // 0023 GETGBL R8 G15 + 0x5C240E00, // 0024 MOVE R9 R7 + 0x5C280400, // 0025 MOVE R10 R2 + 0x7C200400, // 0026 CALL R8 2 + 0xA8040002, // 0027 EXBLK 1 2 + 0x80041000, // 0028 RET 1 R8 + 0xA8040001, // 0029 EXBLK 1 1 + 0x70020006, // 002A JMP #0032 + 0xAC1C0002, // 002B CATCH R7 0 2 + 0x70020003, // 002C JMP #0031 + 0x50240000, // 002D LDBOOL R9 0 0 + 0xA8040001, // 002E EXBLK 1 1 + 0x80041200, // 002F RET 1 R9 + 0x70020000, // 0030 JMP #0032 + 0xB0080000, // 0031 RAISE 2 R0 R0 + 0xA8040001, // 0032 EXBLK 1 1 + 0x70020005, // 0033 JMP #003A + 0xAC0C0002, // 0034 CATCH R3 0 2 + 0x70020002, // 0035 JMP #0039 + 0x50140000, // 0036 LDBOOL R5 0 0 + 0x80040A00, // 0037 RET 1 R5 + 0x70020000, // 0038 JMP #003A + 0xB0080000, // 0039 RAISE 2 R0 R0 + 0x80000000, // 003A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_function_arguments_for_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_paren), + /* K3 */ be_nested_str_weak(skip_whitespace), + /* K4 */ be_nested_str_weak(process_expression_argument), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(COMMA), + /* K11 */ be_nested_str_weak(next), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K14 */ be_nested_str_weak(expect_right_paren), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_const_int(0), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(_X2C_X20), + /* K19 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_function_arguments_for_expression), + &be_const_str_solidified, + ( &(const binstruction[72]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A0029, // 0006 JMPT R2 #0031 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A0026, // 0009 JMPT R2 #0031 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x7C080200, // 000B CALL R2 1 + 0x8C080102, // 000C GETMET R2 R0 K2 + 0x7C080200, // 000D CALL R2 1 + 0x780A0000, // 000E JMPF R2 #0010 + 0x70020020, // 000F JMP #0031 + 0x8C080104, // 0010 GETMET R2 R0 K4 + 0x7C080200, // 0011 CALL R2 1 + 0x8C0C0305, // 0012 GETMET R3 R1 K5 + 0x5C140400, // 0013 MOVE R5 R2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x8C0C0103, // 0015 GETMET R3 R0 K3 + 0x7C0C0200, // 0016 CALL R3 1 + 0x8C0C0106, // 0017 GETMET R3 R0 K6 + 0x7C0C0200, // 0018 CALL R3 1 + 0x4C100000, // 0019 LDNIL R4 + 0x200C0604, // 001A NE R3 R3 R4 + 0x780E000C, // 001B JMPF R3 #0029 + 0x8C0C0106, // 001C GETMET R3 R0 K6 + 0x7C0C0200, // 001D CALL R3 1 + 0x880C0707, // 001E GETMBR R3 R3 K7 + 0xB8121000, // 001F GETNGBL R4 K8 + 0x88100909, // 0020 GETMBR R4 R4 K9 + 0x8810090A, // 0021 GETMBR R4 R4 K10 + 0x1C0C0604, // 0022 EQ R3 R3 R4 + 0x780E0004, // 0023 JMPF R3 #0029 + 0x8C0C010B, // 0024 GETMET R3 R0 K11 + 0x7C0C0200, // 0025 CALL R3 1 + 0x8C0C0103, // 0026 GETMET R3 R0 K3 + 0x7C0C0200, // 0027 CALL R3 1 + 0x70020006, // 0028 JMP #0030 + 0x8C0C0102, // 0029 GETMET R3 R0 K2 + 0x7C0C0200, // 002A CALL R3 1 + 0x740E0003, // 002B JMPT R3 #0030 + 0x8C0C010C, // 002C GETMET R3 R0 K12 + 0x5814000D, // 002D LDCONST R5 K13 + 0x7C0C0400, // 002E CALL R3 2 + 0x70020000, // 002F JMP #0031 + 0x7001FFD2, // 0030 JMP #0004 + 0x8C08010E, // 0031 GETMET R2 R0 K14 + 0x7C080200, // 0032 CALL R2 1 + 0x5808000F, // 0033 LDCONST R2 K15 + 0x600C0010, // 0034 GETGBL R3 G16 + 0x6010000C, // 0035 GETGBL R4 G12 + 0x5C140200, // 0036 MOVE R5 R1 + 0x7C100200, // 0037 CALL R4 1 + 0x04100911, // 0038 SUB R4 R4 K17 + 0x40122004, // 0039 CONNECT R4 K16 R4 + 0x7C0C0200, // 003A CALL R3 1 + 0xA8020007, // 003B EXBLK 0 #0044 + 0x5C100600, // 003C MOVE R4 R3 + 0x7C100000, // 003D CALL R4 0 + 0x24140910, // 003E GT R5 R4 K16 + 0x78160000, // 003F JMPF R5 #0041 + 0x00080512, // 0040 ADD R2 R2 K18 + 0x94140204, // 0041 GETIDX R5 R1 R4 + 0x00080405, // 0042 ADD R2 R2 R5 + 0x7001FFF7, // 0043 JMP #003C + 0x580C0013, // 0044 LDCONST R3 K19 + 0xAC0C0200, // 0045 CATCH R3 1 0 + 0xB0080000, // 0046 RAISE 2 R0 R0 + 0x80040400, // 0047 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_computed_expression_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ + be_nested_proto( + 12, /* nstack */ + 2, /* 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(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X20_X2B_X20), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(_X20_X2D_X20), + /* K5 */ be_nested_str_weak(_X20_X2A_X20), + /* K6 */ be_nested_str_weak(_X20_X2F_X20), + /* K7 */ be_nested_str_weak(_X28), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(is_identifier_char), + /* K10 */ be_nested_str_weak(_is_simple_function_call), + }), + be_str_weak(is_computed_expression_string), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x280C0703, // 0005 GE R3 R3 K3 + 0x740E0012, // 0006 JMPT R3 #001A + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x280C0703, // 000B GE R3 R3 K3 + 0x740E000C, // 000C JMPT R3 #001A + 0x8C0C0501, // 000D GETMET R3 R2 K1 + 0x5C140200, // 000E MOVE R5 R1 + 0x58180005, // 000F LDCONST R6 K5 + 0x7C0C0600, // 0010 CALL R3 3 + 0x280C0703, // 0011 GE R3 R3 K3 + 0x740E0006, // 0012 JMPT R3 #001A + 0x8C0C0501, // 0013 GETMET R3 R2 K1 + 0x5C140200, // 0014 MOVE R5 R1 + 0x58180006, // 0015 LDCONST R6 K6 + 0x7C0C0600, // 0016 CALL R3 3 + 0x280C0703, // 0017 GE R3 R3 K3 + 0x740E0000, // 0018 JMPT R3 #001A + 0x500C0001, // 0019 LDBOOL R3 0 1 + 0x500C0200, // 001A LDBOOL R3 1 0 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x8C140501, // 001C GETMET R5 R2 K1 + 0x5C1C0200, // 001D MOVE R7 R1 + 0x58200007, // 001E LDCONST R8 K7 + 0x7C140600, // 001F CALL R5 3 + 0x24180B03, // 0020 GT R6 R5 K3 + 0x781A0017, // 0021 JMPF R6 #003A + 0x04180B08, // 0022 SUB R6 R5 K8 + 0x94180206, // 0023 GETIDX R6 R1 R6 + 0x8C1C0109, // 0024 GETMET R7 R0 K9 + 0x5C240C00, // 0025 MOVE R9 R6 + 0x7C1C0400, // 0026 CALL R7 2 + 0x781E0011, // 0027 JMPF R7 #003A + 0x041C0B08, // 0028 SUB R7 R5 K8 + 0x28200F03, // 0029 GE R8 R7 K3 + 0x78220005, // 002A JMPF R8 #0031 + 0x8C200109, // 002B GETMET R8 R0 K9 + 0x94280207, // 002C GETIDX R10 R1 R7 + 0x7C200400, // 002D CALL R8 2 + 0x78220001, // 002E JMPF R8 #0031 + 0x041C0F08, // 002F SUB R7 R7 K8 + 0x7001FFF7, // 0030 JMP #0029 + 0x001C0F08, // 0031 ADD R7 R7 K8 + 0x04200B08, // 0032 SUB R8 R5 K8 + 0x40200E08, // 0033 CONNECT R8 R7 R8 + 0x94200208, // 0034 GETIDX R8 R1 R8 + 0x8C24010A, // 0035 GETMET R9 R0 K10 + 0x5C2C1000, // 0036 MOVE R11 R8 + 0x7C240400, // 0037 CALL R9 2 + 0x74260000, // 0038 JMPT R9 #003A + 0x50100200, // 0039 LDBOOL R4 1 0 + 0x740E0001, // 003A JMPT R3 #003D + 0x74120000, // 003B JMPT R4 #003D + 0x50180001, // 003C LDBOOL R6 0 1 + 0x50180200, // 003D LDBOOL R6 1 0 + 0x80040C00, // 003E RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: collect_inline_comment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COMMENT), + /* K5 */ be_nested_str_weak(_X20_X20), + /* K6 */ be_nested_str_weak(value), + /* K7 */ be_nested_str_weak(next), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(collect_inline_comment), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x88080306, // 000B GETMBR R2 R1 K6 + 0x000A0A02, // 000C ADD R2 K5 R2 + 0x8C0C0107, // 000D GETMET R3 R0 K7 + 0x7C0C0200, // 000E CALL R3 1 + 0x80040400, // 000F RET 1 R2 + 0x80061000, // 0010 RET 1 K8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X28_X27), + }), + be_str_weak(expect_left_paren), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_multiplicative_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* 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(process_unary_expression), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(MULTIPLY), + /* K7 */ be_nested_str_weak(DIVIDE), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + }), + be_str_weak(process_multiplicative_expression), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x8C100101, // 0004 GETMET R4 R0 K1 + 0x7C100200, // 0005 CALL R4 1 + 0x74120021, // 0006 JMPT R4 #0029 + 0x8C100102, // 0007 GETMET R4 R0 K2 + 0x7C100200, // 0008 CALL R4 1 + 0x4C140000, // 0009 LDNIL R5 + 0x20140805, // 000A NE R5 R4 R5 + 0x7816001A, // 000B JMPF R5 #0027 + 0x88140903, // 000C GETMBR R5 R4 K3 + 0xB81A0800, // 000D GETNGBL R6 K4 + 0x88180D05, // 000E GETMBR R6 R6 K5 + 0x88180D06, // 000F GETMBR R6 R6 K6 + 0x1C140A06, // 0010 EQ R5 R5 R6 + 0x74160005, // 0011 JMPT R5 #0018 + 0x88140903, // 0012 GETMBR R5 R4 K3 + 0xB81A0800, // 0013 GETNGBL R6 K4 + 0x88180D05, // 0014 GETMBR R6 R6 K5 + 0x88180D07, // 0015 GETMBR R6 R6 K7 + 0x1C140A06, // 0016 EQ R5 R5 R6 + 0x7816000E, // 0017 JMPF R5 #0027 + 0x88140908, // 0018 GETMBR R5 R4 K8 + 0x8C180109, // 0019 GETMET R6 R0 K9 + 0x7C180200, // 001A CALL R6 1 + 0x8C180100, // 001B GETMET R6 R0 K0 + 0x5C200200, // 001C MOVE R8 R1 + 0x50240000, // 001D LDBOOL R9 0 0 + 0x7C180600, // 001E CALL R6 3 + 0x601C0018, // 001F GETGBL R7 G24 + 0x5820000A, // 0020 LDCONST R8 K10 + 0x5C240600, // 0021 MOVE R9 R3 + 0x5C280A00, // 0022 MOVE R10 R5 + 0x5C2C0C00, // 0023 MOVE R11 R6 + 0x7C1C0800, // 0024 CALL R7 4 + 0x5C0C0E00, // 0025 MOVE R3 R7 + 0x70020000, // 0026 JMP #0028 + 0x70020000, // 0027 JMP #0029 + 0x7001FFDA, // 0028 JMP #0004 + 0x80040600, // 0029 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_add, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(push), + }), + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_engine_start +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_engine_start, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* 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(run_statements), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(name), + /* K3 */ be_nested_str_weak(comment), + /* K4 */ be_nested_str_weak(sequence_names), + /* K5 */ be_nested_str_weak(contains), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(engine_X2Eadd_sequence_manager_X28_X25s__X29_X25s), + /* K8 */ be_nested_str_weak(engine_X2Eadd_animation_X28_X25s__X29_X25s), + /* K9 */ be_nested_str_weak(stop_iteration), + /* K10 */ be_nested_str_weak(engine_X2Estart_X28_X29), + }), + be_str_weak(generate_engine_start), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060000, // 0004 JMPF R1 #0006 + 0x80000200, // 0005 RET 0 + 0x60040010, // 0006 GETGBL R1 G16 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x7C040200, // 0008 CALL R1 1 + 0xA8020018, // 0009 EXBLK 0 #0023 + 0x5C080200, // 000A MOVE R2 R1 + 0x7C080000, // 000B CALL R2 0 + 0x940C0502, // 000C GETIDX R3 R2 K2 + 0x94100503, // 000D GETIDX R4 R2 K3 + 0x88140104, // 000E GETMBR R5 R0 K4 + 0x8C140B05, // 000F GETMET R5 R5 K5 + 0x5C1C0600, // 0010 MOVE R7 R3 + 0x7C140400, // 0011 CALL R5 2 + 0x78160007, // 0012 JMPF R5 #001B + 0x8C140106, // 0013 GETMET R5 R0 K6 + 0x601C0018, // 0014 GETGBL R7 G24 + 0x58200007, // 0015 LDCONST R8 K7 + 0x5C240600, // 0016 MOVE R9 R3 + 0x5C280800, // 0017 MOVE R10 R4 + 0x7C1C0600, // 0018 CALL R7 3 + 0x7C140400, // 0019 CALL R5 2 + 0x70020006, // 001A JMP #0022 + 0x8C140106, // 001B GETMET R5 R0 K6 + 0x601C0018, // 001C GETGBL R7 G24 + 0x58200008, // 001D LDCONST R8 K8 + 0x5C240600, // 001E MOVE R9 R3 + 0x5C280800, // 001F MOVE R10 R4 + 0x7C1C0600, // 0020 CALL R7 3 + 0x7C140400, // 0021 CALL R5 2 + 0x7001FFE6, // 0022 JMP #000A + 0x58040009, // 0023 LDCONST R1 K9 + 0xAC040200, // 0024 CATCH R1 1 0 + 0xB0080000, // 0025 RAISE 2 R0 R0 + 0x8C040106, // 0026 GETMET R1 R0 K6 + 0x580C000A, // 0027 LDCONST R3 K10 + 0x7C040400, // 0028 CALL R1 2 + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_to_vrgb +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(endswith), - /* K2 */ be_nested_str_weak(ms), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(s), - /* K5 */ be_nested_str_weak(m), - /* K6 */ be_nested_str_weak(h), - /* K7 */ be_const_int(3600000), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(format), + /* K3 */ be_nested_str_weak(_X2502X), + /* K4 */ be_nested_str_weak(FFFFFF), + /* K5 */ be_nested_str_weak(startswith), + /* K6 */ be_nested_str_weak(0x), + /* K7 */ be_const_int(2), }), - be_str_weak(convert_time_to_ms), + be_str_weak(convert_to_vrgb), &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0008, // 0005 JMPF R3 #000F - 0x600C0009, // 0006 GETGBL R3 G9 - 0x6010000A, // 0007 GETGBL R4 G10 - 0x5415FFFC, // 0008 LDINT R5 -3 - 0x40160605, // 0009 CONNECT R5 K3 R5 - 0x94140205, // 000A GETIDX R5 R1 R5 - 0x7C100200, // 000B CALL R4 1 - 0x7C0C0200, // 000C CALL R3 1 - 0x80040600, // 000D RET 1 R3 - 0x7002002D, // 000E JMP #003D - 0x8C0C0501, // 000F GETMET R3 R2 K1 - 0x5C140200, // 0010 MOVE R5 R1 - 0x58180004, // 0011 LDCONST R6 K4 - 0x7C0C0600, // 0012 CALL R3 3 - 0x780E000A, // 0013 JMPF R3 #001F - 0x600C0009, // 0014 GETGBL R3 G9 - 0x6010000A, // 0015 GETGBL R4 G10 - 0x5415FFFD, // 0016 LDINT R5 -2 - 0x40160605, // 0017 CONNECT R5 K3 R5 - 0x94140205, // 0018 GETIDX R5 R1 R5 - 0x7C100200, // 0019 CALL R4 1 - 0x541603E7, // 001A LDINT R5 1000 - 0x08100805, // 001B MUL R4 R4 R5 - 0x7C0C0200, // 001C CALL R3 1 - 0x80040600, // 001D RET 1 R3 - 0x7002001D, // 001E JMP #003D - 0x8C0C0501, // 001F GETMET R3 R2 K1 - 0x5C140200, // 0020 MOVE R5 R1 - 0x58180005, // 0021 LDCONST R6 K5 - 0x7C0C0600, // 0022 CALL R3 3 - 0x780E000A, // 0023 JMPF R3 #002F - 0x600C0009, // 0024 GETGBL R3 G9 - 0x6010000A, // 0025 GETGBL R4 G10 - 0x5415FFFD, // 0026 LDINT R5 -2 - 0x40160605, // 0027 CONNECT R5 K3 R5 - 0x94140205, // 0028 GETIDX R5 R1 R5 - 0x7C100200, // 0029 CALL R4 1 - 0x5416EA5F, // 002A LDINT R5 60000 - 0x08100805, // 002B MUL R4 R4 R5 - 0x7C0C0200, // 002C CALL R3 1 - 0x80040600, // 002D RET 1 R3 - 0x7002000D, // 002E JMP #003D - 0x8C0C0501, // 002F GETMET R3 R2 K1 - 0x5C140200, // 0030 MOVE R5 R1 - 0x58180006, // 0031 LDCONST R6 K6 - 0x7C0C0600, // 0032 CALL R3 3 - 0x780E0008, // 0033 JMPF R3 #003D - 0x600C0009, // 0034 GETGBL R3 G9 - 0x6010000A, // 0035 GETGBL R4 G10 - 0x5415FFFD, // 0036 LDINT R5 -2 - 0x40160605, // 0037 CONNECT R5 K3 R5 - 0x94140205, // 0038 GETIDX R5 R1 R5 - 0x7C100200, // 0039 CALL R4 1 - 0x08100907, // 003A MUL R4 R4 K7 - 0x7C0C0200, // 003B CALL R3 1 - 0x80040600, // 003C RET 1 R3 - 0x540E03E7, // 003D LDINT R3 1000 - 0x80040600, // 003E RET 1 R3 + ( &(const binstruction[54]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x60100009, // 0001 GETGBL R4 G9 + 0x6014000A, // 0002 GETGBL R5 G10 + 0x5C180200, // 0003 MOVE R6 R1 + 0x7C140200, // 0004 CALL R5 1 + 0x7C100200, // 0005 CALL R4 1 + 0x14140901, // 0006 LT R5 R4 K1 + 0x78160001, // 0007 JMPF R5 #000A + 0x58100001, // 0008 LDCONST R4 K1 + 0x70020003, // 0009 JMP #000E + 0x541600FE, // 000A LDINT R5 255 + 0x24140805, // 000B GT R5 R4 R5 + 0x78160000, // 000C JMPF R5 #000E + 0x541200FE, // 000D LDINT R4 255 + 0x8C140702, // 000E GETMET R5 R3 K2 + 0x581C0003, // 000F LDCONST R7 K3 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x60180008, // 0012 GETGBL R6 G8 + 0x5C1C0400, // 0013 MOVE R7 R2 + 0x7C180200, // 0014 CALL R6 1 + 0x581C0004, // 0015 LDCONST R7 K4 + 0x8C200705, // 0016 GETMET R8 R3 K5 + 0x5C280C00, // 0017 MOVE R10 R6 + 0x582C0006, // 0018 LDCONST R11 K6 + 0x7C200600, // 0019 CALL R8 3 + 0x7822000A, // 001A JMPF R8 #0026 + 0x6020000C, // 001B GETGBL R8 G12 + 0x5C240C00, // 001C MOVE R9 R6 + 0x7C200200, // 001D CALL R8 1 + 0x54260009, // 001E LDINT R9 10 + 0x28201009, // 001F GE R8 R8 R9 + 0x78220004, // 0020 JMPF R8 #0026 + 0x54220003, // 0021 LDINT R8 4 + 0x54260008, // 0022 LDINT R9 9 + 0x40201009, // 0023 CONNECT R8 R8 R9 + 0x941C0C08, // 0024 GETIDX R7 R6 R8 + 0x7002000D, // 0025 JMP #0034 + 0x8C200705, // 0026 GETMET R8 R3 K5 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x582C0006, // 0028 LDCONST R11 K6 + 0x7C200600, // 0029 CALL R8 3 + 0x78220008, // 002A JMPF R8 #0034 + 0x6020000C, // 002B GETGBL R8 G12 + 0x5C240C00, // 002C MOVE R9 R6 + 0x7C200200, // 002D CALL R8 1 + 0x54260007, // 002E LDINT R9 8 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x78220002, // 0030 JMPF R8 #0034 + 0x54220006, // 0031 LDINT R8 7 + 0x40220E08, // 0032 CONNECT R8 K7 R8 + 0x941C0C08, // 0033 GETIDX R7 R6 R8 + 0x00200A07, // 0034 ADD R8 R5 R7 + 0x80041000, // 0035 RET 1 R8 }) ) ); @@ -3908,154 +4162,11 @@ be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ /******************************************************************** -** Solidified function: expect_left_brace +** Solidified function: process_function_call ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), - }), - be_str_weak(expect_left_brace), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_colon -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COLON), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), - }), - be_str_weak(expect_colon), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* 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(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACKET), - }), - be_str_weak(check_right_bracket), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_init, /* name */ - be_nested_proto( - 3, /* nstack */ + 10, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4063,46 +4174,287 @@ be_local_closure(class_SimpleDSLTranspiler_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(tokens), - /* K1 */ be_nested_str_weak(pos), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(output), - /* K4 */ be_nested_str_weak(errors), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(first_statement), - /* K7 */ be_nested_str_weak(strip_initialized), - /* K8 */ be_nested_str_weak(sequence_names), + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(is_math_method), + /* K13 */ be_nested_str_weak(process_function_arguments), + /* K14 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(is_user_function), + /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(engine), + /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), + /* K20 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K21 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), }), - be_str_weak(init), + be_str_weak(process_function_call), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x5C080200, // 0003 MOVE R2 R1 - 0x70020001, // 0004 JMP #0007 - 0x60080012, // 0005 GETGBL R2 G18 - 0x7C080000, // 0006 CALL R2 0 - 0x90020002, // 0007 SETMBR R0 K0 R2 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x60080012, // 000C GETGBL R2 G18 - 0x7C080000, // 000D CALL R2 0 - 0x90020802, // 000E SETMBR R0 K4 R2 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90020A02, // 0011 SETMBR R0 K5 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90020C02, // 0013 SETMBR R0 K6 R2 - 0x50080000, // 0014 LDBOOL R2 0 0 - 0x90020E02, // 0015 SETMBR R0 K7 R2 - 0x60080013, // 0016 GETGBL R2 G19 - 0x7C080000, // 0017 CALL R2 0 - 0x90021002, // 0018 SETMBR R0 K8 R2 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[75]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x4C100000, // 0003 LDNIL R4 + 0x20100404, // 0004 NE R4 R2 R4 + 0x7812000F, // 0005 JMPF R4 #0016 + 0x88100502, // 0006 GETMBR R4 R2 K2 + 0xB8160600, // 0007 GETNGBL R5 K3 + 0x88140B04, // 0008 GETMBR R5 R5 K4 + 0x88140B05, // 0009 GETMBR R5 R5 K5 + 0x1C100805, // 000A EQ R4 R4 R5 + 0x74120005, // 000B JMPT R4 #0012 + 0x88100502, // 000C GETMBR R4 R2 K2 + 0xB8160600, // 000D GETNGBL R5 K3 + 0x88140B04, // 000E GETMBR R5 R5 K4 + 0x88140B06, // 000F GETMBR R5 R5 K6 + 0x1C100805, // 0010 EQ R4 R4 R5 + 0x78120003, // 0011 JMPF R4 #0016 + 0x880C0507, // 0012 GETMBR R3 R2 K7 + 0x8C100108, // 0013 GETMET R4 R0 K8 + 0x7C100200, // 0014 CALL R4 1 + 0x70020003, // 0015 JMP #001A + 0x8C100109, // 0016 GETMET R4 R0 K9 + 0x5818000A, // 0017 LDCONST R6 K10 + 0x7C100400, // 0018 CALL R4 2 + 0x80061600, // 0019 RET 1 K11 + 0x8C10010C, // 001A GETMET R4 R0 K12 + 0x5C180600, // 001B MOVE R6 R3 + 0x7C100400, // 001C CALL R4 2 + 0x78120007, // 001D JMPF R4 #0026 + 0x8C10010D, // 001E GETMET R4 R0 K13 + 0x7C100200, // 001F CALL R4 1 + 0x60140018, // 0020 GETGBL R5 G24 + 0x5818000E, // 0021 LDCONST R6 K14 + 0x5C1C0600, // 0022 MOVE R7 R3 + 0x5C200800, // 0023 MOVE R8 R4 + 0x7C140600, // 0024 CALL R5 3 + 0x80040A00, // 0025 RET 1 R5 + 0x8C10010D, // 0026 GETMET R4 R0 K13 + 0x7C100200, // 0027 CALL R4 1 + 0xB8161E00, // 0028 GETNGBL R5 K15 + 0x8C140B10, // 0029 GETMET R5 R5 K16 + 0x5C1C0600, // 002A MOVE R7 R3 + 0x7C140400, // 002B CALL R5 2 + 0x7816000E, // 002C JMPF R5 #003C + 0x20140901, // 002D NE R5 R4 K1 + 0x78160004, // 002E JMPF R5 #0034 + 0x60140018, // 002F GETGBL R5 G24 + 0x58180011, // 0030 LDCONST R6 K17 + 0x5C1C0800, // 0031 MOVE R7 R4 + 0x7C140400, // 0032 CALL R5 2 + 0x70020000, // 0033 JMP #0035 + 0x58140012, // 0034 LDCONST R5 K18 + 0x60180018, // 0035 GETGBL R6 G24 + 0x581C0013, // 0036 LDCONST R7 K19 + 0x5C200600, // 0037 MOVE R8 R3 + 0x5C240A00, // 0038 MOVE R9 R5 + 0x7C180600, // 0039 CALL R6 3 + 0x80040C00, // 003A RET 1 R6 + 0x7002000D, // 003B JMP #004A + 0x20140901, // 003C NE R5 R4 K1 + 0x78160006, // 003D JMPF R5 #0045 + 0x60140018, // 003E GETGBL R5 G24 + 0x58180014, // 003F LDCONST R6 K20 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x5C200800, // 0041 MOVE R8 R4 + 0x7C140600, // 0042 CALL R5 3 + 0x80040A00, // 0043 RET 1 R5 + 0x70020004, // 0044 JMP #004A + 0x60140018, // 0045 GETGBL R5 G24 + 0x58180015, // 0046 LDCONST R6 K21 + 0x5C1C0600, // 0047 MOVE R7 R3 + 0x7C140400, // 0048 CALL R5 2 + 0x80040A00, // 0049 RET 1 R5 + 0x80000000, // 004A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_single_parameter +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(_has_param), + /* K3 */ be_nested_str_weak(current), + /* K4 */ be_nested_str_weak(line), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), + }), + be_str_weak(_validate_single_parameter), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0xA802001F, // 0000 EXBLK 0 #0021 + 0xA4120000, // 0001 IMPORT R4 K0 + 0x4C140000, // 0002 LDNIL R5 + 0x20140605, // 0003 NE R5 R3 R5 + 0x78160019, // 0004 JMPF R5 #001F + 0x8C140901, // 0005 GETMET R5 R4 K1 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x58200002, // 0007 LDCONST R8 K2 + 0x7C140600, // 0008 CALL R5 3 + 0x78160014, // 0009 JMPF R5 #001F + 0x8C140702, // 000A GETMET R5 R3 K2 + 0x5C1C0400, // 000B MOVE R7 R2 + 0x7C140400, // 000C CALL R5 2 + 0x74160010, // 000D JMPT R5 #001F + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x7C140200, // 000F CALL R5 1 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140103, // 0013 GETMET R5 R0 K3 + 0x7C140200, // 0014 CALL R5 1 + 0x88140B04, // 0015 GETMBR R5 R5 K4 + 0x70020000, // 0016 JMP #0018 + 0x58140005, // 0017 LDCONST R5 K5 + 0x8C180106, // 0018 GETMET R6 R0 K6 + 0x60200018, // 0019 GETGBL R8 G24 + 0x58240007, // 001A LDCONST R9 K7 + 0x5C280200, // 001B MOVE R10 R1 + 0x5C2C0400, // 001C MOVE R11 R2 + 0x7C200600, // 001D CALL R8 3 + 0x7C180400, // 001E CALL R6 2 + 0xA8040001, // 001F EXBLK 1 1 + 0x70020003, // 0020 JMP #0025 + 0xAC100002, // 0021 CATCH R4 0 2 + 0x70020000, // 0022 JMP #0024 + 0x70020000, // 0023 JMP #0025 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80000000, // 0025 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_property_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ + be_nested_proto( + 15, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(DOT), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(expect_assign), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(property), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(introspect), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(contains), + /* K14 */ be_nested_str_weak(animation), + /* K15 */ be_nested_str_weak(animation_X2E_X25s), + /* K16 */ be_nested_str_weak(_X25s_), + /* K17 */ be_nested_str_weak(add), + /* K18 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K19 */ be_nested_str_weak(error), + /* K20 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), + /* K21 */ be_nested_str_weak(skip_statement), + }), + be_str_weak(process_property_assignment), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x20080403, // 0005 NE R2 R2 R3 + 0x780A002E, // 0006 JMPF R2 #0036 + 0x8C080101, // 0007 GETMET R2 R0 K1 + 0x7C080200, // 0008 CALL R2 1 + 0x88080502, // 0009 GETMBR R2 R2 K2 + 0xB80E0600, // 000A GETNGBL R3 K3 + 0x880C0704, // 000B GETMBR R3 R3 K4 + 0x880C0705, // 000C GETMBR R3 R3 K5 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0026, // 000E JMPF R2 #0036 + 0x8C080106, // 000F GETMET R2 R0 K6 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080100, // 0011 GETMET R2 R0 K0 + 0x7C080200, // 0012 CALL R2 1 + 0x8C0C0107, // 0013 GETMET R3 R0 K7 + 0x7C0C0200, // 0014 CALL R3 1 + 0x8C0C0108, // 0015 GETMET R3 R0 K8 + 0x58140009, // 0016 LDCONST R5 K9 + 0x7C0C0400, // 0017 CALL R3 2 + 0x8C10010A, // 0018 GETMET R4 R0 K10 + 0x7C100200, // 0019 CALL R4 1 + 0xA4161600, // 001A IMPORT R5 K11 + 0x5818000C, // 001B LDCONST R6 K12 + 0x8C1C0B0D, // 001C GETMET R7 R5 K13 + 0xB8261C00, // 001D GETNGBL R9 K14 + 0x5C280200, // 001E MOVE R10 R1 + 0x7C1C0600, // 001F CALL R7 3 + 0x781E0005, // 0020 JMPF R7 #0027 + 0x601C0018, // 0021 GETGBL R7 G24 + 0x5820000F, // 0022 LDCONST R8 K15 + 0x5C240200, // 0023 MOVE R9 R1 + 0x7C1C0400, // 0024 CALL R7 2 + 0x5C180E00, // 0025 MOVE R6 R7 + 0x70020004, // 0026 JMP #002C + 0x601C0018, // 0027 GETGBL R7 G24 + 0x58200010, // 0028 LDCONST R8 K16 + 0x5C240200, // 0029 MOVE R9 R1 + 0x7C1C0400, // 002A CALL R7 2 + 0x5C180E00, // 002B MOVE R6 R7 + 0x8C1C0111, // 002C GETMET R7 R0 K17 + 0x60240018, // 002D GETGBL R9 G24 + 0x58280012, // 002E LDCONST R10 K18 + 0x5C2C0C00, // 002F MOVE R11 R6 + 0x5C300400, // 0030 MOVE R12 R2 + 0x5C340600, // 0031 MOVE R13 R3 + 0x5C380800, // 0032 MOVE R14 R4 + 0x7C240A00, // 0033 CALL R9 5 + 0x7C1C0400, // 0034 CALL R7 2 + 0x70020007, // 0035 JMP #003E + 0x8C080113, // 0036 GETMET R2 R0 K19 + 0x60100018, // 0037 GETGBL R4 G24 + 0x58140014, // 0038 LDCONST R5 K20 + 0x5C180200, // 0039 MOVE R6 R1 + 0x7C100400, // 003A CALL R4 2 + 0x7C080400, // 003B CALL R2 2 + 0x8C080115, // 003C GETMET R2 R0 K21 + 0x7C080200, // 003D CALL R2 1 + 0x80000000, // 003E RET 0 }) ) ); @@ -4152,11 +4504,11 @@ be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ /******************************************************************** -** Solidified function: expect_right_brace +** Solidified function: current ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_current, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4164,200 +4516,25 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), - }), - be_str_weak(expect_right_brace), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* 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(process_expression), - }), - be_str_weak(process_value), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x80040400, // 0003 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(sequence), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(sequence_names), - /* K6 */ be_nested_str_weak(expect_left_brace), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X28def_X20_X28engine_X29), - /* K9 */ be_nested_str_weak(_X20_X20var_X20steps_X20_X3D_X20_X5B_X5D), - /* K10 */ be_nested_str_weak(at_end), - /* K11 */ be_nested_str_weak(check_right_brace), - /* K12 */ be_nested_str_weak(process_sequence_statement), - /* K13 */ be_nested_str_weak(_X20_X20var_X20seq_manager_X20_X3D_X20animation_X2ESequenceManager_X28engine_X29), - /* K14 */ be_nested_str_weak(_X20_X20seq_manager_X2Estart_sequence_X28steps_X29), - /* K15 */ be_nested_str_weak(_X20_X20return_X20seq_manager), - /* K16 */ be_nested_str_weak(end_X29_X28engine_X29), - /* K17 */ be_nested_str_weak(expect_right_brace), - }), - be_str_weak(process_sequence), - &be_const_str_solidified, - ( &(const binstruction[60]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x88080105, // 000C GETMBR R2 R0 K5 - 0x500C0200, // 000D LDBOOL R3 1 0 - 0x98080203, // 000E SETIDX R2 R1 R3 - 0x8C080106, // 000F GETMET R2 R0 K6 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080107, // 0011 GETMET R2 R0 K7 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140008, // 0013 LDCONST R5 K8 - 0x5C180200, // 0014 MOVE R6 R1 - 0x7C100400, // 0015 CALL R4 2 - 0x7C080400, // 0016 CALL R2 2 - 0x8C080107, // 0017 GETMET R2 R0 K7 - 0x60100018, // 0018 GETGBL R4 G24 - 0x58140009, // 0019 LDCONST R5 K9 - 0x7C100200, // 001A CALL R4 1 - 0x7C080400, // 001B CALL R2 2 - 0x8C08010A, // 001C GETMET R2 R0 K10 - 0x7C080200, // 001D CALL R2 1 - 0x740A0005, // 001E JMPT R2 #0025 - 0x8C08010B, // 001F GETMET R2 R0 K11 - 0x7C080200, // 0020 CALL R2 1 - 0x740A0002, // 0021 JMPT R2 #0025 - 0x8C08010C, // 0022 GETMET R2 R0 K12 - 0x7C080200, // 0023 CALL R2 1 - 0x7001FFF6, // 0024 JMP #001C - 0x8C080107, // 0025 GETMET R2 R0 K7 - 0x60100018, // 0026 GETGBL R4 G24 - 0x5814000D, // 0027 LDCONST R5 K13 - 0x7C100200, // 0028 CALL R4 1 - 0x7C080400, // 0029 CALL R2 2 - 0x8C080107, // 002A GETMET R2 R0 K7 - 0x60100018, // 002B GETGBL R4 G24 - 0x5814000E, // 002C LDCONST R5 K14 - 0x7C100200, // 002D CALL R4 1 - 0x7C080400, // 002E CALL R2 2 - 0x8C080107, // 002F GETMET R2 R0 K7 - 0x60100018, // 0030 GETGBL R4 G24 - 0x5814000F, // 0031 LDCONST R5 K15 - 0x7C100200, // 0032 CALL R4 1 - 0x7C080400, // 0033 CALL R2 2 - 0x8C080107, // 0034 GETMET R2 R0 K7 - 0x60100018, // 0035 GETGBL R4 G24 - 0x58140010, // 0036 LDCONST R5 K16 - 0x7C100200, // 0037 CALL R4 1 - 0x7C080400, // 0038 CALL R2 2 - 0x8C080111, // 0039 GETMET R2 R0 K17 - 0x7C080200, // 003A CALL R2 1 - 0x80000000, // 003B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_creates_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), }), - be_str_weak(_validate_animation_factory_creates_animation), + be_str_weak(current), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B01, // 0003 GETMBR R5 R5 K1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060003, // 0005 JMPF R1 #000A + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x94040202, // 0008 GETIDX R1 R1 R2 + 0x70020000, // 0009 JMP #000B + 0x4C040000, // 000A LDNIL R1 + 0x80040200, // 000B RET 1 R1 }) ) ); @@ -4414,56 +4591,6 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_error_report -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* 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(has_errors), - /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), - /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(_X20_X20), - /* K5 */ be_nested_str_weak(_X0A), - /* K6 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_error_report), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060000, // 0002 JMPT R1 #0004 - 0x80060200, // 0003 RET 1 K1 - 0x58040002, // 0004 LDCONST R1 K2 - 0x60080010, // 0005 GETGBL R2 G16 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x00120803, // 000B ADD R4 K4 R3 - 0x00100905, // 000C ADD R4 R4 K5 - 0x00040204, // 000D ADD R1 R1 R4 - 0x7001FFF9, // 000E JMP #0009 - 0x58080006, // 000F LDCONST R2 K6 - 0xAC080200, // 0010 CATCH R2 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040200, // 0012 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_palette ********************************************************************/ @@ -4673,193 +4800,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ /******************************************************************** -** Solidified function: _validate_single_parameter +** Solidified function: skip_whitespace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(_has_param), - /* K3 */ be_nested_str_weak(current), - /* K4 */ be_nested_str_weak(line), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), - }), - be_str_weak(_validate_single_parameter), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0xA802001F, // 0000 EXBLK 0 #0021 - 0xA4120000, // 0001 IMPORT R4 K0 - 0x4C140000, // 0002 LDNIL R5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160019, // 0004 JMPF R5 #001F - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x58200002, // 0007 LDCONST R8 K2 - 0x7C140600, // 0008 CALL R5 3 - 0x78160014, // 0009 JMPF R5 #001F - 0x8C140702, // 000A GETMET R5 R3 K2 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x7C140400, // 000C CALL R5 2 - 0x74160010, // 000D JMPT R5 #001F - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x7C140200, // 000F CALL R5 1 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140103, // 0013 GETMET R5 R0 K3 - 0x7C140200, // 0014 CALL R5 1 - 0x88140B04, // 0015 GETMBR R5 R5 K4 - 0x70020000, // 0016 JMP #0018 - 0x58140005, // 0017 LDCONST R5 K5 - 0x8C180106, // 0018 GETMET R6 R0 K6 - 0x60200018, // 0019 GETGBL R8 G24 - 0x58240007, // 001A LDCONST R9 K7 - 0x5C280200, // 001B MOVE R10 R1 - 0x5C2C0400, // 001C MOVE R11 R2 - 0x7C200600, // 001D CALL R8 3 - 0x7C180400, // 001E CALL R6 2 - 0xA8040001, // 001F EXBLK 1 1 - 0x70020003, // 0020 JMP #0025 - 0xAC100002, // 0021 CATCH R4 0 2 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x80000000, // 0025 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* 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(pos), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tokens), - }), - be_str_weak(peek), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x14040202, // 0005 LT R1 R1 R2 - 0x78060004, // 0006 JMPF R1 #000C - 0x88040100, // 0007 GETMBR R1 R0 K0 - 0x00040301, // 0008 ADD R1 R1 K1 - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x94040401, // 000A GETIDX R1 R2 R1 - 0x70020000, // 000B JMP #000D - 0x4C040000, // 000C LDNIL R1 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* 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(process_multiplicative_expression_raw), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(PLUS), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_additive_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x740A001F, // 0004 JMPT R2 #0025 - 0x8C080102, // 0005 GETMET R2 R0 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0018, // 0009 JMPF R3 #0023 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0xB8120800, // 000B GETNGBL R4 K4 - 0x88100905, // 000C GETMBR R4 R4 K5 - 0x88100906, // 000D GETMBR R4 R4 K6 - 0x1C0C0604, // 000E EQ R3 R3 R4 - 0x740E0005, // 000F JMPT R3 #0016 - 0x880C0503, // 0010 GETMBR R3 R2 K3 - 0xB8120800, // 0011 GETNGBL R4 K4 - 0x88100905, // 0012 GETMBR R4 R4 K5 - 0x88100907, // 0013 GETMBR R4 R4 K7 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x780E000C, // 0015 JMPF R3 #0023 - 0x880C0508, // 0016 GETMBR R3 R2 K8 - 0x8C100109, // 0017 GETMET R4 R0 K9 - 0x7C100200, // 0018 CALL R4 1 - 0x8C100100, // 0019 GETMET R4 R0 K0 - 0x7C100200, // 001A CALL R4 1 - 0x60140018, // 001B GETGBL R5 G24 - 0x5818000A, // 001C LDCONST R6 K10 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x5C200600, // 001E MOVE R8 R3 - 0x5C240800, // 001F MOVE R9 R4 - 0x7C140800, // 0020 CALL R5 4 - 0x5C040A00, // 0021 MOVE R1 R5 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0x7001FFDC, // 0024 JMP #0002 - 0x80040200, // 0025 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -4876,34 +4819,38 @@ be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ /* K3 */ be_nested_str_weak(animation_dsl), /* K4 */ be_nested_str_weak(Token), /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(EOF), + /* K6 */ be_nested_str_weak(COMMENT), /* K7 */ be_nested_str_weak(next), }), - be_str_weak(skip_statement), + be_str_weak(skip_whitespace), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x74060011, // 0002 JMPT R1 #0015 + 0x74060015, // 0002 JMPT R1 #0019 0x8C040101, // 0003 GETMET R1 R0 K1 0x7C040200, // 0004 CALL R1 1 - 0x88080302, // 0005 GETMBR R2 R1 K2 - 0xB80E0600, // 0006 GETNGBL R3 K3 - 0x880C0704, // 0007 GETMBR R3 R3 K4 - 0x880C0705, // 0008 GETMBR R3 R3 K5 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0005, // 000A JMPT R2 #0011 - 0x88080302, // 000B GETMBR R2 R1 K2 - 0xB80E0600, // 000C GETNGBL R3 K3 - 0x880C0704, // 000D GETMBR R3 R3 K4 - 0x880C0706, // 000E GETMBR R3 R3 K6 - 0x1C080403, // 000F EQ R2 R2 R3 - 0x780A0000, // 0010 JMPF R2 #0012 - 0x70020002, // 0011 JMP #0015 - 0x8C080107, // 0012 GETMET R2 R0 K7 - 0x7C080200, // 0013 CALL R2 1 - 0x7001FFEA, // 0014 JMP #0000 - 0x80000000, // 0015 RET 0 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000E, // 0007 JMPF R2 #0017 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x740A0005, // 000D JMPT R2 #0014 + 0x88080302, // 000E GETMBR R2 R1 K2 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x880C0704, // 0010 GETMBR R3 R3 K4 + 0x880C0706, // 0011 GETMBR R3 R3 K6 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080107, // 0014 GETMET R2 R0 K7 + 0x7C080200, // 0015 CALL R2 1 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x80000000, // 0019 RET 0 }) ) ); @@ -4911,154 +4858,11 @@ be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ /******************************************************************** -** Solidified function: process_nested_function_call +** Solidified function: _process_named_arguments_for_color_provider ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments_for_expression), - /* K14 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(animation), - /* K16 */ be_nested_str_weak(is_user_function), - /* K17 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K18 */ be_nested_str_weak(self_X2Eengine), - /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K20 */ be_nested_str_weak(_validate_animation_factory_exists), - /* K21 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K22 */ be_nested_str_weak(skip_function_arguments), - /* K23 */ be_nested_str_weak(temp__X25s__X25s), - /* K24 */ be_nested_str_weak(pos), - /* K25 */ be_nested_str_weak(add), - /* K26 */ be_nested_str_weak(var_X20_X25s_X20_X3D_X20animation_X2E_X25s_X28engine_X29), - /* K27 */ be_nested_str_weak(_process_named_arguments_for_animation), - }), - be_str_weak(process_nested_function_call), - &be_const_str_solidified, - ( &(const binstruction[91]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0203, // 0004 NE R3 R1 R3 - 0x780E000F, // 0005 JMPF R3 #0016 - 0x880C0302, // 0006 GETMBR R3 R1 K2 - 0xB8120600, // 0007 GETNGBL R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x88100905, // 0009 GETMBR R4 R4 K5 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x740E0005, // 000B JMPT R3 #0012 - 0x880C0302, // 000C GETMBR R3 R1 K2 - 0xB8120600, // 000D GETNGBL R4 K3 - 0x88100904, // 000E GETMBR R4 R4 K4 - 0x88100906, // 000F GETMBR R4 R4 K6 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x88080307, // 0012 GETMBR R2 R1 K7 - 0x8C0C0108, // 0013 GETMET R3 R0 K8 - 0x7C0C0200, // 0014 CALL R3 1 - 0x70020003, // 0015 JMP #001A - 0x8C0C0109, // 0016 GETMET R3 R0 K9 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x5C140400, // 001B MOVE R5 R2 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E0007, // 001D JMPF R3 #0026 - 0x8C0C010D, // 001E GETMET R3 R0 K13 - 0x7C0C0200, // 001F CALL R3 1 - 0x60100018, // 0020 GETGBL R4 G24 - 0x5814000E, // 0021 LDCONST R5 K14 - 0x5C180400, // 0022 MOVE R6 R2 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C100600, // 0024 CALL R4 3 - 0x80040800, // 0025 RET 1 R4 - 0xB80E1E00, // 0026 GETNGBL R3 K15 - 0x8C0C0710, // 0027 GETMET R3 R3 K16 - 0x5C140400, // 0028 MOVE R5 R2 - 0x7C0C0400, // 0029 CALL R3 2 - 0x780E0010, // 002A JMPF R3 #003C - 0x8C0C010D, // 002B GETMET R3 R0 K13 - 0x7C0C0200, // 002C CALL R3 1 - 0x20100701, // 002D NE R4 R3 K1 - 0x78120004, // 002E JMPF R4 #0034 - 0x60100018, // 002F GETGBL R4 G24 - 0x58140011, // 0030 LDCONST R5 K17 - 0x5C180600, // 0031 MOVE R6 R3 - 0x7C100400, // 0032 CALL R4 2 - 0x70020000, // 0033 JMP #0035 - 0x58100012, // 0034 LDCONST R4 K18 - 0x60140018, // 0035 GETGBL R5 G24 - 0x58180013, // 0036 LDCONST R6 K19 - 0x5C1C0400, // 0037 MOVE R7 R2 - 0x5C200800, // 0038 MOVE R8 R4 - 0x7C140600, // 0039 CALL R5 3 - 0x80040A00, // 003A RET 1 R5 - 0x7002001D, // 003B JMP #005A - 0x8C0C0114, // 003C GETMET R3 R0 K20 - 0x5C140400, // 003D MOVE R5 R2 - 0x7C0C0400, // 003E CALL R3 2 - 0x740E0008, // 003F JMPT R3 #0049 - 0x8C0C0109, // 0040 GETMET R3 R0 K9 - 0x60140018, // 0041 GETGBL R5 G24 - 0x58180015, // 0042 LDCONST R6 K21 - 0x5C1C0400, // 0043 MOVE R7 R2 - 0x7C140400, // 0044 CALL R5 2 - 0x7C0C0400, // 0045 CALL R3 2 - 0x8C0C0116, // 0046 GETMET R3 R0 K22 - 0x7C0C0200, // 0047 CALL R3 1 - 0x80061600, // 0048 RET 1 K11 - 0x600C0018, // 0049 GETGBL R3 G24 - 0x58100017, // 004A LDCONST R4 K23 - 0x5C140400, // 004B MOVE R5 R2 - 0x88180118, // 004C GETMBR R6 R0 K24 - 0x7C0C0600, // 004D CALL R3 3 - 0x8C100119, // 004E GETMET R4 R0 K25 - 0x60180018, // 004F GETGBL R6 G24 - 0x581C001A, // 0050 LDCONST R7 K26 - 0x5C200600, // 0051 MOVE R8 R3 - 0x5C240400, // 0052 MOVE R9 R2 - 0x7C180600, // 0053 CALL R6 3 - 0x7C100400, // 0054 CALL R4 2 - 0x8C10011B, // 0055 GETMET R4 R0 K27 - 0x5C180600, // 0056 MOVE R6 R3 - 0x5C1C0400, // 0057 MOVE R7 R2 - 0x7C100600, // 0058 CALL R4 3 - 0x80040600, // 0059 RET 1 R3 - 0x80000000, // 005A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: validate_user_name -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ - be_nested_proto( - 13, /* nstack */ + 7, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5066,72 +4870,17 @@ be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(Token), - /* K2 */ be_nested_str_weak(color_names), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(statement_keywords), - /* K7 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_generic), }), - be_str_weak(validate_user_name), + be_str_weak(_process_named_arguments_for_color_provider), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x600C0010, // 0000 GETGBL R3 G16 - 0xB8120000, // 0001 GETNGBL R4 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 - 0x88100902, // 0003 GETMBR R4 R4 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA802000F, // 0005 EXBLK 0 #0016 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x1C140204, // 0008 EQ R5 R1 R4 - 0x7816000A, // 0009 JMPF R5 #0015 - 0x8C140103, // 000A GETMET R5 R0 K3 - 0x601C0018, // 000B GETGBL R7 G24 - 0x58200004, // 000C LDCONST R8 K4 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280200, // 000E MOVE R10 R1 - 0x5C2C0200, // 000F MOVE R11 R1 - 0x7C1C0800, // 0010 CALL R7 4 - 0x7C140400, // 0011 CALL R5 2 - 0x50140000, // 0012 LDBOOL R5 0 0 - 0xA8040001, // 0013 EXBLK 1 1 - 0x80040A00, // 0014 RET 1 R5 - 0x7001FFEF, // 0015 JMP #0006 - 0x580C0005, // 0016 LDCONST R3 K5 - 0xAC0C0200, // 0017 CATCH R3 1 0 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x600C0010, // 0019 GETGBL R3 G16 - 0xB8120000, // 001A GETNGBL R4 K0 - 0x88100901, // 001B GETMBR R4 R4 K1 - 0x88100906, // 001C GETMBR R4 R4 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x1C140204, // 0021 EQ R5 R1 R4 - 0x7816000B, // 0022 JMPF R5 #002F - 0x8C140103, // 0023 GETMET R5 R0 K3 - 0x601C0018, // 0024 GETGBL R7 G24 - 0x58200007, // 0025 LDCONST R8 K7 - 0x5C240200, // 0026 MOVE R9 R1 - 0x5C280400, // 0027 MOVE R10 R2 - 0x5C2C0200, // 0028 MOVE R11 R1 - 0x5C300200, // 0029 MOVE R12 R1 - 0x7C1C0A00, // 002A CALL R7 5 - 0x7C140400, // 002B CALL R5 2 - 0x50140000, // 002C LDBOOL R5 0 0 - 0xA8040001, // 002D EXBLK 1 1 - 0x80040A00, // 002E RET 1 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0005, // 0030 LDCONST R3 K5 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x500C0200, // 0033 LDBOOL R3 1 0 - 0x80040600, // 0034 RET 1 R3 + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80000000, // 0004 RET 0 }) ) ); @@ -5139,11 +4888,11 @@ be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ /******************************************************************** -** Solidified function: next +** Solidified function: process_array_literal ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_next, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ be_nested_proto( - 4, /* nstack */ + 6, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5151,326 +4900,220 @@ be_local_closure(class_SimpleDSLTranspiler_next, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_const_int(1), - }), - be_str_weak(next), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x00040302, // 0007 ADD R1 R1 K2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_named_arguments_for_variable -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ - be_nested_proto( - 16, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(temp_), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(split), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_const_int(2), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(_create_animation_instance_for_validation), - /* K11 */ be_nested_str_weak(at_end), - /* K12 */ be_nested_str_weak(check_right_paren), - /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K14 */ be_nested_str_weak(expect_identifier), - /* K15 */ be_nested_str_weak(_validate_single_parameter), - /* K16 */ be_nested_str_weak(expect_assign), - /* K17 */ be_nested_str_weak(process_value), - /* K18 */ be_nested_str_weak(argument), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K22 */ be_nested_str_weak(current), - /* K23 */ be_nested_str_weak(type), - /* K24 */ be_nested_str_weak(animation_dsl), - /* K25 */ be_nested_str_weak(Token), - /* K26 */ be_nested_str_weak(COMMENT), - /* K27 */ be_nested_str_weak(next), - /* K28 */ be_nested_str_weak(COMMA), - /* K29 */ be_nested_str_weak(NEWLINE), - /* K30 */ be_nested_str_weak(error), - /* K31 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K32 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(process_named_arguments_for_variable), - &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0xA40E0400, // 0003 IMPORT R3 K2 - 0x8C100703, // 0004 GETMET R4 R3 K3 - 0x5C180200, // 0005 MOVE R6 R1 - 0x581C0004, // 0006 LDCONST R7 K4 - 0x7C100600, // 0007 CALL R4 3 - 0x1C100905, // 0008 EQ R4 R4 K5 - 0x78120009, // 0009 JMPF R4 #0014 - 0x8C100706, // 000A GETMET R4 R3 K6 - 0x5C180200, // 000B MOVE R6 R1 - 0x581C0007, // 000C LDCONST R7 K7 - 0x7C100600, // 000D CALL R4 3 - 0x6014000C, // 000E GETGBL R5 G12 - 0x5C180800, // 000F MOVE R6 R4 - 0x7C140200, // 0010 CALL R5 1 - 0x28140B08, // 0011 GE R5 R5 K8 - 0x78160000, // 0012 JMPF R5 #0014 - 0x94080909, // 0013 GETIDX R2 R4 K9 - 0x4C100000, // 0014 LDNIL R4 - 0x20140501, // 0015 NE R5 R2 K1 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C14010A, // 0017 GETMET R5 R0 K10 - 0x5C1C0400, // 0018 MOVE R7 R2 - 0x7C140400, // 0019 CALL R5 2 - 0x5C100A00, // 001A MOVE R4 R5 - 0x8C14010B, // 001B GETMET R5 R0 K11 - 0x7C140200, // 001C CALL R5 1 - 0x74160063, // 001D JMPT R5 #0082 - 0x8C14010C, // 001E GETMET R5 R0 K12 - 0x7C140200, // 001F CALL R5 1 - 0x74160060, // 0020 JMPT R5 #0082 - 0x8C14010D, // 0021 GETMET R5 R0 K13 - 0x7C140200, // 0022 CALL R5 1 - 0x8C14010C, // 0023 GETMET R5 R0 K12 - 0x7C140200, // 0024 CALL R5 1 - 0x78160000, // 0025 JMPF R5 #0027 - 0x7002005A, // 0026 JMP #0082 - 0x8C14010E, // 0027 GETMET R5 R0 K14 - 0x7C140200, // 0028 CALL R5 1 - 0x4C180000, // 0029 LDNIL R6 - 0x20180806, // 002A NE R6 R4 R6 - 0x781A0006, // 002B JMPF R6 #0033 - 0x20180501, // 002C NE R6 R2 K1 - 0x781A0004, // 002D JMPF R6 #0033 - 0x8C18010F, // 002E GETMET R6 R0 K15 - 0x5C200400, // 002F MOVE R8 R2 - 0x5C240A00, // 0030 MOVE R9 R5 - 0x5C280800, // 0031 MOVE R10 R4 - 0x7C180800, // 0032 CALL R6 4 - 0x8C180110, // 0033 GETMET R6 R0 K16 - 0x7C180200, // 0034 CALL R6 1 - 0x8C180111, // 0035 GETMET R6 R0 K17 - 0x58200012, // 0036 LDCONST R8 K18 - 0x7C180400, // 0037 CALL R6 2 - 0x8C1C0113, // 0038 GETMET R7 R0 K19 - 0x7C1C0200, // 0039 CALL R7 1 - 0x8C200114, // 003A GETMET R8 R0 K20 - 0x60280018, // 003B GETGBL R10 G24 - 0x582C0015, // 003C LDCONST R11 K21 - 0x5C300200, // 003D MOVE R12 R1 - 0x5C340A00, // 003E MOVE R13 R5 - 0x5C380C00, // 003F MOVE R14 R6 - 0x5C3C0E00, // 0040 MOVE R15 R7 - 0x7C280A00, // 0041 CALL R10 5 - 0x7C200400, // 0042 CALL R8 2 - 0x8C20010B, // 0043 GETMET R8 R0 K11 - 0x7C200200, // 0044 CALL R8 1 - 0x7422000F, // 0045 JMPT R8 #0056 - 0x8C200116, // 0046 GETMET R8 R0 K22 - 0x7C200200, // 0047 CALL R8 1 - 0x4C240000, // 0048 LDNIL R9 - 0x20241009, // 0049 NE R9 R8 R9 - 0x78260008, // 004A JMPF R9 #0054 - 0x88241117, // 004B GETMBR R9 R8 K23 - 0xB82A3000, // 004C GETNGBL R10 K24 - 0x88281519, // 004D GETMBR R10 R10 K25 - 0x8828151A, // 004E GETMBR R10 R10 K26 - 0x1C24120A, // 004F EQ R9 R9 R10 - 0x78260002, // 0050 JMPF R9 #0054 - 0x8C24011B, // 0051 GETMET R9 R0 K27 - 0x7C240200, // 0052 CALL R9 1 - 0x70020000, // 0053 JMP #0055 - 0x70020000, // 0054 JMP #0056 - 0x7001FFEC, // 0055 JMP #0043 - 0x8C200116, // 0056 GETMET R8 R0 K22 - 0x7C200200, // 0057 CALL R8 1 - 0x4C240000, // 0058 LDNIL R9 - 0x20201009, // 0059 NE R8 R8 R9 - 0x7822000C, // 005A JMPF R8 #0068 - 0x8C200116, // 005B GETMET R8 R0 K22 - 0x7C200200, // 005C CALL R8 1 - 0x88201117, // 005D GETMBR R8 R8 K23 - 0xB8263000, // 005E GETNGBL R9 K24 - 0x88241319, // 005F GETMBR R9 R9 K25 - 0x8824131C, // 0060 GETMBR R9 R9 K28 - 0x1C201009, // 0061 EQ R8 R8 R9 - 0x78220004, // 0062 JMPF R8 #0068 - 0x8C20011B, // 0063 GETMET R8 R0 K27 - 0x7C200200, // 0064 CALL R8 1 - 0x8C20010D, // 0065 GETMET R8 R0 K13 - 0x7C200200, // 0066 CALL R8 1 - 0x70020018, // 0067 JMP #0081 - 0x8C200116, // 0068 GETMET R8 R0 K22 - 0x7C200200, // 0069 CALL R8 1 - 0x4C240000, // 006A LDNIL R9 - 0x20201009, // 006B NE R8 R8 R9 - 0x7822000C, // 006C JMPF R8 #007A - 0x8C200116, // 006D GETMET R8 R0 K22 - 0x7C200200, // 006E CALL R8 1 - 0x88201117, // 006F GETMBR R8 R8 K23 - 0xB8263000, // 0070 GETNGBL R9 K24 - 0x88241319, // 0071 GETMBR R9 R9 K25 - 0x8824131D, // 0072 GETMBR R9 R9 K29 - 0x1C201009, // 0073 EQ R8 R8 R9 - 0x78220004, // 0074 JMPF R8 #007A - 0x8C20011B, // 0075 GETMET R8 R0 K27 - 0x7C200200, // 0076 CALL R8 1 - 0x8C20010D, // 0077 GETMET R8 R0 K13 - 0x7C200200, // 0078 CALL R8 1 - 0x70020006, // 0079 JMP #0081 - 0x8C20010C, // 007A GETMET R8 R0 K12 - 0x7C200200, // 007B CALL R8 1 - 0x74220003, // 007C JMPT R8 #0081 - 0x8C20011E, // 007D GETMET R8 R0 K30 - 0x5828001F, // 007E LDCONST R10 K31 - 0x7C200400, // 007F CALL R8 2 - 0x70020000, // 0080 JMP #0082 - 0x7001FF98, // 0081 JMP #001B - 0x8C140120, // 0082 GETMET R5 R0 K32 - 0x7C140200, // 0083 CALL R5 1 - 0x80000000, // 0084 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments), - /* K14 */ be_nested_str_weak(_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(animation), - /* K16 */ be_nested_str_weak(is_user_function), - /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K18 */ be_nested_str_weak(engine), - /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K20 */ be_nested_str_weak(animation_X2E_X25s_X28_X25s_X29), + /* K0 */ be_nested_str_weak(expect_left_bracket), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_bracket), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(array_element), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(COMMA), + /* K11 */ be_nested_str_weak(next), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), + /* K14 */ be_nested_str_weak(expect_right_bracket), + /* K15 */ be_nested_str_weak(_X5B), + /* K16 */ be_const_int(0), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(_X2C_X20), + /* K19 */ be_nested_str_weak(stop_iteration), + /* K20 */ be_nested_str_weak(_X5D), }), - be_str_weak(process_function_call), + be_str_weak(process_array_literal), &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x4C100000, // 0003 LDNIL R4 - 0x20100404, // 0004 NE R4 R2 R4 - 0x7812000F, // 0005 JMPF R4 #0016 - 0x88100502, // 0006 GETMBR R4 R2 K2 - 0xB8160600, // 0007 GETNGBL R5 K3 - 0x88140B04, // 0008 GETMBR R5 R5 K4 - 0x88140B05, // 0009 GETMBR R5 R5 K5 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x74120005, // 000B JMPT R4 #0012 - 0x88100502, // 000C GETMBR R4 R2 K2 - 0xB8160600, // 000D GETNGBL R5 K3 - 0x88140B04, // 000E GETMBR R5 R5 K4 - 0x88140B06, // 000F GETMBR R5 R5 K6 - 0x1C100805, // 0010 EQ R4 R4 R5 - 0x78120003, // 0011 JMPF R4 #0016 - 0x880C0507, // 0012 GETMBR R3 R2 K7 - 0x8C100108, // 0013 GETMET R4 R0 K8 - 0x7C100200, // 0014 CALL R4 1 - 0x70020003, // 0015 JMP #001A - 0x8C100109, // 0016 GETMET R4 R0 K9 - 0x5818000A, // 0017 LDCONST R6 K10 - 0x7C100400, // 0018 CALL R4 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C10010C, // 001A GETMET R4 R0 K12 - 0x5C180600, // 001B MOVE R6 R3 - 0x7C100400, // 001C CALL R4 2 - 0x78120007, // 001D JMPF R4 #0026 - 0x8C10010D, // 001E GETMET R4 R0 K13 - 0x7C100200, // 001F CALL R4 1 - 0x60140018, // 0020 GETGBL R5 G24 - 0x5818000E, // 0021 LDCONST R6 K14 - 0x5C1C0600, // 0022 MOVE R7 R3 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C140600, // 0024 CALL R5 3 - 0x80040A00, // 0025 RET 1 R5 - 0x8C10010D, // 0026 GETMET R4 R0 K13 - 0x7C100200, // 0027 CALL R4 1 - 0xB8161E00, // 0028 GETNGBL R5 K15 - 0x8C140B10, // 0029 GETMET R5 R5 K16 - 0x5C1C0600, // 002A MOVE R7 R3 - 0x7C140400, // 002B CALL R5 2 - 0x7816000E, // 002C JMPF R5 #003C - 0x20140901, // 002D NE R5 R4 K1 - 0x78160004, // 002E JMPF R5 #0034 - 0x60140018, // 002F GETGBL R5 G24 - 0x58180011, // 0030 LDCONST R6 K17 - 0x5C1C0800, // 0031 MOVE R7 R4 - 0x7C140400, // 0032 CALL R5 2 - 0x70020000, // 0033 JMP #0035 - 0x58140012, // 0034 LDCONST R5 K18 - 0x60180018, // 0035 GETGBL R6 G24 - 0x581C0013, // 0036 LDCONST R7 K19 - 0x5C200600, // 0037 MOVE R8 R3 - 0x5C240A00, // 0038 MOVE R9 R5 - 0x7C180600, // 0039 CALL R6 3 - 0x80040C00, // 003A RET 1 R6 - 0x70020005, // 003B JMP #0042 - 0x60140018, // 003C GETGBL R5 G24 - 0x58180014, // 003D LDCONST R6 K20 - 0x5C1C0600, // 003E MOVE R7 R3 - 0x5C200800, // 003F MOVE R8 R4 - 0x7C140600, // 0040 CALL R5 3 - 0x80040A00, // 0041 RET 1 R5 - 0x80000000, // 0042 RET 0 + ( &(const binstruction[64]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A0020, // 0006 JMPT R2 #0028 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A001D, // 0009 JMPT R2 #0028 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x7C080400, // 000C CALL R2 2 + 0x8C0C0305, // 000D GETMET R3 R1 K5 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x8C0C0106, // 0010 GETMET R3 R0 K6 + 0x7C0C0200, // 0011 CALL R3 1 + 0x4C100000, // 0012 LDNIL R4 + 0x200C0604, // 0013 NE R3 R3 R4 + 0x780E000A, // 0014 JMPF R3 #0020 + 0x8C0C0106, // 0015 GETMET R3 R0 K6 + 0x7C0C0200, // 0016 CALL R3 1 + 0x880C0707, // 0017 GETMBR R3 R3 K7 + 0xB8121000, // 0018 GETNGBL R4 K8 + 0x88100909, // 0019 GETMBR R4 R4 K9 + 0x8810090A, // 001A GETMBR R4 R4 K10 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0002, // 001C JMPF R3 #0020 + 0x8C0C010B, // 001D GETMET R3 R0 K11 + 0x7C0C0200, // 001E CALL R3 1 + 0x70020006, // 001F JMP #0027 + 0x8C0C0102, // 0020 GETMET R3 R0 K2 + 0x7C0C0200, // 0021 CALL R3 1 + 0x740E0003, // 0022 JMPT R3 #0027 + 0x8C0C010C, // 0023 GETMET R3 R0 K12 + 0x5814000D, // 0024 LDCONST R5 K13 + 0x7C0C0400, // 0025 CALL R3 2 + 0x70020000, // 0026 JMP #0028 + 0x7001FFDB, // 0027 JMP #0004 + 0x8C08010E, // 0028 GETMET R2 R0 K14 + 0x7C080200, // 0029 CALL R2 1 + 0x5808000F, // 002A LDCONST R2 K15 + 0x600C0010, // 002B GETGBL R3 G16 + 0x6010000C, // 002C GETGBL R4 G12 + 0x5C140200, // 002D MOVE R5 R1 + 0x7C100200, // 002E CALL R4 1 + 0x04100911, // 002F SUB R4 R4 K17 + 0x40122004, // 0030 CONNECT R4 K16 R4 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020007, // 0032 EXBLK 0 #003B + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x24140910, // 0035 GT R5 R4 K16 + 0x78160000, // 0036 JMPF R5 #0038 + 0x00080512, // 0037 ADD R2 R2 K18 + 0x94140204, // 0038 GETIDX R5 R1 R4 + 0x00080405, // 0039 ADD R2 R2 R5 + 0x7001FFF7, // 003A JMP #0033 + 0x580C0013, // 003B LDCONST R3 K19 + 0xAC0C0200, // 003C CATCH R3 1 0 + 0xB0080000, // 003D RAISE 2 R0 R0 + 0x00080514, // 003E ADD R2 R2 K20 + 0x80040400, // 003F RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _is_simple_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* 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(strip_length), + /* K1 */ be_nested_str_weak(static_value), + /* K2 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_is_simple_function_call), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x600C0010, // 0004 GETGBL R3 G16 + 0x5C100400, // 0005 MOVE R4 R2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020007, // 0007 EXBLK 0 #0010 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140204, // 000A EQ R5 R1 R4 + 0x78160002, // 000B JMPF R5 #000F + 0x50140200, // 000C LDBOOL R5 1 0 + 0xA8040001, // 000D EXBLK 1 1 + 0x80040A00, // 000E RET 1 R5 + 0x7001FFF7, // 000F JMP #0008 + 0x580C0002, // 0010 LDCONST R3 K2 + 0xAC0C0200, // 0011 CATCH R3 1 0 + 0xB0080000, // 0012 RAISE 2 R0 R0 + 0x500C0000, // 0013 LDBOOL R3 0 0 + 0x80040600, // 0014 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* 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(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(at_end), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(skip_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060023, // 0004 JMPF R1 #0029 + 0x8C040100, // 0005 GETMET R1 R0 K0 + 0x7C040200, // 0006 CALL R1 1 + 0x88040301, // 0007 GETMBR R1 R1 K1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x88080503, // 0009 GETMBR R2 R2 K3 + 0x88080504, // 000A GETMBR R2 R2 K4 + 0x1C040202, // 000B EQ R1 R1 R2 + 0x7806001B, // 000C JMPF R1 #0029 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x58040006, // 000F LDCONST R1 K6 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x7C080200, // 0011 CALL R2 1 + 0x740A0015, // 0012 JMPT R2 #0029 + 0x24080308, // 0013 GT R2 R1 K8 + 0x780A0013, // 0014 JMPF R2 #0029 + 0x8C080100, // 0015 GETMET R2 R0 K0 + 0x7C080200, // 0016 CALL R2 1 + 0x880C0501, // 0017 GETMBR R3 R2 K1 + 0xB8120400, // 0018 GETNGBL R4 K2 + 0x88100903, // 0019 GETMBR R4 R4 K3 + 0x88100904, // 001A GETMBR R4 R4 K4 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0001, // 001C JMPF R3 #001F + 0x00040306, // 001D ADD R1 R1 K6 + 0x70020006, // 001E JMP #0026 + 0x880C0501, // 001F GETMBR R3 R2 K1 + 0xB8120400, // 0020 GETNGBL R4 K2 + 0x88100903, // 0021 GETMBR R4 R4 K3 + 0x88100909, // 0022 GETMBR R4 R4 K9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0000, // 0024 JMPF R3 #0026 + 0x04040306, // 0025 SUB R1 R1 K6 + 0x8C0C0105, // 0026 GETMET R3 R0 K5 + 0x7C0C0200, // 0027 CALL R3 1 + 0x7001FFE6, // 0028 JMP #0010 + 0x80000000, // 0029 RET 0 }) ) ); @@ -5528,91 +5171,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ /******************************************************************** -** Solidified function: get_errors +** Solidified function: _validate_color_provider_factory_exists ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* 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(errors), - }), - be_str_weak(get_errors), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: at_end -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* 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(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(EOF), - }), - be_str_weak(at_end), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x28040202, // 0004 GE R1 R1 R2 - 0x7406000D, // 0005 JMPT R1 #0014 - 0x8C040102, // 0006 GETMET R1 R0 K2 - 0x7C040200, // 0007 CALL R1 1 - 0x4C080000, // 0008 LDNIL R2 - 0x20040202, // 0009 NE R1 R1 R2 - 0x78060007, // 000A JMPF R1 #0013 - 0x8C040102, // 000B GETMET R1 R0 K2 - 0x7C040200, // 000C CALL R1 1 - 0x88040303, // 000D GETMBR R1 R1 K3 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x88080505, // 000F GETMBR R2 R2 K5 - 0x88080506, // 0010 GETMBR R2 R2 K6 - 0x1C040202, // 0011 EQ R1 R1 R2 - 0x74060000, // 0012 JMPT R1 #0014 - 0x50040001, // 0013 LDBOOL R1 0 1 - 0x50040200, // 0014 LDBOOL R1 1 0 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ - be_nested_proto( - 17, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5620,137 +5183,20 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(startswith), - /* K2 */ be_nested_str_weak(0x), - /* K3 */ be_nested_str_weak(0xFF_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(_X23), - /* K7 */ be_nested_str_weak(0x_X25s), - /* K8 */ be_const_int(1), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), - /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), - /* K12 */ be_nested_str_weak(animation_dsl), - /* K13 */ be_nested_str_weak(is_color_name), - /* K14 */ be_nested_str_weak(get_named_color_value), - /* K15 */ be_nested_str_weak(0xFFFFFFFF), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(color_provider), }), - be_str_weak(convert_color), + be_str_weak(_validate_color_provider_factory_exists), &be_const_str_solidified, - ( &(const binstruction[110]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x780E0013, // 0005 JMPF R3 #001A - 0x600C000C, // 0006 GETGBL R3 G12 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x54120009, // 0009 LDINT R4 10 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x780E0001, // 000B JMPF R3 #000E - 0x80040200, // 000C RET 1 R1 - 0x7002000B, // 000D JMP #001A - 0x600C000C, // 000E GETGBL R3 G12 - 0x5C100200, // 000F MOVE R4 R1 - 0x7C0C0200, // 0010 CALL R3 1 - 0x54120007, // 0011 LDINT R4 8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0005, // 0013 JMPF R3 #001A - 0x600C0018, // 0014 GETGBL R3 G24 - 0x58100003, // 0015 LDCONST R4 K3 - 0x40160905, // 0016 CONNECT R5 K4 K5 - 0x94140205, // 0017 GETIDX R5 R1 R5 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80040600, // 0019 RET 1 R3 - 0x8C0C0501, // 001A GETMET R3 R2 K1 - 0x5C140200, // 001B MOVE R5 R1 - 0x58180006, // 001C LDCONST R6 K6 - 0x7C0C0600, // 001D CALL R3 3 - 0x780E0044, // 001E JMPF R3 #0064 - 0x600C000C, // 001F GETGBL R3 G12 - 0x5C100200, // 0020 MOVE R4 R1 - 0x7C0C0200, // 0021 CALL R3 1 - 0x54120008, // 0022 LDINT R4 9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0006, // 0024 JMPF R3 #002C - 0x600C0018, // 0025 GETGBL R3 G24 - 0x58100007, // 0026 LDCONST R4 K7 - 0x40161105, // 0027 CONNECT R5 K8 K5 - 0x94140205, // 0028 GETIDX R5 R1 R5 - 0x7C0C0400, // 0029 CALL R3 2 - 0x80040600, // 002A RET 1 R3 - 0x70020037, // 002B JMP #0064 - 0x600C000C, // 002C GETGBL R3 G12 - 0x5C100200, // 002D MOVE R4 R1 - 0x7C0C0200, // 002E CALL R3 1 - 0x54120006, // 002F LDINT R4 7 - 0x1C0C0604, // 0030 EQ R3 R3 R4 - 0x780E0006, // 0031 JMPF R3 #0039 - 0x600C0018, // 0032 GETGBL R3 G24 - 0x58100003, // 0033 LDCONST R4 K3 - 0x40161105, // 0034 CONNECT R5 K8 K5 - 0x94140205, // 0035 GETIDX R5 R1 R5 - 0x7C0C0400, // 0036 CALL R3 2 - 0x80040600, // 0037 RET 1 R3 - 0x7002002A, // 0038 JMP #0064 - 0x600C000C, // 0039 GETGBL R3 G12 - 0x5C100200, // 003A MOVE R4 R1 - 0x7C0C0200, // 003B CALL R3 1 - 0x54120004, // 003C LDINT R4 5 - 0x1C0C0604, // 003D EQ R3 R3 R4 - 0x780E0011, // 003E JMPF R3 #0051 - 0x940C0308, // 003F GETIDX R3 R1 K8 - 0x94100304, // 0040 GETIDX R4 R1 K4 - 0x94140309, // 0041 GETIDX R5 R1 K9 - 0x541A0003, // 0042 LDINT R6 4 - 0x94180206, // 0043 GETIDX R6 R1 R6 - 0x601C0018, // 0044 GETGBL R7 G24 - 0x5820000A, // 0045 LDCONST R8 K10 - 0x5C240600, // 0046 MOVE R9 R3 - 0x5C280600, // 0047 MOVE R10 R3 - 0x5C2C0800, // 0048 MOVE R11 R4 - 0x5C300800, // 0049 MOVE R12 R4 - 0x5C340A00, // 004A MOVE R13 R5 - 0x5C380A00, // 004B MOVE R14 R5 - 0x5C3C0C00, // 004C MOVE R15 R6 - 0x5C400C00, // 004D MOVE R16 R6 - 0x7C1C1200, // 004E CALL R7 9 - 0x80040E00, // 004F RET 1 R7 - 0x70020012, // 0050 JMP #0064 - 0x600C000C, // 0051 GETGBL R3 G12 - 0x5C100200, // 0052 MOVE R4 R1 - 0x7C0C0200, // 0053 CALL R3 1 - 0x54120003, // 0054 LDINT R4 4 - 0x1C0C0604, // 0055 EQ R3 R3 R4 - 0x780E000C, // 0056 JMPF R3 #0064 - 0x940C0308, // 0057 GETIDX R3 R1 K8 - 0x94100304, // 0058 GETIDX R4 R1 K4 - 0x94140309, // 0059 GETIDX R5 R1 K9 - 0x60180018, // 005A GETGBL R6 G24 - 0x581C000B, // 005B LDCONST R7 K11 - 0x5C200600, // 005C MOVE R8 R3 - 0x5C240600, // 005D MOVE R9 R3 - 0x5C280800, // 005E MOVE R10 R4 - 0x5C2C0800, // 005F MOVE R11 R4 - 0x5C300A00, // 0060 MOVE R12 R5 - 0x5C340A00, // 0061 MOVE R13 R5 - 0x7C180E00, // 0062 CALL R6 7 - 0x80040C00, // 0063 RET 1 R6 - 0xB80E1800, // 0064 GETNGBL R3 K12 - 0x8C0C070D, // 0065 GETMET R3 R3 K13 - 0x5C140200, // 0066 MOVE R5 R1 - 0x7C0C0400, // 0067 CALL R3 2 - 0x780E0003, // 0068 JMPF R3 #006D - 0x8C0C010E, // 0069 GETMET R3 R0 K14 - 0x5C140200, // 006A MOVE R5 R1 - 0x7C0C0400, // 006B CALL R3 2 - 0x80040600, // 006C RET 1 R3 - 0x80061E00, // 006D RET 1 K15 + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0xB8160200, // 0002 GETNGBL R5 K1 + 0x88140B02, // 0003 GETMBR R5 R5 K2 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 }) ) ); @@ -5758,39 +5204,9 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ /******************************************************************** -** Solidified function: _process_named_arguments_for_color_provider +** Solidified function: process_additive_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* 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(_process_named_arguments_generic), - }), - be_str_weak(_process_named_arguments_for_color_provider), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_multiplicative_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ be_nested_proto( 12, /* nstack */ 3, /* argc */ @@ -5800,22 +5216,25 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_unary_expression), + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(process_multiplicative_expression), /* K1 */ be_nested_str_weak(at_end), /* K2 */ be_nested_str_weak(current), /* K3 */ be_nested_str_weak(type), /* K4 */ be_nested_str_weak(animation_dsl), /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(MULTIPLY), - /* K7 */ be_nested_str_weak(DIVIDE), + /* K6 */ be_nested_str_weak(PLUS), + /* K7 */ be_nested_str_weak(MINUS), /* K8 */ be_nested_str_weak(value), /* K9 */ be_nested_str_weak(next), /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K11 */ be_nested_str_weak(is_computed_expression_string), + /* K12 */ be_nested_str_weak(is_anonymous_function), + /* K13 */ be_nested_str_weak(create_computation_closure_from_string), }), - be_str_weak(process_multiplicative_expression), + be_str_weak(process_additive_expression), &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ + ( &(const binstruction[57]) { /* code */ 0x8C0C0100, // 0000 GETMET R3 R0 K0 0x5C140200, // 0001 MOVE R5 R1 0x5C180400, // 0002 MOVE R6 R2 @@ -5857,7 +5276,22 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, 0x70020000, // 0026 JMP #0028 0x70020000, // 0027 JMP #0029 0x7001FFDA, // 0028 JMP #0004 - 0x80040600, // 0029 RET 1 R3 + 0x780A000C, // 0029 JMPF R2 #0037 + 0x8C10010B, // 002A GETMET R4 R0 K11 + 0x5C180600, // 002B MOVE R6 R3 + 0x7C100400, // 002C CALL R4 2 + 0x78120008, // 002D JMPF R4 #0037 + 0x8C10010C, // 002E GETMET R4 R0 K12 + 0x5C180600, // 002F MOVE R6 R3 + 0x7C100400, // 0030 CALL R4 2 + 0x74120004, // 0031 JMPT R4 #0037 + 0x8C10010D, // 0032 GETMET R4 R0 K13 + 0x5C180600, // 0033 MOVE R6 R3 + 0x7C100400, // 0034 CALL R4 2 + 0x80040800, // 0035 RET 1 R4 + 0x70020000, // 0036 JMP #0038 + 0x80040600, // 0037 RET 1 R3 + 0x80000000, // 0038 RET 0 }) ) ); @@ -5926,6 +5360,664 @@ be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: peek +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* 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(pos), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tokens), + }), + be_str_weak(peek), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x14040202, // 0005 LT R1 R1 R2 + 0x78060004, // 0006 JMPF R1 #000C + 0x88040100, // 0007 GETMBR R1 R0 K0 + 0x00040301, // 0008 ADD R1 R1 K1 + 0x88080102, // 0009 GETMBR R2 R0 K2 + 0x94040401, // 000A GETIDX R1 R2 R1 + 0x70020000, // 000B JMP #000D + 0x4C040000, // 000C LDNIL R1 + 0x80040200, // 000D RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(EOF), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(NEWLINE), + /* K10 */ be_nested_str_weak(first_statement), + /* K11 */ be_nested_str_weak(KEYWORD), + /* K12 */ be_nested_str_weak(IDENTIFIER), + /* K13 */ be_nested_str_weak(strip), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), + /* K16 */ be_nested_str_weak(skip_statement), + /* K17 */ be_nested_str_weak(strip_initialized), + /* K18 */ be_nested_str_weak(generate_default_strip_initialization), + /* K19 */ be_nested_str_weak(color), + /* K20 */ be_nested_str_weak(process_color), + /* K21 */ be_nested_str_weak(palette), + /* K22 */ be_nested_str_weak(process_palette), + /* K23 */ be_nested_str_weak(animation), + /* K24 */ be_nested_str_weak(process_animation), + /* K25 */ be_nested_str_weak(set), + /* K26 */ be_nested_str_weak(process_set), + /* K27 */ be_nested_str_weak(sequence), + /* K28 */ be_nested_str_weak(process_sequence), + /* K29 */ be_nested_str_weak(run), + /* K30 */ be_nested_str_weak(process_run), + /* K31 */ be_nested_str_weak(on), + /* K32 */ be_nested_str_weak(process_event_handler), + /* K33 */ be_nested_str_weak(process_property_assignment), + }), + be_str_weak(process_statement), + &be_const_str_solidified, + ( &(const binstruction[129]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x740A0005, // 0004 JMPT R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0000, // 000A JMPF R2 #000C + 0x80000400, // 000B RET 0 + 0x88080301, // 000C GETMBR R2 R1 K1 + 0xB80E0400, // 000D GETNGBL R3 K2 + 0x880C0703, // 000E GETMBR R3 R3 K3 + 0x880C0705, // 000F GETMBR R3 R3 K5 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0005, // 0011 JMPF R2 #0018 + 0x8C080106, // 0012 GETMET R2 R0 K6 + 0x88100307, // 0013 GETMBR R4 R1 K7 + 0x7C080400, // 0014 CALL R2 2 + 0x8C080108, // 0015 GETMET R2 R0 K8 + 0x7C080200, // 0016 CALL R2 1 + 0x80000400, // 0017 RET 0 + 0x88080301, // 0018 GETMBR R2 R1 K1 + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x880C0703, // 001A GETMBR R3 R3 K3 + 0x880C0709, // 001B GETMBR R3 R3 K9 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A0002, // 001D JMPF R2 #0021 + 0x8C080108, // 001E GETMET R2 R0 K8 + 0x7C080200, // 001F CALL R2 1 + 0x80000400, // 0020 RET 0 + 0x8808010A, // 0021 GETMBR R2 R0 K10 + 0x880C0301, // 0022 GETMBR R3 R1 K1 + 0xB8120400, // 0023 GETNGBL R4 K2 + 0x88100903, // 0024 GETMBR R4 R4 K3 + 0x8810090B, // 0025 GETMBR R4 R4 K11 + 0x1C0C0604, // 0026 EQ R3 R3 R4 + 0x740E0005, // 0027 JMPT R3 #002E + 0x880C0301, // 0028 GETMBR R3 R1 K1 + 0xB8120400, // 0029 GETNGBL R4 K2 + 0x88100903, // 002A GETMBR R4 R4 K3 + 0x8810090C, // 002B GETMBR R4 R4 K12 + 0x1C0C0604, // 002C EQ R3 R3 R4 + 0x780E0001, // 002D JMPF R3 #0030 + 0x500C0000, // 002E LDBOOL R3 0 0 + 0x90021403, // 002F SETMBR R0 K10 R3 + 0x880C0301, // 0030 GETMBR R3 R1 K1 + 0xB8120400, // 0031 GETNGBL R4 K2 + 0x88100903, // 0032 GETMBR R4 R4 K3 + 0x8810090B, // 0033 GETMBR R4 R4 K11 + 0x1C0C0604, // 0034 EQ R3 R3 R4 + 0x780E003A, // 0035 JMPF R3 #0071 + 0x880C0307, // 0036 GETMBR R3 R1 K7 + 0x1C0C070D, // 0037 EQ R3 R3 K13 + 0x780E0006, // 0038 JMPF R3 #0040 + 0x8C0C010E, // 0039 GETMET R3 R0 K14 + 0x5814000F, // 003A LDCONST R5 K15 + 0x7C0C0400, // 003B CALL R3 2 + 0x8C0C0110, // 003C GETMET R3 R0 K16 + 0x7C0C0200, // 003D CALL R3 1 + 0x80000600, // 003E RET 0 + 0x7002002F, // 003F JMP #0070 + 0x880C0111, // 0040 GETMBR R3 R0 K17 + 0x740E0001, // 0041 JMPT R3 #0044 + 0x8C0C0112, // 0042 GETMET R3 R0 K18 + 0x7C0C0200, // 0043 CALL R3 1 + 0x880C0307, // 0044 GETMBR R3 R1 K7 + 0x1C0C0713, // 0045 EQ R3 R3 K19 + 0x780E0002, // 0046 JMPF R3 #004A + 0x8C0C0114, // 0047 GETMET R3 R0 K20 + 0x7C0C0200, // 0048 CALL R3 1 + 0x70020025, // 0049 JMP #0070 + 0x880C0307, // 004A GETMBR R3 R1 K7 + 0x1C0C0715, // 004B EQ R3 R3 K21 + 0x780E0002, // 004C JMPF R3 #0050 + 0x8C0C0116, // 004D GETMET R3 R0 K22 + 0x7C0C0200, // 004E CALL R3 1 + 0x7002001F, // 004F JMP #0070 + 0x880C0307, // 0050 GETMBR R3 R1 K7 + 0x1C0C0717, // 0051 EQ R3 R3 K23 + 0x780E0002, // 0052 JMPF R3 #0056 + 0x8C0C0118, // 0053 GETMET R3 R0 K24 + 0x7C0C0200, // 0054 CALL R3 1 + 0x70020019, // 0055 JMP #0070 + 0x880C0307, // 0056 GETMBR R3 R1 K7 + 0x1C0C0719, // 0057 EQ R3 R3 K25 + 0x780E0002, // 0058 JMPF R3 #005C + 0x8C0C011A, // 0059 GETMET R3 R0 K26 + 0x7C0C0200, // 005A CALL R3 1 + 0x70020013, // 005B JMP #0070 + 0x880C0307, // 005C GETMBR R3 R1 K7 + 0x1C0C071B, // 005D EQ R3 R3 K27 + 0x780E0002, // 005E JMPF R3 #0062 + 0x8C0C011C, // 005F GETMET R3 R0 K28 + 0x7C0C0200, // 0060 CALL R3 1 + 0x7002000D, // 0061 JMP #0070 + 0x880C0307, // 0062 GETMBR R3 R1 K7 + 0x1C0C071D, // 0063 EQ R3 R3 K29 + 0x780E0002, // 0064 JMPF R3 #0068 + 0x8C0C011E, // 0065 GETMET R3 R0 K30 + 0x7C0C0200, // 0066 CALL R3 1 + 0x70020007, // 0067 JMP #0070 + 0x880C0307, // 0068 GETMBR R3 R1 K7 + 0x1C0C071F, // 0069 EQ R3 R3 K31 + 0x780E0002, // 006A JMPF R3 #006E + 0x8C0C0120, // 006B GETMET R3 R0 K32 + 0x7C0C0200, // 006C CALL R3 1 + 0x70020001, // 006D JMP #0070 + 0x8C0C0110, // 006E GETMET R3 R0 K16 + 0x7C0C0200, // 006F CALL R3 1 + 0x7002000E, // 0070 JMP #0080 + 0x880C0301, // 0071 GETMBR R3 R1 K1 + 0xB8120400, // 0072 GETNGBL R4 K2 + 0x88100903, // 0073 GETMBR R4 R4 K3 + 0x8810090C, // 0074 GETMBR R4 R4 K12 + 0x1C0C0604, // 0075 EQ R3 R3 R4 + 0x780E0006, // 0076 JMPF R3 #007E + 0x880C0111, // 0077 GETMBR R3 R0 K17 + 0x740E0001, // 0078 JMPT R3 #007B + 0x8C0C0112, // 0079 GETMET R3 R0 K18 + 0x7C0C0200, // 007A CALL R3 1 + 0x8C0C0121, // 007B GETMET R3 R0 K33 + 0x7C0C0200, // 007C CALL R3 1 + 0x70020001, // 007D JMP #0080 + 0x8C0C0110, // 007E GETMET R3 R0 K16 + 0x7C0C0200, // 007F CALL R3 1 + 0x80000000, // 0080 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_time_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* 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(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(TIME), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(convert_time_to_ms), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20time_X20value), + }), + be_str_weak(process_time_value), + &be_const_str_solidified, + ( &(const binstruction[46]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000D, // 0004 JMPF R2 #0013 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0007, // 000A JMPF R2 #0013 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0107, // 000E GETMET R3 R0 K7 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80040600, // 0011 RET 1 R3 + 0x70020019, // 0012 JMP #002D + 0x4C080000, // 0013 LDNIL R2 + 0x20080202, // 0014 NE R2 R1 R2 + 0x780A0011, // 0015 JMPF R2 #0028 + 0x88080301, // 0016 GETMBR R2 R1 K1 + 0xB80E0400, // 0017 GETNGBL R3 K2 + 0x880C0703, // 0018 GETMBR R3 R3 K3 + 0x880C0708, // 0019 GETMBR R3 R3 K8 + 0x1C080403, // 001A EQ R2 R2 R3 + 0x780A000B, // 001B JMPF R2 #0028 + 0x88080305, // 001C GETMBR R2 R1 K5 + 0x8C0C0106, // 001D GETMET R3 R0 K6 + 0x7C0C0200, // 001E CALL R3 1 + 0x600C0009, // 001F GETGBL R3 G9 + 0x6010000A, // 0020 GETGBL R4 G10 + 0x5C140400, // 0021 MOVE R5 R2 + 0x7C100200, // 0022 CALL R4 1 + 0x7C0C0200, // 0023 CALL R3 1 + 0x541203E7, // 0024 LDINT R4 1000 + 0x080C0604, // 0025 MUL R3 R3 R4 + 0x80040600, // 0026 RET 1 R3 + 0x70020004, // 0027 JMP #002D + 0x8C080109, // 0028 GETMET R2 R0 K9 + 0x5810000A, // 0029 LDCONST R4 K10 + 0x7C080400, // 002A CALL R2 2 + 0x540A03E7, // 002B LDINT R2 1000 + 0x80040400, // 002C RET 1 R2 + 0x80000000, // 002D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), + }), + be_str_weak(expect_right_brace), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_primary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[46]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(nil), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(Token), + /* K7 */ be_nested_str_weak(LEFT_PAREN), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(process_additive_expression), + /* K10 */ be_nested_str_weak(expect_right_paren), + /* K11 */ be_nested_str_weak(_X28_X25s_X29), + /* K12 */ be_nested_str_weak(KEYWORD), + /* K13 */ be_nested_str_weak(IDENTIFIER), + /* K14 */ be_nested_str_weak(peek), + /* K15 */ be_nested_str_weak(value), + /* K16 */ be_nested_str_weak(_is_simple_function_call), + /* K17 */ be_nested_str_weak(process_function_call), + /* K18 */ be_nested_str_weak(argument), + /* K19 */ be_nested_str_weak(property), + /* K20 */ be_nested_str_weak(variable), + /* K21 */ be_nested_str_weak(process_nested_function_call), + /* K22 */ be_nested_str_weak(COLOR), + /* K23 */ be_nested_str_weak(convert_color), + /* K24 */ be_nested_str_weak(TIME), + /* K25 */ be_nested_str_weak(process_time_value), + /* K26 */ be_nested_str_weak(PERCENTAGE), + /* K27 */ be_nested_str_weak(process_percentage_value), + /* K28 */ be_nested_str_weak(NUMBER), + /* K29 */ be_nested_str_weak(STRING), + /* K30 */ be_nested_str_weak(_X22_X25s_X22), + /* K31 */ be_nested_str_weak(LEFT_BRACKET), + /* K32 */ be_nested_str_weak(process_array_literal), + /* K33 */ be_nested_str_weak(string), + /* K34 */ be_nested_str_weak(startswith), + /* K35 */ be_nested_str_weak(PALETTE_), + /* K36 */ be_nested_str_weak(animation_X2E_X25s), + /* K37 */ be_nested_str_weak(is_color_name), + /* K38 */ be_nested_str_weak(get_named_color_value), + /* K39 */ be_nested_str_weak(introspect), + /* K40 */ be_nested_str_weak(contains), + /* K41 */ be_nested_str_weak(animation), + /* K42 */ be_nested_str_weak(_X25s_), + /* K43 */ be_nested_str_weak(true), + /* K44 */ be_nested_str_weak(false), + /* K45 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), + }), + be_str_weak(process_primary_expression), + &be_const_str_solidified, + ( &(const binstruction[229]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x4C100000, // 0002 LDNIL R4 + 0x1C100604, // 0003 EQ R4 R3 R4 + 0x78120003, // 0004 JMPF R4 #0009 + 0x8C100101, // 0005 GETMET R4 R0 K1 + 0x58180002, // 0006 LDCONST R6 K2 + 0x7C100400, // 0007 CALL R4 2 + 0x80060600, // 0008 RET 1 K3 + 0x88100704, // 0009 GETMBR R4 R3 K4 + 0xB8160A00, // 000A GETNGBL R5 K5 + 0x88140B06, // 000B GETMBR R5 R5 K6 + 0x88140B07, // 000C GETMBR R5 R5 K7 + 0x1C100805, // 000D EQ R4 R4 R5 + 0x7812000C, // 000E JMPF R4 #001C + 0x8C100108, // 000F GETMET R4 R0 K8 + 0x7C100200, // 0010 CALL R4 1 + 0x8C100109, // 0011 GETMET R4 R0 K9 + 0x5C180200, // 0012 MOVE R6 R1 + 0x501C0000, // 0013 LDBOOL R7 0 0 + 0x7C100600, // 0014 CALL R4 3 + 0x8C14010A, // 0015 GETMET R5 R0 K10 + 0x7C140200, // 0016 CALL R5 1 + 0x60140018, // 0017 GETGBL R5 G24 + 0x5818000B, // 0018 LDCONST R6 K11 + 0x5C1C0800, // 0019 MOVE R7 R4 + 0x7C140400, // 001A CALL R5 2 + 0x80040A00, // 001B RET 1 R5 + 0x88100704, // 001C GETMBR R4 R3 K4 + 0xB8160A00, // 001D GETNGBL R5 K5 + 0x88140B06, // 001E GETMBR R5 R5 K6 + 0x88140B0C, // 001F GETMBR R5 R5 K12 + 0x1C100805, // 0020 EQ R4 R4 R5 + 0x74120005, // 0021 JMPT R4 #0028 + 0x88100704, // 0022 GETMBR R4 R3 K4 + 0xB8160A00, // 0023 GETNGBL R5 K5 + 0x88140B06, // 0024 GETMBR R5 R5 K6 + 0x88140B0D, // 0025 GETMBR R5 R5 K13 + 0x1C100805, // 0026 EQ R4 R4 R5 + 0x78120024, // 0027 JMPF R4 #004D + 0x8C10010E, // 0028 GETMET R4 R0 K14 + 0x7C100200, // 0029 CALL R4 1 + 0x4C140000, // 002A LDNIL R5 + 0x20100805, // 002B NE R4 R4 R5 + 0x7812001F, // 002C JMPF R4 #004D + 0x8C10010E, // 002D GETMET R4 R0 K14 + 0x7C100200, // 002E CALL R4 1 + 0x88100904, // 002F GETMBR R4 R4 K4 + 0xB8160A00, // 0030 GETNGBL R5 K5 + 0x88140B06, // 0031 GETMBR R5 R5 K6 + 0x88140B07, // 0032 GETMBR R5 R5 K7 + 0x1C100805, // 0033 EQ R4 R4 R5 + 0x78120017, // 0034 JMPF R4 #004D + 0x8810070F, // 0035 GETMBR R4 R3 K15 + 0x8C140110, // 0036 GETMET R5 R0 K16 + 0x5C1C0800, // 0037 MOVE R7 R4 + 0x7C140400, // 0038 CALL R5 2 + 0x78160004, // 0039 JMPF R5 #003F + 0x8C140111, // 003A GETMET R5 R0 K17 + 0x5C1C0200, // 003B MOVE R7 R1 + 0x7C140400, // 003C CALL R5 2 + 0x80040A00, // 003D RET 1 R5 + 0x7002000D, // 003E JMP #004D + 0x1C140312, // 003F EQ R5 R1 K18 + 0x74160003, // 0040 JMPT R5 #0045 + 0x1C140313, // 0041 EQ R5 R1 K19 + 0x74160001, // 0042 JMPT R5 #0045 + 0x1C140314, // 0043 EQ R5 R1 K20 + 0x78160003, // 0044 JMPF R5 #0049 + 0x8C140115, // 0045 GETMET R5 R0 K21 + 0x7C140200, // 0046 CALL R5 1 + 0x80040A00, // 0047 RET 1 R5 + 0x70020003, // 0048 JMP #004D + 0x8C140111, // 0049 GETMET R5 R0 K17 + 0x5C1C0200, // 004A MOVE R7 R1 + 0x7C140400, // 004B CALL R5 2 + 0x80040A00, // 004C RET 1 R5 + 0x88100704, // 004D GETMBR R4 R3 K4 + 0xB8160A00, // 004E GETNGBL R5 K5 + 0x88140B06, // 004F GETMBR R5 R5 K6 + 0x88140B16, // 0050 GETMBR R5 R5 K22 + 0x1C100805, // 0051 EQ R4 R4 R5 + 0x78120005, // 0052 JMPF R4 #0059 + 0x8C100108, // 0053 GETMET R4 R0 K8 + 0x7C100200, // 0054 CALL R4 1 + 0x8C100117, // 0055 GETMET R4 R0 K23 + 0x8818070F, // 0056 GETMBR R6 R3 K15 + 0x7C100400, // 0057 CALL R4 2 + 0x80040800, // 0058 RET 1 R4 + 0x88100704, // 0059 GETMBR R4 R3 K4 + 0xB8160A00, // 005A GETNGBL R5 K5 + 0x88140B06, // 005B GETMBR R5 R5 K6 + 0x88140B18, // 005C GETMBR R5 R5 K24 + 0x1C100805, // 005D EQ R4 R4 R5 + 0x78120004, // 005E JMPF R4 #0064 + 0x60100008, // 005F GETGBL R4 G8 + 0x8C140119, // 0060 GETMET R5 R0 K25 + 0x7C140200, // 0061 CALL R5 1 + 0x7C100200, // 0062 CALL R4 1 + 0x80040800, // 0063 RET 1 R4 + 0x88100704, // 0064 GETMBR R4 R3 K4 + 0xB8160A00, // 0065 GETNGBL R5 K5 + 0x88140B06, // 0066 GETMBR R5 R5 K6 + 0x88140B1A, // 0067 GETMBR R5 R5 K26 + 0x1C100805, // 0068 EQ R4 R4 R5 + 0x78120004, // 0069 JMPF R4 #006F + 0x60100008, // 006A GETGBL R4 G8 + 0x8C14011B, // 006B GETMET R5 R0 K27 + 0x7C140200, // 006C CALL R5 1 + 0x7C100200, // 006D CALL R4 1 + 0x80040800, // 006E RET 1 R4 + 0x88100704, // 006F GETMBR R4 R3 K4 + 0xB8160A00, // 0070 GETNGBL R5 K5 + 0x88140B06, // 0071 GETMBR R5 R5 K6 + 0x88140B1C, // 0072 GETMBR R5 R5 K28 + 0x1C100805, // 0073 EQ R4 R4 R5 + 0x78120003, // 0074 JMPF R4 #0079 + 0x8810070F, // 0075 GETMBR R4 R3 K15 + 0x8C140108, // 0076 GETMET R5 R0 K8 + 0x7C140200, // 0077 CALL R5 1 + 0x80040800, // 0078 RET 1 R4 + 0x88100704, // 0079 GETMBR R4 R3 K4 + 0xB8160A00, // 007A GETNGBL R5 K5 + 0x88140B06, // 007B GETMBR R5 R5 K6 + 0x88140B1D, // 007C GETMBR R5 R5 K29 + 0x1C100805, // 007D EQ R4 R4 R5 + 0x78120007, // 007E JMPF R4 #0087 + 0x8810070F, // 007F GETMBR R4 R3 K15 + 0x8C140108, // 0080 GETMET R5 R0 K8 + 0x7C140200, // 0081 CALL R5 1 + 0x60140018, // 0082 GETGBL R5 G24 + 0x5818001E, // 0083 LDCONST R6 K30 + 0x5C1C0800, // 0084 MOVE R7 R4 + 0x7C140400, // 0085 CALL R5 2 + 0x80040A00, // 0086 RET 1 R5 + 0x88100704, // 0087 GETMBR R4 R3 K4 + 0xB8160A00, // 0088 GETNGBL R5 K5 + 0x88140B06, // 0089 GETMBR R5 R5 K6 + 0x88140B1F, // 008A GETMBR R5 R5 K31 + 0x1C100805, // 008B EQ R4 R4 R5 + 0x78120002, // 008C JMPF R4 #0090 + 0x8C100120, // 008D GETMET R4 R0 K32 + 0x7C100200, // 008E CALL R4 1 + 0x80040800, // 008F RET 1 R4 + 0x88100704, // 0090 GETMBR R4 R3 K4 + 0xB8160A00, // 0091 GETNGBL R5 K5 + 0x88140B06, // 0092 GETMBR R5 R5 K6 + 0x88140B0D, // 0093 GETMBR R5 R5 K13 + 0x1C100805, // 0094 EQ R4 R4 R5 + 0x78120027, // 0095 JMPF R4 #00BE + 0x8810070F, // 0096 GETMBR R4 R3 K15 + 0x8C140108, // 0097 GETMET R5 R0 K8 + 0x7C140200, // 0098 CALL R5 1 + 0xA4164200, // 0099 IMPORT R5 K33 + 0x8C180B22, // 009A GETMET R6 R5 K34 + 0x5C200800, // 009B MOVE R8 R4 + 0x58240023, // 009C LDCONST R9 K35 + 0x7C180600, // 009D CALL R6 3 + 0x781A0004, // 009E JMPF R6 #00A4 + 0x60180018, // 009F GETGBL R6 G24 + 0x581C0024, // 00A0 LDCONST R7 K36 + 0x5C200800, // 00A1 MOVE R8 R4 + 0x7C180400, // 00A2 CALL R6 2 + 0x80040C00, // 00A3 RET 1 R6 + 0xB81A0A00, // 00A4 GETNGBL R6 K5 + 0x8C180D25, // 00A5 GETMET R6 R6 K37 + 0x5C200800, // 00A6 MOVE R8 R4 + 0x7C180400, // 00A7 CALL R6 2 + 0x781A0003, // 00A8 JMPF R6 #00AD + 0x8C180126, // 00A9 GETMET R6 R0 K38 + 0x5C200800, // 00AA MOVE R8 R4 + 0x7C180400, // 00AB CALL R6 2 + 0x80040C00, // 00AC RET 1 R6 + 0xA41A4E00, // 00AD IMPORT R6 K39 + 0x8C1C0D28, // 00AE GETMET R7 R6 K40 + 0xB8265200, // 00AF GETNGBL R9 K41 + 0x5C280800, // 00B0 MOVE R10 R4 + 0x7C1C0600, // 00B1 CALL R7 3 + 0x781E0005, // 00B2 JMPF R7 #00B9 + 0x601C0018, // 00B3 GETGBL R7 G24 + 0x58200024, // 00B4 LDCONST R8 K36 + 0x5C240800, // 00B5 MOVE R9 R4 + 0x7C1C0400, // 00B6 CALL R7 2 + 0x80040E00, // 00B7 RET 1 R7 + 0x70020004, // 00B8 JMP #00BE + 0x601C0018, // 00B9 GETGBL R7 G24 + 0x5820002A, // 00BA LDCONST R8 K42 + 0x5C240800, // 00BB MOVE R9 R4 + 0x7C1C0400, // 00BC CALL R7 2 + 0x80040E00, // 00BD RET 1 R7 + 0x88100704, // 00BE GETMBR R4 R3 K4 + 0xB8160A00, // 00BF GETNGBL R5 K5 + 0x88140B06, // 00C0 GETMBR R5 R5 K6 + 0x88140B0C, // 00C1 GETMBR R5 R5 K12 + 0x1C100805, // 00C2 EQ R4 R4 R5 + 0x78120009, // 00C3 JMPF R4 #00CE + 0x8810070F, // 00C4 GETMBR R4 R3 K15 + 0x1C10092B, // 00C5 EQ R4 R4 K43 + 0x74120002, // 00C6 JMPT R4 #00CA + 0x8810070F, // 00C7 GETMBR R4 R3 K15 + 0x1C10092C, // 00C8 EQ R4 R4 K44 + 0x78120003, // 00C9 JMPF R4 #00CE + 0x8810070F, // 00CA GETMBR R4 R3 K15 + 0x8C140108, // 00CB GETMET R5 R0 K8 + 0x7C140200, // 00CC CALL R5 1 + 0x80040800, // 00CD RET 1 R4 + 0x88100704, // 00CE GETMBR R4 R3 K4 + 0xB8160A00, // 00CF GETNGBL R5 K5 + 0x88140B06, // 00D0 GETMBR R5 R5 K6 + 0x88140B0C, // 00D1 GETMBR R5 R5 K12 + 0x1C100805, // 00D2 EQ R4 R4 R5 + 0x78120007, // 00D3 JMPF R4 #00DC + 0x8810070F, // 00D4 GETMBR R4 R3 K15 + 0x8C140108, // 00D5 GETMET R5 R0 K8 + 0x7C140200, // 00D6 CALL R5 1 + 0x60140018, // 00D7 GETGBL R5 G24 + 0x58180024, // 00D8 LDCONST R6 K36 + 0x5C1C0800, // 00D9 MOVE R7 R4 + 0x7C140400, // 00DA CALL R5 2 + 0x80040A00, // 00DB RET 1 R5 + 0x8C100101, // 00DC GETMET R4 R0 K1 + 0x60180018, // 00DD GETGBL R6 G24 + 0x581C002D, // 00DE LDCONST R7 K45 + 0x8820070F, // 00DF GETMBR R8 R3 K15 + 0x7C180400, // 00E0 CALL R6 2 + 0x7C100400, // 00E1 CALL R4 2 + 0x8C100108, // 00E2 GETMET R4 R0 K8 + 0x7C100200, // 00E3 CALL R4 1 + 0x80060600, // 00E4 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_primary_expression_raw ********************************************************************/ @@ -6161,115 +6253,94 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression_raw, /* /******************************************************************** -** Solidified function: process_function_arguments_for_expression +** Solidified function: convert_time_to_ms ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression, /* name */ +be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_expression_argument), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(COMMA), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(endswith), + /* K2 */ be_nested_str_weak(ms), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(s), + /* K5 */ be_nested_str_weak(m), + /* K6 */ be_nested_str_weak(h), + /* K7 */ be_const_int(3600000), }), - be_str_weak(process_function_arguments_for_expression), + be_str_weak(convert_time_to_ms), &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A0029, // 0006 JMPT R2 #0031 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A0026, // 0009 JMPT R2 #0031 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x7C080200, // 000B CALL R2 1 - 0x8C080102, // 000C GETMET R2 R0 K2 - 0x7C080200, // 000D CALL R2 1 - 0x780A0000, // 000E JMPF R2 #0010 - 0x70020020, // 000F JMP #0031 - 0x8C080104, // 0010 GETMET R2 R0 K4 - 0x7C080200, // 0011 CALL R2 1 - 0x8C0C0305, // 0012 GETMET R3 R1 K5 - 0x5C140400, // 0013 MOVE R5 R2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x8C0C0103, // 0015 GETMET R3 R0 K3 - 0x7C0C0200, // 0016 CALL R3 1 - 0x8C0C0106, // 0017 GETMET R3 R0 K6 - 0x7C0C0200, // 0018 CALL R3 1 - 0x4C100000, // 0019 LDNIL R4 - 0x200C0604, // 001A NE R3 R3 R4 - 0x780E000C, // 001B JMPF R3 #0029 - 0x8C0C0106, // 001C GETMET R3 R0 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0x880C0707, // 001E GETMBR R3 R3 K7 - 0xB8121000, // 001F GETNGBL R4 K8 - 0x88100909, // 0020 GETMBR R4 R4 K9 - 0x8810090A, // 0021 GETMBR R4 R4 K10 - 0x1C0C0604, // 0022 EQ R3 R3 R4 - 0x780E0004, // 0023 JMPF R3 #0029 - 0x8C0C010B, // 0024 GETMET R3 R0 K11 - 0x7C0C0200, // 0025 CALL R3 1 - 0x8C0C0103, // 0026 GETMET R3 R0 K3 - 0x7C0C0200, // 0027 CALL R3 1 - 0x70020006, // 0028 JMP #0030 - 0x8C0C0102, // 0029 GETMET R3 R0 K2 - 0x7C0C0200, // 002A CALL R3 1 - 0x740E0003, // 002B JMPT R3 #0030 - 0x8C0C010C, // 002C GETMET R3 R0 K12 - 0x5814000D, // 002D LDCONST R5 K13 - 0x7C0C0400, // 002E CALL R3 2 - 0x70020000, // 002F JMP #0031 - 0x7001FFD2, // 0030 JMP #0004 - 0x8C08010E, // 0031 GETMET R2 R0 K14 - 0x7C080200, // 0032 CALL R2 1 - 0x5808000F, // 0033 LDCONST R2 K15 - 0x600C0010, // 0034 GETGBL R3 G16 - 0x6010000C, // 0035 GETGBL R4 G12 - 0x5C140200, // 0036 MOVE R5 R1 - 0x7C100200, // 0037 CALL R4 1 - 0x04100911, // 0038 SUB R4 R4 K17 - 0x40122004, // 0039 CONNECT R4 K16 R4 - 0x7C0C0200, // 003A CALL R3 1 - 0xA8020007, // 003B EXBLK 0 #0044 - 0x5C100600, // 003C MOVE R4 R3 - 0x7C100000, // 003D CALL R4 0 - 0x24140910, // 003E GT R5 R4 K16 - 0x78160000, // 003F JMPF R5 #0041 - 0x00080512, // 0040 ADD R2 R2 K18 - 0x94140204, // 0041 GETIDX R5 R1 R4 - 0x00080405, // 0042 ADD R2 R2 R5 - 0x7001FFF7, // 0043 JMP #003C - 0x580C0013, // 0044 LDCONST R3 K19 - 0xAC0C0200, // 0045 CATCH R3 1 0 - 0xB0080000, // 0046 RAISE 2 R0 R0 - 0x80040400, // 0047 RET 1 R2 + ( &(const binstruction[63]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x780E0008, // 0005 JMPF R3 #000F + 0x600C0009, // 0006 GETGBL R3 G9 + 0x6010000A, // 0007 GETGBL R4 G10 + 0x5415FFFC, // 0008 LDINT R5 -3 + 0x40160605, // 0009 CONNECT R5 K3 R5 + 0x94140205, // 000A GETIDX R5 R1 R5 + 0x7C100200, // 000B CALL R4 1 + 0x7C0C0200, // 000C CALL R3 1 + 0x80040600, // 000D RET 1 R3 + 0x7002002D, // 000E JMP #003D + 0x8C0C0501, // 000F GETMET R3 R2 K1 + 0x5C140200, // 0010 MOVE R5 R1 + 0x58180004, // 0011 LDCONST R6 K4 + 0x7C0C0600, // 0012 CALL R3 3 + 0x780E000A, // 0013 JMPF R3 #001F + 0x600C0009, // 0014 GETGBL R3 G9 + 0x6010000A, // 0015 GETGBL R4 G10 + 0x5415FFFD, // 0016 LDINT R5 -2 + 0x40160605, // 0017 CONNECT R5 K3 R5 + 0x94140205, // 0018 GETIDX R5 R1 R5 + 0x7C100200, // 0019 CALL R4 1 + 0x541603E7, // 001A LDINT R5 1000 + 0x08100805, // 001B MUL R4 R4 R5 + 0x7C0C0200, // 001C CALL R3 1 + 0x80040600, // 001D RET 1 R3 + 0x7002001D, // 001E JMP #003D + 0x8C0C0501, // 001F GETMET R3 R2 K1 + 0x5C140200, // 0020 MOVE R5 R1 + 0x58180005, // 0021 LDCONST R6 K5 + 0x7C0C0600, // 0022 CALL R3 3 + 0x780E000A, // 0023 JMPF R3 #002F + 0x600C0009, // 0024 GETGBL R3 G9 + 0x6010000A, // 0025 GETGBL R4 G10 + 0x5415FFFD, // 0026 LDINT R5 -2 + 0x40160605, // 0027 CONNECT R5 K3 R5 + 0x94140205, // 0028 GETIDX R5 R1 R5 + 0x7C100200, // 0029 CALL R4 1 + 0x5416EA5F, // 002A LDINT R5 60000 + 0x08100805, // 002B MUL R4 R4 R5 + 0x7C0C0200, // 002C CALL R3 1 + 0x80040600, // 002D RET 1 R3 + 0x7002000D, // 002E JMP #003D + 0x8C0C0501, // 002F GETMET R3 R2 K1 + 0x5C140200, // 0030 MOVE R5 R1 + 0x58180006, // 0031 LDCONST R6 K6 + 0x7C0C0600, // 0032 CALL R3 3 + 0x780E0008, // 0033 JMPF R3 #003D + 0x600C0009, // 0034 GETGBL R3 G9 + 0x6010000A, // 0035 GETGBL R4 G10 + 0x5415FFFD, // 0036 LDINT R5 -2 + 0x40160605, // 0037 CONNECT R5 K3 R5 + 0x94140205, // 0038 GETIDX R5 R1 R5 + 0x7C100200, // 0039 CALL R4 1 + 0x08100907, // 003A MUL R4 R4 K7 + 0x7C0C0200, // 003B CALL R3 1 + 0x80040600, // 003C RET 1 R3 + 0x540E03E7, // 003D LDINT R3 1000 + 0x80040600, // 003E RET 1 R3 }) ) ); @@ -6357,9 +6428,890 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name * /******************************************************************** -** Solidified function: _validate_animation_factory_exists +** Solidified function: _create_animation_instance_for_validation ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ +be_local_closure(class_SimpleDSLTranspiler__create_animation_instance_for_validation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* 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(_create_instance_for_validation), + }), + be_str_weak(_create_animation_instance_for_validation), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x80040400, // 0003 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_next, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* 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(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_const_int(1), + }), + be_str_weak(next), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x00040302, // 0007 ADD R1 R1 K2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* 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(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(check_right_paren), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_math_method +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(closure_value), + /* K3 */ be_nested_str_weak(members), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(ismethod), + /* K6 */ be_nested_str_weak(function), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(is_math_method), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802002C, // 0001 EXBLK 0 #002F + 0xB80E0200, // 0002 GETNGBL R3 K1 + 0x880C0702, // 0003 GETMBR R3 R3 K2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120002, // 0006 JMPF R4 #000A + 0x50100000, // 0007 LDBOOL R4 0 0 + 0xA8040001, // 0008 EXBLK 1 1 + 0x80040800, // 0009 RET 1 R4 + 0x8C100503, // 000A GETMET R4 R2 K3 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x60140010, // 000D GETGBL R5 G16 + 0x5C180800, // 000E MOVE R6 R4 + 0x7C140200, // 000F CALL R5 1 + 0xA8020015, // 0010 EXBLK 0 #0027 + 0x5C180A00, // 0011 MOVE R6 R5 + 0x7C180000, // 0012 CALL R6 0 + 0x1C1C0C01, // 0013 EQ R7 R6 R1 + 0x781E0010, // 0014 JMPF R7 #0026 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x5C240600, // 0016 MOVE R9 R3 + 0x5C280200, // 0017 MOVE R10 R1 + 0x7C1C0600, // 0018 CALL R7 3 + 0x8C200505, // 0019 GETMET R8 R2 K5 + 0x5C280E00, // 001A MOVE R10 R7 + 0x7C200400, // 001B CALL R8 2 + 0x74220005, // 001C JMPT R8 #0023 + 0x60200004, // 001D GETGBL R8 G4 + 0x5C240E00, // 001E MOVE R9 R7 + 0x7C200200, // 001F CALL R8 1 + 0x1C201106, // 0020 EQ R8 R8 K6 + 0x74220000, // 0021 JMPT R8 #0023 + 0x50200001, // 0022 LDBOOL R8 0 1 + 0x50200200, // 0023 LDBOOL R8 1 0 + 0xA8040002, // 0024 EXBLK 1 2 + 0x80041000, // 0025 RET 1 R8 + 0x7001FFE9, // 0026 JMP #0011 + 0x58140007, // 0027 LDCONST R5 K7 + 0xAC140200, // 0028 CATCH R5 1 0 + 0xB0080000, // 0029 RAISE 2 R0 R0 + 0x50140000, // 002A LDBOOL R5 0 0 + 0xA8040001, // 002B EXBLK 1 1 + 0x80040A00, // 002C RET 1 R5 + 0xA8040001, // 002D EXBLK 1 1 + 0x70020005, // 002E JMP #0035 + 0xAC0C0002, // 002F CATCH R3 0 2 + 0x70020002, // 0030 JMP #0034 + 0x50140000, // 0031 LDBOOL R5 0 0 + 0x80040A00, // 0032 RET 1 R5 + 0x70020000, // 0033 JMP #0035 + 0xB0080000, // 0034 RAISE 2 R0 R0 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_computation_closure +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(transform_operand_for_closure), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X20_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(replace), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(def_X20_X28self_X2C_X20param_name_X2C_X20time_ms_X29_X20return_X20_X28_X25s_X20_X25s_X20_X25s_X29_X20end), + /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + }), + be_str_weak(create_computation_closure), + &be_const_str_solidified, + ( &(const binstruction[44]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140101, // 0001 GETMET R5 R0 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x7C140400, // 0003 CALL R5 2 + 0x8C180101, // 0004 GETMET R6 R0 K1 + 0x5C200600, // 0005 MOVE R8 R3 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0902, // 0007 GETMET R7 R4 K2 + 0x5C240A00, // 0008 MOVE R9 R5 + 0x58280003, // 0009 LDCONST R10 K3 + 0x7C1C0600, // 000A CALL R7 3 + 0x281C0F04, // 000B GE R7 R7 K4 + 0x781E0006, // 000C JMPF R7 #0014 + 0x8C1C0905, // 000D GETMET R7 R4 K5 + 0x5C240A00, // 000E MOVE R9 R5 + 0x58280003, // 000F LDCONST R10 K3 + 0x582C0006, // 0010 LDCONST R11 K6 + 0x7C1C0800, // 0011 CALL R7 4 + 0x5C140E00, // 0012 MOVE R5 R7 + 0x7001FFF2, // 0013 JMP #0007 + 0x8C1C0902, // 0014 GETMET R7 R4 K2 + 0x5C240C00, // 0015 MOVE R9 R6 + 0x58280003, // 0016 LDCONST R10 K3 + 0x7C1C0600, // 0017 CALL R7 3 + 0x281C0F04, // 0018 GE R7 R7 K4 + 0x781E0006, // 0019 JMPF R7 #0021 + 0x8C1C0905, // 001A GETMET R7 R4 K5 + 0x5C240C00, // 001B MOVE R9 R6 + 0x58280003, // 001C LDCONST R10 K3 + 0x582C0006, // 001D LDCONST R11 K6 + 0x7C1C0800, // 001E CALL R7 4 + 0x5C180E00, // 001F MOVE R6 R7 + 0x7001FFF2, // 0020 JMP #0014 + 0x601C0018, // 0021 GETGBL R7 G24 + 0x58200007, // 0022 LDCONST R8 K7 + 0x5C240A00, // 0023 MOVE R9 R5 + 0x5C280400, // 0024 MOVE R10 R2 + 0x5C2C0C00, // 0025 MOVE R11 R6 + 0x7C1C0800, // 0026 CALL R7 4 + 0x60200018, // 0027 GETGBL R8 G24 + 0x58240008, // 0028 LDCONST R9 K8 + 0x5C280E00, // 0029 MOVE R10 R7 + 0x7C200400, // 002A CALL R8 2 + 0x80041000, // 002B RET 1 R8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* 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(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(run_statements), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(name), + /* K6 */ be_nested_str_weak(comment), + }), + be_str_weak(process_run), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x60140013, // 0008 GETGBL R5 G19 + 0x7C140000, // 0009 CALL R5 0 + 0x98160A01, // 000A SETIDX R5 K5 R1 + 0x98160C02, // 000B SETIDX R5 K6 R2 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* 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(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACKET), + }), + be_str_weak(check_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_identifier_char +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* 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(a), + /* K1 */ be_nested_str_weak(z), + /* K2 */ be_nested_str_weak(A), + /* K3 */ be_nested_str_weak(Z), + /* K4 */ be_nested_str_weak(0), + /* K5 */ be_nested_str_weak(9), + /* K6 */ be_nested_str_weak(_), + }), + be_str_weak(is_identifier_char), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x28080300, // 0000 GE R2 R1 K0 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x18080301, // 0002 LE R2 R1 K1 + 0x740A000A, // 0003 JMPT R2 #000F + 0x28080302, // 0004 GE R2 R1 K2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x18080303, // 0006 LE R2 R1 K3 + 0x740A0006, // 0007 JMPT R2 #000F + 0x28080304, // 0008 GE R2 R1 K4 + 0x780A0001, // 0009 JMPF R2 #000C + 0x18080305, // 000A LE R2 R1 K5 + 0x740A0002, // 000B JMPT R2 #000F + 0x1C080306, // 000C EQ R2 R1 K6 + 0x740A0000, // 000D JMPT R2 #000F + 0x50080001, // 000E LDBOOL R2 0 1 + 0x50080200, // 000F LDBOOL R2 1 0 + 0x80040400, // 0010 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_create_animation_instance_for_validation), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K5 */ be_nested_str_weak(expect_identifier), + /* K6 */ be_nested_str_weak(_validate_single_parameter), + /* K7 */ be_nested_str_weak(expect_assign), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(argument), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K13 */ be_nested_str_weak(current), + /* K14 */ be_nested_str_weak(type), + /* K15 */ be_nested_str_weak(animation_dsl), + /* K16 */ be_nested_str_weak(Token), + /* K17 */ be_nested_str_weak(COMMENT), + /* K18 */ be_nested_str_weak(next), + /* K19 */ be_nested_str_weak(COMMA), + /* K20 */ be_nested_str_weak(NEWLINE), + /* K21 */ be_nested_str_weak(error), + /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K23 */ be_nested_str_weak(expect_right_paren), + }), + be_str_weak(_process_named_arguments_for_animation), + &be_const_str_solidified, + ( &(const binstruction[109]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x5C140400, // 0003 MOVE R5 R2 + 0x7C0C0400, // 0004 CALL R3 2 + 0x8C100102, // 0005 GETMET R4 R0 K2 + 0x7C100200, // 0006 CALL R4 1 + 0x74120061, // 0007 JMPT R4 #006A + 0x8C100103, // 0008 GETMET R4 R0 K3 + 0x7C100200, // 0009 CALL R4 1 + 0x7412005E, // 000A JMPT R4 #006A + 0x8C100104, // 000B GETMET R4 R0 K4 + 0x7C100200, // 000C CALL R4 1 + 0x8C100103, // 000D GETMET R4 R0 K3 + 0x7C100200, // 000E CALL R4 1 + 0x78120000, // 000F JMPF R4 #0011 + 0x70020058, // 0010 JMP #006A + 0x8C100105, // 0011 GETMET R4 R0 K5 + 0x7C100200, // 0012 CALL R4 1 + 0x4C140000, // 0013 LDNIL R5 + 0x20140605, // 0014 NE R5 R3 R5 + 0x78160004, // 0015 JMPF R5 #001B + 0x8C140106, // 0016 GETMET R5 R0 K6 + 0x5C1C0400, // 0017 MOVE R7 R2 + 0x5C200800, // 0018 MOVE R8 R4 + 0x5C240600, // 0019 MOVE R9 R3 + 0x7C140800, // 001A CALL R5 4 + 0x8C140107, // 001B GETMET R5 R0 K7 + 0x7C140200, // 001C CALL R5 1 + 0x8C140108, // 001D GETMET R5 R0 K8 + 0x581C0009, // 001E LDCONST R7 K9 + 0x7C140400, // 001F CALL R5 2 + 0x8C18010A, // 0020 GETMET R6 R0 K10 + 0x7C180200, // 0021 CALL R6 1 + 0x8C1C010B, // 0022 GETMET R7 R0 K11 + 0x60240018, // 0023 GETGBL R9 G24 + 0x5828000C, // 0024 LDCONST R10 K12 + 0x5C2C0200, // 0025 MOVE R11 R1 + 0x5C300800, // 0026 MOVE R12 R4 + 0x5C340A00, // 0027 MOVE R13 R5 + 0x5C380C00, // 0028 MOVE R14 R6 + 0x7C240A00, // 0029 CALL R9 5 + 0x7C1C0400, // 002A CALL R7 2 + 0x8C1C0102, // 002B GETMET R7 R0 K2 + 0x7C1C0200, // 002C CALL R7 1 + 0x741E000F, // 002D JMPT R7 #003E + 0x8C1C010D, // 002E GETMET R7 R0 K13 + 0x7C1C0200, // 002F CALL R7 1 + 0x4C200000, // 0030 LDNIL R8 + 0x20200E08, // 0031 NE R8 R7 R8 + 0x78220008, // 0032 JMPF R8 #003C + 0x88200F0E, // 0033 GETMBR R8 R7 K14 + 0xB8261E00, // 0034 GETNGBL R9 K15 + 0x88241310, // 0035 GETMBR R9 R9 K16 + 0x88241311, // 0036 GETMBR R9 R9 K17 + 0x1C201009, // 0037 EQ R8 R8 R9 + 0x78220002, // 0038 JMPF R8 #003C + 0x8C200112, // 0039 GETMET R8 R0 K18 + 0x7C200200, // 003A CALL R8 1 + 0x70020000, // 003B JMP #003D + 0x70020000, // 003C JMP #003E + 0x7001FFEC, // 003D JMP #002B + 0x8C1C010D, // 003E GETMET R7 R0 K13 + 0x7C1C0200, // 003F CALL R7 1 + 0x4C200000, // 0040 LDNIL R8 + 0x201C0E08, // 0041 NE R7 R7 R8 + 0x781E000C, // 0042 JMPF R7 #0050 + 0x8C1C010D, // 0043 GETMET R7 R0 K13 + 0x7C1C0200, // 0044 CALL R7 1 + 0x881C0F0E, // 0045 GETMBR R7 R7 K14 + 0xB8221E00, // 0046 GETNGBL R8 K15 + 0x88201110, // 0047 GETMBR R8 R8 K16 + 0x88201113, // 0048 GETMBR R8 R8 K19 + 0x1C1C0E08, // 0049 EQ R7 R7 R8 + 0x781E0004, // 004A JMPF R7 #0050 + 0x8C1C0112, // 004B GETMET R7 R0 K18 + 0x7C1C0200, // 004C CALL R7 1 + 0x8C1C0104, // 004D GETMET R7 R0 K4 + 0x7C1C0200, // 004E CALL R7 1 + 0x70020018, // 004F JMP #0069 + 0x8C1C010D, // 0050 GETMET R7 R0 K13 + 0x7C1C0200, // 0051 CALL R7 1 + 0x4C200000, // 0052 LDNIL R8 + 0x201C0E08, // 0053 NE R7 R7 R8 + 0x781E000C, // 0054 JMPF R7 #0062 + 0x8C1C010D, // 0055 GETMET R7 R0 K13 + 0x7C1C0200, // 0056 CALL R7 1 + 0x881C0F0E, // 0057 GETMBR R7 R7 K14 + 0xB8221E00, // 0058 GETNGBL R8 K15 + 0x88201110, // 0059 GETMBR R8 R8 K16 + 0x88201114, // 005A GETMBR R8 R8 K20 + 0x1C1C0E08, // 005B EQ R7 R7 R8 + 0x781E0004, // 005C JMPF R7 #0062 + 0x8C1C0112, // 005D GETMET R7 R0 K18 + 0x7C1C0200, // 005E CALL R7 1 + 0x8C1C0104, // 005F GETMET R7 R0 K4 + 0x7C1C0200, // 0060 CALL R7 1 + 0x70020006, // 0061 JMP #0069 + 0x8C1C0103, // 0062 GETMET R7 R0 K3 + 0x7C1C0200, // 0063 CALL R7 1 + 0x741E0003, // 0064 JMPT R7 #0069 + 0x8C1C0115, // 0065 GETMET R7 R0 K21 + 0x58240016, // 0066 LDCONST R9 K22 + 0x7C1C0400, // 0067 CALL R7 2 + 0x70020000, // 0068 JMP #006A + 0x7001FF9A, // 0069 JMP #0005 + 0x8C100117, // 006A GETMET R4 R0 K23 + 0x7C100200, // 006B CALL R4 1 + 0x80000000, // 006C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_unary_expression_raw +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression_raw, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(nil), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(Token), + /* K7 */ be_nested_str_weak(MINUS), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(process_unary_expression_raw), + /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), + /* K11 */ be_nested_str_weak(PLUS), + /* K12 */ be_nested_str_weak(process_primary_expression_raw), + }), + be_str_weak(process_unary_expression_raw), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080101, // 0005 GETMET R2 R0 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x7C080400, // 0007 CALL R2 2 + 0x80060600, // 0008 RET 1 K3 + 0x88080304, // 0009 GETMBR R2 R1 K4 + 0xB80E0A00, // 000A GETNGBL R3 K5 + 0x880C0706, // 000B GETMBR R3 R3 K6 + 0x880C0707, // 000C GETMBR R3 R3 K7 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0008, // 000E JMPF R2 #0018 + 0x8C080108, // 000F GETMET R2 R0 K8 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080109, // 0011 GETMET R2 R0 K9 + 0x7C080200, // 0012 CALL R2 1 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x5810000A, // 0014 LDCONST R4 K10 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x80040600, // 0017 RET 1 R3 + 0x88080304, // 0018 GETMBR R2 R1 K4 + 0xB80E0A00, // 0019 GETNGBL R3 K5 + 0x880C0706, // 001A GETMBR R3 R3 K6 + 0x880C070B, // 001B GETMBR R3 R3 K11 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A0004, // 001D JMPF R2 #0023 + 0x8C080108, // 001E GETMET R2 R0 K8 + 0x7C080200, // 001F CALL R2 1 + 0x8C080109, // 0020 GETMET R2 R0 K9 + 0x7C080200, // 0021 CALL R2 1 + 0x80040400, // 0022 RET 1 R2 + 0x8C08010C, // 0023 GETMET R2 R0 K12 + 0x7C080200, // 0024 CALL R2 1 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_error_report +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* 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(has_errors), + /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), + /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(_X20_X20), + /* K5 */ be_nested_str_weak(_X0A), + /* K6 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_error_report), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060000, // 0002 JMPT R1 #0004 + 0x80060200, // 0003 RET 1 K1 + 0x58040002, // 0004 LDCONST R1 K2 + 0x60080010, // 0005 GETGBL R2 G16 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x00120803, // 000B ADD R4 K4 R3 + 0x00100905, // 000C ADD R4 R4 K5 + 0x00040204, // 000D ADD R1 R1 R4 + 0x7001FFF9, // 000E JMP #0009 + 0x58080006, // 000F LDCONST R2 K6 + 0xAC080200, // 0010 CATCH R2 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040200, // 0012 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ + be_nested_proto( + 15, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(color), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(COMMENT), + /* K17 */ be_nested_str_weak(_X20_X20), + /* K18 */ be_nested_str_weak(animation), + /* K19 */ be_nested_str_weak(is_user_function), + /* K20 */ be_nested_str_weak(process_function_arguments), + /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K22 */ be_nested_str_weak(engine), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), + /* K25 */ be_nested_str_weak(_validate_color_provider_factory_exists), + /* K26 */ be_nested_str_weak(error), + /* K27 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K29 */ be_nested_str_weak(_process_named_arguments_for_color_provider), + /* K30 */ be_nested_str_weak(_X25s_), + /* K31 */ be_nested_str_weak(process_value), + /* K32 */ be_nested_str_weak(collect_inline_comment), + /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + }), + be_str_weak(process_color), + &be_const_str_solidified, + ( &(const binstruction[133]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0xB8121000, // 0011 GETNGBL R4 K8 + 0x88100909, // 0012 GETMBR R4 R4 K9 + 0x8810090A, // 0013 GETMBR R4 R4 K10 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0005, // 0015 JMPT R3 #001C + 0x880C0507, // 0016 GETMBR R3 R2 K7 + 0xB8121000, // 0017 GETNGBL R4 K8 + 0x88100909, // 0018 GETMBR R4 R4 K9 + 0x8810090B, // 0019 GETMBR R4 R4 K11 + 0x1C0C0604, // 001A EQ R3 R3 R4 + 0x780E005A, // 001B JMPF R3 #0077 + 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x7C0C0200, // 001D CALL R3 1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E0055, // 0020 JMPF R3 #0077 + 0x8C0C010C, // 0021 GETMET R3 R0 K12 + 0x7C0C0200, // 0022 CALL R3 1 + 0x880C0707, // 0023 GETMBR R3 R3 K7 + 0xB8121000, // 0024 GETNGBL R4 K8 + 0x88100909, // 0025 GETMBR R4 R4 K9 + 0x8810090D, // 0026 GETMBR R4 R4 K13 + 0x1C0C0604, // 0027 EQ R3 R3 R4 + 0x780E004D, // 0028 JMPF R3 #0077 + 0x880C050E, // 0029 GETMBR R3 R2 K14 + 0x8C100100, // 002A GETMET R4 R0 K0 + 0x7C100200, // 002B CALL R4 1 + 0x5810000F, // 002C LDCONST R4 K15 + 0x8C140106, // 002D GETMET R5 R0 K6 + 0x7C140200, // 002E CALL R5 1 + 0x4C180000, // 002F LDNIL R6 + 0x20140A06, // 0030 NE R5 R5 R6 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x8C140106, // 0032 GETMET R5 R0 K6 + 0x7C140200, // 0033 CALL R5 1 + 0x88140B07, // 0034 GETMBR R5 R5 K7 + 0xB81A1000, // 0035 GETNGBL R6 K8 + 0x88180D09, // 0036 GETMBR R6 R6 K9 + 0x88180D10, // 0037 GETMBR R6 R6 K16 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x78160006, // 0039 JMPF R5 #0041 + 0x8C140106, // 003A GETMET R5 R0 K6 + 0x7C140200, // 003B CALL R5 1 + 0x88140B0E, // 003C GETMBR R5 R5 K14 + 0x00162205, // 003D ADD R5 K17 R5 + 0x5C100A00, // 003E MOVE R4 R5 + 0x8C140100, // 003F GETMET R5 R0 K0 + 0x7C140200, // 0040 CALL R5 1 + 0xB8162400, // 0041 GETNGBL R5 K18 + 0x8C140B13, // 0042 GETMET R5 R5 K19 + 0x5C1C0600, // 0043 MOVE R7 R3 + 0x7C140400, // 0044 CALL R5 2 + 0x78160013, // 0045 JMPF R5 #005A + 0x8C140114, // 0046 GETMET R5 R0 K20 + 0x7C140200, // 0047 CALL R5 1 + 0x20180B0F, // 0048 NE R6 R5 K15 + 0x781A0004, // 0049 JMPF R6 #004F + 0x60180018, // 004A GETGBL R6 G24 + 0x581C0015, // 004B LDCONST R7 K21 + 0x5C200A00, // 004C MOVE R8 R5 + 0x7C180400, // 004D CALL R6 2 + 0x70020000, // 004E JMP #0050 + 0x58180016, // 004F LDCONST R6 K22 + 0x8C1C0117, // 0050 GETMET R7 R0 K23 + 0x60240018, // 0051 GETGBL R9 G24 + 0x58280018, // 0052 LDCONST R10 K24 + 0x5C2C0200, // 0053 MOVE R11 R1 + 0x5C300600, // 0054 MOVE R12 R3 + 0x5C340C00, // 0055 MOVE R13 R6 + 0x5C380800, // 0056 MOVE R14 R4 + 0x7C240A00, // 0057 CALL R9 5 + 0x7C1C0400, // 0058 CALL R7 2 + 0x7002001B, // 0059 JMP #0076 + 0x8C140119, // 005A GETMET R5 R0 K25 + 0x5C1C0600, // 005B MOVE R7 R3 + 0x7C140400, // 005C CALL R5 2 + 0x74160008, // 005D JMPT R5 #0067 + 0x8C14011A, // 005E GETMET R5 R0 K26 + 0x601C0018, // 005F GETGBL R7 G24 + 0x5820001B, // 0060 LDCONST R8 K27 + 0x5C240600, // 0061 MOVE R9 R3 + 0x7C1C0400, // 0062 CALL R7 2 + 0x7C140400, // 0063 CALL R5 2 + 0x8C140104, // 0064 GETMET R5 R0 K4 + 0x7C140200, // 0065 CALL R5 1 + 0x80000A00, // 0066 RET 0 + 0x8C140117, // 0067 GETMET R5 R0 K23 + 0x601C0018, // 0068 GETGBL R7 G24 + 0x5820001C, // 0069 LDCONST R8 K28 + 0x5C240200, // 006A MOVE R9 R1 + 0x5C280600, // 006B MOVE R10 R3 + 0x5C2C0800, // 006C MOVE R11 R4 + 0x7C1C0800, // 006D CALL R7 4 + 0x7C140400, // 006E CALL R5 2 + 0x8C14011D, // 006F GETMET R5 R0 K29 + 0x601C0018, // 0070 GETGBL R7 G24 + 0x5820001E, // 0071 LDCONST R8 K30 + 0x5C240200, // 0072 MOVE R9 R1 + 0x7C1C0400, // 0073 CALL R7 2 + 0x5C200600, // 0074 MOVE R8 R3 + 0x7C140600, // 0075 CALL R5 3 + 0x7002000C, // 0076 JMP #0084 + 0x8C0C011F, // 0077 GETMET R3 R0 K31 + 0x58140003, // 0078 LDCONST R5 K3 + 0x7C0C0400, // 0079 CALL R3 2 + 0x8C100120, // 007A GETMET R4 R0 K32 + 0x7C100200, // 007B CALL R4 1 + 0x8C140117, // 007C GETMET R5 R0 K23 + 0x601C0018, // 007D GETGBL R7 G24 + 0x58200021, // 007E LDCONST R8 K33 + 0x5C240200, // 007F MOVE R9 R1 + 0x5C280600, // 0080 MOVE R10 R3 + 0x5C2C0800, // 0081 MOVE R11 R4 + 0x7C1C0800, // 0082 CALL R7 4 + 0x7C140400, // 0083 CALL R5 2 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_creates_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -6370,23 +7322,18 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(is_math_method), - /* K1 */ be_nested_str_weak(_validate_factory_function), + /* K0 */ be_nested_str_weak(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), }), - be_str_weak(_validate_animation_factory_exists), + be_str_weak(_validate_animation_factory_creates_animation), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ + ( &(const binstruction[ 6]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x50080200, // 0004 LDBOOL R2 1 0 + 0xB8160200, // 0002 GETNGBL R5 K1 + 0x88140B01, // 0003 GETMBR R5 R5 K1 + 0x7C080600, // 0004 CALL R2 3 0x80040400, // 0005 RET 1 R2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0x5C100200, // 0007 MOVE R4 R1 - 0x4C140000, // 0008 LDNIL R5 - 0x7C080600, // 0009 CALL R2 3 - 0x80040400, // 000A RET 1 R2 }) ) ); @@ -6394,11 +7341,81 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /******************************************************************** -** Solidified function: process_primary_expression +** Solidified function: can_use_as_identifier ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name */ +be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ be_nested_proto( - 11, /* nstack */ + 6, /* nstack */ + 2, /* 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(color), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(palette), + /* K3 */ be_nested_str_weak(startup), + /* K4 */ be_nested_str_weak(shutdown), + /* K5 */ be_nested_str_weak(button_press), + /* K6 */ be_nested_str_weak(button_hold), + /* K7 */ be_nested_str_weak(motion_detected), + /* K8 */ be_nested_str_weak(brightness_change), + /* K9 */ be_nested_str_weak(timer), + /* K10 */ be_nested_str_weak(time), + /* K11 */ be_nested_str_weak(sound_peak), + /* K12 */ be_nested_str_weak(network_message), + /* K13 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(can_use_as_identifier), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x400C0502, // 0004 CONNECT R3 R2 K2 + 0x400C0503, // 0005 CONNECT R3 R2 K3 + 0x400C0504, // 0006 CONNECT R3 R2 K4 + 0x400C0505, // 0007 CONNECT R3 R2 K5 + 0x400C0506, // 0008 CONNECT R3 R2 K6 + 0x400C0507, // 0009 CONNECT R3 R2 K7 + 0x400C0508, // 000A CONNECT R3 R2 K8 + 0x400C0509, // 000B CONNECT R3 R2 K9 + 0x400C050A, // 000C CONNECT R3 R2 K10 + 0x400C050B, // 000D CONNECT R3 R2 K11 + 0x400C050C, // 000E CONNECT R3 R2 K12 + 0x600C0010, // 000F GETGBL R3 G16 + 0x5C100400, // 0010 MOVE R4 R2 + 0x7C0C0200, // 0011 CALL R3 1 + 0xA8020007, // 0012 EXBLK 0 #001B + 0x5C100600, // 0013 MOVE R4 R3 + 0x7C100000, // 0014 CALL R4 0 + 0x1C140204, // 0015 EQ R5 R1 R4 + 0x78160002, // 0016 JMPF R5 #001A + 0x50140200, // 0017 LDBOOL R5 1 0 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040A00, // 0019 RET 1 R5 + 0x7001FFF7, // 001A JMP #0013 + 0x580C000D, // 001B LDCONST R3 K13 + 0xAC0C0200, // 001C CATCH R3 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x500C0000, // 001E LDBOOL R3 0 0 + 0x80040600, // 001F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_unary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ + be_nested_proto( + 8, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -6406,7 +7423,7 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[45]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(error), /* K2 */ be_nested_str_weak(Expected_X20value), @@ -6414,48 +7431,16 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /* K4 */ be_nested_str_weak(type), /* K5 */ be_nested_str_weak(animation_dsl), /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(LEFT_PAREN), + /* K7 */ be_nested_str_weak(MINUS), /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_additive_expression), - /* K10 */ be_nested_str_weak(expect_right_paren), - /* K11 */ be_nested_str_weak(_X28_X25s_X29), - /* K12 */ be_nested_str_weak(KEYWORD), - /* K13 */ be_nested_str_weak(IDENTIFIER), - /* K14 */ be_nested_str_weak(peek), - /* K15 */ be_nested_str_weak(argument), - /* K16 */ be_nested_str_weak(property), - /* K17 */ be_nested_str_weak(variable), - /* K18 */ be_nested_str_weak(process_nested_function_call), - /* K19 */ be_nested_str_weak(process_function_call), - /* K20 */ be_nested_str_weak(COLOR), - /* K21 */ be_nested_str_weak(convert_color), - /* K22 */ be_nested_str_weak(value), - /* K23 */ be_nested_str_weak(TIME), - /* K24 */ be_nested_str_weak(process_time_value), - /* K25 */ be_nested_str_weak(PERCENTAGE), - /* K26 */ be_nested_str_weak(process_percentage_value), - /* K27 */ be_nested_str_weak(NUMBER), - /* K28 */ be_nested_str_weak(STRING), - /* K29 */ be_nested_str_weak(_X22_X25s_X22), - /* K30 */ be_nested_str_weak(LEFT_BRACKET), - /* K31 */ be_nested_str_weak(process_array_literal), - /* K32 */ be_nested_str_weak(string), - /* K33 */ be_nested_str_weak(startswith), - /* K34 */ be_nested_str_weak(PALETTE_), - /* K35 */ be_nested_str_weak(animation_X2E_X25s), - /* K36 */ be_nested_str_weak(is_color_name), - /* K37 */ be_nested_str_weak(get_named_color_value), - /* K38 */ be_nested_str_weak(introspect), - /* K39 */ be_nested_str_weak(contains), - /* K40 */ be_nested_str_weak(animation), - /* K41 */ be_nested_str_weak(_X25s_), - /* K42 */ be_nested_str_weak(true), - /* K43 */ be_nested_str_weak(false), - /* K44 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), + /* K9 */ be_nested_str_weak(process_unary_expression), + /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), + /* K11 */ be_nested_str_weak(PLUS), + /* K12 */ be_nested_str_weak(process_primary_expression), }), - be_str_weak(process_primary_expression), + be_str_weak(process_unary_expression), &be_const_str_solidified, - ( &(const binstruction[219]) { /* code */ + ( &(const binstruction[44]) { /* code */ 0x8C0C0100, // 0000 GETMET R3 R0 K0 0x7C0C0200, // 0001 CALL R3 1 0x4C100000, // 0002 LDNIL R4 @@ -6470,211 +7455,36 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name 0x88140B06, // 000B GETMBR R5 R5 K6 0x88140B07, // 000C GETMBR R5 R5 K7 0x1C100805, // 000D EQ R4 R4 R5 - 0x7812000C, // 000E JMPF R4 #001C + 0x7812000A, // 000E JMPF R4 #001A 0x8C100108, // 000F GETMET R4 R0 K8 0x7C100200, // 0010 CALL R4 1 0x8C100109, // 0011 GETMET R4 R0 K9 0x5C180200, // 0012 MOVE R6 R1 0x501C0000, // 0013 LDBOOL R7 0 0 0x7C100600, // 0014 CALL R4 3 - 0x8C14010A, // 0015 GETMET R5 R0 K10 - 0x7C140200, // 0016 CALL R5 1 - 0x60140018, // 0017 GETGBL R5 G24 - 0x5818000B, // 0018 LDCONST R6 K11 - 0x5C1C0800, // 0019 MOVE R7 R4 - 0x7C140400, // 001A CALL R5 2 - 0x80040A00, // 001B RET 1 R5 - 0x88100704, // 001C GETMBR R4 R3 K4 - 0xB8160A00, // 001D GETNGBL R5 K5 - 0x88140B06, // 001E GETMBR R5 R5 K6 - 0x88140B0C, // 001F GETMBR R5 R5 K12 - 0x1C100805, // 0020 EQ R4 R4 R5 - 0x74120005, // 0021 JMPT R4 #0028 - 0x88100704, // 0022 GETMBR R4 R3 K4 - 0xB8160A00, // 0023 GETNGBL R5 K5 - 0x88140B06, // 0024 GETMBR R5 R5 K6 - 0x88140B0D, // 0025 GETMBR R5 R5 K13 - 0x1C100805, // 0026 EQ R4 R4 R5 - 0x7812001A, // 0027 JMPF R4 #0043 - 0x8C10010E, // 0028 GETMET R4 R0 K14 - 0x7C100200, // 0029 CALL R4 1 - 0x4C140000, // 002A LDNIL R5 - 0x20100805, // 002B NE R4 R4 R5 - 0x78120015, // 002C JMPF R4 #0043 - 0x8C10010E, // 002D GETMET R4 R0 K14 - 0x7C100200, // 002E CALL R4 1 - 0x88100904, // 002F GETMBR R4 R4 K4 - 0xB8160A00, // 0030 GETNGBL R5 K5 - 0x88140B06, // 0031 GETMBR R5 R5 K6 - 0x88140B07, // 0032 GETMBR R5 R5 K7 - 0x1C100805, // 0033 EQ R4 R4 R5 - 0x7812000D, // 0034 JMPF R4 #0043 - 0x1C10030F, // 0035 EQ R4 R1 K15 - 0x74120003, // 0036 JMPT R4 #003B - 0x1C100310, // 0037 EQ R4 R1 K16 - 0x74120001, // 0038 JMPT R4 #003B - 0x1C100311, // 0039 EQ R4 R1 K17 - 0x78120003, // 003A JMPF R4 #003F - 0x8C100112, // 003B GETMET R4 R0 K18 - 0x7C100200, // 003C CALL R4 1 - 0x80040800, // 003D RET 1 R4 - 0x70020003, // 003E JMP #0043 - 0x8C100113, // 003F GETMET R4 R0 K19 - 0x5C180200, // 0040 MOVE R6 R1 - 0x7C100400, // 0041 CALL R4 2 - 0x80040800, // 0042 RET 1 R4 - 0x88100704, // 0043 GETMBR R4 R3 K4 - 0xB8160A00, // 0044 GETNGBL R5 K5 - 0x88140B06, // 0045 GETMBR R5 R5 K6 - 0x88140B14, // 0046 GETMBR R5 R5 K20 - 0x1C100805, // 0047 EQ R4 R4 R5 - 0x78120005, // 0048 JMPF R4 #004F - 0x8C100108, // 0049 GETMET R4 R0 K8 - 0x7C100200, // 004A CALL R4 1 - 0x8C100115, // 004B GETMET R4 R0 K21 - 0x88180716, // 004C GETMBR R6 R3 K22 - 0x7C100400, // 004D CALL R4 2 - 0x80040800, // 004E RET 1 R4 - 0x88100704, // 004F GETMBR R4 R3 K4 - 0xB8160A00, // 0050 GETNGBL R5 K5 - 0x88140B06, // 0051 GETMBR R5 R5 K6 - 0x88140B17, // 0052 GETMBR R5 R5 K23 - 0x1C100805, // 0053 EQ R4 R4 R5 - 0x78120004, // 0054 JMPF R4 #005A - 0x60100008, // 0055 GETGBL R4 G8 - 0x8C140118, // 0056 GETMET R5 R0 K24 - 0x7C140200, // 0057 CALL R5 1 - 0x7C100200, // 0058 CALL R4 1 - 0x80040800, // 0059 RET 1 R4 - 0x88100704, // 005A GETMBR R4 R3 K4 - 0xB8160A00, // 005B GETNGBL R5 K5 - 0x88140B06, // 005C GETMBR R5 R5 K6 - 0x88140B19, // 005D GETMBR R5 R5 K25 - 0x1C100805, // 005E EQ R4 R4 R5 - 0x78120004, // 005F JMPF R4 #0065 - 0x60100008, // 0060 GETGBL R4 G8 - 0x8C14011A, // 0061 GETMET R5 R0 K26 - 0x7C140200, // 0062 CALL R5 1 - 0x7C100200, // 0063 CALL R4 1 - 0x80040800, // 0064 RET 1 R4 - 0x88100704, // 0065 GETMBR R4 R3 K4 - 0xB8160A00, // 0066 GETNGBL R5 K5 - 0x88140B06, // 0067 GETMBR R5 R5 K6 - 0x88140B1B, // 0068 GETMBR R5 R5 K27 - 0x1C100805, // 0069 EQ R4 R4 R5 - 0x78120003, // 006A JMPF R4 #006F - 0x88100716, // 006B GETMBR R4 R3 K22 - 0x8C140108, // 006C GETMET R5 R0 K8 - 0x7C140200, // 006D CALL R5 1 - 0x80040800, // 006E RET 1 R4 - 0x88100704, // 006F GETMBR R4 R3 K4 - 0xB8160A00, // 0070 GETNGBL R5 K5 - 0x88140B06, // 0071 GETMBR R5 R5 K6 - 0x88140B1C, // 0072 GETMBR R5 R5 K28 - 0x1C100805, // 0073 EQ R4 R4 R5 - 0x78120007, // 0074 JMPF R4 #007D - 0x88100716, // 0075 GETMBR R4 R3 K22 - 0x8C140108, // 0076 GETMET R5 R0 K8 - 0x7C140200, // 0077 CALL R5 1 - 0x60140018, // 0078 GETGBL R5 G24 - 0x5818001D, // 0079 LDCONST R6 K29 - 0x5C1C0800, // 007A MOVE R7 R4 - 0x7C140400, // 007B CALL R5 2 - 0x80040A00, // 007C RET 1 R5 - 0x88100704, // 007D GETMBR R4 R3 K4 - 0xB8160A00, // 007E GETNGBL R5 K5 - 0x88140B06, // 007F GETMBR R5 R5 K6 - 0x88140B1E, // 0080 GETMBR R5 R5 K30 - 0x1C100805, // 0081 EQ R4 R4 R5 - 0x78120002, // 0082 JMPF R4 #0086 - 0x8C10011F, // 0083 GETMET R4 R0 K31 - 0x7C100200, // 0084 CALL R4 1 - 0x80040800, // 0085 RET 1 R4 - 0x88100704, // 0086 GETMBR R4 R3 K4 - 0xB8160A00, // 0087 GETNGBL R5 K5 - 0x88140B06, // 0088 GETMBR R5 R5 K6 - 0x88140B0D, // 0089 GETMBR R5 R5 K13 - 0x1C100805, // 008A EQ R4 R4 R5 - 0x78120027, // 008B JMPF R4 #00B4 - 0x88100716, // 008C GETMBR R4 R3 K22 - 0x8C140108, // 008D GETMET R5 R0 K8 - 0x7C140200, // 008E CALL R5 1 - 0xA4164000, // 008F IMPORT R5 K32 - 0x8C180B21, // 0090 GETMET R6 R5 K33 - 0x5C200800, // 0091 MOVE R8 R4 - 0x58240022, // 0092 LDCONST R9 K34 - 0x7C180600, // 0093 CALL R6 3 - 0x781A0004, // 0094 JMPF R6 #009A - 0x60180018, // 0095 GETGBL R6 G24 - 0x581C0023, // 0096 LDCONST R7 K35 - 0x5C200800, // 0097 MOVE R8 R4 - 0x7C180400, // 0098 CALL R6 2 - 0x80040C00, // 0099 RET 1 R6 - 0xB81A0A00, // 009A GETNGBL R6 K5 - 0x8C180D24, // 009B GETMET R6 R6 K36 - 0x5C200800, // 009C MOVE R8 R4 - 0x7C180400, // 009D CALL R6 2 - 0x781A0003, // 009E JMPF R6 #00A3 - 0x8C180125, // 009F GETMET R6 R0 K37 - 0x5C200800, // 00A0 MOVE R8 R4 - 0x7C180400, // 00A1 CALL R6 2 - 0x80040C00, // 00A2 RET 1 R6 - 0xA41A4C00, // 00A3 IMPORT R6 K38 - 0x8C1C0D27, // 00A4 GETMET R7 R6 K39 - 0xB8265000, // 00A5 GETNGBL R9 K40 - 0x5C280800, // 00A6 MOVE R10 R4 - 0x7C1C0600, // 00A7 CALL R7 3 - 0x781E0005, // 00A8 JMPF R7 #00AF - 0x601C0018, // 00A9 GETGBL R7 G24 - 0x58200023, // 00AA LDCONST R8 K35 - 0x5C240800, // 00AB MOVE R9 R4 - 0x7C1C0400, // 00AC CALL R7 2 - 0x80040E00, // 00AD RET 1 R7 - 0x70020004, // 00AE JMP #00B4 - 0x601C0018, // 00AF GETGBL R7 G24 - 0x58200029, // 00B0 LDCONST R8 K41 - 0x5C240800, // 00B1 MOVE R9 R4 - 0x7C1C0400, // 00B2 CALL R7 2 - 0x80040E00, // 00B3 RET 1 R7 - 0x88100704, // 00B4 GETMBR R4 R3 K4 - 0xB8160A00, // 00B5 GETNGBL R5 K5 - 0x88140B06, // 00B6 GETMBR R5 R5 K6 - 0x88140B0C, // 00B7 GETMBR R5 R5 K12 - 0x1C100805, // 00B8 EQ R4 R4 R5 - 0x78120009, // 00B9 JMPF R4 #00C4 - 0x88100716, // 00BA GETMBR R4 R3 K22 - 0x1C10092A, // 00BB EQ R4 R4 K42 - 0x74120002, // 00BC JMPT R4 #00C0 - 0x88100716, // 00BD GETMBR R4 R3 K22 - 0x1C10092B, // 00BE EQ R4 R4 K43 - 0x78120003, // 00BF JMPF R4 #00C4 - 0x88100716, // 00C0 GETMBR R4 R3 K22 - 0x8C140108, // 00C1 GETMET R5 R0 K8 - 0x7C140200, // 00C2 CALL R5 1 - 0x80040800, // 00C3 RET 1 R4 - 0x88100704, // 00C4 GETMBR R4 R3 K4 - 0xB8160A00, // 00C5 GETNGBL R5 K5 - 0x88140B06, // 00C6 GETMBR R5 R5 K6 - 0x88140B0C, // 00C7 GETMBR R5 R5 K12 - 0x1C100805, // 00C8 EQ R4 R4 R5 - 0x78120007, // 00C9 JMPF R4 #00D2 - 0x88100716, // 00CA GETMBR R4 R3 K22 - 0x8C140108, // 00CB GETMET R5 R0 K8 - 0x7C140200, // 00CC CALL R5 1 - 0x60140018, // 00CD GETGBL R5 G24 - 0x58180023, // 00CE LDCONST R6 K35 - 0x5C1C0800, // 00CF MOVE R7 R4 - 0x7C140400, // 00D0 CALL R5 2 - 0x80040A00, // 00D1 RET 1 R5 - 0x8C100101, // 00D2 GETMET R4 R0 K1 - 0x60180018, // 00D3 GETGBL R6 G24 - 0x581C002C, // 00D4 LDCONST R7 K44 - 0x88200716, // 00D5 GETMBR R8 R3 K22 - 0x7C180400, // 00D6 CALL R6 2 - 0x7C100400, // 00D7 CALL R4 2 - 0x8C100108, // 00D8 GETMET R4 R0 K8 - 0x7C100200, // 00D9 CALL R4 1 - 0x80060600, // 00DA RET 1 K3 + 0x60140018, // 0015 GETGBL R5 G24 + 0x5818000A, // 0016 LDCONST R6 K10 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x7C140400, // 0018 CALL R5 2 + 0x80040A00, // 0019 RET 1 R5 + 0x88100704, // 001A GETMBR R4 R3 K4 + 0xB8160A00, // 001B GETNGBL R5 K5 + 0x88140B06, // 001C GETMBR R5 R5 K6 + 0x88140B0B, // 001D GETMBR R5 R5 K11 + 0x1C100805, // 001E EQ R4 R4 R5 + 0x78120006, // 001F JMPF R4 #0027 + 0x8C100108, // 0020 GETMET R4 R0 K8 + 0x7C100200, // 0021 CALL R4 1 + 0x8C100109, // 0022 GETMET R4 R0 K9 + 0x5C180200, // 0023 MOVE R6 R1 + 0x501C0000, // 0024 LDBOOL R7 0 0 + 0x7C100600, // 0025 CALL R4 3 + 0x80040800, // 0026 RET 1 R4 + 0x8C10010C, // 0027 GETMET R4 R0 K12 + 0x5C180200, // 0028 MOVE R6 R1 + 0x5C1C0400, // 0029 MOVE R7 R2 + 0x7C100600, // 002A CALL R4 3 + 0x80040800, // 002B RET 1 R4 }) ) ); @@ -6682,11 +7492,213 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /******************************************************************** -** Solidified function: skip_whitespace +** Solidified function: is_anonymous_function ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ be_nested_proto( - 4, /* nstack */ + 7, /* nstack */ + 2, /* argc */ + 2, /* 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(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X28def_X20), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(_X29_X28engine_X29), + }), + be_str_weak(is_anonymous_function), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x1C0C0703, // 0005 EQ R3 R3 K3 + 0x780E0005, // 0006 JMPF R3 #000D + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x280C0703, // 000B GE R3 R3 K3 + 0x740E0000, // 000C JMPT R3 #000E + 0x500C0001, // 000D LDBOOL R3 0 1 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_generic +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_create_instance_for_validation), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K5 */ be_nested_str_weak(expect_identifier), + /* K6 */ be_nested_str_weak(_validate_single_parameter), + /* K7 */ be_nested_str_weak(expect_assign), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(argument), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K13 */ be_nested_str_weak(current), + /* K14 */ be_nested_str_weak(type), + /* K15 */ be_nested_str_weak(animation_dsl), + /* K16 */ be_nested_str_weak(Token), + /* K17 */ be_nested_str_weak(COMMENT), + /* K18 */ be_nested_str_weak(next), + /* K19 */ be_nested_str_weak(COMMA), + /* K20 */ be_nested_str_weak(NEWLINE), + /* K21 */ be_nested_str_weak(error), + /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K23 */ be_nested_str_weak(expect_right_paren), + }), + be_str_weak(_process_named_arguments_generic), + &be_const_str_solidified, + ( &(const binstruction[109]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x5C140400, // 0003 MOVE R5 R2 + 0x7C0C0400, // 0004 CALL R3 2 + 0x8C100102, // 0005 GETMET R4 R0 K2 + 0x7C100200, // 0006 CALL R4 1 + 0x74120061, // 0007 JMPT R4 #006A + 0x8C100103, // 0008 GETMET R4 R0 K3 + 0x7C100200, // 0009 CALL R4 1 + 0x7412005E, // 000A JMPT R4 #006A + 0x8C100104, // 000B GETMET R4 R0 K4 + 0x7C100200, // 000C CALL R4 1 + 0x8C100103, // 000D GETMET R4 R0 K3 + 0x7C100200, // 000E CALL R4 1 + 0x78120000, // 000F JMPF R4 #0011 + 0x70020058, // 0010 JMP #006A + 0x8C100105, // 0011 GETMET R4 R0 K5 + 0x7C100200, // 0012 CALL R4 1 + 0x4C140000, // 0013 LDNIL R5 + 0x20140605, // 0014 NE R5 R3 R5 + 0x78160004, // 0015 JMPF R5 #001B + 0x8C140106, // 0016 GETMET R5 R0 K6 + 0x5C1C0400, // 0017 MOVE R7 R2 + 0x5C200800, // 0018 MOVE R8 R4 + 0x5C240600, // 0019 MOVE R9 R3 + 0x7C140800, // 001A CALL R5 4 + 0x8C140107, // 001B GETMET R5 R0 K7 + 0x7C140200, // 001C CALL R5 1 + 0x8C140108, // 001D GETMET R5 R0 K8 + 0x581C0009, // 001E LDCONST R7 K9 + 0x7C140400, // 001F CALL R5 2 + 0x8C18010A, // 0020 GETMET R6 R0 K10 + 0x7C180200, // 0021 CALL R6 1 + 0x8C1C010B, // 0022 GETMET R7 R0 K11 + 0x60240018, // 0023 GETGBL R9 G24 + 0x5828000C, // 0024 LDCONST R10 K12 + 0x5C2C0200, // 0025 MOVE R11 R1 + 0x5C300800, // 0026 MOVE R12 R4 + 0x5C340A00, // 0027 MOVE R13 R5 + 0x5C380C00, // 0028 MOVE R14 R6 + 0x7C240A00, // 0029 CALL R9 5 + 0x7C1C0400, // 002A CALL R7 2 + 0x8C1C0102, // 002B GETMET R7 R0 K2 + 0x7C1C0200, // 002C CALL R7 1 + 0x741E000F, // 002D JMPT R7 #003E + 0x8C1C010D, // 002E GETMET R7 R0 K13 + 0x7C1C0200, // 002F CALL R7 1 + 0x4C200000, // 0030 LDNIL R8 + 0x20200E08, // 0031 NE R8 R7 R8 + 0x78220008, // 0032 JMPF R8 #003C + 0x88200F0E, // 0033 GETMBR R8 R7 K14 + 0xB8261E00, // 0034 GETNGBL R9 K15 + 0x88241310, // 0035 GETMBR R9 R9 K16 + 0x88241311, // 0036 GETMBR R9 R9 K17 + 0x1C201009, // 0037 EQ R8 R8 R9 + 0x78220002, // 0038 JMPF R8 #003C + 0x8C200112, // 0039 GETMET R8 R0 K18 + 0x7C200200, // 003A CALL R8 1 + 0x70020000, // 003B JMP #003D + 0x70020000, // 003C JMP #003E + 0x7001FFEC, // 003D JMP #002B + 0x8C1C010D, // 003E GETMET R7 R0 K13 + 0x7C1C0200, // 003F CALL R7 1 + 0x4C200000, // 0040 LDNIL R8 + 0x201C0E08, // 0041 NE R7 R7 R8 + 0x781E000C, // 0042 JMPF R7 #0050 + 0x8C1C010D, // 0043 GETMET R7 R0 K13 + 0x7C1C0200, // 0044 CALL R7 1 + 0x881C0F0E, // 0045 GETMBR R7 R7 K14 + 0xB8221E00, // 0046 GETNGBL R8 K15 + 0x88201110, // 0047 GETMBR R8 R8 K16 + 0x88201113, // 0048 GETMBR R8 R8 K19 + 0x1C1C0E08, // 0049 EQ R7 R7 R8 + 0x781E0004, // 004A JMPF R7 #0050 + 0x8C1C0112, // 004B GETMET R7 R0 K18 + 0x7C1C0200, // 004C CALL R7 1 + 0x8C1C0104, // 004D GETMET R7 R0 K4 + 0x7C1C0200, // 004E CALL R7 1 + 0x70020018, // 004F JMP #0069 + 0x8C1C010D, // 0050 GETMET R7 R0 K13 + 0x7C1C0200, // 0051 CALL R7 1 + 0x4C200000, // 0052 LDNIL R8 + 0x201C0E08, // 0053 NE R7 R7 R8 + 0x781E000C, // 0054 JMPF R7 #0062 + 0x8C1C010D, // 0055 GETMET R7 R0 K13 + 0x7C1C0200, // 0056 CALL R7 1 + 0x881C0F0E, // 0057 GETMBR R7 R7 K14 + 0xB8221E00, // 0058 GETNGBL R8 K15 + 0x88201110, // 0059 GETMBR R8 R8 K16 + 0x88201114, // 005A GETMBR R8 R8 K20 + 0x1C1C0E08, // 005B EQ R7 R7 R8 + 0x781E0004, // 005C JMPF R7 #0062 + 0x8C1C0112, // 005D GETMET R7 R0 K18 + 0x7C1C0200, // 005E CALL R7 1 + 0x8C1C0104, // 005F GETMET R7 R0 K4 + 0x7C1C0200, // 0060 CALL R7 1 + 0x70020006, // 0061 JMP #0069 + 0x8C1C0103, // 0062 GETMET R7 R0 K3 + 0x7C1C0200, // 0063 CALL R7 1 + 0x741E0003, // 0064 JMPT R7 #0069 + 0x8C1C0115, // 0065 GETMET R7 R0 K21 + 0x58240016, // 0066 LDCONST R9 K22 + 0x7C1C0400, // 0067 CALL R7 2 + 0x70020000, // 0068 JMP #006A + 0x7001FF9A, // 0069 JMP #0005 + 0x8C100117, // 006A GETMET R4 R0 K23 + 0x7C100200, // 006B CALL R4 1 + 0x80000000, // 006C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_nested_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ + be_nested_proto( + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -6694,45 +7706,138 @@ be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), + ( &(const bvalue[28]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), /* K2 */ be_nested_str_weak(type), /* K3 */ be_nested_str_weak(animation_dsl), /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(COMMENT), - /* K7 */ be_nested_str_weak(next), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(is_math_method), + /* K13 */ be_nested_str_weak(process_function_arguments_for_expression), + /* K14 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(is_user_function), + /* K17 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(self_X2Eengine), + /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), + /* K20 */ be_nested_str_weak(_is_simple_function_call), + /* K21 */ be_nested_str_weak(process_function_arguments), + /* K22 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + /* K24 */ be_nested_str_weak(_validate_animation_factory_exists), + /* K25 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K26 */ be_nested_str_weak(skip_function_arguments), + /* K27 */ be_nested_str_weak(_generate_anonymous_function_call), }), - be_str_weak(skip_whitespace), + be_str_weak(process_nested_function_call), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ + ( &(const binstruction[99]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x74060015, // 0002 JMPT R1 #0019 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000E, // 0007 JMPF R2 #0017 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x740A0005, // 000D JMPT R2 #0014 - 0x88080302, // 000E GETMBR R2 R1 K2 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x880C0704, // 0010 GETMBR R3 R3 K4 - 0x880C0706, // 0011 GETMBR R3 R3 K6 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080107, // 0014 GETMET R2 R0 K7 - 0x7C080200, // 0015 CALL R2 1 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x80000000, // 0019 RET 0 + 0x58080001, // 0002 LDCONST R2 K1 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0203, // 0004 NE R3 R1 R3 + 0x780E000F, // 0005 JMPF R3 #0016 + 0x880C0302, // 0006 GETMBR R3 R1 K2 + 0xB8120600, // 0007 GETNGBL R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x88100905, // 0009 GETMBR R4 R4 K5 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x740E0005, // 000B JMPT R3 #0012 + 0x880C0302, // 000C GETMBR R3 R1 K2 + 0xB8120600, // 000D GETNGBL R4 K3 + 0x88100904, // 000E GETMBR R4 R4 K4 + 0x88100906, // 000F GETMBR R4 R4 K6 + 0x1C0C0604, // 0010 EQ R3 R3 R4 + 0x780E0003, // 0011 JMPF R3 #0016 + 0x88080307, // 0012 GETMBR R2 R1 K7 + 0x8C0C0108, // 0013 GETMET R3 R0 K8 + 0x7C0C0200, // 0014 CALL R3 1 + 0x70020003, // 0015 JMP #001A + 0x8C0C0109, // 0016 GETMET R3 R0 K9 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80061600, // 0019 RET 1 K11 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x5C140400, // 001B MOVE R5 R2 + 0x7C0C0400, // 001C CALL R3 2 + 0x780E0007, // 001D JMPF R3 #0026 + 0x8C0C010D, // 001E GETMET R3 R0 K13 + 0x7C0C0200, // 001F CALL R3 1 + 0x60100018, // 0020 GETGBL R4 G24 + 0x5814000E, // 0021 LDCONST R5 K14 + 0x5C180400, // 0022 MOVE R6 R2 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x7C100600, // 0024 CALL R4 3 + 0x80040800, // 0025 RET 1 R4 + 0xB80E1E00, // 0026 GETNGBL R3 K15 + 0x8C0C0710, // 0027 GETMET R3 R3 K16 + 0x5C140400, // 0028 MOVE R5 R2 + 0x7C0C0400, // 0029 CALL R3 2 + 0x780E0010, // 002A JMPF R3 #003C + 0x8C0C010D, // 002B GETMET R3 R0 K13 + 0x7C0C0200, // 002C CALL R3 1 + 0x20100701, // 002D NE R4 R3 K1 + 0x78120004, // 002E JMPF R4 #0034 + 0x60100018, // 002F GETGBL R4 G24 + 0x58140011, // 0030 LDCONST R5 K17 + 0x5C180600, // 0031 MOVE R6 R3 + 0x7C100400, // 0032 CALL R4 2 + 0x70020000, // 0033 JMP #0035 + 0x58100012, // 0034 LDCONST R4 K18 + 0x60140018, // 0035 GETGBL R5 G24 + 0x58180013, // 0036 LDCONST R6 K19 + 0x5C1C0400, // 0037 MOVE R7 R2 + 0x5C200800, // 0038 MOVE R8 R4 + 0x7C140600, // 0039 CALL R5 3 + 0x80040A00, // 003A RET 1 R5 + 0x70020025, // 003B JMP #0062 + 0x8C0C0114, // 003C GETMET R3 R0 K20 + 0x5C140400, // 003D MOVE R5 R2 + 0x7C0C0400, // 003E CALL R3 2 + 0x780E0010, // 003F JMPF R3 #0051 + 0x8C0C0115, // 0040 GETMET R3 R0 K21 + 0x7C0C0200, // 0041 CALL R3 1 + 0x20100701, // 0042 NE R4 R3 K1 + 0x78120006, // 0043 JMPF R4 #004B + 0x60100018, // 0044 GETGBL R4 G24 + 0x58140016, // 0045 LDCONST R5 K22 + 0x5C180400, // 0046 MOVE R6 R2 + 0x5C1C0600, // 0047 MOVE R7 R3 + 0x7C100600, // 0048 CALL R4 3 + 0x80040800, // 0049 RET 1 R4 + 0x70020004, // 004A JMP #0050 + 0x60100018, // 004B GETGBL R4 G24 + 0x58140017, // 004C LDCONST R5 K23 + 0x5C180400, // 004D MOVE R6 R2 + 0x7C100400, // 004E CALL R4 2 + 0x80040800, // 004F RET 1 R4 + 0x70020010, // 0050 JMP #0062 + 0x8C0C0118, // 0051 GETMET R3 R0 K24 + 0x5C140400, // 0052 MOVE R5 R2 + 0x7C0C0400, // 0053 CALL R3 2 + 0x740E0008, // 0054 JMPT R3 #005E + 0x8C0C0109, // 0055 GETMET R3 R0 K9 + 0x60140018, // 0056 GETGBL R5 G24 + 0x58180019, // 0057 LDCONST R6 K25 + 0x5C1C0400, // 0058 MOVE R7 R2 + 0x7C140400, // 0059 CALL R5 2 + 0x7C0C0400, // 005A CALL R3 2 + 0x8C0C011A, // 005B GETMET R3 R0 K26 + 0x7C0C0200, // 005C CALL R3 1 + 0x80061600, // 005D RET 1 K11 + 0x8C0C011B, // 005E GETMET R3 R0 K27 + 0x5C140400, // 005F MOVE R5 R2 + 0x7C0C0400, // 0060 CALL R3 2 + 0x80040600, // 0061 RET 1 R3 + 0x80000000, // 0062 RET 0 }) ) ); @@ -7139,200 +8244,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* name /******************************************************************** -** Solidified function: transform_operand_for_closure +** Solidified function: process_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(animation_X2Ecreate_closure_value), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(return_X20_X28), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(_X20), - /* K8 */ be_nested_str_weak(_), - /* K9 */ be_nested_str_weak(_X28), - /* K10 */ be_nested_str_weak(animation_X2E), - /* K11 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20param_name_X2C_X20time_ms_X29), - }), - be_str_weak(transform_operand_for_closure), - &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x280C0703, // 0005 GE R3 R3 K3 - 0x780E001A, // 0006 JMPF R3 #0022 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x54120007, // 000B LDINT R4 8 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x6010000C, // 000D GETGBL R4 G12 - 0x5C140200, // 000E MOVE R5 R1 - 0x7C100200, // 000F CALL R4 1 - 0x54160004, // 0010 LDINT R5 5 - 0x04100805, // 0011 SUB R4 R4 R5 - 0x40140604, // 0012 CONNECT R5 R3 R4 - 0x94140205, // 0013 GETIDX R5 R1 R5 - 0x8C180501, // 0014 GETMET R6 R2 K1 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x28180D03, // 0018 GE R6 R6 K3 - 0x781A0006, // 0019 JMPF R6 #0021 - 0x8C180506, // 001A GETMET R6 R2 K6 - 0x5C200A00, // 001B MOVE R8 R5 - 0x58240005, // 001C LDCONST R9 K5 - 0x58280007, // 001D LDCONST R10 K7 - 0x7C180800, // 001E CALL R6 4 - 0x5C140C00, // 001F MOVE R5 R6 - 0x7001FFF2, // 0020 JMP #0014 - 0x80040A00, // 0021 RET 1 R5 - 0x8C0C0501, // 0022 GETMET R3 R2 K1 - 0x5C140200, // 0023 MOVE R5 R1 - 0x58180008, // 0024 LDCONST R6 K8 - 0x7C0C0600, // 0025 CALL R3 3 - 0x280C0703, // 0026 GE R3 R3 K3 - 0x8C100501, // 0027 GETMET R4 R2 K1 - 0x5C180200, // 0028 MOVE R6 R1 - 0x581C0007, // 0029 LDCONST R7 K7 - 0x7C100600, // 002A CALL R4 3 - 0x28100903, // 002B GE R4 R4 K3 - 0x8C140501, // 002C GETMET R5 R2 K1 - 0x5C1C0200, // 002D MOVE R7 R1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C140600, // 002F CALL R5 3 - 0x28140B03, // 0030 GE R5 R5 K3 - 0x8C180501, // 0031 GETMET R6 R2 K1 - 0x5C200200, // 0032 MOVE R8 R1 - 0x5824000A, // 0033 LDCONST R9 K10 - 0x7C180600, // 0034 CALL R6 3 - 0x28180D03, // 0035 GE R6 R6 K3 - 0x780E000B, // 0036 JMPF R3 #0043 - 0x5C1C0800, // 0037 MOVE R7 R4 - 0x741E0009, // 0038 JMPT R7 #0043 - 0x5C1C0A00, // 0039 MOVE R7 R5 - 0x741E0007, // 003A JMPT R7 #0043 - 0x5C1C0C00, // 003B MOVE R7 R6 - 0x741E0005, // 003C JMPT R7 #0043 - 0x601C0018, // 003D GETGBL R7 G24 - 0x5820000B, // 003E LDCONST R8 K11 - 0x5C240200, // 003F MOVE R9 R1 - 0x7C1C0400, // 0040 CALL R7 2 - 0x80040E00, // 0041 RET 1 R7 - 0x70020000, // 0042 JMP #0044 - 0x80040200, // 0043 RET 1 R1 - 0x80000000, // 0044 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_math_method -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(closure_value), - /* K3 */ be_nested_str_weak(members), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(ismethod), - /* K6 */ be_nested_str_weak(function), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(is_math_method), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802002C, // 0001 EXBLK 0 #002F - 0xB80E0200, // 0002 GETNGBL R3 K1 - 0x880C0702, // 0003 GETMBR R3 R3 K2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120002, // 0006 JMPF R4 #000A - 0x50100000, // 0007 LDBOOL R4 0 0 - 0xA8040001, // 0008 EXBLK 1 1 - 0x80040800, // 0009 RET 1 R4 - 0x8C100503, // 000A GETMET R4 R2 K3 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0x60140010, // 000D GETGBL R5 G16 - 0x5C180800, // 000E MOVE R6 R4 - 0x7C140200, // 000F CALL R5 1 - 0xA8020015, // 0010 EXBLK 0 #0027 - 0x5C180A00, // 0011 MOVE R6 R5 - 0x7C180000, // 0012 CALL R6 0 - 0x1C1C0C01, // 0013 EQ R7 R6 R1 - 0x781E0010, // 0014 JMPF R7 #0026 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x5C240600, // 0016 MOVE R9 R3 - 0x5C280200, // 0017 MOVE R10 R1 - 0x7C1C0600, // 0018 CALL R7 3 - 0x8C200505, // 0019 GETMET R8 R2 K5 - 0x5C280E00, // 001A MOVE R10 R7 - 0x7C200400, // 001B CALL R8 2 - 0x74220005, // 001C JMPT R8 #0023 - 0x60200004, // 001D GETGBL R8 G4 - 0x5C240E00, // 001E MOVE R9 R7 - 0x7C200200, // 001F CALL R8 1 - 0x1C201106, // 0020 EQ R8 R8 K6 - 0x74220000, // 0021 JMPT R8 #0023 - 0x50200001, // 0022 LDBOOL R8 0 1 - 0x50200200, // 0023 LDBOOL R8 1 0 - 0xA8040002, // 0024 EXBLK 1 2 - 0x80041000, // 0025 RET 1 R8 - 0x7001FFE9, // 0026 JMP #0011 - 0x58140007, // 0027 LDCONST R5 K7 - 0xAC140200, // 0028 CATCH R5 1 0 - 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x50140000, // 002A LDBOOL R5 0 0 - 0xA8040001, // 002B EXBLK 1 1 - 0x80040A00, // 002C RET 1 R5 - 0xA8040001, // 002D EXBLK 1 1 - 0x70020005, // 002E JMP #0035 - 0xAC0C0002, // 002F CATCH R3 0 2 - 0x70020002, // 0030 JMP #0034 - 0x50140000, // 0031 LDBOOL R5 0 0 - 0x80040A00, // 0032 RET 1 R5 - 0x70020000, // 0033 JMP #0035 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x80000000, // 0035 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _create_animation_instance_for_validation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__create_animation_instance_for_validation, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -7343,9 +8257,9 @@ be_local_closure(class_SimpleDSLTranspiler__create_animation_instance_for_valida NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_create_instance_for_validation), + /* K0 */ be_nested_str_weak(process_expression), }), - be_str_weak(_create_animation_instance_for_validation), + be_str_weak(process_value), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 @@ -7358,1024 +8272,6 @@ be_local_closure(class_SimpleDSLTranspiler__create_animation_instance_for_valida /*******************************************************************/ -/******************************************************************** -** Solidified function: expect_keyword -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(KEYWORD), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), - }), - be_str_weak(expect_keyword), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x200C0403, // 0003 NE R3 R2 R3 - 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0501, // 0005 GETMBR R3 R2 K1 - 0xB8120400, // 0006 GETNGBL R4 K2 - 0x88100903, // 0007 GETMBR R4 R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x1C0C0604, // 0009 EQ R3 R3 R4 - 0x780E0005, // 000A JMPF R3 #0011 - 0x880C0505, // 000B GETMBR R3 R2 K5 - 0x1C0C0601, // 000C EQ R3 R3 R1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0x70020005, // 0010 JMP #0017 - 0x8C0C0107, // 0011 GETMET R3 R0 K7 - 0x60140018, // 0012 GETGBL R5 G24 - 0x58180008, // 0013 LDCONST R6 K8 - 0x5C1C0200, // 0014 MOVE R7 R1 - 0x7C140400, // 0015 CALL R5 2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* 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(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X20_X2B_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X20_X2D_X20), - /* K5 */ be_nested_str_weak(_X20_X2A_X20), - /* K6 */ be_nested_str_weak(_X20_X2F_X20), - /* K7 */ be_nested_str_weak(_X28), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(is_identifier_char), - }), - be_str_weak(is_computed_expression_string), - &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x280C0703, // 0005 GE R3 R3 K3 - 0x740E0012, // 0006 JMPT R3 #001A - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x280C0703, // 000B GE R3 R3 K3 - 0x740E000C, // 000C JMPT R3 #001A - 0x8C0C0501, // 000D GETMET R3 R2 K1 - 0x5C140200, // 000E MOVE R5 R1 - 0x58180005, // 000F LDCONST R6 K5 - 0x7C0C0600, // 0010 CALL R3 3 - 0x280C0703, // 0011 GE R3 R3 K3 - 0x740E0006, // 0012 JMPT R3 #001A - 0x8C0C0501, // 0013 GETMET R3 R2 K1 - 0x5C140200, // 0014 MOVE R5 R1 - 0x58180006, // 0015 LDCONST R6 K6 - 0x7C0C0600, // 0016 CALL R3 3 - 0x280C0703, // 0017 GE R3 R3 K3 - 0x740E0000, // 0018 JMPT R3 #001A - 0x500C0001, // 0019 LDBOOL R3 0 1 - 0x500C0200, // 001A LDBOOL R3 1 0 - 0x50100000, // 001B LDBOOL R4 0 0 - 0x8C140501, // 001C GETMET R5 R2 K1 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x58200007, // 001E LDCONST R8 K7 - 0x7C140600, // 001F CALL R5 3 - 0x24180B03, // 0020 GT R6 R5 K3 - 0x781A0006, // 0021 JMPF R6 #0029 - 0x04180B08, // 0022 SUB R6 R5 K8 - 0x94180206, // 0023 GETIDX R6 R1 R6 - 0x8C1C0109, // 0024 GETMET R7 R0 K9 - 0x5C240C00, // 0025 MOVE R9 R6 - 0x7C1C0400, // 0026 CALL R7 2 - 0x781E0000, // 0027 JMPF R7 #0029 - 0x50100200, // 0028 LDBOOL R4 1 0 - 0x740E0001, // 0029 JMPT R3 #002C - 0x74120000, // 002A JMPT R4 #002C - 0x50180001, // 002B LDBOOL R6 0 1 - 0x50180200, // 002C LDBOOL R6 1 0 - 0x80040C00, // 002D RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), - }), - be_str_weak(expect_left_bracket), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_color_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* 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(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(color_provider), - }), - be_str_weak(_validate_color_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B02, // 0003 GETMBR R5 R5 K2 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_unary_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression_raw, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_unary_expression_raw), - /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K11 */ be_nested_str_weak(PLUS), - /* K12 */ be_nested_str_weak(process_primary_expression_raw), - }), - be_str_weak(process_unary_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x80060600, // 0008 RET 1 K3 - 0x88080304, // 0009 GETMBR R2 R1 K4 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0x880C0706, // 000B GETMBR R3 R3 K6 - 0x880C0707, // 000C GETMBR R3 R3 K7 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0008, // 000E JMPF R2 #0018 - 0x8C080108, // 000F GETMET R2 R0 K8 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080109, // 0011 GETMET R2 R0 K9 - 0x7C080200, // 0012 CALL R2 1 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x5810000A, // 0014 LDCONST R4 K10 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x80040600, // 0017 RET 1 R3 - 0x88080304, // 0018 GETMBR R2 R1 K4 - 0xB80E0A00, // 0019 GETNGBL R3 K5 - 0x880C0706, // 001A GETMBR R3 R3 K6 - 0x880C070B, // 001B GETMBR R3 R3 K11 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0004, // 001D JMPF R2 #0023 - 0x8C080108, // 001E GETMET R2 R0 K8 - 0x7C080200, // 001F CALL R2 1 - 0x8C080109, // 0020 GETMET R2 R0 K9 - 0x7C080200, // 0021 CALL R2 1 - 0x80040400, // 0022 RET 1 R2 - 0x8C08010C, // 0023 GETMET R2 R0 K12 - 0x7C080200, // 0024 CALL R2 1 - 0x80040400, // 0025 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* 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(add), - /* K1 */ be_nested_str_weak(import_X20animation), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(at_end), - /* K4 */ be_nested_str_weak(process_statement), - /* K5 */ be_nested_str_weak(generate_engine_start), - /* K6 */ be_nested_str_weak(errors), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(join_output), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0xA802001A, // 0000 EXBLK 0 #001C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x7C040400, // 0003 CALL R1 2 - 0x8C040100, // 0004 GETMET R1 R0 K0 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x7C040400, // 0006 CALL R1 2 - 0x8C040103, // 0007 GETMET R1 R0 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x74060002, // 0009 JMPT R1 #000D - 0x8C040104, // 000A GETMET R1 R0 K4 - 0x7C040200, // 000B CALL R1 1 - 0x7001FFF9, // 000C JMP #0007 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x6004000C, // 000F GETGBL R1 G12 - 0x88080106, // 0010 GETMBR R2 R0 K6 - 0x7C040200, // 0011 CALL R1 1 - 0x1C040307, // 0012 EQ R1 R1 K7 - 0x78060002, // 0013 JMPF R1 #0017 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0x70020000, // 0016 JMP #0018 - 0x4C040000, // 0017 LDNIL R1 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040200, // 0019 RET 1 R1 - 0xA8040001, // 001A EXBLK 1 1 - 0x7002000B, // 001B JMP #0028 - 0xAC040002, // 001C CATCH R1 0 2 - 0x70020008, // 001D JMP #0027 - 0x8C0C0109, // 001E GETMET R3 R0 K9 - 0x60140018, // 001F GETGBL R5 G24 - 0x5818000A, // 0020 LDCONST R6 K10 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 - 0x7C0C0400, // 0023 CALL R3 2 - 0x4C0C0000, // 0024 LDNIL R3 - 0x80040600, // 0025 RET 1 R3 - 0x70020000, // 0026 JMP #0028 - 0xB0080000, // 0027 RAISE 2 R0 R0 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* 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(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(at_end), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(RIGHT_PAREN), - }), - be_str_weak(skip_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060023, // 0004 JMPF R1 #0029 - 0x8C040100, // 0005 GETMET R1 R0 K0 - 0x7C040200, // 0006 CALL R1 1 - 0x88040301, // 0007 GETMBR R1 R1 K1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x88080503, // 0009 GETMBR R2 R2 K3 - 0x88080504, // 000A GETMBR R2 R2 K4 - 0x1C040202, // 000B EQ R1 R1 R2 - 0x7806001B, // 000C JMPF R1 #0029 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x58040006, // 000F LDCONST R1 K6 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x7C080200, // 0011 CALL R2 1 - 0x740A0015, // 0012 JMPT R2 #0029 - 0x24080308, // 0013 GT R2 R1 K8 - 0x780A0013, // 0014 JMPF R2 #0029 - 0x8C080100, // 0015 GETMET R2 R0 K0 - 0x7C080200, // 0016 CALL R2 1 - 0x880C0501, // 0017 GETMBR R3 R2 K1 - 0xB8120400, // 0018 GETNGBL R4 K2 - 0x88100903, // 0019 GETMBR R4 R4 K3 - 0x88100904, // 001A GETMBR R4 R4 K4 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0001, // 001C JMPF R3 #001F - 0x00040306, // 001D ADD R1 R1 K6 - 0x70020006, // 001E JMP #0026 - 0x880C0501, // 001F GETMBR R3 R2 K1 - 0xB8120400, // 0020 GETNGBL R4 K2 - 0x88100903, // 0021 GETMBR R4 R4 K3 - 0x88100909, // 0022 GETMBR R4 R4 K9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0000, // 0024 JMPF R3 #0026 - 0x04040306, // 0025 SUB R1 R1 K6 - 0x8C0C0105, // 0026 GETMET R3 R0 K5 - 0x7C0C0200, // 0027 CALL R3 1 - 0x7001FFE6, // 0028 JMP #0010 - 0x80000000, // 0029 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_default_strip_initialization -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* 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(strip_initialized), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), - /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), - /* K4 */ be_nested_str_weak(), - }), - be_str_weak(generate_default_strip_initialization), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x7C040400, // 0005 CALL R1 2 - 0x8C040101, // 0006 GETMET R1 R0 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x7C040400, // 0008 CALL R1 2 - 0x8C040101, // 0009 GETMET R1 R0 K1 - 0x580C0004, // 000A LDCONST R3 K4 - 0x7C040400, // 000B CALL R1 2 - 0x50040200, // 000C LDBOOL R1 1 0 - 0x90020001, // 000D SETMBR R0 K0 R1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_array_literal -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_bracket), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_bracket), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(array_element), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(COMMA), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), - /* K14 */ be_nested_str_weak(expect_right_bracket), - /* K15 */ be_nested_str_weak(_X5B), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), - /* K20 */ be_nested_str_weak(_X5D), - }), - be_str_weak(process_array_literal), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A0020, // 0006 JMPT R2 #0028 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A001D, // 0009 JMPT R2 #0028 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x8C0C0305, // 000D GETMET R3 R1 K5 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0106, // 0010 GETMET R3 R0 K6 - 0x7C0C0200, // 0011 CALL R3 1 - 0x4C100000, // 0012 LDNIL R4 - 0x200C0604, // 0013 NE R3 R3 R4 - 0x780E000A, // 0014 JMPF R3 #0020 - 0x8C0C0106, // 0015 GETMET R3 R0 K6 - 0x7C0C0200, // 0016 CALL R3 1 - 0x880C0707, // 0017 GETMBR R3 R3 K7 - 0xB8121000, // 0018 GETNGBL R4 K8 - 0x88100909, // 0019 GETMBR R4 R4 K9 - 0x8810090A, // 001A GETMBR R4 R4 K10 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0002, // 001C JMPF R3 #0020 - 0x8C0C010B, // 001D GETMET R3 R0 K11 - 0x7C0C0200, // 001E CALL R3 1 - 0x70020006, // 001F JMP #0027 - 0x8C0C0102, // 0020 GETMET R3 R0 K2 - 0x7C0C0200, // 0021 CALL R3 1 - 0x740E0003, // 0022 JMPT R3 #0027 - 0x8C0C010C, // 0023 GETMET R3 R0 K12 - 0x5814000D, // 0024 LDCONST R5 K13 - 0x7C0C0400, // 0025 CALL R3 2 - 0x70020000, // 0026 JMP #0028 - 0x7001FFDB, // 0027 JMP #0004 - 0x8C08010E, // 0028 GETMET R2 R0 K14 - 0x7C080200, // 0029 CALL R2 1 - 0x5808000F, // 002A LDCONST R2 K15 - 0x600C0010, // 002B GETGBL R3 G16 - 0x6010000C, // 002C GETGBL R4 G12 - 0x5C140200, // 002D MOVE R5 R1 - 0x7C100200, // 002E CALL R4 1 - 0x04100911, // 002F SUB R4 R4 K17 - 0x40122004, // 0030 CONNECT R4 K16 R4 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020007, // 0032 EXBLK 0 #003B - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x24140910, // 0035 GT R5 R4 K16 - 0x78160000, // 0036 JMPF R5 #0038 - 0x00080512, // 0037 ADD R2 R2 K18 - 0x94140204, // 0038 GETIDX R5 R1 R4 - 0x00080405, // 0039 ADD R2 R2 R5 - 0x7001FFF7, // 003A JMP #0033 - 0x580C0013, // 003B LDCONST R3 K19 - 0xAC0C0200, // 003C CATCH R3 1 0 - 0xB0080000, // 003D RAISE 2 R0 R0 - 0x00080514, // 003E ADD R2 R2 K20 - 0x80040400, // 003F RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_engine_start -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_engine_start, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* 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(run_statements), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(name), - /* K3 */ be_nested_str_weak(comment), - /* K4 */ be_nested_str_weak(sequence_names), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(engine_X2Eadd_sequence_manager_X28_X25s__X29_X25s), - /* K8 */ be_nested_str_weak(engine_X2Eadd_animation_X28_X25s__X29_X25s), - /* K9 */ be_nested_str_weak(stop_iteration), - /* K10 */ be_nested_str_weak(engine_X2Estart_X28_X29), - }), - be_str_weak(generate_engine_start), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060000, // 0004 JMPF R1 #0006 - 0x80000200, // 0005 RET 0 - 0x60040010, // 0006 GETGBL R1 G16 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x7C040200, // 0008 CALL R1 1 - 0xA8020018, // 0009 EXBLK 0 #0023 - 0x5C080200, // 000A MOVE R2 R1 - 0x7C080000, // 000B CALL R2 0 - 0x940C0502, // 000C GETIDX R3 R2 K2 - 0x94100503, // 000D GETIDX R4 R2 K3 - 0x88140104, // 000E GETMBR R5 R0 K4 - 0x8C140B05, // 000F GETMET R5 R5 K5 - 0x5C1C0600, // 0010 MOVE R7 R3 - 0x7C140400, // 0011 CALL R5 2 - 0x78160007, // 0012 JMPF R5 #001B - 0x8C140106, // 0013 GETMET R5 R0 K6 - 0x601C0018, // 0014 GETGBL R7 G24 - 0x58200007, // 0015 LDCONST R8 K7 - 0x5C240600, // 0016 MOVE R9 R3 - 0x5C280800, // 0017 MOVE R10 R4 - 0x7C1C0600, // 0018 CALL R7 3 - 0x7C140400, // 0019 CALL R5 2 - 0x70020006, // 001A JMP #0022 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x601C0018, // 001C GETGBL R7 G24 - 0x58200008, // 001D LDCONST R8 K8 - 0x5C240600, // 001E MOVE R9 R3 - 0x5C280800, // 001F MOVE R10 R4 - 0x7C1C0600, // 0020 CALL R7 3 - 0x7C140400, // 0021 CALL R5 2 - 0x7001FFE6, // 0022 JMP #000A - 0x58040009, // 0023 LDCONST R1 K9 - 0xAC040200, // 0024 CATCH R1 1 0 - 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x8C040106, // 0026 GETMET R1 R0 K6 - 0x580C000A, // 0027 LDCONST R3 K10 - 0x7C040400, // 0028 CALL R1 2 - 0x80000000, // 0029 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: current -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_current, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - }), - be_str_weak(current), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060003, // 0005 JMPF R1 #000A - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x94040202, // 0008 GETIDX R1 R1 R2 - 0x70020000, // 0009 JMP #000B - 0x4C040000, // 000A LDNIL R1 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_to_vrgb -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(format), - /* K3 */ be_nested_str_weak(_X2502X), - /* K4 */ be_nested_str_weak(FFFFFF), - /* K5 */ be_nested_str_weak(startswith), - /* K6 */ be_nested_str_weak(0x), - /* K7 */ be_const_int(2), - }), - be_str_weak(convert_to_vrgb), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x60100009, // 0001 GETGBL R4 G9 - 0x6014000A, // 0002 GETGBL R5 G10 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x7C100200, // 0005 CALL R4 1 - 0x14140901, // 0006 LT R5 R4 K1 - 0x78160001, // 0007 JMPF R5 #000A - 0x58100001, // 0008 LDCONST R4 K1 - 0x70020003, // 0009 JMP #000E - 0x541600FE, // 000A LDINT R5 255 - 0x24140805, // 000B GT R5 R4 R5 - 0x78160000, // 000C JMPF R5 #000E - 0x541200FE, // 000D LDINT R4 255 - 0x8C140702, // 000E GETMET R5 R3 K2 - 0x581C0003, // 000F LDCONST R7 K3 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x60180008, // 0012 GETGBL R6 G8 - 0x5C1C0400, // 0013 MOVE R7 R2 - 0x7C180200, // 0014 CALL R6 1 - 0x581C0004, // 0015 LDCONST R7 K4 - 0x8C200705, // 0016 GETMET R8 R3 K5 - 0x5C280C00, // 0017 MOVE R10 R6 - 0x582C0006, // 0018 LDCONST R11 K6 - 0x7C200600, // 0019 CALL R8 3 - 0x7822000A, // 001A JMPF R8 #0026 - 0x6020000C, // 001B GETGBL R8 G12 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C200200, // 001D CALL R8 1 - 0x54260009, // 001E LDINT R9 10 - 0x28201009, // 001F GE R8 R8 R9 - 0x78220004, // 0020 JMPF R8 #0026 - 0x54220003, // 0021 LDINT R8 4 - 0x54260008, // 0022 LDINT R9 9 - 0x40201009, // 0023 CONNECT R8 R8 R9 - 0x941C0C08, // 0024 GETIDX R7 R6 R8 - 0x7002000D, // 0025 JMP #0034 - 0x8C200705, // 0026 GETMET R8 R3 K5 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x7C200600, // 0029 CALL R8 3 - 0x78220008, // 002A JMPF R8 #0034 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240C00, // 002C MOVE R9 R6 - 0x7C200200, // 002D CALL R8 1 - 0x54260007, // 002E LDINT R9 8 - 0x1C201009, // 002F EQ R8 R8 R9 - 0x78220002, // 0030 JMPF R8 #0034 - 0x54220006, // 0031 LDINT R8 7 - 0x40220E08, // 0032 CONNECT R8 K7 R8 - 0x941C0C08, // 0033 GETIDX R7 R6 R8 - 0x00200A07, // 0034 ADD R8 R5 R7 - 0x80041000, // 0035 RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(EOF), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(NEWLINE), - /* K10 */ be_nested_str_weak(first_statement), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(IDENTIFIER), - /* K13 */ be_nested_str_weak(strip), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), - /* K16 */ be_nested_str_weak(skip_statement), - /* K17 */ be_nested_str_weak(strip_initialized), - /* K18 */ be_nested_str_weak(generate_default_strip_initialization), - /* K19 */ be_nested_str_weak(color), - /* K20 */ be_nested_str_weak(process_color), - /* K21 */ be_nested_str_weak(palette), - /* K22 */ be_nested_str_weak(process_palette), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(process_animation), - /* K25 */ be_nested_str_weak(set), - /* K26 */ be_nested_str_weak(process_set), - /* K27 */ be_nested_str_weak(sequence), - /* K28 */ be_nested_str_weak(process_sequence), - /* K29 */ be_nested_str_weak(run), - /* K30 */ be_nested_str_weak(process_run), - /* K31 */ be_nested_str_weak(on), - /* K32 */ be_nested_str_weak(process_event_handler), - /* K33 */ be_nested_str_weak(process_property_assignment), - }), - be_str_weak(process_statement), - &be_const_str_solidified, - ( &(const binstruction[129]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x740A0005, // 0004 JMPT R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0000, // 000A JMPF R2 #000C - 0x80000400, // 000B RET 0 - 0x88080301, // 000C GETMBR R2 R1 K1 - 0xB80E0400, // 000D GETNGBL R3 K2 - 0x880C0703, // 000E GETMBR R3 R3 K3 - 0x880C0705, // 000F GETMBR R3 R3 K5 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0005, // 0011 JMPF R2 #0018 - 0x8C080106, // 0012 GETMET R2 R0 K6 - 0x88100307, // 0013 GETMBR R4 R1 K7 - 0x7C080400, // 0014 CALL R2 2 - 0x8C080108, // 0015 GETMET R2 R0 K8 - 0x7C080200, // 0016 CALL R2 1 - 0x80000400, // 0017 RET 0 - 0x88080301, // 0018 GETMBR R2 R1 K1 - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x880C0703, // 001A GETMBR R3 R3 K3 - 0x880C0709, // 001B GETMBR R3 R3 K9 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0002, // 001D JMPF R2 #0021 - 0x8C080108, // 001E GETMET R2 R0 K8 - 0x7C080200, // 001F CALL R2 1 - 0x80000400, // 0020 RET 0 - 0x8808010A, // 0021 GETMBR R2 R0 K10 - 0x880C0301, // 0022 GETMBR R3 R1 K1 - 0xB8120400, // 0023 GETNGBL R4 K2 - 0x88100903, // 0024 GETMBR R4 R4 K3 - 0x8810090B, // 0025 GETMBR R4 R4 K11 - 0x1C0C0604, // 0026 EQ R3 R3 R4 - 0x740E0005, // 0027 JMPT R3 #002E - 0x880C0301, // 0028 GETMBR R3 R1 K1 - 0xB8120400, // 0029 GETNGBL R4 K2 - 0x88100903, // 002A GETMBR R4 R4 K3 - 0x8810090C, // 002B GETMBR R4 R4 K12 - 0x1C0C0604, // 002C EQ R3 R3 R4 - 0x780E0001, // 002D JMPF R3 #0030 - 0x500C0000, // 002E LDBOOL R3 0 0 - 0x90021403, // 002F SETMBR R0 K10 R3 - 0x880C0301, // 0030 GETMBR R3 R1 K1 - 0xB8120400, // 0031 GETNGBL R4 K2 - 0x88100903, // 0032 GETMBR R4 R4 K3 - 0x8810090B, // 0033 GETMBR R4 R4 K11 - 0x1C0C0604, // 0034 EQ R3 R3 R4 - 0x780E003A, // 0035 JMPF R3 #0071 - 0x880C0307, // 0036 GETMBR R3 R1 K7 - 0x1C0C070D, // 0037 EQ R3 R3 K13 - 0x780E0006, // 0038 JMPF R3 #0040 - 0x8C0C010E, // 0039 GETMET R3 R0 K14 - 0x5814000F, // 003A LDCONST R5 K15 - 0x7C0C0400, // 003B CALL R3 2 - 0x8C0C0110, // 003C GETMET R3 R0 K16 - 0x7C0C0200, // 003D CALL R3 1 - 0x80000600, // 003E RET 0 - 0x7002002F, // 003F JMP #0070 - 0x880C0111, // 0040 GETMBR R3 R0 K17 - 0x740E0001, // 0041 JMPT R3 #0044 - 0x8C0C0112, // 0042 GETMET R3 R0 K18 - 0x7C0C0200, // 0043 CALL R3 1 - 0x880C0307, // 0044 GETMBR R3 R1 K7 - 0x1C0C0713, // 0045 EQ R3 R3 K19 - 0x780E0002, // 0046 JMPF R3 #004A - 0x8C0C0114, // 0047 GETMET R3 R0 K20 - 0x7C0C0200, // 0048 CALL R3 1 - 0x70020025, // 0049 JMP #0070 - 0x880C0307, // 004A GETMBR R3 R1 K7 - 0x1C0C0715, // 004B EQ R3 R3 K21 - 0x780E0002, // 004C JMPF R3 #0050 - 0x8C0C0116, // 004D GETMET R3 R0 K22 - 0x7C0C0200, // 004E CALL R3 1 - 0x7002001F, // 004F JMP #0070 - 0x880C0307, // 0050 GETMBR R3 R1 K7 - 0x1C0C0717, // 0051 EQ R3 R3 K23 - 0x780E0002, // 0052 JMPF R3 #0056 - 0x8C0C0118, // 0053 GETMET R3 R0 K24 - 0x7C0C0200, // 0054 CALL R3 1 - 0x70020019, // 0055 JMP #0070 - 0x880C0307, // 0056 GETMBR R3 R1 K7 - 0x1C0C0719, // 0057 EQ R3 R3 K25 - 0x780E0002, // 0058 JMPF R3 #005C - 0x8C0C011A, // 0059 GETMET R3 R0 K26 - 0x7C0C0200, // 005A CALL R3 1 - 0x70020013, // 005B JMP #0070 - 0x880C0307, // 005C GETMBR R3 R1 K7 - 0x1C0C071B, // 005D EQ R3 R3 K27 - 0x780E0002, // 005E JMPF R3 #0062 - 0x8C0C011C, // 005F GETMET R3 R0 K28 - 0x7C0C0200, // 0060 CALL R3 1 - 0x7002000D, // 0061 JMP #0070 - 0x880C0307, // 0062 GETMBR R3 R1 K7 - 0x1C0C071D, // 0063 EQ R3 R3 K29 - 0x780E0002, // 0064 JMPF R3 #0068 - 0x8C0C011E, // 0065 GETMET R3 R0 K30 - 0x7C0C0200, // 0066 CALL R3 1 - 0x70020007, // 0067 JMP #0070 - 0x880C0307, // 0068 GETMBR R3 R1 K7 - 0x1C0C071F, // 0069 EQ R3 R3 K31 - 0x780E0002, // 006A JMPF R3 #006E - 0x8C0C0120, // 006B GETMET R3 R0 K32 - 0x7C0C0200, // 006C CALL R3 1 - 0x70020001, // 006D JMP #0070 - 0x8C0C0110, // 006E GETMET R3 R0 K16 - 0x7C0C0200, // 006F CALL R3 1 - 0x7002000E, // 0070 JMP #0080 - 0x880C0301, // 0071 GETMBR R3 R1 K1 - 0xB8120400, // 0072 GETNGBL R4 K2 - 0x88100903, // 0073 GETMBR R4 R4 K3 - 0x8810090C, // 0074 GETMBR R4 R4 K12 - 0x1C0C0604, // 0075 EQ R3 R3 R4 - 0x780E0006, // 0076 JMPF R3 #007E - 0x880C0111, // 0077 GETMBR R3 R0 K17 - 0x740E0001, // 0078 JMPT R3 #007B - 0x8C0C0112, // 0079 GETMET R3 R0 K18 - 0x7C0C0200, // 007A CALL R3 1 - 0x8C0C0121, // 007B GETMET R3 R0 K33 - 0x7C0C0200, // 007C CALL R3 1 - 0x70020001, // 007D JMP #0080 - 0x8C0C0110, // 007E GETMET R3 R0 K16 - 0x7C0C0200, // 007F CALL R3 1 - 0x80000000, // 0080 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_expression, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* 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(process_additive_expression), - }), - be_str_weak(process_expression), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140200, // 0002 LDBOOL R5 1 0 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_expression_argument ********************************************************************/ @@ -8405,85 +8301,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_expression_argument, /* nam /******************************************************************** -** Solidified function: expect_identifier +** Solidified function: at_end ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ +be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(IDENTIFIER), - /* K5 */ be_nested_str_weak(COLOR), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(can_use_as_identifier), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(error), - /* K11 */ be_nested_str_weak(Expected_X20identifier), - /* K12 */ be_nested_str_weak(unknown), - }), - be_str_weak(expect_identifier), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A001A, // 0004 JMPF R2 #0020 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A000F, // 000A JMPT R2 #001B - 0x88080301, // 000B GETMBR R2 R1 K1 - 0xB80E0400, // 000C GETNGBL R3 K2 - 0x880C0703, // 000D GETMBR R3 R3 K3 - 0x880C0705, // 000E GETMBR R3 R3 K5 - 0x1C080403, // 000F EQ R2 R2 R3 - 0x740A0009, // 0010 JMPT R2 #001B - 0x88080301, // 0011 GETMBR R2 R1 K1 - 0xB80E0400, // 0012 GETNGBL R3 K2 - 0x880C0703, // 0013 GETMBR R3 R3 K3 - 0x880C0706, // 0014 GETMBR R3 R3 K6 - 0x1C080403, // 0015 EQ R2 R2 R3 - 0x780A0008, // 0016 JMPF R2 #0020 - 0x8C080107, // 0017 GETMET R2 R0 K7 - 0x88100308, // 0018 GETMBR R4 R1 K8 - 0x7C080400, // 0019 CALL R2 2 - 0x780A0004, // 001A JMPF R2 #0020 - 0x88080308, // 001B GETMBR R2 R1 K8 - 0x8C0C0109, // 001C GETMET R3 R0 K9 - 0x7C0C0200, // 001D CALL R3 1 - 0x80040400, // 001E RET 1 R2 - 0x70020003, // 001F JMP #0024 - 0x8C08010A, // 0020 GETMET R2 R0 K10 - 0x5810000B, // 0021 LDCONST R4 K11 - 0x7C080400, // 0022 CALL R2 2 - 0x80061800, // 0023 RET 1 K12 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ - be_nested_proto( - 6, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -8492,31 +8314,39 @@ be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(run_statements), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(name), - /* K6 */ be_nested_str_weak(comment), + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(EOF), }), - be_str_weak(process_run), + be_str_weak(at_end), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x8C0C0704, // 0007 GETMET R3 R3 K4 - 0x60140013, // 0008 GETGBL R5 G19 - 0x7C140000, // 0009 CALL R5 0 - 0x98160A01, // 000A SETIDX R5 K5 R1 - 0x98160C02, // 000B SETIDX R5 K6 R2 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[22]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x28040202, // 0004 GE R1 R1 R2 + 0x7406000D, // 0005 JMPT R1 #0014 + 0x8C040102, // 0006 GETMET R1 R0 K2 + 0x7C040200, // 0007 CALL R1 1 + 0x4C080000, // 0008 LDNIL R2 + 0x20040202, // 0009 NE R1 R1 R2 + 0x78060007, // 000A JMPF R1 #0013 + 0x8C040102, // 000B GETMET R1 R0 K2 + 0x7C040200, // 000C CALL R1 1 + 0x88040303, // 000D GETMBR R1 R1 K3 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x88080505, // 000F GETMBR R2 R2 K5 + 0x88080506, // 0010 GETMBR R2 R2 K6 + 0x1C040202, // 0011 EQ R1 R1 R2 + 0x74060000, // 0012 JMPT R1 #0014 + 0x50040001, // 0013 LDBOOL R1 0 1 + 0x50040200, // 0014 LDBOOL R1 1 0 + 0x80040200, // 0015 RET 1 R1 }) ) ); @@ -8524,58 +8354,26 @@ be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ /******************************************************************** -** Solidified function: create_computation_closure_from_string +** Solidified function: get_errors ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ +be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ be_nested_proto( - 9, /* nstack */ - 2, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_expression_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28self_X2C_X20param_name_X2C_X20time_ms_X29_X20return_X20_X28_X25s_X29_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(errors), }), - be_str_weak(create_computation_closure_from_string), + be_str_weak(get_errors), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0101, // 0001 GETMET R3 R0 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 K2 - 0x5C180600, // 0005 MOVE R6 R3 - 0x581C0003, // 0006 LDCONST R7 K3 - 0x7C100600, // 0007 CALL R4 3 - 0x28100904, // 0008 GE R4 R4 K4 - 0x78120006, // 0009 JMPF R4 #0011 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x5C180600, // 000B MOVE R6 R3 - 0x581C0003, // 000C LDCONST R7 K3 - 0x58200006, // 000D LDCONST R8 K6 - 0x7C100800, // 000E CALL R4 4 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x7001FFF2, // 0010 JMP #0004 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x60140018, // 0015 GETGBL R5 G24 - 0x58180008, // 0016 LDCONST R6 K8 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x80040A00, // 0019 RET 1 R5 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -8583,9 +8381,92 @@ be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_strin /******************************************************************** -** Solidified function: process_multiplicative_expression_raw +** Solidified function: is_computed_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* 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(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X28), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(animation_X2Eglobal), + /* K5 */ be_nested_str_weak(animation_X2E), + /* K6 */ be_nested_str_weak(_), + }), + be_str_weak(is_computed_expression), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x58200002, // 0003 LDCONST R8 K2 + 0x7C140600, // 0004 CALL R5 3 + 0x28140B03, // 0005 GE R5 R5 K3 + 0x7416002A, // 0006 JMPT R5 #0032 + 0x8C140901, // 0007 GETMET R5 R4 K1 + 0x5C1C0600, // 0008 MOVE R7 R3 + 0x58200002, // 0009 LDCONST R8 K2 + 0x7C140600, // 000A CALL R5 3 + 0x28140B03, // 000B GE R5 R5 K3 + 0x74160024, // 000C JMPT R5 #0032 + 0x8C140901, // 000D GETMET R5 R4 K1 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x58200004, // 000F LDCONST R8 K4 + 0x7C140600, // 0010 CALL R5 3 + 0x28140B03, // 0011 GE R5 R5 K3 + 0x7416001E, // 0012 JMPT R5 #0032 + 0x8C140901, // 0013 GETMET R5 R4 K1 + 0x5C1C0600, // 0014 MOVE R7 R3 + 0x58200004, // 0015 LDCONST R8 K4 + 0x7C140600, // 0016 CALL R5 3 + 0x28140B03, // 0017 GE R5 R5 K3 + 0x74160018, // 0018 JMPT R5 #0032 + 0x8C140901, // 0019 GETMET R5 R4 K1 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x58200005, // 001B LDCONST R8 K5 + 0x7C140600, // 001C CALL R5 3 + 0x28140B03, // 001D GE R5 R5 K3 + 0x74160012, // 001E JMPT R5 #0032 + 0x8C140901, // 001F GETMET R5 R4 K1 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x58200005, // 0021 LDCONST R8 K5 + 0x7C140600, // 0022 CALL R5 3 + 0x28140B03, // 0023 GE R5 R5 K3 + 0x7416000C, // 0024 JMPT R5 #0032 + 0x8C140901, // 0025 GETMET R5 R4 K1 + 0x5C1C0200, // 0026 MOVE R7 R1 + 0x58200006, // 0027 LDCONST R8 K6 + 0x7C140600, // 0028 CALL R5 3 + 0x28140B03, // 0029 GE R5 R5 K3 + 0x74160006, // 002A JMPT R5 #0032 + 0x8C140901, // 002B GETMET R5 R4 K1 + 0x5C1C0600, // 002C MOVE R7 R3 + 0x58200006, // 002D LDCONST R8 K6 + 0x7C140600, // 002E CALL R5 3 + 0x28140B03, // 002F GE R5 R5 K3 + 0x74160000, // 0030 JMPT R5 #0032 + 0x50140001, // 0031 LDBOOL R5 0 1 + 0x50140200, // 0032 LDBOOL R5 1 0 + 0x80040A00, // 0033 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_additive_expression_raw +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ @@ -8596,19 +8477,19 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_unary_expression_raw), + /* K0 */ be_nested_str_weak(process_multiplicative_expression_raw), /* K1 */ be_nested_str_weak(at_end), /* K2 */ be_nested_str_weak(current), /* K3 */ be_nested_str_weak(type), /* K4 */ be_nested_str_weak(animation_dsl), /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(MULTIPLY), - /* K7 */ be_nested_str_weak(DIVIDE), + /* K6 */ be_nested_str_weak(PLUS), + /* K7 */ be_nested_str_weak(MINUS), /* K8 */ be_nested_str_weak(value), /* K9 */ be_nested_str_weak(next), /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), }), - be_str_weak(process_multiplicative_expression_raw), + be_str_weak(process_additive_expression_raw), &be_const_str_solidified, ( &(const binstruction[38]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -8656,90 +8537,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw /******************************************************************** -** Solidified function: process_unary_expression +** Solidified function: expect_comma ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_unary_expression), - /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K11 */ be_nested_str_weak(PLUS), - /* K12 */ be_nested_str_weak(process_primary_expression), - }), - be_str_weak(process_unary_expression), - &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x4C100000, // 0002 LDNIL R4 - 0x1C100604, // 0003 EQ R4 R3 R4 - 0x78120003, // 0004 JMPF R4 #0009 - 0x8C100101, // 0005 GETMET R4 R0 K1 - 0x58180002, // 0006 LDCONST R6 K2 - 0x7C100400, // 0007 CALL R4 2 - 0x80060600, // 0008 RET 1 K3 - 0x88100704, // 0009 GETMBR R4 R3 K4 - 0xB8160A00, // 000A GETNGBL R5 K5 - 0x88140B06, // 000B GETMBR R5 R5 K6 - 0x88140B07, // 000C GETMBR R5 R5 K7 - 0x1C100805, // 000D EQ R4 R4 R5 - 0x7812000A, // 000E JMPF R4 #001A - 0x8C100108, // 000F GETMET R4 R0 K8 - 0x7C100200, // 0010 CALL R4 1 - 0x8C100109, // 0011 GETMET R4 R0 K9 - 0x5C180200, // 0012 MOVE R6 R1 - 0x501C0000, // 0013 LDBOOL R7 0 0 - 0x7C100600, // 0014 CALL R4 3 - 0x60140018, // 0015 GETGBL R5 G24 - 0x5818000A, // 0016 LDCONST R6 K10 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x80040A00, // 0019 RET 1 R5 - 0x88100704, // 001A GETMBR R4 R3 K4 - 0xB8160A00, // 001B GETNGBL R5 K5 - 0x88140B06, // 001C GETMBR R5 R5 K6 - 0x88140B0B, // 001D GETMBR R5 R5 K11 - 0x1C100805, // 001E EQ R4 R4 R5 - 0x78120006, // 001F JMPF R4 #0027 - 0x8C100108, // 0020 GETMET R4 R0 K8 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100109, // 0022 GETMET R4 R0 K9 - 0x5C180200, // 0023 MOVE R6 R1 - 0x501C0000, // 0024 LDBOOL R7 0 0 - 0x7C100600, // 0025 CALL R4 3 - 0x80040800, // 0026 RET 1 R4 - 0x8C10010C, // 0027 GETMET R4 R0 K12 - 0x5C180200, // 0028 MOVE R6 R1 - 0x5C1C0400, // 0029 MOVE R7 R2 - 0x7C100600, // 002A CALL R4 3 - 0x80040800, // 002B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -8754,12 +8554,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(animation_dsl), /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K4 */ be_nested_str_weak(COMMA), /* K5 */ be_nested_str_weak(next), /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X28_X27), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), }), - be_str_weak(expect_left_paren), + be_str_weak(expect_comma), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -8787,11 +8587,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ /******************************************************************** -** Solidified function: process_event_handler +** Solidified function: expect_right_paren ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ be_nested_proto( - 13, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -8799,138 +8599,37 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[26]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(line), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X7B_X7D), - /* K6 */ be_nested_str_weak(type), - /* K7 */ be_nested_str_weak(animation_dsl), - /* K8 */ be_nested_str_weak(Token), - /* K9 */ be_nested_str_weak(LEFT_PAREN), - /* K10 */ be_nested_str_weak(process_event_parameters), - /* K11 */ be_nested_str_weak(expect_colon), - /* K12 */ be_nested_str_weak(event_handler__X25s__X25s), - /* K13 */ be_nested_str_weak(add), - /* K14 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), - /* K15 */ be_nested_str_weak(KEYWORD), - /* K16 */ be_nested_str_weak(value), - /* K17 */ be_nested_str_weak(interrupt), - /* K18 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), - /* K19 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), - /* K20 */ be_nested_str_weak(process_value), - /* K21 */ be_nested_str_weak(animation), - /* K22 */ be_nested_str_weak(_X20_X20var_X20temp_anim_X20_X3D_X20_X25s), - /* K23 */ be_nested_str_weak(_X20_X20engine_X2Eadd_animation_X28temp_anim_X29), - /* K24 */ be_nested_str_weak(end), - /* K25 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), }), - be_str_weak(process_event_handler), + be_str_weak(expect_right_paren), &be_const_str_solidified, - ( &(const binstruction[101]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x4C0C0000, // 0006 LDNIL R3 - 0x20080403, // 0007 NE R2 R2 R3 - 0x780A0003, // 0008 JMPF R2 #000D - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x88080503, // 000B GETMBR R2 R2 K3 - 0x70020000, // 000C JMP #000E - 0x58080004, // 000D LDCONST R2 K4 - 0x580C0005, // 000E LDCONST R3 K5 - 0x8C100102, // 000F GETMET R4 R0 K2 - 0x7C100200, // 0010 CALL R4 1 - 0x4C140000, // 0011 LDNIL R5 - 0x20100805, // 0012 NE R4 R4 R5 - 0x7812000A, // 0013 JMPF R4 #001F - 0x8C100102, // 0014 GETMET R4 R0 K2 - 0x7C100200, // 0015 CALL R4 1 - 0x88100906, // 0016 GETMBR R4 R4 K6 - 0xB8160E00, // 0017 GETNGBL R5 K7 - 0x88140B08, // 0018 GETMBR R5 R5 K8 - 0x88140B09, // 0019 GETMBR R5 R5 K9 - 0x1C100805, // 001A EQ R4 R4 R5 - 0x78120002, // 001B JMPF R4 #001F - 0x8C10010A, // 001C GETMET R4 R0 K10 - 0x7C100200, // 001D CALL R4 1 - 0x5C0C0800, // 001E MOVE R3 R4 - 0x8C10010B, // 001F GETMET R4 R0 K11 - 0x7C100200, // 0020 CALL R4 1 - 0x60100018, // 0021 GETGBL R4 G24 - 0x5814000C, // 0022 LDCONST R5 K12 - 0x5C180200, // 0023 MOVE R6 R1 - 0x5C1C0400, // 0024 MOVE R7 R2 - 0x7C100600, // 0025 CALL R4 3 - 0x8C14010D, // 0026 GETMET R5 R0 K13 - 0x601C0018, // 0027 GETGBL R7 G24 - 0x5820000E, // 0028 LDCONST R8 K14 - 0x5C240800, // 0029 MOVE R9 R4 - 0x7C1C0400, // 002A CALL R7 2 - 0x7C140400, // 002B CALL R5 2 - 0x8C140102, // 002C GETMET R5 R0 K2 - 0x7C140200, // 002D CALL R5 1 - 0x4C180000, // 002E LDNIL R6 - 0x20180A06, // 002F NE R6 R5 R6 - 0x781A0027, // 0030 JMPF R6 #0059 - 0x88180B06, // 0031 GETMBR R6 R5 K6 - 0xB81E0E00, // 0032 GETNGBL R7 K7 - 0x881C0F08, // 0033 GETMBR R7 R7 K8 - 0x881C0F0F, // 0034 GETMBR R7 R7 K15 - 0x1C180C07, // 0035 EQ R6 R6 R7 - 0x781A0013, // 0036 JMPF R6 #004B - 0x88180B10, // 0037 GETMBR R6 R5 K16 - 0x1C180D11, // 0038 EQ R6 R6 K17 - 0x781A0010, // 0039 JMPF R6 #004B - 0x8C180100, // 003A GETMET R6 R0 K0 - 0x7C180200, // 003B CALL R6 1 - 0x8C180101, // 003C GETMET R6 R0 K1 - 0x7C180200, // 003D CALL R6 1 - 0x1C1C0D02, // 003E EQ R7 R6 K2 - 0x781E0003, // 003F JMPF R7 #0044 - 0x8C1C010D, // 0040 GETMET R7 R0 K13 - 0x58240012, // 0041 LDCONST R9 K18 - 0x7C1C0400, // 0042 CALL R7 2 - 0x70020005, // 0043 JMP #004A - 0x8C1C010D, // 0044 GETMET R7 R0 K13 - 0x60240018, // 0045 GETGBL R9 G24 - 0x58280013, // 0046 LDCONST R10 K19 - 0x5C2C0C00, // 0047 MOVE R11 R6 - 0x7C240400, // 0048 CALL R9 2 - 0x7C1C0400, // 0049 CALL R7 2 - 0x7002000D, // 004A JMP #0059 - 0x8C180114, // 004B GETMET R6 R0 K20 - 0x58200015, // 004C LDCONST R8 K21 - 0x7C180400, // 004D CALL R6 2 - 0x8C1C010D, // 004E GETMET R7 R0 K13 - 0x60240018, // 004F GETGBL R9 G24 - 0x58280016, // 0050 LDCONST R10 K22 - 0x5C2C0C00, // 0051 MOVE R11 R6 - 0x7C240400, // 0052 CALL R9 2 - 0x7C1C0400, // 0053 CALL R7 2 - 0x8C1C010D, // 0054 GETMET R7 R0 K13 - 0x60240018, // 0055 GETGBL R9 G24 - 0x58280017, // 0056 LDCONST R10 K23 - 0x7C240200, // 0057 CALL R9 1 - 0x7C1C0400, // 0058 CALL R7 2 - 0x8C18010D, // 0059 GETMET R6 R0 K13 - 0x58200018, // 005A LDCONST R8 K24 - 0x7C180400, // 005B CALL R6 2 - 0x8C18010D, // 005C GETMET R6 R0 K13 - 0x60200018, // 005D GETGBL R8 G24 - 0x58240019, // 005E LDCONST R9 K25 - 0x5C280200, // 005F MOVE R10 R1 - 0x5C2C0800, // 0060 MOVE R11 R4 - 0x5C300600, // 0061 MOVE R12 R3 - 0x7C200800, // 0062 CALL R8 4 - 0x7C180400, // 0063 CALL R6 2 - 0x80000000, // 0064 RET 0 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 }) ) ); @@ -9199,108 +8898,104 @@ be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, / /******************************************************************** -** Solidified function: process_property_assignment +** Solidified function: transform_operand_for_closure ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ +be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* name */ be_nested_proto( - 15, /* nstack */ - 1, /* argc */ + 11, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(DOT), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(property), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(introspect), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(contains), - /* K14 */ be_nested_str_weak(animation), - /* K15 */ be_nested_str_weak(animation_X2E_X25s), - /* K16 */ be_nested_str_weak(_X25s_), - /* K17 */ be_nested_str_weak(add), - /* K18 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K19 */ be_nested_str_weak(error), - /* K20 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - /* K21 */ be_nested_str_weak(skip_statement), + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(animation_X2Ecreate_closure_value), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(return_X20_X28), + /* K5 */ be_nested_str_weak(_X20_X20), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(_X20), + /* K8 */ be_nested_str_weak(_), + /* K9 */ be_nested_str_weak(_X28), + /* K10 */ be_nested_str_weak(animation_X2E), + /* K11 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20param_name_X2C_X20time_ms_X29), }), - be_str_weak(process_property_assignment), + be_str_weak(transform_operand_for_closure), &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x20080403, // 0005 NE R2 R2 R3 - 0x780A002E, // 0006 JMPF R2 #0036 - 0x8C080101, // 0007 GETMET R2 R0 K1 - 0x7C080200, // 0008 CALL R2 1 - 0x88080502, // 0009 GETMBR R2 R2 K2 - 0xB80E0600, // 000A GETNGBL R3 K3 - 0x880C0704, // 000B GETMBR R3 R3 K4 - 0x880C0705, // 000C GETMBR R3 R3 K5 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0026, // 000E JMPF R2 #0036 - 0x8C080106, // 000F GETMET R2 R0 K6 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080100, // 0011 GETMET R2 R0 K0 - 0x7C080200, // 0012 CALL R2 1 - 0x8C0C0107, // 0013 GETMET R3 R0 K7 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0108, // 0015 GETMET R3 R0 K8 - 0x58140009, // 0016 LDCONST R5 K9 - 0x7C0C0400, // 0017 CALL R3 2 - 0x8C10010A, // 0018 GETMET R4 R0 K10 - 0x7C100200, // 0019 CALL R4 1 - 0xA4161600, // 001A IMPORT R5 K11 - 0x5818000C, // 001B LDCONST R6 K12 - 0x8C1C0B0D, // 001C GETMET R7 R5 K13 - 0xB8261C00, // 001D GETNGBL R9 K14 - 0x5C280200, // 001E MOVE R10 R1 - 0x7C1C0600, // 001F CALL R7 3 - 0x781E0005, // 0020 JMPF R7 #0027 - 0x601C0018, // 0021 GETGBL R7 G24 - 0x5820000F, // 0022 LDCONST R8 K15 - 0x5C240200, // 0023 MOVE R9 R1 - 0x7C1C0400, // 0024 CALL R7 2 - 0x5C180E00, // 0025 MOVE R6 R7 - 0x70020004, // 0026 JMP #002C - 0x601C0018, // 0027 GETGBL R7 G24 - 0x58200010, // 0028 LDCONST R8 K16 - 0x5C240200, // 0029 MOVE R9 R1 - 0x7C1C0400, // 002A CALL R7 2 - 0x5C180E00, // 002B MOVE R6 R7 - 0x8C1C0111, // 002C GETMET R7 R0 K17 - 0x60240018, // 002D GETGBL R9 G24 - 0x58280012, // 002E LDCONST R10 K18 - 0x5C2C0C00, // 002F MOVE R11 R6 - 0x5C300400, // 0030 MOVE R12 R2 - 0x5C340600, // 0031 MOVE R13 R3 - 0x5C380800, // 0032 MOVE R14 R4 - 0x7C240A00, // 0033 CALL R9 5 - 0x7C1C0400, // 0034 CALL R7 2 - 0x70020007, // 0035 JMP #003E - 0x8C080113, // 0036 GETMET R2 R0 K19 - 0x60100018, // 0037 GETGBL R4 G24 - 0x58140014, // 0038 LDCONST R5 K20 - 0x5C180200, // 0039 MOVE R6 R1 - 0x7C100400, // 003A CALL R4 2 - 0x7C080400, // 003B CALL R2 2 - 0x8C080115, // 003C GETMET R2 R0 K21 - 0x7C080200, // 003D CALL R2 1 - 0x80000000, // 003E RET 0 + ( &(const binstruction[69]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x280C0703, // 0005 GE R3 R3 K3 + 0x780E001A, // 0006 JMPF R3 #0022 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x54120007, // 000B LDINT R4 8 + 0x000C0604, // 000C ADD R3 R3 R4 + 0x6010000C, // 000D GETGBL R4 G12 + 0x5C140200, // 000E MOVE R5 R1 + 0x7C100200, // 000F CALL R4 1 + 0x54160004, // 0010 LDINT R5 5 + 0x04100805, // 0011 SUB R4 R4 R5 + 0x40140604, // 0012 CONNECT R5 R3 R4 + 0x94140205, // 0013 GETIDX R5 R1 R5 + 0x8C180501, // 0014 GETMET R6 R2 K1 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x58240005, // 0016 LDCONST R9 K5 + 0x7C180600, // 0017 CALL R6 3 + 0x28180D03, // 0018 GE R6 R6 K3 + 0x781A0006, // 0019 JMPF R6 #0021 + 0x8C180506, // 001A GETMET R6 R2 K6 + 0x5C200A00, // 001B MOVE R8 R5 + 0x58240005, // 001C LDCONST R9 K5 + 0x58280007, // 001D LDCONST R10 K7 + 0x7C180800, // 001E CALL R6 4 + 0x5C140C00, // 001F MOVE R5 R6 + 0x7001FFF2, // 0020 JMP #0014 + 0x80040A00, // 0021 RET 1 R5 + 0x8C0C0501, // 0022 GETMET R3 R2 K1 + 0x5C140200, // 0023 MOVE R5 R1 + 0x58180008, // 0024 LDCONST R6 K8 + 0x7C0C0600, // 0025 CALL R3 3 + 0x280C0703, // 0026 GE R3 R3 K3 + 0x8C100501, // 0027 GETMET R4 R2 K1 + 0x5C180200, // 0028 MOVE R6 R1 + 0x581C0007, // 0029 LDCONST R7 K7 + 0x7C100600, // 002A CALL R4 3 + 0x28100903, // 002B GE R4 R4 K3 + 0x8C140501, // 002C GETMET R5 R2 K1 + 0x5C1C0200, // 002D MOVE R7 R1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C140600, // 002F CALL R5 3 + 0x28140B03, // 0030 GE R5 R5 K3 + 0x8C180501, // 0031 GETMET R6 R2 K1 + 0x5C200200, // 0032 MOVE R8 R1 + 0x5824000A, // 0033 LDCONST R9 K10 + 0x7C180600, // 0034 CALL R6 3 + 0x28180D03, // 0035 GE R6 R6 K3 + 0x780E000B, // 0036 JMPF R3 #0043 + 0x5C1C0800, // 0037 MOVE R7 R4 + 0x741E0009, // 0038 JMPT R7 #0043 + 0x5C1C0A00, // 0039 MOVE R7 R5 + 0x741E0007, // 003A JMPT R7 #0043 + 0x5C1C0C00, // 003B MOVE R7 R6 + 0x741E0005, // 003C JMPT R7 #0043 + 0x601C0018, // 003D GETGBL R7 G24 + 0x5820000B, // 003E LDCONST R8 K11 + 0x5C240200, // 003F MOVE R9 R1 + 0x7C1C0400, // 0040 CALL R7 2 + 0x80040E00, // 0041 RET 1 R7 + 0x70020000, // 0042 JMP #0044 + 0x80040200, // 0043 RET 1 R1 + 0x80000000, // 0044 RET 0 }) ) ); @@ -9308,11 +9003,61 @@ be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* nam /******************************************************************** -** Solidified function: process_time_value +** Solidified function: expect_left_brace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), + }), + be_str_weak(expect_left_brace), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_multiplicative_expression_raw +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw, /* name */ + be_nested_proto( + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -9321,67 +9066,379 @@ be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(TIME), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(convert_time_to_ms), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20time_X20value), + /* K0 */ be_nested_str_weak(process_unary_expression_raw), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(MULTIPLY), + /* K7 */ be_nested_str_weak(DIVIDE), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), }), - be_str_weak(process_time_value), + be_str_weak(process_multiplicative_expression_raw), &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ + ( &(const binstruction[38]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000D, // 0004 JMPF R2 #0013 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0007, // 000A JMPF R2 #0013 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0107, // 000E GETMET R3 R0 K7 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80040600, // 0011 RET 1 R3 - 0x70020019, // 0012 JMP #002D - 0x4C080000, // 0013 LDNIL R2 - 0x20080202, // 0014 NE R2 R1 R2 - 0x780A0011, // 0015 JMPF R2 #0028 - 0x88080301, // 0016 GETMBR R2 R1 K1 - 0xB80E0400, // 0017 GETNGBL R3 K2 - 0x880C0703, // 0018 GETMBR R3 R3 K3 - 0x880C0708, // 0019 GETMBR R3 R3 K8 - 0x1C080403, // 001A EQ R2 R2 R3 - 0x780A000B, // 001B JMPF R2 #0028 - 0x88080305, // 001C GETMBR R2 R1 K5 - 0x8C0C0106, // 001D GETMET R3 R0 K6 - 0x7C0C0200, // 001E CALL R3 1 - 0x600C0009, // 001F GETGBL R3 G9 - 0x6010000A, // 0020 GETGBL R4 G10 - 0x5C140400, // 0021 MOVE R5 R2 - 0x7C100200, // 0022 CALL R4 1 - 0x7C0C0200, // 0023 CALL R3 1 - 0x541203E7, // 0024 LDINT R4 1000 - 0x080C0604, // 0025 MUL R3 R3 R4 - 0x80040600, // 0026 RET 1 R3 - 0x70020004, // 0027 JMP #002D - 0x8C080109, // 0028 GETMET R2 R0 K9 - 0x5810000A, // 0029 LDCONST R4 K10 - 0x7C080400, // 002A CALL R2 2 - 0x540A03E7, // 002B LDINT R2 1000 - 0x80040400, // 002C RET 1 R2 - 0x80000000, // 002D RET 0 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x740A001F, // 0004 JMPT R2 #0025 + 0x8C080102, // 0005 GETMET R2 R0 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0018, // 0009 JMPF R3 #0023 + 0x880C0503, // 000A GETMBR R3 R2 K3 + 0xB8120800, // 000B GETNGBL R4 K4 + 0x88100905, // 000C GETMBR R4 R4 K5 + 0x88100906, // 000D GETMBR R4 R4 K6 + 0x1C0C0604, // 000E EQ R3 R3 R4 + 0x740E0005, // 000F JMPT R3 #0016 + 0x880C0503, // 0010 GETMBR R3 R2 K3 + 0xB8120800, // 0011 GETNGBL R4 K4 + 0x88100905, // 0012 GETMBR R4 R4 K5 + 0x88100907, // 0013 GETMBR R4 R4 K7 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x780E000C, // 0015 JMPF R3 #0023 + 0x880C0508, // 0016 GETMBR R3 R2 K8 + 0x8C100109, // 0017 GETMET R4 R0 K9 + 0x7C100200, // 0018 CALL R4 1 + 0x8C100100, // 0019 GETMET R4 R0 K0 + 0x7C100200, // 001A CALL R4 1 + 0x60140018, // 001B GETGBL R5 G24 + 0x5818000A, // 001C LDCONST R6 K10 + 0x5C1C0200, // 001D MOVE R7 R1 + 0x5C200600, // 001E MOVE R8 R3 + 0x5C240800, // 001F MOVE R9 R4 + 0x7C140800, // 0020 CALL R5 4 + 0x5C040A00, // 0021 MOVE R1 R5 + 0x70020000, // 0022 JMP #0024 + 0x70020000, // 0023 JMP #0025 + 0x7001FFDC, // 0024 JMP #0002 + 0x80040200, // 0025 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_event_handler +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[26]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(line), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(_X7B_X7D), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(Token), + /* K9 */ be_nested_str_weak(LEFT_PAREN), + /* K10 */ be_nested_str_weak(process_event_parameters), + /* K11 */ be_nested_str_weak(expect_colon), + /* K12 */ be_nested_str_weak(event_handler__X25s__X25s), + /* K13 */ be_nested_str_weak(add), + /* K14 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), + /* K15 */ be_nested_str_weak(KEYWORD), + /* K16 */ be_nested_str_weak(value), + /* K17 */ be_nested_str_weak(interrupt), + /* K18 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), + /* K19 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), + /* K20 */ be_nested_str_weak(process_value), + /* K21 */ be_nested_str_weak(animation), + /* K22 */ be_nested_str_weak(_X20_X20var_X20temp_anim_X20_X3D_X20_X25s), + /* K23 */ be_nested_str_weak(_X20_X20engine_X2Eadd_animation_X28temp_anim_X29), + /* K24 */ be_nested_str_weak(end), + /* K25 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), + }), + be_str_weak(process_event_handler), + &be_const_str_solidified, + ( &(const binstruction[101]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x4C0C0000, // 0006 LDNIL R3 + 0x20080403, // 0007 NE R2 R2 R3 + 0x780A0003, // 0008 JMPF R2 #000D + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x88080503, // 000B GETMBR R2 R2 K3 + 0x70020000, // 000C JMP #000E + 0x58080004, // 000D LDCONST R2 K4 + 0x580C0005, // 000E LDCONST R3 K5 + 0x8C100102, // 000F GETMET R4 R0 K2 + 0x7C100200, // 0010 CALL R4 1 + 0x4C140000, // 0011 LDNIL R5 + 0x20100805, // 0012 NE R4 R4 R5 + 0x7812000A, // 0013 JMPF R4 #001F + 0x8C100102, // 0014 GETMET R4 R0 K2 + 0x7C100200, // 0015 CALL R4 1 + 0x88100906, // 0016 GETMBR R4 R4 K6 + 0xB8160E00, // 0017 GETNGBL R5 K7 + 0x88140B08, // 0018 GETMBR R5 R5 K8 + 0x88140B09, // 0019 GETMBR R5 R5 K9 + 0x1C100805, // 001A EQ R4 R4 R5 + 0x78120002, // 001B JMPF R4 #001F + 0x8C10010A, // 001C GETMET R4 R0 K10 + 0x7C100200, // 001D CALL R4 1 + 0x5C0C0800, // 001E MOVE R3 R4 + 0x8C10010B, // 001F GETMET R4 R0 K11 + 0x7C100200, // 0020 CALL R4 1 + 0x60100018, // 0021 GETGBL R4 G24 + 0x5814000C, // 0022 LDCONST R5 K12 + 0x5C180200, // 0023 MOVE R6 R1 + 0x5C1C0400, // 0024 MOVE R7 R2 + 0x7C100600, // 0025 CALL R4 3 + 0x8C14010D, // 0026 GETMET R5 R0 K13 + 0x601C0018, // 0027 GETGBL R7 G24 + 0x5820000E, // 0028 LDCONST R8 K14 + 0x5C240800, // 0029 MOVE R9 R4 + 0x7C1C0400, // 002A CALL R7 2 + 0x7C140400, // 002B CALL R5 2 + 0x8C140102, // 002C GETMET R5 R0 K2 + 0x7C140200, // 002D CALL R5 1 + 0x4C180000, // 002E LDNIL R6 + 0x20180A06, // 002F NE R6 R5 R6 + 0x781A0027, // 0030 JMPF R6 #0059 + 0x88180B06, // 0031 GETMBR R6 R5 K6 + 0xB81E0E00, // 0032 GETNGBL R7 K7 + 0x881C0F08, // 0033 GETMBR R7 R7 K8 + 0x881C0F0F, // 0034 GETMBR R7 R7 K15 + 0x1C180C07, // 0035 EQ R6 R6 R7 + 0x781A0013, // 0036 JMPF R6 #004B + 0x88180B10, // 0037 GETMBR R6 R5 K16 + 0x1C180D11, // 0038 EQ R6 R6 K17 + 0x781A0010, // 0039 JMPF R6 #004B + 0x8C180100, // 003A GETMET R6 R0 K0 + 0x7C180200, // 003B CALL R6 1 + 0x8C180101, // 003C GETMET R6 R0 K1 + 0x7C180200, // 003D CALL R6 1 + 0x1C1C0D02, // 003E EQ R7 R6 K2 + 0x781E0003, // 003F JMPF R7 #0044 + 0x8C1C010D, // 0040 GETMET R7 R0 K13 + 0x58240012, // 0041 LDCONST R9 K18 + 0x7C1C0400, // 0042 CALL R7 2 + 0x70020005, // 0043 JMP #004A + 0x8C1C010D, // 0044 GETMET R7 R0 K13 + 0x60240018, // 0045 GETGBL R9 G24 + 0x58280013, // 0046 LDCONST R10 K19 + 0x5C2C0C00, // 0047 MOVE R11 R6 + 0x7C240400, // 0048 CALL R9 2 + 0x7C1C0400, // 0049 CALL R7 2 + 0x7002000D, // 004A JMP #0059 + 0x8C180114, // 004B GETMET R6 R0 K20 + 0x58200015, // 004C LDCONST R8 K21 + 0x7C180400, // 004D CALL R6 2 + 0x8C1C010D, // 004E GETMET R7 R0 K13 + 0x60240018, // 004F GETGBL R9 G24 + 0x58280016, // 0050 LDCONST R10 K22 + 0x5C2C0C00, // 0051 MOVE R11 R6 + 0x7C240400, // 0052 CALL R9 2 + 0x7C1C0400, // 0053 CALL R7 2 + 0x8C1C010D, // 0054 GETMET R7 R0 K13 + 0x60240018, // 0055 GETGBL R9 G24 + 0x58280017, // 0056 LDCONST R10 K23 + 0x7C240200, // 0057 CALL R9 1 + 0x7C1C0400, // 0058 CALL R7 2 + 0x8C18010D, // 0059 GETMET R6 R0 K13 + 0x58200018, // 005A LDCONST R8 K24 + 0x7C180400, // 005B CALL R6 2 + 0x8C18010D, // 005C GETMET R6 R0 K13 + 0x60200018, // 005D GETGBL R8 G24 + 0x58240019, // 005E LDCONST R9 K25 + 0x5C280200, // 005F MOVE R10 R1 + 0x5C2C0800, // 0060 MOVE R11 R4 + 0x5C300600, // 0061 MOVE R12 R3 + 0x7C200800, // 0062 CALL R8 4 + 0x7C180400, // 0063 CALL R6 2 + 0x80000000, // 0064 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* 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(add), + /* K1 */ be_nested_str_weak(import_X20animation), + /* K2 */ be_nested_str_weak(), + /* K3 */ be_nested_str_weak(at_end), + /* K4 */ be_nested_str_weak(process_statement), + /* K5 */ be_nested_str_weak(generate_engine_start), + /* K6 */ be_nested_str_weak(errors), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(join_output), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0xA802001A, // 0000 EXBLK 0 #001C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x7C040400, // 0003 CALL R1 2 + 0x8C040100, // 0004 GETMET R1 R0 K0 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x7C040400, // 0006 CALL R1 2 + 0x8C040103, // 0007 GETMET R1 R0 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x74060002, // 0009 JMPT R1 #000D + 0x8C040104, // 000A GETMET R1 R0 K4 + 0x7C040200, // 000B CALL R1 1 + 0x7001FFF9, // 000C JMP #0007 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x6004000C, // 000F GETGBL R1 G12 + 0x88080106, // 0010 GETMBR R2 R0 K6 + 0x7C040200, // 0011 CALL R1 1 + 0x1C040307, // 0012 EQ R1 R1 K7 + 0x78060002, // 0013 JMPF R1 #0017 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0x70020000, // 0016 JMP #0018 + 0x4C040000, // 0017 LDNIL R1 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040200, // 0019 RET 1 R1 + 0xA8040001, // 001A EXBLK 1 1 + 0x7002000B, // 001B JMP #0028 + 0xAC040002, // 001C CATCH R1 0 2 + 0x70020008, // 001D JMP #0027 + 0x8C0C0109, // 001E GETMET R3 R0 K9 + 0x60140018, // 001F GETGBL R5 G24 + 0x5818000A, // 0020 LDCONST R6 K10 + 0x5C1C0400, // 0021 MOVE R7 R2 + 0x7C140400, // 0022 CALL R5 2 + 0x7C0C0400, // 0023 CALL R3 2 + 0x4C0C0000, // 0024 LDNIL R3 + 0x80040600, // 0025 RET 1 R3 + 0x70020000, // 0026 JMP #0028 + 0xB0080000, // 0027 RAISE 2 R0 R0 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_default_strip_initialization +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* 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(strip_initialized), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), + /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), + /* K4 */ be_nested_str_weak(), + }), + be_str_weak(generate_default_strip_initialization), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x7C040400, // 0005 CALL R1 2 + 0x8C040101, // 0006 GETMET R1 R0 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x7C040400, // 0008 CALL R1 2 + 0x8C040101, // 0009 GETMET R1 R0 K1 + 0x580C0004, // 000A LDCONST R3 K4 + 0x7C040400, // 000B CALL R1 2 + 0x50040200, // 000C LDBOOL R1 1 0 + 0x90020001, // 000D SETMBR R0 K0 R1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: error +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_error, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(line), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + }), + be_str_weak(error), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x70020000, // 0008 JMP #000A + 0x58080002, // 0009 LDCONST R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x60140018, // 000C GETGBL R5 G24 + 0x58180005, // 000D LDCONST R6 K5 + 0x5C1C0400, // 000E MOVE R7 R2 + 0x5C200200, // 000F MOVE R8 R1 + 0x7C140600, // 0010 CALL R5 3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x80000000, // 0012 RET 0 }) ) ); @@ -9432,9 +9489,9 @@ be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ /******************************************************************** -** Solidified function: expect_comma +** Solidified function: expect_left_bracket ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -9449,12 +9506,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(animation_dsl), /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMA), + /* K4 */ be_nested_str_weak(LEFT_BRACKET), /* K5 */ be_nested_str_weak(next), /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), }), - be_str_weak(expect_comma), + be_str_weak(expect_left_bracket), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -9482,11 +9539,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ /******************************************************************** -** Solidified function: add +** Solidified function: create_computation_closure_from_string ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_add, /* name */ +be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ be_nested_proto( - 5, /* nstack */ + 9, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -9494,18 +9551,100 @@ be_local_closure(class_SimpleDSLTranspiler_add, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(output), - /* K1 */ be_nested_str_weak(push), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(transform_expression_for_closure), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X20_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(replace), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(def_X20_X28self_X2C_X20param_name_X2C_X20time_ms_X29_X20return_X20_X28_X25s_X29_X20end), + /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), }), - be_str_weak(add), + be_str_weak(create_computation_closure_from_string), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[26]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0101, // 0001 GETMET R3 R0 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 K2 + 0x5C180600, // 0005 MOVE R6 R3 + 0x581C0003, // 0006 LDCONST R7 K3 + 0x7C100600, // 0007 CALL R4 3 + 0x28100904, // 0008 GE R4 R4 K4 + 0x78120006, // 0009 JMPF R4 #0011 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x5C180600, // 000B MOVE R6 R3 + 0x581C0003, // 000C LDCONST R7 K3 + 0x58200006, // 000D LDCONST R8 K6 + 0x7C100800, // 000E CALL R4 4 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x7001FFF2, // 0010 JMP #0004 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180600, // 0013 MOVE R6 R3 + 0x7C100400, // 0014 CALL R4 2 + 0x60140018, // 0015 GETGBL R5 G24 + 0x58180008, // 0016 LDCONST R6 K8 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x7C140400, // 0018 CALL R5 2 + 0x80040A00, // 0019 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(NEWLINE), + /* K6 */ be_nested_str_weak(EOF), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_statement), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060011, // 0002 JMPT R1 #0015 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x88080302, // 0005 GETMBR R2 R1 K2 + 0xB80E0600, // 0006 GETNGBL R3 K3 + 0x880C0704, // 0007 GETMBR R3 R3 K4 + 0x880C0705, // 0008 GETMBR R3 R3 K5 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0005, // 000A JMPT R2 #0011 + 0x88080302, // 000B GETMBR R2 R1 K2 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x880C0704, // 000D GETMBR R3 R3 K4 + 0x880C0706, // 000E GETMBR R3 R3 K6 + 0x1C080403, // 000F EQ R2 R2 R3 + 0x780A0000, // 0010 JMPF R2 #0012 + 0x70020002, // 0011 JMP #0015 + 0x8C080107, // 0012 GETMET R2 R0 K7 + 0x7C080200, // 0013 CALL R2 1 + 0x7001FFEA, // 0014 JMP #0000 + 0x80000000, // 0015 RET 0 }) ) ); @@ -9582,6 +9721,453 @@ be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* /*******************************************************************/ +/******************************************************************** +** Solidified function: process_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_paren), + /* K3 */ be_nested_str_weak(skip_whitespace), + /* K4 */ be_nested_str_weak(process_value), + /* K5 */ be_nested_str_weak(argument), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(current), + /* K8 */ be_nested_str_weak(type), + /* K9 */ be_nested_str_weak(animation_dsl), + /* K10 */ be_nested_str_weak(Token), + /* K11 */ be_nested_str_weak(COMMA), + /* K12 */ be_nested_str_weak(next), + /* K13 */ be_nested_str_weak(error), + /* K14 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K15 */ be_nested_str_weak(expect_right_paren), + /* K16 */ be_nested_str_weak(), + /* K17 */ be_const_int(0), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(_X2C_X20), + /* K20 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[73]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A002A, // 0006 JMPT R2 #0032 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A0027, // 0009 JMPT R2 #0032 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x7C080200, // 000B CALL R2 1 + 0x8C080102, // 000C GETMET R2 R0 K2 + 0x7C080200, // 000D CALL R2 1 + 0x780A0000, // 000E JMPF R2 #0010 + 0x70020021, // 000F JMP #0032 + 0x8C080104, // 0010 GETMET R2 R0 K4 + 0x58100005, // 0011 LDCONST R4 K5 + 0x7C080400, // 0012 CALL R2 2 + 0x8C0C0306, // 0013 GETMET R3 R1 K6 + 0x5C140400, // 0014 MOVE R5 R2 + 0x7C0C0400, // 0015 CALL R3 2 + 0x8C0C0103, // 0016 GETMET R3 R0 K3 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C0107, // 0018 GETMET R3 R0 K7 + 0x7C0C0200, // 0019 CALL R3 1 + 0x4C100000, // 001A LDNIL R4 + 0x200C0604, // 001B NE R3 R3 R4 + 0x780E000C, // 001C JMPF R3 #002A + 0x8C0C0107, // 001D GETMET R3 R0 K7 + 0x7C0C0200, // 001E CALL R3 1 + 0x880C0708, // 001F GETMBR R3 R3 K8 + 0xB8121200, // 0020 GETNGBL R4 K9 + 0x8810090A, // 0021 GETMBR R4 R4 K10 + 0x8810090B, // 0022 GETMBR R4 R4 K11 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0004, // 0024 JMPF R3 #002A + 0x8C0C010C, // 0025 GETMET R3 R0 K12 + 0x7C0C0200, // 0026 CALL R3 1 + 0x8C0C0103, // 0027 GETMET R3 R0 K3 + 0x7C0C0200, // 0028 CALL R3 1 + 0x70020006, // 0029 JMP #0031 + 0x8C0C0102, // 002A GETMET R3 R0 K2 + 0x7C0C0200, // 002B CALL R3 1 + 0x740E0003, // 002C JMPT R3 #0031 + 0x8C0C010D, // 002D GETMET R3 R0 K13 + 0x5814000E, // 002E LDCONST R5 K14 + 0x7C0C0400, // 002F CALL R3 2 + 0x70020000, // 0030 JMP #0032 + 0x7001FFD1, // 0031 JMP #0004 + 0x8C08010F, // 0032 GETMET R2 R0 K15 + 0x7C080200, // 0033 CALL R2 1 + 0x58080010, // 0034 LDCONST R2 K16 + 0x600C0010, // 0035 GETGBL R3 G16 + 0x6010000C, // 0036 GETGBL R4 G12 + 0x5C140200, // 0037 MOVE R5 R1 + 0x7C100200, // 0038 CALL R4 1 + 0x04100912, // 0039 SUB R4 R4 K18 + 0x40122204, // 003A CONNECT R4 K17 R4 + 0x7C0C0200, // 003B CALL R3 1 + 0xA8020007, // 003C EXBLK 0 #0045 + 0x5C100600, // 003D MOVE R4 R3 + 0x7C100000, // 003E CALL R4 0 + 0x24140911, // 003F GT R5 R4 K17 + 0x78160000, // 0040 JMPF R5 #0042 + 0x00080513, // 0041 ADD R2 R2 K19 + 0x94140204, // 0042 GETIDX R5 R1 R4 + 0x00080405, // 0043 ADD R2 R2 R5 + 0x7001FFF7, // 0044 JMP #003D + 0x580C0014, // 0045 LDCONST R3 K20 + 0xAC0C0200, // 0046 CATCH R3 1 0 + 0xB0080000, // 0047 RAISE 2 R0 R0 + 0x80040400, // 0048 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_named_arguments_for_variable +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ + be_nested_proto( + 16, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[33]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(string), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(temp_), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(split), + /* K7 */ be_nested_str_weak(_), + /* K8 */ be_const_int(2), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(_create_animation_instance_for_validation), + /* K11 */ be_nested_str_weak(at_end), + /* K12 */ be_nested_str_weak(check_right_paren), + /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K14 */ be_nested_str_weak(expect_identifier), + /* K15 */ be_nested_str_weak(_validate_single_parameter), + /* K16 */ be_nested_str_weak(expect_assign), + /* K17 */ be_nested_str_weak(process_value), + /* K18 */ be_nested_str_weak(argument), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K22 */ be_nested_str_weak(current), + /* K23 */ be_nested_str_weak(type), + /* K24 */ be_nested_str_weak(animation_dsl), + /* K25 */ be_nested_str_weak(Token), + /* K26 */ be_nested_str_weak(COMMENT), + /* K27 */ be_nested_str_weak(next), + /* K28 */ be_nested_str_weak(COMMA), + /* K29 */ be_nested_str_weak(NEWLINE), + /* K30 */ be_nested_str_weak(error), + /* K31 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K32 */ be_nested_str_weak(expect_right_paren), + }), + be_str_weak(process_named_arguments_for_variable), + &be_const_str_solidified, + ( &(const binstruction[133]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x58080001, // 0002 LDCONST R2 K1 + 0xA40E0400, // 0003 IMPORT R3 K2 + 0x8C100703, // 0004 GETMET R4 R3 K3 + 0x5C180200, // 0005 MOVE R6 R1 + 0x581C0004, // 0006 LDCONST R7 K4 + 0x7C100600, // 0007 CALL R4 3 + 0x1C100905, // 0008 EQ R4 R4 K5 + 0x78120009, // 0009 JMPF R4 #0014 + 0x8C100706, // 000A GETMET R4 R3 K6 + 0x5C180200, // 000B MOVE R6 R1 + 0x581C0007, // 000C LDCONST R7 K7 + 0x7C100600, // 000D CALL R4 3 + 0x6014000C, // 000E GETGBL R5 G12 + 0x5C180800, // 000F MOVE R6 R4 + 0x7C140200, // 0010 CALL R5 1 + 0x28140B08, // 0011 GE R5 R5 K8 + 0x78160000, // 0012 JMPF R5 #0014 + 0x94080909, // 0013 GETIDX R2 R4 K9 + 0x4C100000, // 0014 LDNIL R4 + 0x20140501, // 0015 NE R5 R2 K1 + 0x78160003, // 0016 JMPF R5 #001B + 0x8C14010A, // 0017 GETMET R5 R0 K10 + 0x5C1C0400, // 0018 MOVE R7 R2 + 0x7C140400, // 0019 CALL R5 2 + 0x5C100A00, // 001A MOVE R4 R5 + 0x8C14010B, // 001B GETMET R5 R0 K11 + 0x7C140200, // 001C CALL R5 1 + 0x74160063, // 001D JMPT R5 #0082 + 0x8C14010C, // 001E GETMET R5 R0 K12 + 0x7C140200, // 001F CALL R5 1 + 0x74160060, // 0020 JMPT R5 #0082 + 0x8C14010D, // 0021 GETMET R5 R0 K13 + 0x7C140200, // 0022 CALL R5 1 + 0x8C14010C, // 0023 GETMET R5 R0 K12 + 0x7C140200, // 0024 CALL R5 1 + 0x78160000, // 0025 JMPF R5 #0027 + 0x7002005A, // 0026 JMP #0082 + 0x8C14010E, // 0027 GETMET R5 R0 K14 + 0x7C140200, // 0028 CALL R5 1 + 0x4C180000, // 0029 LDNIL R6 + 0x20180806, // 002A NE R6 R4 R6 + 0x781A0006, // 002B JMPF R6 #0033 + 0x20180501, // 002C NE R6 R2 K1 + 0x781A0004, // 002D JMPF R6 #0033 + 0x8C18010F, // 002E GETMET R6 R0 K15 + 0x5C200400, // 002F MOVE R8 R2 + 0x5C240A00, // 0030 MOVE R9 R5 + 0x5C280800, // 0031 MOVE R10 R4 + 0x7C180800, // 0032 CALL R6 4 + 0x8C180110, // 0033 GETMET R6 R0 K16 + 0x7C180200, // 0034 CALL R6 1 + 0x8C180111, // 0035 GETMET R6 R0 K17 + 0x58200012, // 0036 LDCONST R8 K18 + 0x7C180400, // 0037 CALL R6 2 + 0x8C1C0113, // 0038 GETMET R7 R0 K19 + 0x7C1C0200, // 0039 CALL R7 1 + 0x8C200114, // 003A GETMET R8 R0 K20 + 0x60280018, // 003B GETGBL R10 G24 + 0x582C0015, // 003C LDCONST R11 K21 + 0x5C300200, // 003D MOVE R12 R1 + 0x5C340A00, // 003E MOVE R13 R5 + 0x5C380C00, // 003F MOVE R14 R6 + 0x5C3C0E00, // 0040 MOVE R15 R7 + 0x7C280A00, // 0041 CALL R10 5 + 0x7C200400, // 0042 CALL R8 2 + 0x8C20010B, // 0043 GETMET R8 R0 K11 + 0x7C200200, // 0044 CALL R8 1 + 0x7422000F, // 0045 JMPT R8 #0056 + 0x8C200116, // 0046 GETMET R8 R0 K22 + 0x7C200200, // 0047 CALL R8 1 + 0x4C240000, // 0048 LDNIL R9 + 0x20241009, // 0049 NE R9 R8 R9 + 0x78260008, // 004A JMPF R9 #0054 + 0x88241117, // 004B GETMBR R9 R8 K23 + 0xB82A3000, // 004C GETNGBL R10 K24 + 0x88281519, // 004D GETMBR R10 R10 K25 + 0x8828151A, // 004E GETMBR R10 R10 K26 + 0x1C24120A, // 004F EQ R9 R9 R10 + 0x78260002, // 0050 JMPF R9 #0054 + 0x8C24011B, // 0051 GETMET R9 R0 K27 + 0x7C240200, // 0052 CALL R9 1 + 0x70020000, // 0053 JMP #0055 + 0x70020000, // 0054 JMP #0056 + 0x7001FFEC, // 0055 JMP #0043 + 0x8C200116, // 0056 GETMET R8 R0 K22 + 0x7C200200, // 0057 CALL R8 1 + 0x4C240000, // 0058 LDNIL R9 + 0x20201009, // 0059 NE R8 R8 R9 + 0x7822000C, // 005A JMPF R8 #0068 + 0x8C200116, // 005B GETMET R8 R0 K22 + 0x7C200200, // 005C CALL R8 1 + 0x88201117, // 005D GETMBR R8 R8 K23 + 0xB8263000, // 005E GETNGBL R9 K24 + 0x88241319, // 005F GETMBR R9 R9 K25 + 0x8824131C, // 0060 GETMBR R9 R9 K28 + 0x1C201009, // 0061 EQ R8 R8 R9 + 0x78220004, // 0062 JMPF R8 #0068 + 0x8C20011B, // 0063 GETMET R8 R0 K27 + 0x7C200200, // 0064 CALL R8 1 + 0x8C20010D, // 0065 GETMET R8 R0 K13 + 0x7C200200, // 0066 CALL R8 1 + 0x70020018, // 0067 JMP #0081 + 0x8C200116, // 0068 GETMET R8 R0 K22 + 0x7C200200, // 0069 CALL R8 1 + 0x4C240000, // 006A LDNIL R9 + 0x20201009, // 006B NE R8 R8 R9 + 0x7822000C, // 006C JMPF R8 #007A + 0x8C200116, // 006D GETMET R8 R0 K22 + 0x7C200200, // 006E CALL R8 1 + 0x88201117, // 006F GETMBR R8 R8 K23 + 0xB8263000, // 0070 GETNGBL R9 K24 + 0x88241319, // 0071 GETMBR R9 R9 K25 + 0x8824131D, // 0072 GETMBR R9 R9 K29 + 0x1C201009, // 0073 EQ R8 R8 R9 + 0x78220004, // 0074 JMPF R8 #007A + 0x8C20011B, // 0075 GETMET R8 R0 K27 + 0x7C200200, // 0076 CALL R8 1 + 0x8C20010D, // 0077 GETMET R8 R0 K13 + 0x7C200200, // 0078 CALL R8 1 + 0x70020006, // 0079 JMP #0081 + 0x8C20010C, // 007A GETMET R8 R0 K12 + 0x7C200200, // 007B CALL R8 1 + 0x74220003, // 007C JMPT R8 #0081 + 0x8C20011E, // 007D GETMET R8 R0 K30 + 0x5828001F, // 007E LDCONST R10 K31 + 0x7C200400, // 007F CALL R8 2 + 0x70020000, // 0080 JMP #0082 + 0x7001FF98, // 0081 JMP #001B + 0x8C140120, // 0082 GETMET R5 R0 K32 + 0x7C140200, // 0083 CALL R5 1 + 0x80000000, // 0084 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(is_math_method), + /* K1 */ be_nested_str_weak(_validate_factory_function), + }), + be_str_weak(_validate_animation_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0001, // 0003 JMPF R2 #0006 + 0x50080200, // 0004 LDBOOL R2 1 0 + 0x80040400, // 0005 RET 1 R2 + 0x8C080101, // 0006 GETMET R2 R0 K1 + 0x5C100200, // 0007 MOVE R4 R1 + 0x4C140000, // 0008 LDNIL R5 + 0x7C080600, // 0009 CALL R2 3 + 0x80040400, // 000A RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(sequence), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(sequence_names), + /* K6 */ be_nested_str_weak(expect_left_brace), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X28def_X20_X28engine_X29), + /* K9 */ be_nested_str_weak(_X20_X20var_X20steps_X20_X3D_X20_X5B_X5D), + /* K10 */ be_nested_str_weak(at_end), + /* K11 */ be_nested_str_weak(check_right_brace), + /* K12 */ be_nested_str_weak(process_sequence_statement), + /* K13 */ be_nested_str_weak(_X20_X20var_X20seq_manager_X20_X3D_X20animation_X2ESequenceManager_X28engine_X29), + /* K14 */ be_nested_str_weak(_X20_X20seq_manager_X2Estart_sequence_X28steps_X29), + /* K15 */ be_nested_str_weak(_X20_X20return_X20seq_manager), + /* K16 */ be_nested_str_weak(end_X29_X28engine_X29), + /* K17 */ be_nested_str_weak(expect_right_brace), + }), + be_str_weak(process_sequence), + &be_const_str_solidified, + ( &(const binstruction[60]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x88080105, // 000C GETMBR R2 R0 K5 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x98080203, // 000E SETIDX R2 R1 R3 + 0x8C080106, // 000F GETMET R2 R0 K6 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080107, // 0011 GETMET R2 R0 K7 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140008, // 0013 LDCONST R5 K8 + 0x5C180200, // 0014 MOVE R6 R1 + 0x7C100400, // 0015 CALL R4 2 + 0x7C080400, // 0016 CALL R2 2 + 0x8C080107, // 0017 GETMET R2 R0 K7 + 0x60100018, // 0018 GETGBL R4 G24 + 0x58140009, // 0019 LDCONST R5 K9 + 0x7C100200, // 001A CALL R4 1 + 0x7C080400, // 001B CALL R2 2 + 0x8C08010A, // 001C GETMET R2 R0 K10 + 0x7C080200, // 001D CALL R2 1 + 0x740A0005, // 001E JMPT R2 #0025 + 0x8C08010B, // 001F GETMET R2 R0 K11 + 0x7C080200, // 0020 CALL R2 1 + 0x740A0002, // 0021 JMPT R2 #0025 + 0x8C08010C, // 0022 GETMET R2 R0 K12 + 0x7C080200, // 0023 CALL R2 1 + 0x7001FFF6, // 0024 JMP #001C + 0x8C080107, // 0025 GETMET R2 R0 K7 + 0x60100018, // 0026 GETGBL R4 G24 + 0x5814000D, // 0027 LDCONST R5 K13 + 0x7C100200, // 0028 CALL R4 1 + 0x7C080400, // 0029 CALL R2 2 + 0x8C080107, // 002A GETMET R2 R0 K7 + 0x60100018, // 002B GETGBL R4 G24 + 0x5814000E, // 002C LDCONST R5 K14 + 0x7C100200, // 002D CALL R4 1 + 0x7C080400, // 002E CALL R2 2 + 0x8C080107, // 002F GETMET R2 R0 K7 + 0x60100018, // 0030 GETGBL R4 G24 + 0x5814000F, // 0031 LDCONST R5 K15 + 0x7C100200, // 0032 CALL R4 1 + 0x7C080400, // 0033 CALL R2 2 + 0x8C080107, // 0034 GETMET R2 R0 K7 + 0x60100018, // 0035 GETGBL R4 G24 + 0x58140010, // 0036 LDCONST R5 K16 + 0x7C100200, // 0037 CALL R4 1 + 0x7C080400, // 0038 CALL R2 2 + 0x8C080111, // 0039 GETMET R2 R0 K17 + 0x7C080200, // 003A CALL R2 1 + 0x80000000, // 003B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: has_errors ********************************************************************/ @@ -9613,318 +10199,53 @@ be_local_closure(class_SimpleDSLTranspiler_has_errors, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: error -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_error, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(line), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), - }), - be_str_weak(error), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x70020000, // 0008 JMP #000A - 0x58080002, // 0009 LDCONST R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x60140018, // 000C GETGBL R5 G24 - 0x58180005, // 000D LDCONST R6 K5 - 0x5C1C0400, // 000E MOVE R7 R2 - 0x5C200200, // 000F MOVE R8 R1 - 0x7C140600, // 0010 CALL R5 3 - 0x7C0C0400, // 0011 CALL R3 2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(color), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_nested_str_weak(COMMENT), - /* K17 */ be_nested_str_weak(_X20_X20), - /* K18 */ be_nested_str_weak(animation), - /* K19 */ be_nested_str_weak(is_user_function), - /* K20 */ be_nested_str_weak(process_function_arguments), - /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), - /* K25 */ be_nested_str_weak(_validate_color_provider_factory_exists), - /* K26 */ be_nested_str_weak(error), - /* K27 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K29 */ be_nested_str_weak(_process_named_arguments_for_color_provider), - /* K30 */ be_nested_str_weak(_X25s_), - /* K31 */ be_nested_str_weak(process_value), - /* K32 */ be_nested_str_weak(collect_inline_comment), - /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - }), - be_str_weak(process_color), - &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x88100909, // 0012 GETMBR R4 R4 K9 - 0x8810090A, // 0013 GETMBR R4 R4 K10 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x740E0005, // 0015 JMPT R3 #001C - 0x880C0507, // 0016 GETMBR R3 R2 K7 - 0xB8121000, // 0017 GETNGBL R4 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090B, // 0019 GETMBR R4 R4 K11 - 0x1C0C0604, // 001A EQ R3 R3 R4 - 0x780E005A, // 001B JMPF R3 #0077 - 0x8C0C010C, // 001C GETMET R3 R0 K12 - 0x7C0C0200, // 001D CALL R3 1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E0055, // 0020 JMPF R3 #0077 - 0x8C0C010C, // 0021 GETMET R3 R0 K12 - 0x7C0C0200, // 0022 CALL R3 1 - 0x880C0707, // 0023 GETMBR R3 R3 K7 - 0xB8121000, // 0024 GETNGBL R4 K8 - 0x88100909, // 0025 GETMBR R4 R4 K9 - 0x8810090D, // 0026 GETMBR R4 R4 K13 - 0x1C0C0604, // 0027 EQ R3 R3 R4 - 0x780E004D, // 0028 JMPF R3 #0077 - 0x880C050E, // 0029 GETMBR R3 R2 K14 - 0x8C100100, // 002A GETMET R4 R0 K0 - 0x7C100200, // 002B CALL R4 1 - 0x5810000F, // 002C LDCONST R4 K15 - 0x8C140106, // 002D GETMET R5 R0 K6 - 0x7C140200, // 002E CALL R5 1 - 0x4C180000, // 002F LDNIL R6 - 0x20140A06, // 0030 NE R5 R5 R6 - 0x7816000E, // 0031 JMPF R5 #0041 - 0x8C140106, // 0032 GETMET R5 R0 K6 - 0x7C140200, // 0033 CALL R5 1 - 0x88140B07, // 0034 GETMBR R5 R5 K7 - 0xB81A1000, // 0035 GETNGBL R6 K8 - 0x88180D09, // 0036 GETMBR R6 R6 K9 - 0x88180D10, // 0037 GETMBR R6 R6 K16 - 0x1C140A06, // 0038 EQ R5 R5 R6 - 0x78160006, // 0039 JMPF R5 #0041 - 0x8C140106, // 003A GETMET R5 R0 K6 - 0x7C140200, // 003B CALL R5 1 - 0x88140B0E, // 003C GETMBR R5 R5 K14 - 0x00162205, // 003D ADD R5 K17 R5 - 0x5C100A00, // 003E MOVE R4 R5 - 0x8C140100, // 003F GETMET R5 R0 K0 - 0x7C140200, // 0040 CALL R5 1 - 0xB8162400, // 0041 GETNGBL R5 K18 - 0x8C140B13, // 0042 GETMET R5 R5 K19 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160013, // 0045 JMPF R5 #005A - 0x8C140114, // 0046 GETMET R5 R0 K20 - 0x7C140200, // 0047 CALL R5 1 - 0x20180B0F, // 0048 NE R6 R5 K15 - 0x781A0004, // 0049 JMPF R6 #004F - 0x60180018, // 004A GETGBL R6 G24 - 0x581C0015, // 004B LDCONST R7 K21 - 0x5C200A00, // 004C MOVE R8 R5 - 0x7C180400, // 004D CALL R6 2 - 0x70020000, // 004E JMP #0050 - 0x58180016, // 004F LDCONST R6 K22 - 0x8C1C0117, // 0050 GETMET R7 R0 K23 - 0x60240018, // 0051 GETGBL R9 G24 - 0x58280018, // 0052 LDCONST R10 K24 - 0x5C2C0200, // 0053 MOVE R11 R1 - 0x5C300600, // 0054 MOVE R12 R3 - 0x5C340C00, // 0055 MOVE R13 R6 - 0x5C380800, // 0056 MOVE R14 R4 - 0x7C240A00, // 0057 CALL R9 5 - 0x7C1C0400, // 0058 CALL R7 2 - 0x7002001B, // 0059 JMP #0076 - 0x8C140119, // 005A GETMET R5 R0 K25 - 0x5C1C0600, // 005B MOVE R7 R3 - 0x7C140400, // 005C CALL R5 2 - 0x74160008, // 005D JMPT R5 #0067 - 0x8C14011A, // 005E GETMET R5 R0 K26 - 0x601C0018, // 005F GETGBL R7 G24 - 0x5820001B, // 0060 LDCONST R8 K27 - 0x5C240600, // 0061 MOVE R9 R3 - 0x7C1C0400, // 0062 CALL R7 2 - 0x7C140400, // 0063 CALL R5 2 - 0x8C140104, // 0064 GETMET R5 R0 K4 - 0x7C140200, // 0065 CALL R5 1 - 0x80000A00, // 0066 RET 0 - 0x8C140117, // 0067 GETMET R5 R0 K23 - 0x601C0018, // 0068 GETGBL R7 G24 - 0x5820001C, // 0069 LDCONST R8 K28 - 0x5C240200, // 006A MOVE R9 R1 - 0x5C280600, // 006B MOVE R10 R3 - 0x5C2C0800, // 006C MOVE R11 R4 - 0x7C1C0800, // 006D CALL R7 4 - 0x7C140400, // 006E CALL R5 2 - 0x8C14011D, // 006F GETMET R5 R0 K29 - 0x601C0018, // 0070 GETGBL R7 G24 - 0x5820001E, // 0071 LDCONST R8 K30 - 0x5C240200, // 0072 MOVE R9 R1 - 0x7C1C0400, // 0073 CALL R7 2 - 0x5C200600, // 0074 MOVE R8 R3 - 0x7C140600, // 0075 CALL R5 3 - 0x7002000C, // 0076 JMP #0084 - 0x8C0C011F, // 0077 GETMET R3 R0 K31 - 0x58140003, // 0078 LDCONST R5 K3 - 0x7C0C0400, // 0079 CALL R3 2 - 0x8C100120, // 007A GETMET R4 R0 K32 - 0x7C100200, // 007B CALL R4 1 - 0x8C140117, // 007C GETMET R5 R0 K23 - 0x601C0018, // 007D GETGBL R7 G24 - 0x58200021, // 007E LDCONST R8 K33 - 0x5C240200, // 007F MOVE R9 R1 - 0x5C280600, // 0080 MOVE R10 R3 - 0x5C2C0800, // 0081 MOVE R11 R4 - 0x7C1C0800, // 0082 CALL R7 4 - 0x7C140400, // 0083 CALL R5 2 - 0x80000000, // 0084 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: SimpleDSLTranspiler ********************************************************************/ be_local_class(SimpleDSLTranspiler, 8, NULL, - be_nested_map(97, + be_nested_map(100, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(_process_named_arguments_generic, 96), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, - { be_const_key_weak(strip_initialized, 88), be_const_var(6) }, - { be_const_key_weak(pos, 9), be_const_var(1) }, - { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(process_function_arguments, 14), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(can_use_as_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, - { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(errors, -1), be_const_var(3) }, - { be_const_key_weak(has_errors, 58), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, + { be_const_key_weak(expect_keyword, 27), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(has_errors, -1), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(sequence_names, -1), be_const_var(7) }, + { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, + { be_const_key_weak(_validate_animation_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, + { be_const_key_weak(pos, -1), be_const_var(1) }, + { be_const_key_weak(process_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(expect_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, - { be_const_key_weak(_validate_factory_function, 28), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, - { be_const_key_weak(create_computation_closure, 93), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, - { be_const_key_weak(expect_comma, 53), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, - { be_const_key_weak(expect_number, 8), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, - { be_const_key_weak(expect_right_paren, 29), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, - { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, - { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, - { be_const_key_weak(convert_time_to_ms, 10), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, + { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, { be_const_key_weak(expect_colon, -1), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, - { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, - { be_const_key_weak(process_property_assignment, 74), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, - { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, - { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(process_expression, 95), be_const_closure(class_SimpleDSLTranspiler_process_expression_closure) }, + { be_const_key_weak(_validate_factory_function, -1), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, + { be_const_key_weak(process_function_arguments_for_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression_closure) }, + { be_const_key_weak(is_computed_expression_string, 29), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, + { be_const_key_weak(process_percentage_value, 69), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, + { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, - { be_const_key_weak(get_named_color_value, 90), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(process_multiplicative_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw_closure) }, - { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, - { be_const_key_weak(tokens, -1), be_const_var(0) }, - { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(create_computation_closure_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, - { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, - { be_const_key_weak(process_run, 37), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, - { be_const_key_weak(skip_statement, 23), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(output, 11), be_const_var(2) }, - { be_const_key_weak(process_expression_argument, -1), be_const_closure(class_SimpleDSLTranspiler_process_expression_argument_closure) }, - { be_const_key_weak(process_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_expression_closure) }, - { be_const_key_weak(run_statements, 60), be_const_var(4) }, - { be_const_key_weak(validate_user_name, 87), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, - { be_const_key_weak(is_identifier_char, 86), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, - { be_const_key_weak(process_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(check_right_bracket, 83), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, - { be_const_key_weak(at_end, -1), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, - { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(process_value, 82), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(process_multiplicative_expression, 33), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, + { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, + { be_const_key_weak(generate_engine_start, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, { be_const_key_weak(_process_named_arguments_for_color_provider, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, - { be_const_key_weak(process_multiplicative_expression, 22), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, - { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, 3), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, - { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(process_event_parameters, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(join_output, 35), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(process_set, 70), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, - { be_const_key_weak(generate_engine_start, 84), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, - { be_const_key_weak(process_primary_expression_raw, 18), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_raw_closure) }, - { be_const_key_weak(process_sequence_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, - { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, - { be_const_key_weak(is_math_method, -1), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, - { be_const_key_weak(_create_animation_instance_for_validation, 38), be_const_closure(class_SimpleDSLTranspiler__create_animation_instance_for_validation_closure) }, - { be_const_key_weak(expect_keyword, -1), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(generate_default_strip_initialization, 34), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(process_property_assignment, 24), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, + { be_const_key_weak(expect_number, 12), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(process_statement, 93), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, + { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, + { be_const_key_weak(strip_initialized, 73), be_const_var(6) }, + { be_const_key_weak(transform_expression_for_closure, 21), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, + { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, + { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, + { be_const_key_weak(convert_to_vrgb, 88), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, + { be_const_key_weak(process_unary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_raw_closure) }, + { be_const_key_weak(expect_right_bracket, 87), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, { be_const_key_weak(named_colors, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { @@ -9966,38 +10287,66 @@ be_local_class(SimpleDSLTranspiler, { be_const_key_weak(tan, -1), be_nested_str_weak(0xFFD2B48C) }, { be_const_key_weak(maroon, -1), be_nested_str_weak(0xFF800000) }, })) ) } )) }, - { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, - { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(_validate_color_provider_factory_exists, 26), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, - { be_const_key_weak(process_unary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_raw_closure) }, - { be_const_key_weak(transpile, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, - { be_const_key_weak(skip_function_arguments, 78), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, - { be_const_key_weak(generate_default_strip_initialization, 24), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, - { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, - { be_const_key_weak(process_animation, 57), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, - { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(process_additive_expression_raw, 51), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_raw_closure) }, - { be_const_key_weak(expect_right_brace, 44), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(_validate_animation_factory_creates_animation, 39), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, - { be_const_key_weak(_validate_animation_factory_exists, 80), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, - { be_const_key_weak(process_function_arguments_for_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression_closure) }, - { be_const_key_weak(skip_whitespace, 33), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, - { be_const_key_weak(first_statement, -1), be_const_var(5) }, - { be_const_key_weak(get_errors, -1), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, - { be_const_key_weak(expect_assign, -1), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, - { be_const_key_weak(process_additive_expression, 25), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(sequence_names, -1), be_const_var(7) }, - { be_const_key_weak(process_named_arguments_for_variable, -1), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, + { be_const_key_weak(process_additive_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_raw_closure) }, + { be_const_key_weak(errors, 30), be_const_var(3) }, + { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, + { be_const_key_weak(tokens, -1), be_const_var(0) }, + { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(expect_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, + { be_const_key_weak(process_primary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_raw_closure) }, + { be_const_key_weak(output, 11), be_const_var(2) }, + { be_const_key_weak(process_set, 31), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, + { be_const_key_weak(process_event_parameters, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, + { be_const_key_weak(_create_animation_instance_for_validation, 43), be_const_closure(class_SimpleDSLTranspiler__create_animation_instance_for_validation_closure) }, { be_const_key_weak(next, -1), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, - { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, - { be_const_key_weak(_validate_single_parameter, 92), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, - { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, - { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, - { be_const_key_weak(init, 6), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, + { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, + { be_const_key_weak(get_errors, -1), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, + { be_const_key_weak(init, 81), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, + { be_const_key_weak(process_run, 71), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, + { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, + { be_const_key_weak(is_identifier_char, -1), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, { be_const_key_weak(_process_named_arguments_for_animation, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation_closure) }, + { be_const_key_weak(convert_color, 37), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, + { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, + { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, + { be_const_key_weak(_validate_animation_factory_creates_animation, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, + { be_const_key_weak(process_array_literal, 77), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(run_statements, -1), be_const_var(4) }, + { be_const_key_weak(process_unary_expression, 7), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(first_statement, -1), be_const_var(5) }, + { be_const_key_weak(is_anonymous_function, 8), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, + { be_const_key_weak(process_expression_argument, 66), be_const_closure(class_SimpleDSLTranspiler_process_expression_argument_closure) }, + { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, + { be_const_key_weak(process_sequence_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, + { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(_process_named_arguments_generic, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(at_end, -1), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(validate_user_name, 54), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, + { be_const_key_weak(expect_assign, 46), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(can_use_as_identifier, 82), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, + { be_const_key_weak(process_additive_expression, 41), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(join_output, 40), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, + { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, + { be_const_key_weak(create_computation_closure, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, + { be_const_key_weak(is_math_method, -1), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, + { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, + { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(process_multiplicative_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw_closure) }, + { be_const_key_weak(skip_whitespace, 28), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, + { be_const_key_weak(_validate_color_provider_factory_exists, 23), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, + { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, + { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(get_named_color_value, 18), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(create_computation_closure_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, + { be_const_key_weak(process_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, + { be_const_key_weak(process_palette, 9), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, + { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, + { be_const_key_weak(process_named_arguments_for_variable, -1), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, + { be_const_key_weak(transpile, 6), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, + { be_const_key_weak(current, 4), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, + { be_const_key_weak(process_animation, 1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, })), be_str_weak(SimpleDSLTranspiler) ); diff --git a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be index ddbc20814..401458a6e 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be @@ -171,6 +171,201 @@ var engine3 = animation.animation_engine(strip) assert_not_nil(engine3, "Direct engine creation should work") assert_equals(engine3.width, strip.length(), "Direct engine width should match strip") +# Test 10: Dynamic Strip Length Detection +print("\n--- Test 10: Dynamic Strip Length Detection ---") + +# Create a mock strip that can change length at runtime +class MockDynamicStrip + var _length + var pixels + var show_calls + + def init(initial_length) + self._length = initial_length + self.pixels = [] + self.pixels.resize(initial_length) + self.show_calls = 0 + end + + def length() + return self._length + end + + def set_length(new_length) + self._length = new_length + self.pixels.resize(new_length) + end + + def set_pixel_color(index, color) + if index >= 0 && index < self._length + self.pixels[index] = color + end + end + + def clear() + var i = 0 + while i < self._length + self.pixels[i] = 0 + i += 1 + end + end + + def show() + self.show_calls += 1 + end + + def can_show() + return true + end +end + +# Create engine with dynamic strip +var dynamic_strip = MockDynamicStrip(15) +var dynamic_engine = animation.animation_engine(dynamic_strip) + +# Test initial state +assert_equals(dynamic_engine.width, 15, "Engine should start with strip length 15") +assert_equals(dynamic_engine.frame_buffer.width, 15, "Frame buffer should match initial length") +assert_equals(dynamic_engine.temp_buffer.width, 15, "Temp buffer should match initial length") + +# Store references to check object reuse +var original_frame_buffer = dynamic_engine.frame_buffer +var original_temp_buffer = dynamic_engine.temp_buffer + +# Test 10a: No change detection +print("\n--- Test 10a: No change detection ---") +var length_changed = dynamic_engine.check_strip_length() +assert_test(!length_changed, "Should detect no change when length is same") +assert_equals(dynamic_engine.width, 15, "Engine width should remain 15") + +# Test 10b: Manual length change detection +print("\n--- Test 10b: Manual length change detection ---") +dynamic_strip.set_length(25) +length_changed = dynamic_engine.check_strip_length() +assert_test(length_changed, "Should detect length change from 15 to 25") +assert_equals(dynamic_engine.width, 25, "Engine width should update to 25") +assert_equals(dynamic_engine.frame_buffer.width, 25, "Frame buffer should resize to 25") +assert_equals(dynamic_engine.temp_buffer.width, 25, "Temp buffer should resize to 25") + +# Verify buffer objects were reused (efficient) +var frame_reused = (dynamic_engine.frame_buffer == original_frame_buffer) +var temp_reused = (dynamic_engine.temp_buffer == original_temp_buffer) +assert_test(frame_reused, "Frame buffer object should be reused for efficiency") +assert_test(temp_reused, "Temp buffer object should be reused for efficiency") + +# Test 10c: Runtime detection during on_tick() +print("\n--- Test 10c: Runtime detection during on_tick() ---") +dynamic_engine.start() + +# Add a test animation +var runtime_anim = animation.solid(dynamic_engine) +runtime_anim.color = 0xFF00FF00 # Green +runtime_anim.priority = 10 +dynamic_engine.add_animation(runtime_anim) + +# Simulate several ticks with stable length +var tick_time = tasmota.millis() +for i : 0..2 + dynamic_engine.on_tick(tick_time + i * 10) +end +assert_equals(dynamic_engine.width, 25, "Width should remain stable during normal ticks") + +# Change strip length during runtime +dynamic_strip.set_length(35) +var old_show_calls = dynamic_strip.show_calls + +# Next tick should detect the change automatically +dynamic_engine.on_tick(tick_time + 50) +assert_equals(dynamic_engine.width, 35, "Engine should detect length change during on_tick()") +assert_equals(dynamic_engine.frame_buffer.width, 35, "Frame buffer should resize during on_tick()") +assert_equals(dynamic_engine.temp_buffer.width, 35, "Temp buffer should resize during on_tick()") + +# Verify rendering still works after length change +var new_show_calls = dynamic_strip.show_calls +assert_test(new_show_calls >= old_show_calls, "Strip should be updated after length change (or at least not decrease)") + +# Test 10d: Multiple length changes +print("\n--- Test 10d: Multiple length changes ---") +var lengths_to_test = [10, 50, 5, 30] +for new_length : lengths_to_test + dynamic_strip.set_length(new_length) + dynamic_engine.on_tick(tasmota.millis()) + assert_equals(dynamic_engine.width, new_length, f"Engine should adapt to length {new_length}") + assert_equals(dynamic_engine.frame_buffer.width, new_length, f"Frame buffer should adapt to length {new_length}") + assert_equals(dynamic_engine.temp_buffer.width, new_length, f"Temp buffer should adapt to length {new_length}") +end + +# Test 10e: Length change with multiple animations +print("\n--- Test 10e: Length change with multiple animations ---") +dynamic_engine.clear() + +# Add multiple animations +var red_anim = animation.solid(dynamic_engine) +red_anim.color = 0xFFFF0000 +red_anim.priority = 20 +dynamic_engine.add_animation(red_anim) + +var blue_anim = animation.solid(dynamic_engine) +blue_anim.color = 0xFF0000FF +blue_anim.priority = 10 +dynamic_engine.add_animation(blue_anim) + +assert_equals(dynamic_engine.size(), 2, "Should have 2 animations") + +# Change length and verify all animations continue working +dynamic_strip.set_length(40) +old_show_calls = dynamic_strip.show_calls +dynamic_engine.on_tick(tasmota.millis()) + +assert_equals(dynamic_engine.width, 40, "Engine should handle length change with multiple animations") +new_show_calls = dynamic_strip.show_calls +assert_test(new_show_calls >= old_show_calls, "Rendering should continue with multiple animations (or at least not decrease)") +assert_equals(dynamic_engine.size(), 2, "Should still have 2 animations after length change") + +# Test 10f: Invalid length handling +print("\n--- Test 10f: Invalid length handling ---") +var current_width = dynamic_engine.width + +# Test zero length (should be ignored) +dynamic_strip.set_length(0) +dynamic_engine.on_tick(tasmota.millis()) +assert_equals(dynamic_engine.width, current_width, "Should ignore zero length") + +# Test negative length (should be ignored) +dynamic_strip.set_length(-5) +dynamic_engine.on_tick(tasmota.millis()) +assert_equals(dynamic_engine.width, current_width, "Should ignore negative length") + +# Restore valid length +dynamic_strip.set_length(20) +dynamic_engine.on_tick(tasmota.millis()) +assert_equals(dynamic_engine.width, 20, "Should accept valid length after invalid ones") + +# Test 10g: Performance impact of length checking +print("\n--- Test 10g: Performance impact of length checking ---") +dynamic_strip.set_length(30) +dynamic_engine.check_strip_length() # Ensure stable state + +var perf_start_time = tasmota.millis() +# Run many ticks with stable length (should be fast) +for i : 0..99 + dynamic_engine.on_tick(perf_start_time + i) +end +var stable_time = tasmota.millis() - perf_start_time + +# Now test with length changes (should still be reasonable) +perf_start_time = tasmota.millis() +for i : 0..19 + dynamic_strip.set_length(30 + (i % 5)) # Change length every few ticks + dynamic_engine.on_tick(perf_start_time + i * 5) +end +var changing_time = tasmota.millis() - perf_start_time + +assert_test(stable_time < 100, f"100 stable ticks should be fast (took {stable_time}ms)") +assert_test(changing_time < 200, f"20 ticks with length changes should be reasonable (took {changing_time}ms)") + +dynamic_engine.stop() + # Cleanup engine.stop() diff --git a/lib/libesp32/berry_animation/src/tests/closure_value_provider_test.be b/lib/libesp32/berry_animation/src/tests/closure_value_provider_test.be index 1c91878eb..25396edcf 100644 --- a/lib/libesp32/berry_animation/src/tests/closure_value_provider_test.be +++ b/lib/libesp32/berry_animation/src/tests/closure_value_provider_test.be @@ -383,63 +383,63 @@ def test_closure_math_methods() assert(scale_neg == 0, f"Expected scale(0,-50,50,-100,100)=0, got {scale_neg}") print("✓ scale function works correctly") - # Test 6: sine function + # Test 6: sin function provider.closure = def(self, name, time_ms) - if name == "sine_0" - return self.sine(0) # sin(0°) = 0 - elif name == "sine_64" - return self.sine(64) # sin(90°) = 1 -> 255 - elif name == "sine_128" - return self.sine(128) # sin(180°) = 0 - elif name == "sine_192" - return self.sine(192) # sin(270°) = -1 -> -255 + if name == "sin_0" + return self.sin(0) # sin(0°) = 0 + elif name == "sin_64" + return self.sin(64) # sin(90°) = 1 -> 255 + elif name == "sin_128" + return self.sin(128) # sin(180°) = 0 + elif name == "sin_192" + return self.sin(192) # sin(270°) = -1 -> -255 else return 0 end end - var sine_0 = provider.produce_value("sine_0", 1000) - var sine_64 = provider.produce_value("sine_64", 1000) - var sine_128 = provider.produce_value("sine_128", 1000) - var sine_192 = provider.produce_value("sine_192", 1000) + var sin_0 = provider.produce_value("sin_0", 1000) + var sin_64 = provider.produce_value("sin_64", 1000) + var sin_128 = provider.produce_value("sin_128", 1000) + var sin_192 = provider.produce_value("sin_192", 1000) - assert(sine_0 >= -5 && sine_0 <= 5, f"Expected sine(0)~0, got {sine_0}") - assert(sine_64 >= 250 && sine_64 <= 255, f"Expected sine(64)~255, got {sine_64}") - assert(sine_128 >= -5 && sine_128 <= 5, f"Expected sine(128)~0, got {sine_128}") - assert(sine_192 >= -255 && sine_192 <= -250, f"Expected sine(192)~-255, got {sine_192}") - print("✓ sine function works correctly") + assert(sin_0 >= -5 && sin_0 <= 5, f"Expected sin(0)~0, got {sin_0}") + assert(sin_64 >= 250 && sin_64 <= 255, f"Expected sin(64)~255, got {sin_64}") + assert(sin_128 >= -5 && sin_128 <= 5, f"Expected sin(128)~0, got {sin_128}") + assert(sin_192 >= -255 && sin_192 <= -250, f"Expected sin(192)~-255, got {sin_192}") + print("✓ sin function works correctly") - # Test 7: cosine function (matches oscillator COSINE behavior) + # Test 7: cos function (matches oscillator COSINE behavior) provider.closure = def(self, name, time_ms) - if name == "cosine_0" - return self.cosine(0) # Oscillator cosine at 0° = minimum -> -255 - elif name == "cosine_64" - return self.cosine(64) # Oscillator cosine at 90° = ~0 - elif name == "cosine_128" - return self.cosine(128) # Oscillator cosine at 180° = maximum -> 255 - elif name == "cosine_192" - return self.cosine(192) # Oscillator cosine at 270° = ~0 + if name == "cos_0" + return self.cos(0) # Oscillator cosine at 0° = minimum -> -255 + elif name == "cos_64" + return self.cos(64) # Oscillator cosine at 90° = ~0 + elif name == "cos_128" + return self.cos(128) # Oscillator cosine at 180° = maximum -> 255 + elif name == "cos_192" + return self.cos(192) # Oscillator cosine at 270° = ~0 else return 0 end end - var cosine_0 = provider.produce_value("cosine_0", 1000) - var cosine_64 = provider.produce_value("cosine_64", 1000) - var cosine_128 = provider.produce_value("cosine_128", 1000) - var cosine_192 = provider.produce_value("cosine_192", 1000) + var cos_0 = provider.produce_value("cos_0", 1000) + var cos_64 = provider.produce_value("cos_64", 1000) + var cos_128 = provider.produce_value("cos_128", 1000) + var cos_192 = provider.produce_value("cos_192", 1000) - assert(cosine_0 >= -255 && cosine_0 <= -250, f"Expected cosine(0)~-255, got {cosine_0}") - assert(cosine_64 >= -5 && cosine_64 <= 5, f"Expected cosine(64)~0, got {cosine_64}") - assert(cosine_128 >= 250 && cosine_128 <= 255, f"Expected cosine(128)~255, got {cosine_128}") - assert(cosine_192 >= -5 && cosine_192 <= 5, f"Expected cosine(192)~0, got {cosine_192}") - print("✓ cosine function works correctly") + assert(cos_0 >= -255 && cos_0 <= -250, f"Expected cos(0)~-255, got {cos_0}") + assert(cos_64 >= -5 && cos_64 <= 5, f"Expected cos(64)~0, got {cos_64}") + assert(cos_128 >= 250 && cos_128 <= 255, f"Expected cos(128)~255, got {cos_128}") + assert(cos_192 >= -5 && cos_192 <= 5, f"Expected cos(192)~0, got {cos_192}") + print("✓ cos function works correctly") # Test 8: Complex expression using multiple math functions provider.closure = def(self, name, time_ms) if name == "complex_math" var angle = time_ms % 256 # 0-255 angle based on time - var sine_val = self.abs(self.sine(angle)) # Absolute sine value + var sine_val = self.abs(self.sin(angle)) # Absolute sine value var scaled = self.scale(sine_val, 0, 255, 50, 200) # Scale to 50-200 range return self.min(self.max(scaled, 75), 175) # Clamp to 75-175 range else 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 572cd4b7e..306f69cbf 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 @@ -150,8 +150,10 @@ def test_nested_function_calls() 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 temp_solid_") >= 0, "Should generate nested solid call") - assert(string.find(berry_code, "var temp_triangle_") >= 0, "Should generate nested triangle call") + 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") + assert(string.find(berry_code, "var provider = animation.triangle(engine)") >= 0, "Should generate triangle provider in anonymous function") print("✓ Nested function calls test passed") return true diff --git a/lib/libesp32/berry_animation/src/tests/oscillator_value_provider_test.be b/lib/libesp32/berry_animation/src/tests/oscillator_value_provider_test.be index ff3496f9c..59037180c 100644 --- a/lib/libesp32/berry_animation/src/tests/oscillator_value_provider_test.be +++ b/lib/libesp32/berry_animation/src/tests/oscillator_value_provider_test.be @@ -173,6 +173,9 @@ def test_cosine_waveform() var value_75 = osc.produce_value("test", start_time + 750) # t=750ms (75% - falling) var value_100 = osc.produce_value("test", start_time + 999) # t=999ms (back to minimum) + # Print actual values for debugging + print(f" COSINE values: t=0%: {value_0}, t=25%: {value_25}, t=50%: {value_50}, t=75%: {value_75}, t=99.9%: {value_100}") + # Cosine should be smooth curve from min to max and back # Note: The cosine implementation uses sine with phase shift, so values may differ from pure cosine assert(value_0 >= 0 && value_0 <= 10, f"Value at 0% should be ~0, got {value_0}") @@ -181,6 +184,12 @@ def test_cosine_waveform() assert(value_75 >= 40 && value_75 <= 60, f"Value at 75% should be ~50, got {value_75}") assert(value_100 >= 0 && value_100 <= 10, f"Value at 99.9% should be ~0, got {value_100}") + # Verify values are actually changing over time + assert(value_0 != value_25, "COSINE values should change between 0% and 25%") + assert(value_25 != value_50, "COSINE values should change between 25% and 50%") + assert(value_50 != value_75, "COSINE values should change between 50% and 75%") + assert(value_75 != value_100, "COSINE values should change between 75% and 99.9%") + print("✓ COSINE waveform test passed") end @@ -204,6 +213,9 @@ def test_sine_waveform() var value_75 = osc.produce_value("test", start_time + 750) # t=750ms (75% - minimum) var value_100 = osc.produce_value("test", start_time + 999) # t=999ms (back to middle) + # Print actual values for debugging + print(f" SINE values: t=0%: {value_0}, t=25%: {value_25}, t=50%: {value_50}, t=75%: {value_75}, t=99.9%: {value_100}") + # Sine should be smooth curve starting at middle, going to max, middle, min, middle # At t=0: sine(0) = 0, which maps to middle value (50) # At t=25%: sine(π/2) = 1, which maps to max value (100) @@ -215,6 +227,12 @@ def test_sine_waveform() assert(value_75 >= 0 && value_75 <= 10, f"Value at 75% should be ~0 (min), got {value_75}") assert(value_100 >= 45 && value_100 <= 55, f"Value at 99.9% should be ~50 (back to middle), got {value_100}") + # Verify values are actually changing over time + assert(value_0 != value_25, "SINE values should change between 0% and 25%") + assert(value_25 != value_50, "SINE values should change between 25% and 50%") + assert(value_50 != value_75, "SINE values should change between 50% and 75%") + assert(value_75 != value_100, "SINE values should change between 75% and 99.9%") + print("✓ SINE waveform test passed") end @@ -282,15 +300,25 @@ def test_static_constructors() var smooth1 = animation.smooth(mock_engine) assert(smooth1.form == animation.COSINE, "smooth() should use COSINE") - # Test sine() constructor - var sine1 = animation.sine(mock_engine) + # Test sine_osc() constructor + var sine1 = animation.sine_osc(mock_engine) sine1.min_value = 0 sine1.max_value = 255 sine1.duration = 2000 - assert(sine1.form == animation.SINE, "sine() should use SINE") - assert(sine1.min_value == 0, "sine() should set min_value") - assert(sine1.max_value == 255, "sine() should set max_value") - assert(sine1.duration == 2000, "sine() should set duration") + assert(sine1.form == animation.SINE, "sine_osc() should use SINE") + assert(sine1.min_value == 0, "sine_osc() should set min_value") + assert(sine1.max_value == 255, "sine_osc() should set max_value") + assert(sine1.duration == 2000, "sine_osc() should set duration") + + # Test cosine_osc() constructor (alias for smooth) + var cosine1 = animation.cosine_osc(mock_engine) + cosine1.min_value = 25 + cosine1.max_value = 200 + cosine1.duration = 1800 + assert(cosine1.form == animation.COSINE, "cosine_osc() should use COSINE") + assert(cosine1.min_value == 25, "cosine_osc() should set min_value") + assert(cosine1.max_value == 200, "cosine_osc() should set max_value") + assert(cosine1.duration == 1800, "cosine_osc() should set duration") # Test square() constructor var square1 = animation.square(mock_engine) @@ -399,6 +427,79 @@ def test_edge_cases() print("✓ Edge cases test passed") end +# Test time evolution of COSINE and SINE waveforms +def test_cosine_sine_time_evolution() + print("Testing COSINE and SINE time evolution...") + + # Test COSINE evolution over time + var cosine_osc = animation.oscillator_value(mock_engine) + cosine_osc.min_value = 0 + cosine_osc.max_value = 255 + cosine_osc.duration = 5000 # 5 second cycle + cosine_osc.form = animation.COSINE + + var start_time = 10000 + cosine_osc.start(start_time) + + print(" COSINE waveform evolution (0-255 range, 5000ms duration):") + var cosine_values = [] + for i: 0..10 + var time_offset = i * 500 # Every 500ms (10% of cycle) + var value = cosine_osc.produce_value("test", start_time + time_offset) + cosine_values.push(value) + var percentage = (i * 10) + print(f" t={percentage}% ({time_offset}ms): {value}") + end + + # Test SINE evolution over time + var sine_osc = animation.oscillator_value(mock_engine) + sine_osc.min_value = 0 + sine_osc.max_value = 255 + sine_osc.duration = 5000 # 5 second cycle + sine_osc.form = animation.SINE + + sine_osc.start(start_time) + + print(" SINE waveform evolution (0-255 range, 5000ms duration):") + var sine_values = [] + for i: 0..10 + var time_offset = i * 500 # Every 500ms (10% of cycle) + var value = sine_osc.produce_value("test", start_time + time_offset) + sine_values.push(value) + var percentage = (i * 10) + print(f" t={percentage}% ({time_offset}ms): {value}") + end + + # Verify that values are actually changing for both waveforms + var cosine_changes = 0 + var sine_changes = 0 + + for i: 1..10 + if cosine_values[i] != cosine_values[i-1] + cosine_changes += 1 + end + if sine_values[i] != sine_values[i-1] + sine_changes += 1 + end + end + + assert(cosine_changes >= 8, f"COSINE should change values at least 8 times out of 10 steps, got {cosine_changes}") + assert(sine_changes >= 8, f"SINE should change values at least 8 times out of 10 steps, got {sine_changes}") + + # Verify COSINE starts at minimum and reaches maximum at 50% + assert(cosine_values[0] <= 10, f"COSINE should start near minimum (0), got {cosine_values[0]}") + assert(cosine_values[5] >= 245, f"COSINE should reach near maximum (255) at 50%, got {cosine_values[5]}") + assert(cosine_values[10] <= 10, f"COSINE should return near minimum (0) at 100%, got {cosine_values[10]}") + + # Verify SINE starts at middle and follows expected pattern + assert(sine_values[0] >= 120 && sine_values[0] <= 135, f"SINE should start near middle (127), got {sine_values[0]}") + assert(sine_values[2] >= 240, f"SINE should reach near maximum around 25%, got {sine_values[2]} at 20%") + assert(sine_values[5] >= 120 && sine_values[5] <= 135, f"SINE should return to middle at 50%, got {sine_values[5]}") + assert(sine_values[7] <= 15, f"SINE should reach near minimum around 75%, got {sine_values[7]} at 70%") + + print("✓ COSINE and SINE time evolution test passed") +end + # Test tostring() method def test_tostring() print("Testing tostring() method...") @@ -433,6 +534,7 @@ def run_oscillator_value_provider_tests() test_square_waveform() test_cosine_waveform() test_sine_waveform() + test_cosine_sine_time_evolution() test_phase_shift() test_static_constructors() test_produce_value_method() 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 1dd5c5a2f..5a5ced657 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 @@ -109,7 +109,7 @@ def test_is_math_method_function() var transpiler = animation_dsl.SimpleDSLTranspiler([]) # Test mathematical methods - var math_methods = ["min", "max", "abs", "round", "sqrt", "scale", "sine", "cosine"] + var math_methods = ["min", "max", "abs", "round", "sqrt", "scale", "sin", "cos"] for method : math_methods if !transpiler.is_math_method(method) print(f" ❌ {method} should be detected as a math method") @@ -165,10 +165,10 @@ def test_math_method_transpilation() var dsl_code3 = "set angle = 45\n" "animation rotate = pulsating_animation(color=green, period=2s)\n" - "rotate.brightness = round(sine(angle) * 180 + cosine(angle) * 90)\n" + "rotate.brightness = round(sin(angle) * 180 + cos(angle) * 90)\n" "run rotate" - var result3 = test_transpilation_case(dsl_code3, ["round", "sine", "cosine"], "Complex math expressions") + var result3 = test_transpilation_case(dsl_code3, ["round", "sin", "cos"], "Complex math expressions") if !result3 return false end