From a52fdd052669c6ddaa8a77f9094bd8811894c3a1 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 3 Sep 2025 22:10:31 +0200 Subject: [PATCH] Berry animation fix timings (#23869) --- .../anim_examples/compiled/aurora_borealis.be | 2 +- .../compiled/breathing_colors.be | 2 +- .../anim_examples/compiled/candy_cane.be | 2 +- .../anim_examples/compiled/christmas_tree.be | 2 +- .../anim_examples/compiled/comet_chase.be | 2 +- .../compiled/computed_values_demo.be | 12 +- .../anim_examples/compiled/cylon_generic.be | 4 +- .../anim_examples/compiled/cylon_rainbow.be | 6 +- .../anim_examples/compiled/cylon_red_eye.be | 4 +- .../compiled/demo_pattern_fire_opacity.be | 6 +- .../compiled/demo_shutter_rainbow.be | 2 +- .../compiled/demo_shutter_rainbow2.be | 2 +- .../compiled/demo_shutter_rainbow_bidir.be | 144 + .../compiled/demo_shutter_rainbow_central.be | 112 + .../demo_shutter_rainbow_leftright.be | 110 + .../anim_examples/compiled/disco_strobe.be | 2 +- .../anim_examples/compiled/fire_flicker.be | 2 +- .../anim_examples/compiled/heartbeat_pulse.be | 2 +- .../anim_examples/compiled/import_demo.be | 8 +- .../anim_examples/compiled/lava_lamp.be | 2 +- .../anim_examples/compiled/lightning_storm.be | 2 +- .../anim_examples/compiled/matrix_rain.be | 2 +- .../anim_examples/compiled/meteor_shower.be | 2 +- .../anim_examples/compiled/neon_glow.be | 2 +- .../anim_examples/compiled/ocean_waves.be | 2 +- .../anim_examples/compiled/palette_demo.be | 2 +- .../compiled/palette_showcase.be | 2 +- .../anim_examples/compiled/plasma_wave.be | 2 +- .../anim_examples/compiled/police_lights.be | 2 +- .../compiled/property_assignment_demo.be | 2 +- .../anim_examples/compiled/rainbow_cycle.be | 2 +- .../anim_examples/compiled/scanner_larson.be | 2 +- .../compiled/sequence_assignments_demo.be | 6 +- .../anim_examples/compiled/simple_palette.be | 2 +- .../anim_examples/compiled/sunrise_sunset.be | 2 +- .../anim_examples/compiled/swipe_rainbow.be | 2 +- .../compiled/test_complex_template.be | 2 +- .../compiled/test_shutter_rainbow_bidir.be | 144 + .../compiled/test_template_simple.be | 2 +- .../compiled/test_template_simple_reusable.be | 2 +- .../anim_examples/compiled/twinkle_stars.be | 2 +- .../compiled/user_functions_demo.be | 12 +- ...w.anim => demo_shutter_rainbow_bidir.anim} | 6 +- .../demo_shutter_rainbow_central.anim | 47 + .../demo_shutter_rainbow_leftright.anim | 46 + .../test_shutter_rainbow_bidir.anim | 63 + .../docs/ANIMATION_CLASS_HIERARCHY.md | 22 +- .../docs/ANIMATION_DEVELOPMENT.md | 15 +- .../berry_animation/docs/DSL_REFERENCE.md | 35 +- .../berry_animation/docs/DSL_TRANSPILATION.md | 8 +- lib/libesp32/berry_animation/docs/EXAMPLES.md | 8 +- .../docs/TRANSPILER_ARCHITECTURE.md | 20 +- .../berry_animation/docs/TROUBLESHOOTING.md | 12 +- .../berry_animation/docs/USER_FUNCTIONS.md | 6 +- lib/libesp32/berry_animation/src/animation.be | 4 + .../berry_animation/src/animations/beacon.be | 6 +- .../berry_animation/src/animations/bounce.be | 1 + .../berry_animation/src/animations/breathe.be | 1 + .../berry_animation/src/animations/comet.be | 1 + .../src/animations/crenel_position.be | 10 +- .../berry_animation/src/animations/fire.be | 9 +- .../src/animations/gradient.be | 8 +- .../berry_animation/src/animations/jitter.be | 9 +- .../berry_animation/src/animations/noise.be | 4 + .../src/animations/palette_pattern.be | 12 +- .../berry_animation/src/animations/plasma.be | 4 + .../src/animations/rich_palette_animation.be | 3 +- .../berry_animation/src/animations/scale.be | 13 +- .../berry_animation/src/animations/shift.be | 8 +- .../berry_animation/src/animations/sparkle.be | 7 +- .../berry_animation/src/animations/twinkle.be | 13 +- .../berry_animation/src/animations/wave.be | 4 + .../src/core/animation_base.be | 71 +- .../src/core/animation_engine.be | 4 +- .../src/core/math_functions.be | 120 + .../src/core/parameterized_object.be | 55 +- .../src/core/sequence_manager.be | 46 +- .../src/core/user_functions.be | 2 - .../berry_animation/src/dsl/transpiler.be | 147 +- .../src/providers/breathe_color_provider.be | 1 + .../src/providers/closure_value_provider.be | 155 +- .../providers/color_cycle_color_provider.be | 1 + .../src/providers/composite_color_provider.be | 4 - .../providers/oscillator_value_provider.be | 25 +- .../providers/rich_palette_color_provider.be | 14 +- .../src/providers/static_color_provider.be | 6 +- .../src/providers/static_value_provider.be | 6 +- .../src/providers/strip_length_provider.be | 12 +- .../src/providers/value_provider.be | 4 + .../src/solidify/solidified_animation.h | 22538 ++++++++-------- .../src/solidify/solidified_animation_dsl.h | 4125 ++- .../src/tests/animation_engine_test.be | 8 +- .../src/tests/animation_opacity_test.be | 4 +- .../src/tests/animation_test.be | 11 +- .../src/tests/black_frame_fix_test.be | 10 +- .../src/tests/breathe_color_provider_test.be | 34 +- .../src/tests/closure_value_provider_test.be | 93 +- .../src/tests/comet_animation_test.be | 6 +- .../src/tests/dsl_core_processing_test.be | 2 +- .../src/tests/dsl_transpiler_test.be | 36 +- .../src/tests/fast_loop_integration_test.be | 6 +- .../tests/oscillator_elastic_bounce_test.be | 1 + .../tests/palette_pattern_animation_test.be | 8 + .../tests/sequence_manager_layering_test.be | 10 +- .../src/tests/sequence_manager_test.be | 20 +- .../tests/test_math_method_transpilation.be | 32 +- .../src/tests/user_functions_test.be | 4 +- 107 files changed, 14669 insertions(+), 13985 deletions(-) create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be create mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be rename lib/libesp32/berry_animation/anim_examples/{demo_shutter_rainbow.anim => demo_shutter_rainbow_bidir.anim} (94%) create mode 100644 lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim create mode 100644 lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim create mode 100644 lib/libesp32/berry_animation/src/core/math_functions.be 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 853bdbdf0..e6eb4bf16 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be @@ -37,7 +37,7 @@ aurora_base_.brightness = 180 # brightness (dimmed for aurora effect) var demo_ = animation.SequenceManager(engine) .push_play_step(aurora_base_, nil) # infinite duration (no 'for' clause) engine.add(demo_) -engine.start() +engine.run() #- Original DSL source: 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 dcb1a1578..8f8644a86 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be @@ -47,7 +47,7 @@ breathing_.opacity = (def (engine) end)(engine) # Start the animation engine.add(breathing_) -engine.start() +engine.run() #- Original DSL source: 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 63f92c1dc..d5032dbb8 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/candy_cane.be @@ -150,7 +150,7 @@ engine.add(stripe7_) engine.add(stripe8_) engine.add(stripe9_) engine.add(stripe10_) -engine.start() +engine.run() #- Original DSL source: 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 b2032d85f..9e1160e35 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be @@ -72,7 +72,7 @@ engine.add(ornaments_) engine.add(tree_star_) engine.add(snow_sparkles_) engine.add(garland_) -engine.start() +engine.run() #- Original DSL source: 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 63d288e54..ff122eb44 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/comet_chase.be @@ -40,7 +40,7 @@ engine.add(background_) engine.add(comet_main_) engine.add(comet_secondary_) engine.add(comet_sparkles_) -engine.start() +engine.run() #- Original DSL source: 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 3ce586c8b..10b4d026c 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 @@ -16,24 +16,24 @@ var strip_len_ = animation.strip_length(engine) # Create animation with computed values var stream1_ = animation.comet_animation(engine) stream1_.color = 0xFFFF0000 -stream1_.tail_length = animation.create_closure_value(engine, def (self) return self.abs(self.resolve(strip_len_) / 4) end) # computed value +stream1_.tail_length = animation.create_closure_value(engine, def (engine) return animation._math.abs(animation.resolve(strip_len_) / 4) end) # computed value stream1_.speed = 1.5 stream1_.priority = 10 # More complex computed values var base_speed_ = 2.0 var stream2_ = animation.comet_animation(engine) stream2_.color = 0xFF0000FF -stream2_.tail_length = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) / 8 + (2 * self.resolve(strip_len_)) - 10 end) # computed with addition -stream2_.speed = animation.create_closure_value(engine, def (self) return self.resolve(base_speed_) * 1.5 end) # computed with multiplication +stream2_.tail_length = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 8 + (2 * animation.resolve(strip_len_)) - 10 end) # computed with addition +stream2_.speed = animation.create_closure_value(engine, def (engine) return animation.resolve(base_speed_) * 1.5 end) # computed with multiplication stream2_.direction = (-1) stream2_.priority = 5 # Property assignment with computed values -stream1_.tail_length = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) / 5 end) -stream2_.opacity = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) * 4 end) +stream1_.tail_length = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 5 end) +stream2_.opacity = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) * 4 end) # Run both animations engine.add(stream1_) engine.add(stream2_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be index 54ec95c13..29cbce583 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be @@ -20,7 +20,7 @@ def cylon_effect_template(engine, eye_color_, back_color_, duration_) eye_animation_.pos = (def (engine) var provider = animation.cosine_osc(engine) provider.min_value = (-1) - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = duration_ return provider end)(engine) @@ -33,7 +33,7 @@ end animation.register_user_function('cylon_effect', cylon_effect_template) cylon_effect_template(engine, 0xFFFF0000, 0x00000000, 3000) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be index aeb9469b7..9d5a4e766 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_rainbow.be @@ -20,14 +20,14 @@ eye_color_.cycle_period = 0 var cosine_val_ = (def (engine) var provider = animation.cosine_osc(engine) provider.min_value = 0 - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = eye_duration_ return provider end)(engine) var triangle_val_ = (def (engine) var provider = animation.triangle(engine) provider.min_value = 0 - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = eye_duration_ return provider end)(engine) @@ -43,7 +43,7 @@ var cylon_eye_ = animation.SequenceManager(engine, -1) .push_closure_step(def (engine) red_eye_.pos = cosine_val_ end) # switch back to COSINE for next iteration .push_closure_step(def (engine) eye_color_.next = 1 end) # advance to next color engine.add(cylon_eye_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be index 3a18c9d17..8fb7b5e96 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_eye.be @@ -18,14 +18,14 @@ 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) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 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(red_eye_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be index e1d9d6819..d1444fa56 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be @@ -26,7 +26,7 @@ background_.priority = 20 var eye_pos_ = (def (engine) var provider = animation.cosine_osc(engine) provider.min_value = (-1) - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = 6000 return provider end)(engine) @@ -39,11 +39,11 @@ eye_mask_.slew_size = 2 # with 2 pixel shading around eye_mask_.priority = 5 var fire_pattern_ = animation.palette_gradient_animation(engine) fire_pattern_.color_source = fire_color_ -fire_pattern_.spatial_period = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) / 4 end) +fire_pattern_.spatial_period = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) / 4 end) fire_pattern_.opacity = eye_mask_ engine.add(background_) engine.add(fire_pattern_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be index acaa1e714..a24c00541 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be @@ -73,7 +73,7 @@ var rainbow_with_white_ = bytes( "FFFFFFFF" ) shutter_bidir_template(engine, rainbow_with_white_, 1500) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be index 83d8cea0e..e60120da1 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow2.be @@ -44,7 +44,7 @@ var shutter_run_ = animation.SequenceManager(engine, -1) .push_closure_step(def (engine) col2_.next = 1 end) .push_closure_step(def (engine) log(f"next", 3) end) engine.add(shutter_run_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be new file mode 100644 index 000000000..c28b4115f --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_bidir.be @@ -0,0 +1,144 @@ +# Generated Berry code from Animation DSL +# Source: demo_shutter_rainbow_bidir.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Demo Shutter Rainbow Bidir +# +# Shutter from left to right iterating in all colors, then right to left +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: shutter_bidir +def shutter_bidir_template(engine, colors_, duration_) + var strip_len_ = animation.strip_length(engine) + var shutter_size_ = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider + end)(engine) + var col1_ = animation.color_cycle(engine) + col1_.palette = colors_ + col1_.cycle_period = 0 + var col2_ = animation.color_cycle(engine) + col2_.palette = colors_ + col2_.cycle_period = 0 + col2_.next = 1 + # shutter moving from left to right + var shutter_lr_animation_ = animation.beacon_animation(engine) + shutter_lr_animation_.color = col2_ + shutter_lr_animation_.back_color = col1_ + shutter_lr_animation_.pos = 0 + shutter_lr_animation_.beacon_size = shutter_size_ + shutter_lr_animation_.slew_size = 0 + shutter_lr_animation_.priority = 5 + # shutter moving from right to left + var shutter_rl_animation_ = animation.beacon_animation(engine) + shutter_rl_animation_.color = col1_ + shutter_rl_animation_.back_color = col2_ + shutter_rl_animation_.pos = 0 + shutter_rl_animation_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - animation.resolve(shutter_size_) end) + shutter_rl_animation_.slew_size = 0 + shutter_rl_animation_.priority = 5 + var shutter_seq_ = animation.SequenceManager(engine, -1) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_lr_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_rl_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) + engine.add(shutter_seq_) +end + +animation.register_user_function('shutter_bidir', shutter_bidir_template) + +var rainbow_with_white_ = bytes( + "FFFF0000" + "FFFFA500" + "FFFFFF00" + "FF008000" # comma left on-purpose to test transpiler + "FF0000FF" # need for a lighter blue + "FF4B0082" + "FFFFFFFF" +) +shutter_bidir_template(engine, rainbow_with_white_, 1500) +engine.run() + + +#- Original DSL source: +# Demo Shutter Rainbow Bidir +# +# Shutter from left to right iterating in all colors, then right to left + +template shutter_bidir { + param colors type palette + param duration + + set strip_len = strip_length() + set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_lr_animation = beacon_animation( + color = col2 + back_color = col1 + pos = 0 + beacon_size = shutter_size + slew_size = 0 + priority = 5 + ) + + # shutter moving from right to left + animation shutter_rl_animation = beacon_animation( + color = col1 + back_color = col2 + pos = 0 + beacon_size = strip_len - shutter_size + slew_size = 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + repeat col1.palette_size times { + restart shutter_size + play shutter_lr_animation for duration + col1.next = 1 + col2.next = 1 + } + repeat col1.palette_size times { + restart shutter_size + play shutter_rl_animation for duration + col1.next = 1 + col2.next = 1 + } + } + + run shutter_seq +} + +palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white +] + +shutter_bidir(rainbow_with_white, 1.5s) + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be new file mode 100644 index 000000000..3abcc478b --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_central.be @@ -0,0 +1,112 @@ +# Generated Berry code from Animation DSL +# Source: demo_shutter_rainbow_central.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Demo Shutter Rainbow +# +# Shutter from center to both left and right +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: shutter_central +def shutter_central_template(engine, colors_, duration_) + var strip_len_ = animation.strip_length(engine) + var strip_len2_ = animation.create_closure_value(engine, def (engine) return (animation.strip_length(engine) + 1) / 2 end) + var shutter_size_ = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider + end)(engine) + var col1_ = animation.color_cycle(engine) + col1_.palette = colors_ + col1_.cycle_period = 0 + var col2_ = animation.color_cycle(engine) + col2_.palette = colors_ + col2_.cycle_period = 0 + col2_.next = 1 + # shutter moving from left to right + var shutter_central_animation_ = animation.beacon_animation(engine) + shutter_central_animation_.color = col2_ + shutter_central_animation_.back_color = col1_ + shutter_central_animation_.pos = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len2_) - animation.resolve(shutter_size_) / 2 end) + shutter_central_animation_.beacon_size = shutter_size_ + shutter_central_animation_.slew_size = 0 + shutter_central_animation_.priority = 5 + var shutter_seq_ = animation.SequenceManager(engine, -1) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_central_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + engine.add(shutter_seq_) +end + +animation.register_user_function('shutter_central', shutter_central_template) + +var rainbow_with_white_ = bytes( + "FFFF0000" + "FFFFA500" + "FFFFFF00" + "FF008000" # comma left on-purpose to test transpiler + "FF0000FF" # need for a lighter blue + "FF4B0082" + "FFFFFFFF" +) +shutter_central_template(engine, rainbow_with_white_, 1500) +engine.run() + + +#- Original DSL source: +# Demo Shutter Rainbow +# +# Shutter from center to both left and right + +template shutter_central { + param colors type palette + param duration + + set strip_len = strip_length() + set strip_len2 = (strip_length() + 1) / 2 + set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_central_animation = beacon_animation( + color = col2 + back_color = col1 + pos = strip_len2 - shutter_size / 2 + beacon_size = shutter_size + slew_size = 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + restart shutter_size + play shutter_central_animation for duration + col1.next = 1 + col2.next = 1 + } + + run shutter_seq + } + + palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white + ] + + shutter_central(rainbow_with_white, 1.5s) + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be new file mode 100644 index 000000000..76da7b54a --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow_leftright.be @@ -0,0 +1,110 @@ +# Generated Berry code from Animation DSL +# Source: demo_shutter_rainbow_leftright.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Demo Shutter Rainbow +# +# Shutter from left to right iterating in all colors, then right to left +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: shutter_lr +def shutter_lr_template(engine, colors_, duration_) + var strip_len_ = animation.strip_length(engine) + var shutter_size_ = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = strip_len_ + provider.duration = duration_ + return provider + end)(engine) + var col1_ = animation.color_cycle(engine) + col1_.palette = colors_ + col1_.cycle_period = 0 + var col2_ = animation.color_cycle(engine) + col2_.palette = colors_ + col2_.cycle_period = 0 + col2_.next = 1 + # shutter moving from left to right + var shutter_lr_animation_ = animation.beacon_animation(engine) + shutter_lr_animation_.color = col2_ + shutter_lr_animation_.back_color = col1_ + shutter_lr_animation_.pos = 0 + shutter_lr_animation_.beacon_size = shutter_size_ + shutter_lr_animation_.slew_size = 0 + shutter_lr_animation_.priority = 5 + var shutter_seq_ = animation.SequenceManager(engine, -1) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_lr_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + engine.add(shutter_seq_) +end + +animation.register_user_function('shutter_lr', shutter_lr_template) + +var rainbow_with_white_ = bytes( + "FFFF0000" + "FFFFA500" + "FFFFFF00" + "FF008000" # comma left on-purpose to test transpiler + "FF0000FF" # need for a lighter blue + "FF4B0082" + "FFFFFFFF" +) +shutter_lr_template(engine, rainbow_with_white_, 1500) +engine.run() + + +#- Original DSL source: +# Demo Shutter Rainbow +# +# Shutter from left to right iterating in all colors, then right to left + +template shutter_lr { + param colors type palette + param duration + + set strip_len = strip_length() + set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_lr_animation = beacon_animation( + color = col2 + back_color = col1 + pos = 0 + beacon_size = shutter_size + slew_size = 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + restart shutter_size + play shutter_lr_animation for duration + col1.next = 1 + col2.next = 1 + } + + run shutter_seq + } + + palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white + ] + + shutter_lr(rainbow_with_white, 1.5s) + +-# 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 52ae0bf2b..251b0d916 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be @@ -84,7 +84,7 @@ engine.add(disco_base_) engine.add(white_flash_) engine.add(disco_sparkles_) engine.add(disco_pulse_) -engine.start() +engine.run() #- Original DSL source: 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 04da2eda7..4291c3f50 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be @@ -48,7 +48,7 @@ fire_flicker_.priority = 10 # Start both animations engine.add(fire_base_) engine.add(fire_flicker_) -engine.start() +engine.run() #- Original DSL source: 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 c268b00ce..cab6b44f8 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/heartbeat_pulse.be @@ -77,7 +77,7 @@ engine.add(heart_glow_) engine.add(heartbeat1_) engine.add(heartbeat2_) engine.add(center_pulse_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be index cd0792652..b9f8b4d2e 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be @@ -16,13 +16,13 @@ import user_functions # Create animations that use imported user functions var random_red_ = animation.solid(engine) random_red_.color = 0xFFFF0000 -random_red_.opacity = animation.create_closure_value(engine, def (self) return animation.get_user_function('rand_demo')(self.engine) end) +random_red_.opacity = animation.create_closure_value(engine, def (engine) return animation.get_user_function('rand_demo')(engine) end) var breathing_blue_ = animation.solid(engine) breathing_blue_.color = 0xFF0000FF -breathing_blue_.opacity = animation.create_closure_value(engine, def (self) return self.max(50, self.min(255, animation.get_user_function('rand_demo')(self.engine) + 100)) end) +breathing_blue_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100)) end) var dynamic_green_ = animation.solid(engine) dynamic_green_.color = 0xFF008000 -dynamic_green_.opacity = animation.create_closure_value(engine, def (self) return self.abs(animation.get_user_function('rand_demo')(self.engine) - 128) + 64 end) +dynamic_green_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64 end) # Create a sequence that cycles through the animations var import_demo_ = animation.SequenceManager(engine) .push_play_step(random_red_, 3000) @@ -30,7 +30,7 @@ var import_demo_ = animation.SequenceManager(engine) .push_play_step(dynamic_green_, 3000) # Run the demo engine.add(import_demo_) -engine.start() +engine.run() #- Original DSL source: 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 167ff639e..1adbab15e 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be @@ -98,7 +98,7 @@ engine.add(lava_blob1_) engine.add(lava_blob2_) engine.add(lava_blob3_) engine.add(heat_shimmer_) -engine.start() +engine.run() #- Original DSL source: 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 0b97cb934..a7a0de09b 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be @@ -76,7 +76,7 @@ engine.add(lightning_main_) engine.add(lightning_partial_) engine.add(afterglow_) engine.add(distant_flash_) -engine.start() +engine.run() #- Original DSL source: 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 61f646b6d..503f78b33 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be @@ -68,7 +68,7 @@ engine.add(stream1_) engine.add(stream2_) engine.add(stream3_) engine.add(code_flash_) -engine.start() +engine.run() #- Original DSL source: 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 bbd3ea29d..8a2984249 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/meteor_shower.be @@ -57,7 +57,7 @@ engine.add(meteor2_) engine.add(meteor3_) engine.add(meteor4_) engine.add(meteor_flash_) -engine.start() +engine.run() #- Original DSL source: 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 cc4a2f51d..0db073b82 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be @@ -83,7 +83,7 @@ engine.add(segment1_) engine.add(segment2_) engine.add(segment3_) engine.add(arc_sparkles_) -engine.start() +engine.run() #- Original DSL source: 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 4403d9dba..397305733 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be @@ -74,7 +74,7 @@ engine.add(ocean_base_) engine.add(wave1_) engine.add(wave2_) engine.add(foam_) -engine.start() +engine.run() #- Original DSL source: 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 284ac6c31..02a1e10e0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be @@ -44,7 +44,7 @@ var palette_demo_ = animation.SequenceManager(engine) .push_play_step(forest_anim_, 3000) ) engine.add(palette_demo_) -engine.start() +engine.run() #- Original DSL source: 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 ee588cc87..07fd47878 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be @@ -89,7 +89,7 @@ var palette_showcase_ = animation.SequenceManager(engine) .push_play_step(sunset_glow_, 2000) ) engine.add(palette_showcase_) -engine.start() +engine.run() #- Original DSL source: 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 0dc7c78e4..91388261d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be @@ -95,7 +95,7 @@ engine.add(plasma_base_) engine.add(plasma_wave1_) engine.add(plasma_wave2_) engine.add(plasma_wave3_) -engine.start() +engine.run() #- Original DSL source: 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 f4fd87a8c..8b69eaa45 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/police_lights.be @@ -60,7 +60,7 @@ white_strobe_.priority = 20 engine.add(left_red_) engine.add(right_blue_) engine.add(white_strobe_) -engine.start() +engine.run() #- Original DSL source: 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 ce0de2084..de2f0d84e 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 @@ -56,7 +56,7 @@ var demo_ = animation.SequenceManager(engine) .push_wait_step(1000) ) engine.add(demo_) -engine.start() +engine.run() #- Original DSL source: 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 e5d80aebd..eac3ee86b 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/rainbow_cycle.be @@ -21,7 +21,7 @@ var rainbow_animation_ = animation.solid(engine) rainbow_animation_.color = rainbow_cycle_ # Start the animation engine.add(rainbow_animation_) -engine.start() +engine.run() #- Original DSL source: 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 f835151fc..5ae224df6 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/scanner_larson.be @@ -51,7 +51,7 @@ scanner_trail_.opacity = 128 # Half brightness engine.add(background_) engine.add(scanner_trail_) engine.add(scanner_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be index 1271be839..abe560aa6 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sequence_assignments_demo.be @@ -16,14 +16,14 @@ var strip_len_ = animation.strip_length(engine) var triangle_val_ = (def (engine) var provider = animation.triangle(engine) provider.min_value = 0 - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = 5000 return provider end)(engine) var cosine_val_ = (def (engine) var provider = animation.cosine_osc(engine) provider.min_value = 0 - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - 2 end) provider.duration = 5000 return provider end)(engine) @@ -110,7 +110,7 @@ var main_demo_ = animation.SequenceManager(engine) .push_play_step(pulse_demo_, 1000) # Run the main demo engine.add(main_demo_) -engine.start() +engine.run() #- Original DSL source: 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 d2859b25a..c6f560b2f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/simple_palette.be @@ -22,7 +22,7 @@ rainbow_cycle_.cycle_period = 3000 var demo_ = animation.SequenceManager(engine) .push_play_step(rainbow_cycle_, 15000) engine.add(demo_) -engine.start() +engine.run() #- Original DSL source: 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 e68d56569..99831feb5 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be @@ -88,7 +88,7 @@ engine.add(daylight_cycle_) engine.add(sun_position_) engine.add(sun_glow_) engine.add(stars_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/swipe_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/swipe_rainbow.be index c8dd342b4..5dac81f62 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/swipe_rainbow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/swipe_rainbow.be @@ -21,7 +21,7 @@ var slide_colors_ = animation.SequenceManager(engine) .push_play_step(swipe_animation_, 1000) .push_closure_step(def (engine) olivary_.next = 1 end) engine.add(slide_colors_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be index a3ab0c9a2..a699badd0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be @@ -37,7 +37,7 @@ var fire_palette_ = bytes("00000000" "80FF0000" "FFFFFF00") var ocean_palette_ = bytes("00000080" "800080FF" "FF00FFFF") # Use the template rainbow_pulse_template(engine, fire_palette_, ocean_palette_, 3000, 0xFF001100) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be new file mode 100644 index 000000000..9717a1074 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_shutter_rainbow_bidir.be @@ -0,0 +1,144 @@ +# Generated Berry code from Animation DSL +# Source: test_shutter_rainbow_bidir.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Demo Shutter Rainbow Bidir +# +# Shutter from left to right iterating in all colors, then right to left +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: shutter_bidir +def shutter_bidir_template(engine, colors_, duration_) + var strip_len_ = animation.strip_length(engine) + var shutter_size_ = (def (engine) + var provider = animation.sawtooth(engine) + provider.min_value = 0 + provider.max_value = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) + 0 end) + provider.duration = duration_ + return provider + end)(engine) + var col1_ = animation.color_cycle(engine) + col1_.palette = colors_ + col1_.cycle_period = 0 + var col2_ = animation.color_cycle(engine) + col2_.palette = colors_ + col2_.cycle_period = 0 + col2_.next = 1 + # shutter moving from left to right + var shutter_lr_animation_ = animation.beacon_animation(engine) + shutter_lr_animation_.color = col2_ + shutter_lr_animation_.back_color = col1_ + shutter_lr_animation_.pos = 0 + shutter_lr_animation_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(shutter_size_) + 0 end) + shutter_lr_animation_.slew_size = 0 + shutter_lr_animation_.priority = 5 + # shutter moving from right to left + var shutter_rl_animation_ = animation.beacon_animation(engine) + shutter_rl_animation_.color = col1_ + shutter_rl_animation_.back_color = col2_ + shutter_rl_animation_.pos = 0 + shutter_rl_animation_.beacon_size = animation.create_closure_value(engine, def (engine) return animation.resolve(strip_len_) - animation.resolve(shutter_size_) end) + shutter_rl_animation_.slew_size = animation.create_closure_value(engine, def (engine) return 0 + 0 end) + shutter_rl_animation_.priority = 5 + var shutter_seq_ = animation.SequenceManager(engine, -1) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_lr_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) + .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) + .push_play_step(shutter_rl_animation_, duration_) + .push_closure_step(def (engine) col1_.next = 1 end) + .push_closure_step(def (engine) col2_.next = 1 end) + ) + engine.add(shutter_seq_) +end + +animation.register_user_function('shutter_bidir', shutter_bidir_template) + +var rainbow_with_white_ = bytes( + "FFFF0000" + "FFFFA500" + "FFFFFF00" + "FF008000" # comma left on-purpose to test transpiler + "FF0000FF" # need for a lighter blue + "FF4B0082" + "FFFFFFFF" +) +shutter_bidir_template(engine, rainbow_with_white_, 1500) +engine.run() + + +#- Original DSL source: +# Demo Shutter Rainbow Bidir +# +# Shutter from left to right iterating in all colors, then right to left + +template shutter_bidir { + param colors type palette + param duration + + set strip_len = strip_length() + set shutter_size = sawtooth(min_value = 0, max_value = strip_len + 0, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_lr_animation = beacon_animation( + color = col2 + back_color = col1 + pos = 0 + beacon_size = shutter_size + 0 + slew_size = 0 + priority = 5 + ) + + # shutter moving from right to left + animation shutter_rl_animation = beacon_animation( + color = col1 + back_color = col2 + pos = 0 + beacon_size = strip_len - shutter_size + slew_size = 0 + 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + repeat col1.palette_size times { + restart shutter_size + play shutter_lr_animation for duration + col1.next = 1 + col2.next = 1 + } + repeat col1.palette_size times { + restart shutter_size + play shutter_rl_animation for duration + col1.next = 1 + col2.next = 1 + } + } + + run shutter_seq +} + +palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white +] + +shutter_bidir(rainbow_with_white, 1.5s) + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be index 4e8233a6e..da6626d05 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be @@ -24,7 +24,7 @@ animation.register_user_function('pulse_effect', pulse_effect_template) # Use the template - templates add animations directly to engine and run them pulse_effect_template(engine, 0xFFFF0000, 2000, 204) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be index 2b73fe228..24b3616d5 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be @@ -24,7 +24,7 @@ animation.register_user_function('pulse_effect', pulse_effect_template) # Use the template - templates add animations directly to engine and run them pulse_effect_template(engine, 0xFFFF0000, 2000, 204) -engine.start() +engine.run() #- Original DSL source: 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 ea888f549..4310ba2e0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/twinkle_stars.be @@ -32,7 +32,7 @@ bright_flash_.priority = 15 engine.add(background_) engine.add(stars_) engine.add(bright_flash_) -engine.start() +engine.run() #- Original DSL source: 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 98dec6b48..12b5416ef 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 @@ -19,38 +19,38 @@ var random_base_ = animation.solid(engine) random_base_.color = 0xFF0000FF random_base_.priority = 10 # Use user function in property assignment -random_base_.opacity = animation.create_closure_value(engine, def (self) return animation.get_user_function('rand_demo')(self.engine) end) +random_base_.opacity = animation.create_closure_value(engine, def (engine) return animation.get_user_function('rand_demo')(engine) end) # Example 2: User function with mathematical operations var random_bounded_ = animation.solid(engine) random_bounded_.color = 0xFFFFA500 random_bounded_.priority = 8 # User function with bounds using math functions -random_bounded_.opacity = animation.create_closure_value(engine, def (self) return self.max(50, self.min(255, animation.get_user_function('rand_demo')(self.engine) + 100)) end) +random_bounded_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.max(50, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 100)) end) # Example 3: User function in arithmetic expressions var random_variation_ = animation.solid(engine) random_variation_.color = 0xFF800080 random_variation_.priority = 15 # Mix user function with arithmetic operations -random_variation_.opacity = animation.create_closure_value(engine, def (self) return self.abs(animation.get_user_function('rand_demo')(self.engine) - 128) + 64 end) +random_variation_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.abs(animation.get_user_function('rand_demo')(engine) - 128) + 64 end) # Example 4: User function affecting different properties var random_multi_ = animation.solid(engine) random_multi_.color = 0xFF00FFFF random_multi_.priority = 12 # Use user function for multiple properties -random_multi_.opacity = animation.create_closure_value(engine, def (self) return self.max(100, animation.get_user_function('rand_demo')(self.engine)) end) +random_multi_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.max(100, animation.get_user_function('rand_demo')(engine)) end) # Example 5: Complex expression with user function var random_complex_ = animation.solid(engine) random_complex_.color = 0xFFFFFFFF random_complex_.priority = 20 # Complex expression with user function and math operations -random_complex_.opacity = animation.create_closure_value(engine, def (self) return self.round((animation.get_user_function('rand_demo')(self.engine) + 128) / 2 + self.abs(animation.get_user_function('rand_demo')(self.engine) - 100)) end) +random_complex_.opacity = animation.create_closure_value(engine, def (engine) return animation._math.round((animation.get_user_function('rand_demo')(engine) + 128) / 2 + animation._math.abs(animation.get_user_function('rand_demo')(engine) - 100)) end) # Run all animations to demonstrate the effects engine.add(random_base_) engine.add(random_bounded_) engine.add(random_variation_) engine.add(random_multi_) engine.add(random_complex_) -engine.start() +engine.run() #- Original DSL source: diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim similarity index 94% rename from lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim rename to lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim index 09fd05994..55d7684be 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_bidir.anim @@ -1,4 +1,4 @@ -# Demo Shutter Rainbow +# Demo Shutter Rainbow Bidir # # Shutter from left to right iterating in all colors, then right to left @@ -35,13 +35,13 @@ template shutter_bidir { sequence shutter_seq repeat forever { repeat col1.palette_size times { - reset shutter_size + restart shutter_size play shutter_lr_animation for duration col1.next = 1 col2.next = 1 } repeat col1.palette_size times { - reset shutter_size + restart shutter_size play shutter_rl_animation for duration col1.next = 1 col2.next = 1 diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim new file mode 100644 index 000000000..470df7010 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_central.anim @@ -0,0 +1,47 @@ +# Demo Shutter Rainbow +# +# Shutter from center to both left and right + +template shutter_central { + param colors type palette + param duration + + set strip_len = strip_length() + set strip_len2 = (strip_length() + 1) / 2 + set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_central_animation = beacon_animation( + color = col2 + back_color = col1 + pos = strip_len2 - shutter_size / 2 + beacon_size = shutter_size + slew_size = 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + restart shutter_size + play shutter_central_animation for duration + col1.next = 1 + col2.next = 1 + } + + run shutter_seq + } + + palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white + ] + + shutter_central(rainbow_with_white, 1.5s) + \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim new file mode 100644 index 000000000..9ab53f8ed --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow_leftright.anim @@ -0,0 +1,46 @@ +# Demo Shutter Rainbow +# +# Shutter from left to right iterating in all colors, then right to left + +template shutter_lr { + param colors type palette + param duration + + set strip_len = strip_length() + set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_lr_animation = beacon_animation( + color = col2 + back_color = col1 + pos = 0 + beacon_size = shutter_size + slew_size = 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + restart shutter_size + play shutter_lr_animation for duration + col1.next = 1 + col2.next = 1 + } + + run shutter_seq + } + + palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white + ] + + shutter_lr(rainbow_with_white, 1.5s) + \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim new file mode 100644 index 000000000..98d341f1e --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_shutter_rainbow_bidir.anim @@ -0,0 +1,63 @@ +# Demo Shutter Rainbow Bidir +# +# Shutter from left to right iterating in all colors, then right to left + +template shutter_bidir { + param colors type palette + param duration + + set strip_len = strip_length() + set shutter_size = sawtooth(min_value = 0, max_value = strip_len + 0, duration = duration) + + color col1 = color_cycle(palette=colors, cycle_period=0) + color col2 = color_cycle(palette=colors, cycle_period=0) + col2.next = 1 + + # shutter moving from left to right + animation shutter_lr_animation = beacon_animation( + color = col2 + back_color = col1 + pos = 0 + beacon_size = shutter_size + 0 + slew_size = 0 + priority = 5 + ) + + # shutter moving from right to left + animation shutter_rl_animation = beacon_animation( + color = col1 + back_color = col2 + pos = 0 + beacon_size = strip_len - shutter_size + slew_size = 0 + 0 + priority = 5 + ) + + sequence shutter_seq repeat forever { + repeat col1.palette_size times { + restart shutter_size + play shutter_lr_animation for duration + col1.next = 1 + col2.next = 1 + } + repeat col1.palette_size times { + restart shutter_size + play shutter_rl_animation for duration + col1.next = 1 + col2.next = 1 + } + } + + run shutter_seq +} + +palette rainbow_with_white = [ red + orange + yellow + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue + indigo + white +] + +shutter_bidir(rainbow_with_white, 1.5s) diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md index 4f1064f0c..dc2c6504c 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md @@ -79,6 +79,8 @@ Unified base class for all visual elements. Inherits from `ParameterizedObject`. **Special Behavior**: Setting `is_running = true/false` starts/stops the animation. +**Timing Behavior**: The `start()` method only resets the time origin if the animation was already started previously (i.e., `self.start_time` is not nil). The first actual rendering tick occurs in `update()` or `render()` methods, which initialize `start_time` on first call. + **Factory**: `animation.animation(engine)` ## Value Providers @@ -93,6 +95,8 @@ Base interface for all value providers. Inherits from `ParameterizedObject`. |-----------|------|---------|-------------|-------------| | *(none)* | - | - | - | Base interface has no parameters | +**Timing Behavior**: For value providers, `start()` is typically not called because instances can be embedded in closures. Value providers consider the first call to `produce_value()` as the start of their internal time reference. The `start()` method only resets the time origin if the provider was already started previously (i.e., `self.start_time` is not nil). + **Factory**: N/A (base interface) ### StaticValueProvider @@ -141,6 +145,8 @@ Generates oscillating values using various waveforms. Inherits from `ValueProvid - `8` (ELASTIC) - Spring-like overshoot and oscillation - `9` (BOUNCE) - Ball-like bouncing with decreasing amplitude +**Timing Behavior**: The `start_time` is initialized on the first call to `produce_value()`. The `start()` method only resets the time origin if the oscillator was already started previously (i.e., `self.start_time` is not nil). + **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 @@ -163,14 +169,14 @@ The ClosureValueProvider includes built-in mathematical helper methods that can | Method | Description | Parameters | Return Type | Example | |--------|-------------|------------|-------------|---------| -| `min(a, b, ...)` | Minimum of two or more values | `a, b, *args: number` | `number` | `self.min(5, 3, 8)` → `3` | -| `max(a, b, ...)` | Maximum of two or more values | `a, b, *args: number` | `number` | `self.max(5, 3, 8)` → `8` | -| `abs(x)` | Absolute value | `x: number` | `number` | `self.abs(-5)` → `5` | -| `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` | -| `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) | +| `min(a, b, ...)` | Minimum of two or more values | `a, b, *args: number` | `number` | `animation._math.min(5, 3, 8)` → `3` | +| `max(a, b, ...)` | Maximum of two or more values | `a, b, *args: number` | `number` | `animation._math.max(5, 3, 8)` → `8` | +| `abs(x)` | Absolute value | `x: number` | `number` | `animation._math.abs(-5)` → `5` | +| `round(x)` | Round to nearest integer | `x: number` | `int` | `animation._math.round(3.7)` → `4` | +| `sqrt(x)` | Square root with integer handling | `x: number` | `number` | `animation._math.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` | `animation._math.scale(50, 0, 100, 0, 255)` → `127` | +| `sin(angle)` | Sine function (0-255 input range) | `angle: number` | `int` | `animation._math.sin(64)` → `255` (90°) | +| `cos(angle)` | Cosine function (0-255 input range) | `angle: number` | `int` | `animation._math.cos(0)` → `-255` (matches oscillator behavior) | **Mathematical Method Notes:** diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md index 9db7170ff..5959fc80a 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md @@ -43,10 +43,8 @@ class MyAnimation : animation.animation return false end - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Use virtual parameter access - automatically resolves ValueProviders var param1 = self.my_param1 @@ -276,6 +274,9 @@ def render(frame, time_ms) if !self.is_running || frame == nil return false end + + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Get frame dimensions var width = frame.width @@ -372,7 +373,9 @@ class BeaconAnimation : animation.animation return false end - # Use engine time if not provided + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + if time_ms == nil time_ms = self.engine.time_ms end @@ -538,7 +541,7 @@ anim.pos = 5 anim.beacon_size = 3 engine.add(anim) # Unified method for animations and sequence managers -engine.start() +engine.run() # Let it run for a few seconds tasmota.delay(3000) diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index 990ba5542..f1bd89420 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -75,7 +75,6 @@ The following keywords are reserved and cannot be used as identifiers: - `times` - Loop count specifier - `for` - Duration specifier - `run` - Execute animation or sequence -- `reset` - Reset value provider or animation to initial state - `restart` - Restart value provider or animation from beginning **Easing Keywords:** @@ -536,10 +535,10 @@ test.opacity = min(255, max(50, scale(sqrt(strip_len), 0, 16, 100, 255))) - **Integer Optimization**: `sqrt()` function automatically handles integer scaling for 0-255 range values - **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 +- **Closure Context**: In computed parameters, mathematical functions are called as `animation._math.()` in the generated closure context **How It Works:** -When the DSL detects arithmetic expressions containing value providers, variable references, or mathematical functions, it automatically creates closure functions that capture the computation. These closures are called with `(self, param_name, time_ms)` parameters, allowing the computation to be re-evaluated dynamically as needed. Mathematical functions are automatically prefixed with `self.` in the closure context to access the ClosureValueProvider's mathematical methods. +When the DSL detects arithmetic expressions containing value providers, variable references, or mathematical functions, it automatically creates closure functions that capture the computation. These closures are called with `(self, param_name, time_ms)` parameters, allowing the computation to be re-evaluated dynamically as needed. Mathematical functions are automatically prefixed with `animation._math.` in the closure context to access the ClosureValueProvider's mathematical methods. **User Functions in Computed Parameters:** User-defined functions can also be used in computed parameter expressions, providing powerful custom effects. User functions must be called with the `user.` prefix: @@ -785,31 +784,32 @@ sequence cylon_eye { } ``` -#### Reset and Restart Statements +#### Restart Statements -Reset and restart statements allow you to reset value providers and animations to their initial state during sequence execution: +Restart statements allow you to restart value providers and animations from their initial state during sequence execution: ```berry -reset value_provider_name # Reset value provider to initial state +restart value_provider_name # Restart value provider from beginning restart animation_name # Restart animation from beginning ``` -**Reset Statement:** -- Resets value providers (oscillators, color cycles, etc.) to their initial state -- Calls the `start()` method on the value provider -- Useful for synchronizing oscillators or restarting color cycles - **Restart Statement:** +- Restarts value providers (oscillators, color cycles, etc.) from their initial state - Restarts animations from their beginning state -- Calls the `start()` method on the animation -- Useful for restarting complex animations or synchronizing multiple animations +- Calls the `start()` method on the value provider or animation, which resets the time origin only if the object was already started previously +- Useful for synchronizing oscillators, restarting color cycles, or restarting complex animations + +**Timing Behavior:** +- The `start()` method only resets the time origin if `self.start_time` is not nil (i.e., the object was already started) +- For fresh objects, the first call to `update()`, `render()`, or `produce_value()` initializes the time reference +- This prevents premature time initialization and ensures proper timing behavior **Examples:** ```berry -# Reset oscillators for synchronized movement +# Restart oscillators for synchronized movement sequence sync_demo { play wave_anim for 3s - reset position_osc # Reset oscillator to start position + restart position_osc # Restart oscillator time origin play wave_anim for 3s } @@ -980,7 +980,7 @@ animation.register_user_function('pulse_effect', pulse_effect_template) - Templates don't return values - they add animations directly to the engine - Multiple `run` statements in templates add multiple animations - Templates can be called multiple times to create multiple instances -- `engine.start()` is automatically called when templates are used at the top level +- `engine.run()` is automatically called when templates are used at the top level ## Execution Statements @@ -1293,13 +1293,12 @@ property_assignment = identifier "." identifier "=" expression ; (* Sequences *) sequence = "sequence" identifier [ "repeat" ( expression "times" | "forever" ) ] "{" sequence_body "}" ; sequence_body = { sequence_statement } ; -sequence_statement = play_stmt | wait_stmt | repeat_stmt | sequence_assignment | reset_stmt | restart_stmt ; +sequence_statement = play_stmt | wait_stmt | repeat_stmt | sequence_assignment | restart_stmt ; play_stmt = "play" identifier [ "for" time_expression ] ; wait_stmt = "wait" time_expression ; repeat_stmt = "repeat" ( expression "times" | "forever" ) "{" sequence_body "}" ; sequence_assignment = identifier "." identifier "=" expression ; -reset_stmt = "reset" identifier ; restart_stmt = "restart" identifier ; (* Templates *) diff --git a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md index f0fdee265..5297a9eac 100644 --- a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md +++ b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md @@ -255,9 +255,9 @@ import "user_functions" var test_ = animation.solid(engine) test_.color = 0xFF0000FF test_.opacity = animation.create_closure_value(engine, - def (self) return animation.get_user_function('rand_demo')(self.engine) end) + def (engine) return animation.get_user_function('rand_demo')(engine) end) engine.add(test_) -engine.start() +engine.run() ``` ## Advanced DSL Features @@ -291,7 +291,7 @@ def pulse_effect(engine, color, speed) pulse_.color = color pulse_.period = speed engine.add(pulse_) - engine.start() + engine.run() end animation.register_user_function("pulse_effect", pulse_effect) @@ -347,7 +347,7 @@ def comet_chase(engine, trail_color, bg_color, chase_speed) comet_.speed = chase_speed engine.add(background_) engine.add(comet_) - engine.start() + engine.run() end animation.register_user_function("comet_chase", comet_chase) diff --git a/lib/libesp32/berry_animation/docs/EXAMPLES.md b/lib/libesp32/berry_animation/docs/EXAMPLES.md index 4e45b254d..1030ad2a9 100644 --- a/lib/libesp32/berry_animation/docs/EXAMPLES.md +++ b/lib/libesp32/berry_animation/docs/EXAMPLES.md @@ -173,7 +173,7 @@ sequence demo { run demo ``` -### 11. Reset and Restart in Sequences +### 11. Restart in Sequences ```berry # Create oscillator and animation set wave_osc = triangle(min_value=0, max_value=29, period=4s) @@ -181,9 +181,9 @@ animation wave = beacon_animation(color=blue, pos=wave_osc, beacon_size=5) sequence sync_demo { play wave for 3s - reset wave_osc # Reset oscillator to start position + restart wave_osc # Restart oscillator time origin (if already started) play wave for 3s # Wave starts from beginning again - restart wave # Restart animation from initial state + restart wave # Restart animation time origin (if already started) play wave for 3s } run sync_demo @@ -199,7 +199,7 @@ sequence breathing_cycle { play pulse for 500ms pulse.opacity = brightness # Apply breathing effect wait 200ms - pulse.opacity = 255 # Reset to full brightness + pulse.opacity = 255 # Return to full brightness } } run breathing_cycle diff --git a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md index 052b42d42..1ece900c1 100644 --- a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md +++ b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md @@ -53,10 +53,10 @@ transpile() │ │ ├── process_play_statement_fluent() │ │ ├── process_wait_statement_fluent() │ │ ├── process_log_statement_fluent() -│ │ ├── process_reset_restart_statement_fluent() +│ │ ├── process_restart_statement_fluent() │ │ └── process_sequence_assignment_fluent() │ ├── process_import() (direct Berry import generation) -│ ├── process_run() (collect for single engine.start()) +│ ├── process_run() (collect for single engine.run()) │ └── process_property_assignment() └── generate_engine_start() (single call for all run statements) ``` @@ -141,7 +141,7 @@ process_value(context) │ │ └── process_primary_expression(context, is_top_level, raw_mode) │ │ ├── Parenthesized expression → recursive call │ │ ├── Function call handling: - │ │ │ ├── Raw mode: mathematical functions → self.method() + │ │ │ ├── Raw mode: mathematical functions → animation._math.method() │ │ │ ├── Raw mode: template calls → template_func(self.engine, ...) │ │ │ ├── Regular mode: process_function_call() or process_nested_function_call() │ │ │ └── Simple function detection → _is_simple_function_call() @@ -199,11 +199,11 @@ is_computed_expression_string(expr_str) create_computation_closure_from_string(expr_str) ├── transform_expression_for_closure() -│ ├── Sequential step 1: Transform mathematical functions → self.method() +│ ├── Sequential step 1: Transform mathematical functions → animation._math.method() │ │ ├── Use dynamic introspection with is_math_method() -│ │ ├── Check for existing "self." prefix +│ │ ├── Check for existing "self." prefix /// TODO NOT SURE IT STILL EXISTS │ │ └── Only transform if not already prefixed -│ ├── Sequential step 2: Transform user variables → self.resolve(var_) +│ ├── Sequential step 2: Transform user variables → animation.resolve(var_) │ │ ├── Find variables ending with _ │ │ ├── Check for existing resolve() calls │ │ ├── Avoid double-wrapping @@ -290,7 +290,7 @@ _validate_value_provider_reference(object_name, context) ├── Check if symbol exists using validate_symbol_reference() ├── Check symbol_table markers for type information ├── Validate instance types using isinstance() -├── Ensure only value providers/animations can be reset/restarted +├── Ensure only value providers/animations can be restarted └── Provide detailed error messages for invalid types ``` @@ -331,14 +331,14 @@ Dynamic expressions are wrapped in closures with **mathematical function support # DSL: animation.opacity = strip_length() / 2 + 50 # Generated: animation.opacity = animation.create_closure_value(engine, - def (self) return self.resolve(strip_length_(engine)) / 2 + 50 end) + def (self) return animation.resolve(strip_length_(engine)) / 2 + 50 end) # DSL: animation.opacity = max(100, min(255, user.rand_demo() + 50)) # Generated: animation.opacity = animation.create_closure_value(engine, - def (self) return self.max(100, self.min(255, animation.get_user_function('rand_demo')(self.engine) + 50)) end) + def (self) return animation._math.max(100, animation._math.min(255, animation.get_user_function('rand_demo')(engine) + 50)) end) -# Mathematical functions are automatically detected and prefixed with self. +# Mathematical functions are automatically detected and prefixed with animation._math. # User functions are wrapped with animation.get_user_function() calls ``` diff --git a/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md b/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md index 4641cb953..f49edcc19 100644 --- a/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md +++ b/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md @@ -78,6 +78,12 @@ except .. as e, msg end ``` +**Timing Behavior Note:** +The framework has updated timing behavior where: +- The `start()` method only resets the time origin if the animation/value provider was already started previously +- The first actual rendering tick occurs in `update()`, `render()`, or `produce_value()` methods +- This ensures proper timing initialization and prevents premature time reference setting + **Common Solutions:** 1. **Missing Strip Declaration:** @@ -761,7 +767,7 @@ var engine = animation.create_engine(strip) var red_anim = animation.solid(engine) red_anim.color = 0xFFFF0000 engine.add(red_anim) -engine.start() +engine.run() # If basic strip works but animation doesn't, check framework setup ``` @@ -831,7 +837,7 @@ var engine = animation.create_engine(strip, true) # debug=true var anim = animation.solid(engine) anim.color = 0xFFFF0000 engine.add(anim) -engine.start() +engine.run() ``` ### Step-by-Step Testing @@ -856,7 +862,7 @@ engine.add(anim) print("Animation count:", engine.size()) print("5. Starting engine...") -engine.start() +engine.run() print("Engine active:", engine.is_active()) ``` diff --git a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md index 659edbddb..70ac529dd 100644 --- a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md +++ b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md @@ -490,7 +490,7 @@ When you use user functions in computed parameters: 1. **Automatic Detection**: The transpiler automatically detects user functions in expressions 2. **Single Closure**: The entire expression is wrapped in a single efficient closure -3. **Engine Access**: User functions receive `self.engine` in the closure context +3. **Engine Access**: User functions receive `engine` in the closure context 4. **Mixed Operations**: User functions work seamlessly with mathematical functions and arithmetic **Generated Code Example:** @@ -502,8 +502,8 @@ animation.opacity = max(100, user.breathing(red, 2000)) **Transpiles to:** ```berry animation.opacity = animation.create_closure_value(engine, - def (self, param_name, time_ms) - return (self.max(100, animation.get_user_function('breathing')(self.engine, 0xFFFF0000, 2000))) + def (engine, param_name, time_ms) + return (animation._math.max(100, animation.get_user_function('breathing')(engine, 0xFFFF0000, 2000))) end) ``` diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index 16bc58444..d877ac2e5 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -57,6 +57,10 @@ end # Import core framework components # These provide the fundamental architecture for the animation system +# Mathematical functions for use in closures and throughout the framework +import "core/math_functions" as math_functions +register_to_animation(math_functions) + # Base class for parameter management - shared by Animation and ValueProvider import "core/parameterized_object" as parameterized_object register_to_animation(parameterized_object) diff --git a/lib/libesp32/berry_animation/src/animations/beacon.be b/lib/libesp32/berry_animation/src/animations/beacon.be index 15be2bcc5..68f93a9af 100644 --- a/lib/libesp32/berry_animation/src/animations/beacon.be +++ b/lib/libesp32/berry_animation/src/animations/beacon.be @@ -40,10 +40,8 @@ class BeaconAnimation : animation.animation return false end - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) var pixel_size = frame.width # Use virtual parameter access - automatically resolves ValueProviders diff --git a/lib/libesp32/berry_animation/src/animations/bounce.be b/lib/libesp32/berry_animation/src/animations/bounce.be index 0aad33879..e4ef3db2a 100644 --- a/lib/libesp32/berry_animation/src/animations/bounce.be +++ b/lib/libesp32/berry_animation/src/animations/bounce.be @@ -84,6 +84,7 @@ class BounceAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "bounce_speed" # Update velocity if speed changed var pixels_per_second = tasmota.scale_uint(value, 0, 255, 0, 20) diff --git a/lib/libesp32/berry_animation/src/animations/breathe.be b/lib/libesp32/berry_animation/src/animations/breathe.be index 474dd6228..084f08049 100644 --- a/lib/libesp32/berry_animation/src/animations/breathe.be +++ b/lib/libesp32/berry_animation/src/animations/breathe.be @@ -39,6 +39,7 @@ class BreatheAnimation : animation.animation # Handle parameter changes - propagate to internal breathe provider def on_param_changed(name, value) + super(self).on_param_changed(name, value) # Propagate relevant parameters to the breathe provider if name == "base_color" self.breathe_provider.base_color = value diff --git a/lib/libesp32/berry_animation/src/animations/comet.be b/lib/libesp32/berry_animation/src/animations/comet.be index 00bdc97a3..c5fc81a53 100644 --- a/lib/libesp32/berry_animation/src/animations/comet.be +++ b/lib/libesp32/berry_animation/src/animations/comet.be @@ -36,6 +36,7 @@ class CometAnimation : animation.animation # Handle parameter changes - reset position when direction changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "direction" # Reset position when direction changes var strip_length = self.engine.get_strip_length() diff --git a/lib/libesp32/berry_animation/src/animations/crenel_position.be b/lib/libesp32/berry_animation/src/animations/crenel_position.be index 36b57fea8..a57dbbfb8 100644 --- a/lib/libesp32/berry_animation/src/animations/crenel_position.be +++ b/lib/libesp32/berry_animation/src/animations/crenel_position.be @@ -41,12 +41,10 @@ class CrenelPositionAnimation : animation.animation if !self.is_running || frame == nil return false end - - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end - + + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var pixel_size = frame.width # Access parameters via virtual members (automatically resolves ValueProviders) diff --git a/lib/libesp32/berry_animation/src/animations/fire.be b/lib/libesp32/berry_animation/src/animations/fire.be index 50872108b..b9cf014c9 100644 --- a/lib/libesp32/berry_animation/src/animations/fire.be +++ b/lib/libesp32/berry_animation/src/animations/fire.be @@ -52,12 +52,6 @@ class FireAnimation : animation.animation end end - # Handle parameter changes - def on_param_changed(name, value) - # No special handling needed - parameters are accessed via virtual members - # The default fire palette is set up by factory methods when needed - end - # Simple pseudo-random number generator # Uses a linear congruential generator for consistent results def _random() @@ -226,6 +220,9 @@ class FireAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var strip_length = self.engine.get_strip_length() # Render each pixel with its current color diff --git a/lib/libesp32/berry_animation/src/animations/gradient.be b/lib/libesp32/berry_animation/src/animations/gradient.be index d4d6d779f..b26888ac2 100644 --- a/lib/libesp32/berry_animation/src/animations/gradient.be +++ b/lib/libesp32/berry_animation/src/animations/gradient.be @@ -42,9 +42,8 @@ class GradientAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) - # No special handling needed for most parameters - # The virtual parameter system handles storage and validation - + super(self).on_param_changed(name, value) + # TODO maybe be more specific on attribute name # Handle strip length changes from engine var current_strip_length = self.engine.get_strip_length() if size(self.current_colors) != current_strip_length @@ -201,6 +200,9 @@ class GradientAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var strip_length = self.engine.get_strip_length() var i = 0 while i < strip_length && i < frame.width diff --git a/lib/libesp32/berry_animation/src/animations/jitter.be b/lib/libesp32/berry_animation/src/animations/jitter.be index f392cdcc1..ffb605576 100644 --- a/lib/libesp32/berry_animation/src/animations/jitter.be +++ b/lib/libesp32/berry_animation/src/animations/jitter.be @@ -87,6 +87,10 @@ class JitterAnimation : animation.animation # Update animation state def update(time_ms) + if !super(self).update(time_ms) + return false + end + # Cache parameter values for performance var jitter_frequency = self.jitter_frequency var source_animation = self.source_animation @@ -232,10 +236,13 @@ class JitterAnimation : animation.animation # Render jitter to frame buffer def render(frame, time_ms) - if frame == nil + if !self.is_running || frame == nil return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var current_strip_length = self.engine.get_strip_length() var i = 0 while i < current_strip_length diff --git a/lib/libesp32/berry_animation/src/animations/noise.be b/lib/libesp32/berry_animation/src/animations/noise.be index 4c34c7014..2d60c018b 100644 --- a/lib/libesp32/berry_animation/src/animations/noise.be +++ b/lib/libesp32/berry_animation/src/animations/noise.be @@ -116,6 +116,7 @@ class NoiseAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "seed" self._init_noise_table() end @@ -236,6 +237,9 @@ class NoiseAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var strip_length = self.engine.get_strip_length() var i = 0 while i < strip_length diff --git a/lib/libesp32/berry_animation/src/animations/palette_pattern.be b/lib/libesp32/berry_animation/src/animations/palette_pattern.be index c1fd6ead3..41d6d27b9 100644 --- a/lib/libesp32/berry_animation/src/animations/palette_pattern.be +++ b/lib/libesp32/berry_animation/src/animations/palette_pattern.be @@ -83,6 +83,9 @@ class PalettePatternAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + # Calculate elapsed time since animation started var elapsed = time_ms - self.start_time @@ -102,10 +105,8 @@ class PalettePatternAnimation : animation.animation return false end - # Use provided time or default to engine time - if time_ms == nil - time_ms = self.engine.time_ms - end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Get current parameter values (cached for performance) var color_source = self.get_param('color_source') # use get_param to avoid resolving of color_provider @@ -139,14 +140,13 @@ class PalettePatternAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "pattern_func" || name == "color_source" # Reinitialize value buffer when pattern or color source changes self._initialize_value_buffer() end end - - # String representation of the animation def tostring() var strip_length = self.engine.get_strip_length() diff --git a/lib/libesp32/berry_animation/src/animations/plasma.be b/lib/libesp32/berry_animation/src/animations/plasma.be index ed615f5c6..a42c7af40 100644 --- a/lib/libesp32/berry_animation/src/animations/plasma.be +++ b/lib/libesp32/berry_animation/src/animations/plasma.be @@ -85,6 +85,7 @@ class PlasmaAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "color" && value == nil # Reset to default rainbow palette when color is set to nil var rainbow_provider = animation.rich_palette(self.engine) @@ -190,6 +191,9 @@ class PlasmaAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var strip_length = self.engine.get_strip_length() var i = 0 while i < strip_length diff --git a/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be b/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be index 57dd500fb..61370b8ae 100644 --- a/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be +++ b/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be @@ -20,7 +20,7 @@ class RichPaletteAnimation : animation.animation "transition_type": {"enum": [animation.LINEAR, animation.SINE], "default": animation.SINE}, "brightness": {"min": 0, "max": 255, "default": 255}, "range_min": {"default": 0}, - "range_max": {"default": 100} + "range_max": {"default": 255} } # Initialize a new RichPaletteAnimation @@ -45,6 +45,7 @@ class RichPaletteAnimation : animation.animation # @param name: string - Name of the parameter that changed # @param value: any - New value of the parameter def on_param_changed(name, value) + super(self).on_param_changed(name, value) # Forward rich palette parameters to internal color provider if name == "palette" || name == "cycle_period" || name == "transition_type" || name == "brightness" || name == "range_min" || name == "range_max" diff --git a/lib/libesp32/berry_animation/src/animations/scale.be b/lib/libesp32/berry_animation/src/animations/scale.be index 23c7cde30..e7e8d8351 100644 --- a/lib/libesp32/berry_animation/src/animations/scale.be +++ b/lib/libesp32/berry_animation/src/animations/scale.be @@ -48,12 +48,6 @@ class ScaleAnimation : animation.animation end end - # Handle parameter changes - def on_param_changed(name, value) - # No special handling needed for most parameters - # Buffers are managed through engine strip length changes - end - # Start/restart the animation def start(time_ms) # Call parent start first (handles ValueProvider propagation) @@ -73,6 +67,10 @@ class ScaleAnimation : animation.animation # Update animation state def update(time_ms) + if !super(self).update(time_ms) + return false + end + # Cache parameter values for performance var current_scale_speed = self.scale_speed var current_scale_mode = self.scale_mode @@ -240,6 +238,9 @@ class ScaleAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var current_strip_length = self.engine.get_strip_length() var i = 0 while i < current_strip_length diff --git a/lib/libesp32/berry_animation/src/animations/shift.be b/lib/libesp32/berry_animation/src/animations/shift.be index 7a7c1232e..710fa8045 100644 --- a/lib/libesp32/berry_animation/src/animations/shift.be +++ b/lib/libesp32/berry_animation/src/animations/shift.be @@ -45,6 +45,7 @@ class ShiftAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) # Re-initialize buffers if strip length might have changed if name == "source_animation" self._initialize_buffers() @@ -53,7 +54,9 @@ class ShiftAnimation : animation.animation # Update animation state def update(time_ms) - super(self).update(time_ms) + if !super(self).update(time_ms) + return false + end # Cache parameter values for performance var current_shift_speed = self.shift_speed @@ -152,6 +155,9 @@ class ShiftAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var current_strip_length = self.engine.get_strip_length() var i = 0 while i < current_strip_length diff --git a/lib/libesp32/berry_animation/src/animations/sparkle.be b/lib/libesp32/berry_animation/src/animations/sparkle.be index 658dc325b..479e10673 100644 --- a/lib/libesp32/berry_animation/src/animations/sparkle.be +++ b/lib/libesp32/berry_animation/src/animations/sparkle.be @@ -92,7 +92,9 @@ class SparkleAnimation : animation.animation # Update animation state def update(time_ms) - super(self).update(time_ms) + if !super(self).update(time_ms) + return false + end # Update at approximately 30 FPS var update_interval = 33 # ~30 FPS @@ -199,6 +201,9 @@ class SparkleAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var current_strip_length = self.engine.get_strip_length() var i = 0 while i < current_strip_length diff --git a/lib/libesp32/berry_animation/src/animations/twinkle.be b/lib/libesp32/berry_animation/src/animations/twinkle.be index 04c1a147a..50992abe1 100644 --- a/lib/libesp32/berry_animation/src/animations/twinkle.be +++ b/lib/libesp32/berry_animation/src/animations/twinkle.be @@ -61,6 +61,7 @@ class TwinkleAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "twinkle_speed" # Handle twinkle_speed - can be Hz (1-20) or period in ms (50-5000) if value >= 50 # Assume it's period in milliseconds @@ -103,10 +104,8 @@ class TwinkleAnimation : animation.animation return false end - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Access parameters via virtual members var twinkle_speed = self.twinkle_speed @@ -199,10 +198,8 @@ class TwinkleAnimation : animation.animation return false end - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) var strip_length = self.engine.get_strip_length() diff --git a/lib/libesp32/berry_animation/src/animations/wave.be b/lib/libesp32/berry_animation/src/animations/wave.be index bc1b41954..bede3b090 100644 --- a/lib/libesp32/berry_animation/src/animations/wave.be +++ b/lib/libesp32/berry_animation/src/animations/wave.be @@ -87,6 +87,7 @@ class WaveAnimation : animation.animation # Handle parameter changes def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "wave_type" self._init_wave_table() # Regenerate wave table when wave type changes end @@ -199,6 +200,9 @@ class WaveAnimation : animation.animation return false end + # Auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) + var strip_length = self.engine.get_strip_length() var i = 0 while i < strip_length diff --git a/lib/libesp32/berry_animation/src/core/animation_base.be b/lib/libesp32/berry_animation/src/core/animation_base.be index 3c4a17d73..aa659a05e 100644 --- a/lib/libesp32/berry_animation/src/core/animation_base.be +++ b/lib/libesp32/berry_animation/src/core/animation_base.be @@ -9,14 +9,11 @@ class Animation : animation.parameterized_object # Non-parameter instance variables only - var start_time # Time when animation started (ms) (int) - var current_time # Current animation time (ms) (int) var opacity_frame # Frame buffer for opacity animation rendering # Parameter definitions static var PARAMS = { "name": {"type": "string", "default": "animation"}, # Optional name for the animation - "is_running": {"type": "bool", "default": false}, # Whether the animation is active "priority": {"min": 0, "default": 10}, # Rendering priority (higher = on top, 0-255) "duration": {"min": 0, "default": 0}, # Animation duration in ms (0 = infinite) "loop": {"type": "bool", "default": false}, # Whether to loop when duration is reached @@ -31,60 +28,7 @@ class Animation : animation.parameterized_object # Initialize parameter system with engine super(self).init(engine) - # Initialize non-parameter instance variables - self.start_time = 0 - self.current_time = 0 - end - - # Start/restart the animation (make it active and reset timing) - # - # @param start_time: int - Optional start time in milliseconds - # @return self for method chaining - def start(start_time) - # Set is_running directly in values map to avoid infinite loop - self.values["is_running"] = true - var actual_start_time = (start_time != nil) ? start_time : self.engine.time_ms - self.start_time = actual_start_time - self.current_time = self.start_time - - # Start/restart all value providers in parameters - self._start_value_providers(actual_start_time) - - return self - end - - # Helper method to start/restart all value providers in parameters - # - # @param time_ms: int - Time to pass to value provider start methods - def _start_value_providers(time_ms) - # Iterate through all parameter values - for param_value : self.values - # Check if the parameter value is a value provider - if animation.is_value_provider(param_value) - # Call start method if it exists (acts as restart) - param_value.start(time_ms) - end - end - end - - # Handle parameter changes - specifically for is_running to control start/stop - # - # @param name: string - Parameter name that changed - # @param value: any - New parameter value - def on_param_changed(name, value) - if name == "is_running" - if value == true - # Start the animation (but avoid infinite loop by not setting is_running again) - var actual_start_time = self.engine.time_ms - self.start_time = actual_start_time - self.current_time = self.start_time - # Start/restart all value providers in parameters - self._start_value_providers(actual_start_time) - # elif value == false - # Stop the animation - just set the internal state - # (is_running is already set to false by the parameter system) - end - end + # Initialize non-parameter instance variables (none currently) end # Update animation state based on current time @@ -93,14 +37,15 @@ class Animation : animation.parameterized_object # @param time_ms: int - Current time in milliseconds # @return bool - True if animation is still running, false if completed def update(time_ms) + # auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Access is_running via virtual member var current_is_running = self.is_running if !current_is_running return false end - self.current_time = time_ms - var elapsed = self.current_time - self.start_time + var elapsed = time_ms - self.start_time # Access parameters via virtual members var current_duration = self.duration @@ -131,17 +76,16 @@ class Animation : animation.parameterized_object # @param time_ms: int - Current time in milliseconds # @return bool - True if frame was modified, false otherwise def render(frame, time_ms) + # auto-fix time_ms and start_time + time_ms = self._fix_time_ms(time_ms) # Access is_running via virtual member var current_is_running = self.is_running if !current_is_running || frame == nil return false end - # Use engine time if not provided - time_ms = (time_ms != nil) ? time_ms : self.engine.time_ms - # Update animation state - self.update(time_ms) + self.update(time_ms) # TODO IS UPDATE NOT ALREADY CALLED BY ENGINE? # Access parameters via virtual members (auto-resolves ValueProviders) var current_color = self.color @@ -159,6 +103,7 @@ class Animation : animation.parameterized_object # @param frame: FrameBuffer - The frame buffer to render to # @param time_ms: int - Current time in milliseconds def post_render(frame, time_ms) + # no need to auto-fix time_ms and start_time # Handle opacity - can be number, frame buffer, or animation var current_opacity = self.opacity self._apply_opacity(frame, current_opacity, time_ms) diff --git a/lib/libesp32/berry_animation/src/core/animation_engine.be b/lib/libesp32/berry_animation/src/core/animation_engine.be index 846ce08a7..8e9875f4b 100644 --- a/lib/libesp32/berry_animation/src/core/animation_engine.be +++ b/lib/libesp32/berry_animation/src/core/animation_engine.be @@ -42,10 +42,10 @@ class AnimationEngine self.render_needed = false end - # Start the animation engine + # Run the animation engine # # @return self for method chaining - def start() + def run() if !self.is_running var now = tasmota.millis() self.is_running = true diff --git a/lib/libesp32/berry_animation/src/core/math_functions.be b/lib/libesp32/berry_animation/src/core/math_functions.be new file mode 100644 index 000000000..001a5bdf3 --- /dev/null +++ b/lib/libesp32/berry_animation/src/core/math_functions.be @@ -0,0 +1,120 @@ +# Mathematical Functions for Animation Framework +# +# This module provides mathematical functions that can be used in closures +# and throughout the animation framework. These functions are optimized for +# the animation use case and handle integer ranges appropriately. + +# This class contains only static functions +class AnimationMath + # Minimum of two or more values + # + # @param *args: number - Values to compare + # @return number - Minimum value + #@ solidify:min,weak + static def min(*args) + import math + return call(math.min, args) + end + + # Maximum of two or more values + # + # @param *args: number - Values to compare + # @return number - Maximum value + #@ solidify:max,weak + static def max(*args) + import math + return call(math.max, args) + end + + # Absolute value + # + # @param x: number - Input value + # @return number - Absolute value + #@ solidify:abs,weak + static def abs(x) + import math + return math.abs(x) + end + + # Round to nearest integer + # + # @param x: number - Input value + # @return int - Rounded value + #@ solidify:round,weak + static def round(x) + import math + return int(math.round(x)) + end + + # Square root with integer handling + # For integers, treats 1.0 as 255 (full scale) + # + # @param x: number - Input value + # @return number - Square root + #@ solidify:sqrt,weak + static def sqrt(x) + import math + # If x is an integer in 0-255 range, scale to 0-1 for sqrt, then back + if type(x) == 'int' && x >= 0 && x <= 255 + var normalized = x / 255.0 + return int(math.sqrt(normalized) * 255) + else + return math.sqrt(x) + end + end + + # Scale a value from one range to another using tasmota.scale_int + # + # @param v: number - Value to scale + # @param from_min: number - Source range minimum + # @param from_max: number - Source range maximum + # @param to_min: number - Target range minimum + # @param to_max: number - Target range maximum + # @return int - Scaled value + #@ solidify:scale,weak + static def scale(v, from_min, from_max, to_min, to_max) + return tasmota.scale_int(v, from_min, from_max, to_min, to_max) + end + + # Sine function using tasmota.sine_int (works on integers) + # Input angle is in 0-255 range (mapped to 0-360 degrees) + # Output is in -255 to 255 range (mapped from -1.0 to 1.0) + # + # @param angle: number - Angle in 0-255 range (0-360 degrees) + # @return int - Sine value in -255 to 255 range + #@ solidify:sin,weak + static 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) + + # Get sine value from -4096 to 4096 (representing -1.0 to 1.0) + var sine_val = tasmota.sine_int(tasmota_angle) + + # Map from -4096..4096 to -255..255 for integer output + return tasmota.scale_int(sine_val, -4096, 4096, -255, 255) + end + + # Cosine function using tasmota.sine_int with phase shift + # Input angle is in 0-255 range (mapped to 0-360 degrees) + # Output is in -255 to 255 range (mapped from -1.0 to 1.0) + # Note: This matches the oscillator COSINE behavior (starts at minimum, not maximum) + # + # @param angle: number - Angle in 0-255 range (0-360 degrees) + # @return int - Cosine value in -255 to 255 range + #@ solidify:cos,weak + static 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) + + # Get cosine value by shifting sine by -90 degrees (matches oscillator behavior) + var cosine_val = tasmota.sine_int(tasmota_angle - 8192) + + # Map from -4096..4096 to -255..255 for integer output + return tasmota.scale_int(cosine_val, -4096, 4096, -255, 255) + end +end + +# Export only the _math namespace containing all math functions +return { + '_math': AnimationMath +} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/core/parameterized_object.be b/lib/libesp32/berry_animation/src/core/parameterized_object.be index 7f9078e30..f559b4d44 100644 --- a/lib/libesp32/berry_animation/src/core/parameterized_object.be +++ b/lib/libesp32/berry_animation/src/core/parameterized_object.be @@ -11,9 +11,12 @@ class ParameterizedObject var values # Map storing all parameter values var engine # Reference to the animation engine + var start_time # Time when object started (ms) (int), value is set at first call to update() or render() # Static parameter definitions - should be overridden by subclasses - static var PARAMS = {} + static var PARAMS = { + "is_running": {"type": "bool", "default": false} # Whether the object is active + } # Initialize parameter system # @@ -348,10 +351,47 @@ class ParameterizedObject return self._resolve_parameter_value(param_name, time_ms) end - # Start the object - placeholder for future implementation + # Helper function to make sure both self.start_time and time_ms are valid # + # If time_ms is nil, replace with time_ms from engine + # Then initialize the value for self.start_time if not set already + # + # @param time_ms: int or nil - Current time in milliseconds + # @return time_ms: int (guaranteed) + def _fix_time_ms(time_ms) + if time_ms == nil + time_ms = self.engine.time_ms + end + if time_ms == nil + raise "value_error", "engine.time_ms should not be 'nil'" + end + if self.start_time == nil + self.start_time = time_ms + end + return time_ms + end + + # Start the object - base implementation + # + # `start(time_ms)` is called whenever an animation is about to be run + # by the animation engine directly or via a sequence manager. + # For value providers, start is typically not called because instances + # can be embedded in closures. So value providers must consider the first + # call to `produce_value()` as a start of their internal time reference. + # @param start_time: int - Optional start time in milliseconds # @return self for method chaining def start(time_ms) + if time_ms == nil + time_ms = self.engine.time_ms + end + if time_ms == nil + raise "value_error", "engine.time_ms should not be 'nil'" + end + if self.start_time != nil # reset time only if it was already started + self.start_time = time_ms + end + # Set is_running directly in values map to avoid infinite loop + self.values["is_running"] = true return self end @@ -361,7 +401,16 @@ class ParameterizedObject # @param name: string - Parameter name # @param value: any - New parameter value def on_param_changed(name, value) - # Default implementation does nothing + if name == "is_running" + if value == true + # Start the object (but avoid infinite loop by not setting is_running again) + # Call start method to handle start_time + self.start(nil) + elif value == false + # Stop the object - just set the internal state + # (is_running is already set to false by the parameter system) + end + end end # Equality operator for object identity comparison diff --git a/lib/libesp32/berry_animation/src/core/sequence_manager.be b/lib/libesp32/berry_animation/src/core/sequence_manager.be index f488c2b38..234f59b0e 100644 --- a/lib/libesp32/berry_animation/src/core/sequence_manager.be +++ b/lib/libesp32/berry_animation/src/core/sequence_manager.be @@ -197,7 +197,21 @@ class SequenceManager if step["type"] == "play" var anim = step["animation"] - self.engine.add(anim) + # Check if animation is already in the engine (avoid duplicate adds) + var animations = self.engine.get_animations() + var already_added = false + for existing_anim : animations + if existing_anim == anim + already_added = true + break + end + end + + if !already_added + self.engine.add(anim) + end + + # Always restart the animation to ensure proper timing anim.start(current_time) elif step["type"] == "wait" @@ -292,14 +306,34 @@ class SequenceManager end end - # Start the next animation BEFORE removing the previous one + # CRITICAL FIX: Handle the case where the next step is the SAME animation + # This prevents removing and re-adding the same animation, which causes black frames + var next_step = nil + var is_same_animation = false + if self.step_index < size(self.steps) - self.execute_current_step(current_time) + next_step = self.steps[self.step_index] + if next_step["type"] == "play" && previous_anim != nil + is_same_animation = (next_step["animation"] == previous_anim) + end end - # NOW it's safe to remove the previous animation (no gap) - if previous_anim != nil - self.engine.remove(previous_anim) + if is_same_animation + # Same animation continuing - don't remove/re-add, but DO restart for timing sync + self.step_start_time = current_time + # CRITICAL: Still need to restart the animation to sync with sequence timing + previous_anim.start(current_time) + else + # Different animation or no next animation + # Start the next animation BEFORE removing the previous one + if self.step_index < size(self.steps) + self.execute_current_step(current_time) + end + + # NOW it's safe to remove the previous animation (no gap) + if previous_anim != nil + self.engine.remove(previous_anim) + end end # Handle completion diff --git a/lib/libesp32/berry_animation/src/core/user_functions.be b/lib/libesp32/berry_animation/src/core/user_functions.be index cfc085ddd..63244a4f3 100644 --- a/lib/libesp32/berry_animation/src/core/user_functions.be +++ b/lib/libesp32/berry_animation/src/core/user_functions.be @@ -1,8 +1,6 @@ # User-Defined Functions Registry for Berry Animation Framework # This module manages external Berry functions that can be called from DSL code -#@ solidify:animation_user_functions,weak - # Register a Berry function for DSL use def register_user_function(name, func) animation._user_functions[name] = func diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index f44b04621..e1a3543d9 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -21,14 +21,14 @@ class SimpleDSLTranspiler var pos # Current token position var output # Generated Berry code lines var errors # Compilation errors - var run_statements # Collect all run statements for single engine.start() + var run_statements # Collect all run statements for single engine.run() var first_statement # Track if we're processing the first statement var strip_initialized # Track if strip was initialized var sequence_names # Track which names are sequences var symbol_table # Track created objects: name -> instance var indent_level # Track current indentation level for nested sequences var template_definitions # Track template definitions: name -> {params, body} - var has_template_calls # Track if we have template calls to trigger engine.start() + var has_template_calls # Track if we have template calls to trigger engine.run() # Static color mapping for named colors (helps with solidification) static var named_colors = { @@ -75,9 +75,9 @@ class SimpleDSLTranspiler # Don't check for existence during transpilation - trust that function will be available at runtime # User functions use positional parameters with engine as first argument - # In closure context, use self.engine to access the engine from the ClosureValueProvider + # In closure context, use engine parameter directly var args = self.process_function_arguments(true) - var full_args = args != "" ? f"self.engine, {args}" : "self.engine" + var full_args = args != "" ? f"engine, {args}" : "engine" return f"animation.get_user_function('{func_name}')({full_args})" else self.error("User functions must be called with parentheses: user.function_name()") @@ -96,8 +96,8 @@ class SimpleDSLTranspiler self.process_statement() end - # Generate single engine.start() call after all run statements - self.generate_engine_start() + # Generate single engine.run() call after all run statements + self.generate_engine_run() return size(self.errors) == 0 ? self.join_output() : nil except .. as e, msg @@ -784,8 +784,12 @@ class SimpleDSLTranspiler elif tok.type == animation_dsl.Token.IDENTIFIER && tok.value == "log" self.process_log_statement_fluent() - elif tok.type == animation_dsl.Token.KEYWORD && (tok.value == "reset" || tok.value == "restart") - self.process_reset_restart_statement_fluent() + elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "restart" + self.process_restart_statement_fluent() + + elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "reset" + self.error("'reset' command is no longer supported. Use 'restart' instead.") + self.skip_statement() elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "repeat" self.next() # skip 'repeat' @@ -827,12 +831,12 @@ class SimpleDSLTranspiler self.process_sequence_assignment_fluent() else # Unknown identifier in sequence - this is an error - self.error(f"Unknown command '{tok.value}' in sequence. Valid sequence commands are: play, wait, repeat, reset, restart, log, or property assignments (object.property = value)") + self.error(f"Unknown command '{tok.value}' in sequence. Valid sequence commands are: play, wait, repeat, restart, log, or property assignments (object.property = value)") self.skip_statement() end else # Unknown token type in sequence - this is an error - self.error(f"Invalid statement in sequence. Expected: play, wait, repeat, reset, restart, log, or property assignments") + self.error(f"Invalid statement in sequence. Expected: play, wait, repeat, restart, log, or property assignments") self.skip_statement() end end @@ -981,10 +985,10 @@ class SimpleDSLTranspiler self.add(log_code) end - # Helper method to process reset/restart statement using fluent style - def process_reset_restart_statement_fluent() - var keyword = self.current().value # "reset" or "restart" - self.next() # skip 'reset' or 'restart' + # Helper method to process restart statement using fluent style + def process_restart_statement_fluent() + var keyword = self.current().value # "restart" + self.next() # skip 'restart' # Expect the value provider identifier var val_name = self.expect_identifier() @@ -1076,7 +1080,7 @@ class SimpleDSLTranspiler var inline_comment = self.collect_inline_comment() self.add(f"{object_name}_template({full_args}){inline_comment}") - # Track that we have template calls to trigger engine.start() + # Track that we have template calls to trigger engine.run() self.has_template_calls = true else self.error(f"Standalone function calls are only supported for templates. '{object_name}' is not a template.") @@ -1274,7 +1278,7 @@ class SimpleDSLTranspiler # Check if this is a mathematical function if self.is_math_method(func_name) var args = self.process_function_arguments(true) - return f"self.{func_name}({args})" + return f"animation._math.{func_name}({args})" end # Special case for log function in expressions @@ -1286,7 +1290,7 @@ class SimpleDSLTranspiler # Check if this is a template call if self.template_definitions.contains(func_name) var args = self.process_function_arguments(true) - var full_args = args != "" ? f"self.engine, {args}" : "self.engine" + var full_args = args != "" ? f"engine, {args}" : "engine" return f"{func_name}_template({full_args})" end @@ -1379,7 +1383,7 @@ class SimpleDSLTranspiler return f"{object_ref}.{property_name}" else # Return a closure expression that will be wrapped by the caller if needed - return f"self.resolve({object_ref}, '{property_name}')" + return f"animation.resolve({object_ref}, '{property_name}')" end end @@ -1481,7 +1485,7 @@ class SimpleDSLTranspiler transformed_expr = string.replace(transformed_expr, " ", " ") end - var closure_code = f"def (self) return {transformed_expr} end" + var closure_code = f"def (engine) return {transformed_expr} end" # Return a closure value provider instance return f"animation.create_closure_value(engine, {closure_code})" @@ -1506,7 +1510,7 @@ class SimpleDSLTranspiler right_expr = string.replace(right_expr, " ", " ") end - var closure_code = f"def (self) return {left_expr} {op} {right_expr} end" + var closure_code = f"def (engine) return {left_expr} {op} {right_expr} end" # Return a closure value provider instance return f"animation.create_closure_value(engine, {closure_code})" @@ -1526,48 +1530,7 @@ class SimpleDSLTranspiler var result = expr_str var pos = 0 - # First pass: Transform mathematical function calls to self.method() calls - # Use a simple pattern-based approach that works with the existing logic - var search_pos = 0 - while true - var paren_pos = string.find(result, "(", search_pos) - if paren_pos < 0 - break - end - - # Find the function name before the parenthesis - var func_start = paren_pos - 1 - while func_start >= 0 && self.is_identifier_char(result[func_start]) - func_start -= 1 - end - func_start += 1 - - if func_start < paren_pos - var func_name = result[func_start..paren_pos-1] - - # Check if this is a mathematical method using dynamic introspection - if self.is_math_method(func_name) - # Check if it's not already prefixed with "self." - var prefix_start = func_start >= 5 ? func_start - 5 : 0 - var prefix = result[prefix_start..func_start-1] - if string.find(prefix, "self.") < 0 - # Replace the function call with self.method() - var before = func_start > 0 ? result[0..func_start-1] : "" - var after = result[func_start..] - result = before + "self." + after - search_pos = func_start + 5 + size(func_name) # Skip past "self." + func_name - else - search_pos = paren_pos + 1 - end - else - search_pos = paren_pos + 1 - end - else - search_pos = paren_pos + 1 - end - end - - # Second pass: Replace all user variables (ending with _) with resolve calls + # Replace all user variables (ending with _) with resolve calls pos = 0 while pos < size(result) var underscore_pos = string.find(result, "_", pos) @@ -1581,25 +1544,19 @@ class SimpleDSLTranspiler start_pos -= 1 end - # Check if this is a user variable (not preceded by "animation." or "self." or already inside a resolve call) + # Check if this is a user variable (not preceded by "animation." or already inside a resolve call) var is_user_var = true - if start_pos >= 13 - var check_start = start_pos >= 13 ? start_pos - 13 : 0 + if start_pos >= 18 + var check_start = start_pos >= 18 ? start_pos - 18 : 0 var prefix = result[check_start..start_pos-1] - if string.find(prefix, "self.resolve(") >= 0 + if string.find(prefix, "animation.resolve(") >= 0 is_user_var = false end end if is_user_var && start_pos >= 10 var check_start = start_pos >= 10 ? start_pos - 10 : 0 var prefix = result[check_start..start_pos-1] - if string.find(prefix, "animation.") >= 0 || string.find(prefix, "self.") >= 0 - is_user_var = false - end - elif is_user_var && start_pos >= 5 - var check_start = start_pos >= 5 ? start_pos - 5 : 0 - var prefix = result[check_start..start_pos-1] - if string.find(prefix, "self.") >= 0 + if string.find(prefix, "animation.") >= 0 is_user_var = false end end @@ -1612,7 +1569,7 @@ class SimpleDSLTranspiler var end_pos = underscore_pos + 1 if end_pos >= size(result) || !self.is_identifier_char(result[end_pos]) # Replace the variable with the resolve call - var replacement = f"self.resolve({var_name})" + var replacement = f"animation.resolve({var_name})" var before = start_pos > 0 ? result[0..start_pos-1] : "" var after = end_pos < size(result) ? result[end_pos..] : "" result = before + replacement + after @@ -1633,28 +1590,14 @@ class SimpleDSLTranspiler return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_' end - # Helper method to check if a function name is a mathematical method in ClosureValueProvider + # Helper method to check if a function name is a mathematical function def is_math_method(func_name) - import introspect try - # Get the ClosureValueProvider class from the animation module - var closure_provider_class = animation.closure_value - if closure_provider_class == nil - return false - end - - # Check if the method exists in the class - var members = introspect.members(closure_provider_class) - for member : members - if member == func_name - # Additional check: make sure it's actually a method (function) - var method = introspect.get(closure_provider_class, func_name) - return introspect.ismethod(method) || type(method) == 'function' - end - end - return false + import introspect + # Check if the function is registered in the animation._math map + return introspect.contains(animation._math, func_name) except .. as e, msg - # If introspection fails, return false to be safe + # If _math map doesn't exist or access fails, return false to be safe return false end end @@ -1684,7 +1627,7 @@ class SimpleDSLTranspiler if has_underscore && !has_operators && !has_paren && !has_animation_prefix # This looks like a simple user variable that might be a ValueProvider - return f"self.resolve({operand})" + return f"animation.resolve({operand})" else # For other expressions (literals, animation module calls, complex expressions), use as-is return operand @@ -1936,7 +1879,7 @@ class SimpleDSLTranspiler if self.is_math_method(func_name) # Mathematical functions use positional arguments, not named parameters var args = self.process_function_arguments(true) - return f"self.{func_name}({args})" # Prefix with self. for closure context + return f"animation._math.{func_name}({args})" # Math functions are under _math namespace end # Special case for log function in nested calls @@ -1950,7 +1893,7 @@ class SimpleDSLTranspiler if self.template_definitions.contains(func_name) # This is a template call - treat like user function var args = self.process_function_arguments(true) - var full_args = args != "" ? f"self.engine, {args}" : "self.engine" + var full_args = args != "" ? f"engine, {args}" : "engine" return f"{func_name}_template({full_args})" else # Check if this is a simple function call without named parameters @@ -2324,8 +2267,8 @@ class SimpleDSLTranspiler return report end - # Generate single engine.start() call for all run statements - def generate_engine_start() + # Generate single engine.run() call for all run statements + def generate_engine_run() if size(self.run_statements) == 0 && !self.has_template_calls return # No run statements or template calls, no need to start engine end @@ -2340,8 +2283,8 @@ class SimpleDSLTranspiler self.add(f"engine.add({name}_){comment}") end - # Single engine.start() call - self.add("engine.start()") + # Single engine.run() call + self.add("engine.run()") end # Basic event handler processing @@ -2654,14 +2597,14 @@ class SimpleDSLTranspiler return true # Valid value provider or animation elif type(marker) == "string" # It's some other type (variable, color, sequence, etc.) - self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be reset/restarted.") + self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be restarted.") return false else # It's an actual instance - check if it's a value provider or animation if isinstance(marker, animation.value_provider) || isinstance(marker, animation.animation) return true # Valid value provider or animation else - self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be reset/restarted.") + self.error(f"'{object_name}' in {context} statement is not a value provider or animation. Only value providers (like oscillators) and animations can be restarted.") return false end end diff --git a/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be b/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be index 331d1a26a..86a2b225d 100644 --- a/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/breathe_color_provider.be @@ -37,6 +37,7 @@ class BreatheColorProvider : animation.oscillator_value # Handle parameter changes - no need to sync oscillator min/max since they're fixed def on_param_changed(name, value) + super(self).on_param_changed(name, value) # Only handle curve_factor changes for oscillator form if name == "curve_factor" # For curve_factor = 1, use pure cosine 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 7d79d2396..b58b081cd 100644 --- a/lib/libesp32/berry_animation/src/providers/closure_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/closure_value_provider.be @@ -30,33 +30,12 @@ class ClosureValueProvider : animation.value_provider # @param name: string - Parameter name # @param value: any - New parameter value def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "closure" self._closure = value end end - # Helper method to resolve a value that can be either static or from a value provider - # This is equivalent to 'resolve_param' but with a shorter name - # and available at first dereferencing of method name (hence faster) - # - # @param value: any - Static value, value provider instance, or parameterized object - # @param param_name: string - Parameter name for specific produce_value() method lookup - # @return any - The resolved value (static, from provider, or from object parameter) - def resolve(value, param_name) - if animation.is_value_provider(value) - return value.produce_value(param_name, self.engine.time_ms) - elif value != nil && isinstance(value, animation.parameterized_object) - # Handle parameterized objects (animations, etc.) by accessing their parameters - # Check that param_name is not nil to prevent runtime errors - if param_name == nil - raise "value_error", "Parameter name cannot be nil when resolving object parameter" - end - return value.get_param_value(param_name, self.engine.time_ms) - else - return value - end - end - # Produce a value by calling the stored closure # # @param name: string - Parameter name being requested @@ -69,112 +48,7 @@ class ClosureValueProvider : animation.value_provider end # Call the closure with the parameter self, name and time - return closure(self, name, time_ms) - end - - # Mathematical helper methods for use in closures - - # Minimum of two or more values - # - # @param a: number - First value - # @param b: number - Second value - # @param *args: number - Additional values (optional) - # @return number - Minimum value - def min(*args) - import math - return call(math.min, args) - end - - # Maximum of two or more values - # - # @param a: number - First value - # @param b: number - Second value - # @param *args: number - Additional values (optional) - # @return number - Maximum value - def max(*args) - import math - return call(math.max, args) - end - - # Absolute value - # - # @param x: number - Input value - # @return number - Absolute value - def abs(x) - import math - return math.abs(x) - end - - # Round to nearest integer - # - # @param x: number - Input value - # @return int - Rounded value - def round(x) - import math - return int(math.round(x)) - end - - # Square root with integer handling - # For integers, treats 1.0 as 255 (full scale) - # - # @param x: number - Input value - # @return number - Square root - def sqrt(x) - import math - # If x is an integer in 0-255 range, scale to 0-1 for sqrt, then back - if type(x) == 'int' && x >= 0 && x <= 255 - var normalized = x / 255.0 - return int(math.sqrt(normalized) * 255) - else - return math.sqrt(x) - end - end - - # Scale a value from one range to another using tasmota.scale_int - # - # @param v: number - Value to scale - # @param from_min: number - Source range minimum - # @param from_max: number - Source range maximum - # @param to_min: number - Target range minimum - # @param to_max: number - Target range maximum - # @return int - Scaled value - def scale(v, from_min, from_max, to_min, to_max) - return tasmota.scale_int(v, from_min, from_max, to_min, to_max) - end - - # Sine function using tasmota.sine_int (works on integers) - # Input angle is in 0-255 range (mapped to 0-360 degrees) - # Output is in -255 to 255 range (mapped from -1.0 to 1.0) - # - # @param angle: number - Angle in 0-255 range (0-360 degrees) - # @return int - Sine value in -255 to 255 range - 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) - - # Get sine value from -4096 to 4096 (representing -1.0 to 1.0) - var sine_val = tasmota.sine_int(tasmota_angle) - - # Map from -4096..4096 to -255..255 for integer output - return tasmota.scale_int(sine_val, -4096, 4096, -255, 255) - end - - # Cosine function using tasmota.sine_int with phase shift - # Input angle is in 0-255 range (mapped to 0-360 degrees) - # Output is in -255 to 255 range (mapped from -1.0 to 1.0) - # Note: This matches the oscillator COSINE behavior (starts at minimum, not maximum) - # - # @param angle: number - Angle in 0-255 range (0-360 degrees) - # @return int - Cosine value in -255 to 255 range - 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) - - # Get cosine value by shifting sine by -90 degrees (matches oscillator behavior) - var cosine_val = tasmota.sine_int(tasmota_angle - 8192) - - # Map from -4096..4096 to -255..255 for integer output - return tasmota.scale_int(cosine_val, -4096, 4096, -255, 255) + return closure(self.engine, name, time_ms) end # String representation for debugging @@ -198,5 +72,28 @@ def create_closure_value(engine, closure) return provider end +# Helper method to resolve a value that can be either static or from a value provider +# This is equivalent to 'resolve_param' but with a shorter name +# and available in animation module +# +# @param value: any - Static value, value provider instance, or parameterized object +# @param param_name: string - Parameter name for specific produce_value() method lookup +# @return any - The resolved value (static, from provider, or from object parameter) +def animation_resolve(value, param_name, time_ms) + if animation.is_value_provider(value) + return value.produce_value(param_name, time_ms) + elif value != nil && isinstance(value, animation.parameterized_object) + # Handle parameterized objects (animations, etc.) by accessing their parameters + # Check that param_name is not nil to prevent runtime errors + if param_name == nil + raise "value_error", "Parameter name cannot be nil when resolving object parameter" + end + return value.get_param_value(param_name) + else + return value + end +end + return {'closure_value': ClosureValueProvider, - 'create_closure_value': create_closure_value} \ No newline at end of file + 'create_closure_value': create_closure_value, + 'resolve': animation_resolve} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be index 26a3233ee..ef3834661 100644 --- a/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/color_cycle_color_provider.be @@ -86,6 +86,7 @@ class ColorCycleColorProvider : animation.color_provider # @param name: string - Name of the parameter that changed # @param value: any - New value of the parameter def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "palette_size" # palette_size is read-only - restore the actual value and raise an exception self.values["palette_size"] = self._get_palette_size() diff --git a/lib/libesp32/berry_animation/src/providers/composite_color_provider.be b/lib/libesp32/berry_animation/src/providers/composite_color_provider.be index 44047ba85..1e17a110b 100644 --- a/lib/libesp32/berry_animation/src/providers/composite_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/composite_color_provider.be @@ -136,11 +136,7 @@ class CompositeColorProvider : animation.color_provider # String representation of the provider def tostring() - try return f"CompositeColorProvider(providers={size(self.providers)}, blend_mode={self.blend_mode})" - except .. - return "CompositeColorProvider(uninitialized)" - end end end 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 7171565cf..9e98e968f 100644 --- a/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/oscillator_value_provider.be @@ -24,7 +24,6 @@ var BOUNCE = 9 #@ solidify:OscillatorValueProvider,weak class OscillatorValueProvider : animation.value_provider # Non-parameter instance variables only - var origin # origin time in ms for cycle calculation var value # current calculated value # Static array for better solidification (moved from inline array) @@ -47,19 +46,20 @@ class OscillatorValueProvider : animation.value_provider super(self).init(engine) # Initialize parameter system # Initialize non-parameter instance variables - self.origin = 0 # Will be set when `start` is called self.value = 0 # Will be calculated on first produce_value call end # Start/restart the oscillator at a specific time # - # @param time_ms: int - Time in milliseconds to set as origin (optional, uses engine time if nil) + # start() is typically not called at beginning of animations for value providers. + # The start_time is set at the first call to produce_value(). + # This method is mainly aimed at restarting the value provider start_time + # via the `restart` keyword in DSL. + # + # @param time_ms: int - Time in milliseconds to set as start_time (optional, uses engine time if nil) # @return self for method chaining def start(time_ms) - if time_ms == nil - time_ms = self.engine.time_ms - end - self.origin = time_ms + super(self).start(time_ms) return self end @@ -77,12 +77,15 @@ class OscillatorValueProvider : animation.value_provider var phase = self.phase var duty_cycle = self.duty_cycle + # Ensure time_ms is valid and initialize start_time if needed + time_ms = self._fix_time_ms(time_ms) + if duration == nil || duration <= 0 return min_value end - - # Calculate elapsed time since origin - var past = time_ms - self.origin + + # Calculate elapsed time since start_time + var past = time_ms - self.start_time if past < 0 past = 0 end @@ -92,7 +95,7 @@ class OscillatorValueProvider : animation.value_provider # Handle cycle wrapping if past >= duration var cycles = past / duration - self.origin += cycles * duration + self.start_time += cycles * duration past = past % duration end diff --git a/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be b/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be index 2e9acb985..6eadf6f3c 100644 --- a/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be @@ -15,7 +15,6 @@ class RichPaletteColorProvider : animation.color_provider var slots # Number of slots in the palette var current_color # Current interpolated color (calculated during update) var light_state # light_state instance for proper color calculations - var cycle_start # Time when the animation cycle started # Parameter definitions static var PARAMS = { @@ -35,7 +34,6 @@ class RichPaletteColorProvider : animation.color_provider # Initialize non-parameter instance variables self.current_color = 0xFFFFFFFF - self.cycle_start = self.engine.time_ms # Initialize cycle start time self.slots = 0 # Create light_state instance for proper color calculations (reuse from Animate_palette) @@ -48,6 +46,7 @@ class RichPaletteColorProvider : animation.color_provider # @param name: string - Name of the parameter that changed # @param value: any - New value of the parameter def on_param_changed(name, value) + super(self).on_param_changed(name, value) if name == "range_min" || name == "range_max" || name == "cycle_period" || name == "palette" if (self.slots_arr != nil) || (self.value_arr != nil) # only if they were already computed @@ -58,14 +57,14 @@ class RichPaletteColorProvider : animation.color_provider # Start/restart the animation cycle at a specific time # - # @param time_ms: int - Time in milliseconds to set as cycle start (optional, uses engine time if nil) + # @param time_ms: int - Time in milliseconds to set as start_time (optional, uses engine time if nil) # @return self for method chaining def start(time_ms) # Compute arrays if they were not yet initialized if (self.slots_arr == nil) && (self.value_arr == nil) self._recompute_palette() end - self.cycle_start = (time_ms != nil) ? time_ms : self.engine.time_ms + super(self).start(time_ms) return self end @@ -178,6 +177,9 @@ class RichPaletteColorProvider : animation.color_provider # @param time_ms: int - Current time in milliseconds # @return int - Color in ARGB format (0xAARRGGBB) def produce_value(name, time_ms) + # Ensure time_ms is valid and initialize start_time if needed + time_ms = self._fix_time_ms(time_ms) + if (self.slots_arr == nil) && (self.value_arr == nil) self._recompute_palette() end @@ -210,8 +212,8 @@ class RichPaletteColorProvider : animation.color_provider return final_color end - # Calculate position in cycle using cycle_start - var elapsed = time_ms - self.cycle_start + # Calculate position in cycle using start_time + var elapsed = time_ms - self.start_time var past = elapsed % cycle_period # Find slot (exact algorithm from Animate_palette) diff --git a/lib/libesp32/berry_animation/src/providers/static_color_provider.be b/lib/libesp32/berry_animation/src/providers/static_color_provider.be index df7e33339..0fced8324 100644 --- a/lib/libesp32/berry_animation/src/providers/static_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/static_color_provider.be @@ -34,11 +34,7 @@ class StaticColorProvider : animation.color_provider # String representation of the provider def tostring() - try - return f"StaticColorProvider(color=0x{self.color:08X})" - except .. - return "StaticColorProvider(color=unset)" - end + return f"StaticColorProvider(color=0x{self.color:08X})" end end diff --git a/lib/libesp32/berry_animation/src/providers/static_value_provider.be b/lib/libesp32/berry_animation/src/providers/static_value_provider.be index 07a8e41c5..d702382b2 100644 --- a/lib/libesp32/berry_animation/src/providers/static_value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/static_value_provider.be @@ -54,11 +54,7 @@ class StaticValueProvider : animation.value_provider # String representation of the provider def tostring() - try - return f"StaticValueProvider(value={self.value})" - except .. - return "StaticValueProvider(value=unset)" - end + return f"StaticValueProvider(value={self.value})" end end diff --git a/lib/libesp32/berry_animation/src/providers/strip_length_provider.be b/lib/libesp32/berry_animation/src/providers/strip_length_provider.be index b3d90dc42..d2ef63595 100644 --- a/lib/libesp32/berry_animation/src/providers/strip_length_provider.be +++ b/lib/libesp32/berry_animation/src/providers/strip_length_provider.be @@ -19,20 +19,12 @@ class StripLengthProvider : animation.value_provider # @param time_ms: int - Current time in milliseconds (ignored) # @return int - The strip length in pixels def produce_value(name, time_ms) - if self.engine == nil - return 0 - end - return self.engine.width + return self.engine ? self.engine.width : 0 end # String representation of the provider def tostring() - try - var length = self.engine != nil ? self.engine.width : 0 - return f"StripLengthProvider(length={length})" - except .. - return "StripLengthProvider(length=unknown)" - end + return f"StripLengthProvider(length={self.engine ? self.engine.width :: 'unknown'})" end end diff --git a/lib/libesp32/berry_animation/src/providers/value_provider.be b/lib/libesp32/berry_animation/src/providers/value_provider.be index 851196723..6265c4373 100644 --- a/lib/libesp32/berry_animation/src/providers/value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/value_provider.be @@ -32,6 +32,10 @@ class ValueProvider : animation.parameterized_object # special value providers that return coordinated distinct # values for different parameter names. # + # For value providers, start is typically not called because instances + # can be embedded in closures. So value providers must consider the first + # call to `produce_value()` as a start of their internal time reference. + # # @param name: string - Parameter name being requested # @param time_ms: int - Current time in milliseconds # @return any - Value appropriate for the parameter type diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index c1a2350e7..1de2ed6f8 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -3,25 +3,26 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'BreatheAnimation' ktab size: 17, total: 24 (saved 56 bytes) -static const bvalue be_ktab_class_BreatheAnimation[17] = { - /* K0 */ be_nested_str_weak(base_color), - /* K1 */ be_nested_str_weak(breathe_provider), - /* K2 */ be_nested_str_weak(min_brightness), - /* K3 */ be_nested_str_weak(max_brightness), - /* K4 */ be_nested_str_weak(period), - /* K5 */ be_nested_str_weak(duration), - /* K6 */ be_nested_str_weak(curve_factor), - /* K7 */ be_nested_str_weak(BreatheAnimation_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20period_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K8 */ be_nested_str_weak(priority), - /* K9 */ be_nested_str_weak(is_running), - /* K10 */ be_nested_str_weak(init), - /* K11 */ be_nested_str_weak(animation), - /* K12 */ be_nested_str_weak(breathe_color), - /* K13 */ be_nested_str_weak(color), - /* K14 */ be_nested_str_weak(start), - /* K15 */ be_nested_str_weak(engine), - /* K16 */ be_nested_str_weak(time_ms), +// compact class 'BreatheAnimation' ktab size: 18, total: 25 (saved 56 bytes) +static const bvalue be_ktab_class_BreatheAnimation[18] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(base_color), + /* K2 */ be_nested_str_weak(breathe_provider), + /* K3 */ be_nested_str_weak(min_brightness), + /* K4 */ be_nested_str_weak(max_brightness), + /* K5 */ be_nested_str_weak(period), + /* K6 */ be_nested_str_weak(duration), + /* K7 */ be_nested_str_weak(curve_factor), + /* K8 */ be_nested_str_weak(BreatheAnimation_X28base_color_X3D0x_X2508x_X2C_X20min_brightness_X3D_X25s_X2C_X20max_brightness_X3D_X25s_X2C_X20period_X3D_X25s_X2C_X20curve_factor_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K9 */ be_nested_str_weak(priority), + /* K10 */ be_nested_str_weak(is_running), + /* K11 */ be_nested_str_weak(init), + /* K12 */ be_nested_str_weak(animation), + /* K13 */ be_nested_str_weak(breathe_color), + /* K14 */ be_nested_str_weak(color), + /* K15 */ be_nested_str_weak(start), + /* K16 */ be_nested_str_weak(engine), + /* K17 */ be_nested_str_weak(time_ms), }; @@ -32,7 +33,7 @@ extern const bclass be_class_BreatheAnimation; ********************************************************************/ be_local_closure(class_BreatheAnimation_on_param_changed, /* name */ be_nested_proto( - 4, /* nstack */ + 7, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -43,32 +44,39 @@ be_local_closure(class_BreatheAnimation_on_param_changed, /* name */ &be_ktab_class_BreatheAnimation, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x900E0002, // 0003 SETMBR R3 K0 R2 - 0x70020012, // 0004 JMP #0018 - 0x1C0C0302, // 0005 EQ R3 R1 K2 - 0x780E0002, // 0006 JMPF R3 #000A - 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x900E0402, // 0008 SETMBR R3 K2 R2 - 0x7002000D, // 0009 JMP #0018 - 0x1C0C0303, // 000A EQ R3 R1 K3 - 0x780E0002, // 000B JMPF R3 #000F - 0x880C0101, // 000C GETMBR R3 R0 K1 - 0x900E0602, // 000D SETMBR R3 K3 R2 - 0x70020008, // 000E JMP #0018 - 0x1C0C0304, // 000F EQ R3 R1 K4 - 0x780E0002, // 0010 JMPF R3 #0014 - 0x880C0101, // 0011 GETMBR R3 R0 K1 - 0x900E0A02, // 0012 SETMBR R3 K5 R2 - 0x70020003, // 0013 JMP #0018 - 0x1C0C0306, // 0014 EQ R3 R1 K6 - 0x780E0001, // 0015 JMPF R3 #0018 - 0x880C0101, // 0016 GETMBR R3 R0 K1 - 0x900E0C02, // 0017 SETMBR R3 K6 R2 - 0x80000000, // 0018 RET 0 + ( &(const binstruction[32]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x780E0002, // 0008 JMPF R3 #000C + 0x880C0102, // 0009 GETMBR R3 R0 K2 + 0x900E0202, // 000A SETMBR R3 K1 R2 + 0x70020012, // 000B JMP #001F + 0x1C0C0303, // 000C EQ R3 R1 K3 + 0x780E0002, // 000D JMPF R3 #0011 + 0x880C0102, // 000E GETMBR R3 R0 K2 + 0x900E0602, // 000F SETMBR R3 K3 R2 + 0x7002000D, // 0010 JMP #001F + 0x1C0C0304, // 0011 EQ R3 R1 K4 + 0x780E0002, // 0012 JMPF R3 #0016 + 0x880C0102, // 0013 GETMBR R3 R0 K2 + 0x900E0802, // 0014 SETMBR R3 K4 R2 + 0x70020008, // 0015 JMP #001F + 0x1C0C0305, // 0016 EQ R3 R1 K5 + 0x780E0002, // 0017 JMPF R3 #001B + 0x880C0102, // 0018 GETMBR R3 R0 K2 + 0x900E0C02, // 0019 SETMBR R3 K6 R2 + 0x70020003, // 001A JMP #001F + 0x1C0C0307, // 001B EQ R3 R1 K7 + 0x780E0001, // 001C JMPF R3 #001F + 0x880C0102, // 001D GETMBR R3 R0 K2 + 0x900E0E02, // 001E SETMBR R3 K7 R2 + 0x80000000, // 001F RET 0 }) ) ); @@ -93,14 +101,14 @@ be_local_closure(class_BreatheAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[11]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080007, // 0001 LDCONST R2 K7 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 - 0x881C0106, // 0006 GETMBR R7 R0 K6 - 0x88200108, // 0007 GETMBR R8 R0 K8 - 0x88240109, // 0008 GETMBR R9 R0 K9 + 0x58080008, // 0001 LDCONST R2 K8 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x88140104, // 0004 GETMBR R5 R0 K4 + 0x88180105, // 0005 GETMBR R6 R0 K5 + 0x881C0107, // 0006 GETMBR R7 R0 K7 + 0x88200109, // 0007 GETMBR R8 R0 K9 + 0x8824010A, // 0008 GETMBR R9 R0 K10 0x7C041000, // 0009 CALL R1 8 0x80040200, // 000A RET 1 R1 }) @@ -129,16 +137,16 @@ be_local_closure(class_BreatheAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 + 0x8C08050B, // 0003 GETMET R2 R2 K11 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0xB80A1600, // 0006 GETNGBL R2 K11 - 0x8C08050C, // 0007 GETMET R2 R2 K12 + 0xB80A1800, // 0006 GETNGBL R2 K12 + 0x8C08050D, // 0007 GETMET R2 R2 K13 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 - 0x90020202, // 000A SETMBR R0 K1 R2 - 0x88080101, // 000B GETMBR R2 R0 K1 - 0x90021A02, // 000C SETMBR R0 K13 R2 + 0x90020402, // 000A SETMBR R0 K2 R2 + 0x88080102, // 000B GETMBR R2 R0 K2 + 0x90021C02, // 000C SETMBR R0 K14 R2 0x80000000, // 000D RET 0 }) ) @@ -166,7 +174,7 @@ be_local_closure(class_BreatheAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050E, // 0003 GETMET R2 R2 K14 + 0x8C08050F, // 0003 GETMET R2 R2 K15 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C080000, // 0006 LDNIL R2 @@ -174,10 +182,10 @@ be_local_closure(class_BreatheAnimation_start, /* name */ 0x780A0001, // 0008 JMPF R2 #000B 0x5C080200, // 0009 MOVE R2 R1 0x70020001, // 000A JMP #000D - 0x8808010F, // 000B GETMBR R2 R0 K15 - 0x88080510, // 000C GETMBR R2 R2 K16 - 0x880C0101, // 000D GETMBR R3 R0 K1 - 0x8C0C070E, // 000E GETMET R3 R3 K14 + 0x88080110, // 000B GETMBR R2 R0 K16 + 0x88080511, // 000C GETMBR R2 R2 K17 + 0x880C0102, // 000D GETMBR R3 R0 K2 + 0x8C0C070F, // 000E GETMET R3 R3 K15 0x5C140400, // 000F MOVE R5 R2 0x7C0C0400, // 0010 CALL R3 2 0x80040000, // 0011 RET 1 R0 @@ -346,8 +354,8 @@ be_local_closure(set_event_active, /* name */ ); /*******************************************************************/ -// compact class 'SparkleAnimation' ktab size: 42, total: 76 (saved 272 bytes) -static const bvalue be_ktab_class_SparkleAnimation[42] = { +// compact class 'SparkleAnimation' ktab size: 43, total: 77 (saved 272 bytes) +static const bvalue be_ktab_class_SparkleAnimation[43] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(_random), /* K2 */ be_nested_str_weak(init), @@ -384,12 +392,13 @@ static const bvalue be_ktab_class_SparkleAnimation[42] = { /* K33 */ be_const_int(1103515245), /* K34 */ be_const_int(2147483647), /* K35 */ be_nested_str_weak(resize), - /* K36 */ be_nested_str_weak(width), - /* K37 */ be_nested_str_weak(set_pixel_color), - /* K38 */ be_nested_str_weak(is_color_provider), - /* K39 */ be_nested_str_weak(get_color_for_value), - /* K40 */ be_nested_str_weak(get_param_value), - /* K41 */ be_nested_str_weak(start), + /* K36 */ be_nested_str_weak(_fix_time_ms), + /* K37 */ be_nested_str_weak(width), + /* K38 */ be_nested_str_weak(set_pixel_color), + /* K39 */ be_nested_str_weak(is_color_provider), + /* K40 */ be_nested_str_weak(get_color_for_value), + /* K41 */ be_nested_str_weak(get_param_value), + /* K42 */ be_nested_str_weak(start), }; @@ -488,26 +497,29 @@ be_local_closure(class_SparkleAnimation_update, /* name */ &be_ktab_class_SparkleAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ + ( &(const binstruction[22]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 0x8C08050B, // 0003 GETMET R2 R2 K11 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x540A0020, // 0006 LDINT R2 33 - 0x880C0109, // 0007 GETMBR R3 R0 K9 - 0x040C0203, // 0008 SUB R3 R1 R3 - 0x140C0602, // 0009 LT R3 R3 R2 - 0x780E0001, // 000A JMPF R3 #000D - 0x500C0200, // 000B LDBOOL R3 1 0 - 0x80040600, // 000C RET 1 R3 - 0x90021201, // 000D SETMBR R0 K9 R1 - 0x8C0C010C, // 000E GETMET R3 R0 K12 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C0C0400, // 0010 CALL R3 2 - 0x500C0200, // 0011 LDBOOL R3 1 0 - 0x80040600, // 0012 RET 1 R3 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x540A0020, // 0009 LDINT R2 33 + 0x880C0109, // 000A GETMBR R3 R0 K9 + 0x040C0203, // 000B SUB R3 R1 R3 + 0x140C0602, // 000C LT R3 R3 R2 + 0x780E0001, // 000D JMPF R3 #0010 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + 0x90021201, // 0010 SETMBR R0 K9 R1 + 0x8C0C010C, // 0011 GETMET R3 R0 K12 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x500C0200, // 0014 LDBOOL R3 1 0 + 0x80040600, // 0015 RET 1 R3 }) ) ); @@ -786,7 +798,7 @@ be_local_closure(class_SparkleAnimation_render, /* name */ &be_ktab_class_SparkleAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ + ( &(const binstruction[29]) { /* code */ 0x880C0116, // 0000 GETMBR R3 R0 K22 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -794,24 +806,28 @@ be_local_closure(class_SparkleAnimation_render, /* name */ 0x780E0001, // 0004 JMPF R3 #0007 0x500C0000, // 0005 LDBOOL R3 0 0 0x80040600, // 0006 RET 1 R3 - 0x880C0104, // 0007 GETMBR R3 R0 K4 - 0x8C0C0717, // 0008 GETMET R3 R3 K23 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100000, // 000A LDCONST R4 K0 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x88140324, // 000D GETMBR R5 R1 K36 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C140325, // 0010 GETMET R5 R1 K37 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200106, // 0012 GETMBR R8 R0 K6 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x0010091C, // 0015 ADD R4 R4 K28 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 + 0x8C0C0124, // 0007 GETMET R3 R0 K36 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0104, // 000B GETMBR R3 R0 K4 + 0x8C0C0717, // 000C GETMET R3 R3 K23 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100000, // 000E LDCONST R4 K0 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x88140325, // 0011 GETMBR R5 R1 K37 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C140326, // 0014 GETMET R5 R1 K38 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200106, // 0016 GETMBR R8 R0 K6 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x0010091C, // 0019 ADD R4 R4 K28 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 }) ) ); @@ -838,21 +854,21 @@ be_local_closure(class_SparkleAnimation__update_sparkle_color, /* name */ 0x5411FFFE, // 0000 LDINT R4 -1 0x8814010E, // 0001 GETMBR R5 R0 K14 0xB81A1E00, // 0002 GETNGBL R6 K15 - 0x8C180D26, // 0003 GETMET R6 R6 K38 + 0x8C180D27, // 0003 GETMET R6 R6 K39 0x5C200A00, // 0004 MOVE R8 R5 0x7C180400, // 0005 CALL R6 2 0x781A0009, // 0006 JMPF R6 #0011 - 0x88180B27, // 0007 GETMBR R6 R5 K39 + 0x88180B28, // 0007 GETMBR R6 R5 K40 0x4C1C0000, // 0008 LDNIL R7 0x20180C07, // 0009 NE R6 R6 R7 0x781A0005, // 000A JMPF R6 #0011 - 0x8C180B27, // 000B GETMET R6 R5 K39 + 0x8C180B28, // 000B GETMET R6 R5 K40 0x5C200400, // 000C MOVE R8 R2 0x58240000, // 000D LDCONST R9 K0 0x7C180600, // 000E CALL R6 3 0x5C100C00, // 000F MOVE R4 R6 0x70020006, // 0010 JMP #0018 - 0x8C180128, // 0011 GETMET R6 R0 K40 + 0x8C180129, // 0011 GETMET R6 R0 K41 0x5820000E, // 0012 LDCONST R8 K14 0x54260009, // 0013 LDINT R9 10 0x08240209, // 0014 MUL R9 R1 R9 @@ -938,7 +954,7 @@ be_local_closure(class_SparkleAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080529, // 0003 GETMET R2 R2 K41 + 0x8C08052A, // 0003 GETMET R2 R2 K42 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x88080104, // 0006 GETMBR R2 R0 K4 @@ -1032,46 +1048,167 @@ be_local_class(SparkleAnimation, be_str_weak(SparkleAnimation) ); +extern const bclass be_class_PaletteWaveAnimation; + /******************************************************************** -** Solidified function: shift_fast_scroll +** Solidified function: init ********************************************************************/ -be_local_closure(shift_fast_scroll, /* name */ +be_local_closure(class_PaletteWaveAnimation_init, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 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[ 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), + ( &(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(shift_fast_scroll), + be_str_weak(init), &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 + ( &(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( + 18, /* 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 + 0xB82E0C00, // 002B GETNGBL R11 K6 + 0x8C2C170B, // 002C GETMET R11 R11 K11 + 0x5C341400, // 002D MOVE R13 R10 + 0x5439EFFF, // 002E LDINT R14 -4096 + 0x543E0FFF, // 002F LDINT R15 4096 + 0x58400008, // 0030 LDCONST R16 K8 + 0x544600FE, // 0031 LDINT R17 255 + 0x7C2C0C00, // 0032 CALL R11 6 + 0x88300104, // 0033 GETMBR R12 R0 K4 + 0x98300E0B, // 0034 SETIDX R12 R7 R11 + 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) +); + /******************************************************************** ** Solidified function: animation_init_strip ********************************************************************/ @@ -1144,15 +1281,15 @@ be_local_closure(animation_init_strip, /* name */ // 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), - /* K1 */ be_nested_str_weak(cycle_period), - /* K2 */ be_nested_str_weak(transition_type), - /* K3 */ be_nested_str_weak(brightness), - /* K4 */ be_nested_str_weak(range_min), - /* K5 */ be_nested_str_weak(range_max), - /* K6 */ be_nested_str_weak(color_provider), - /* K7 */ be_nested_str_weak(set_param), - /* K8 */ be_nested_str_weak(on_param_changed), + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(palette), + /* K2 */ be_nested_str_weak(cycle_period), + /* K3 */ be_nested_str_weak(transition_type), + /* K4 */ be_nested_str_weak(brightness), + /* K5 */ be_nested_str_weak(range_min), + /* K6 */ be_nested_str_weak(range_max), + /* K7 */ be_nested_str_weak(color_provider), + /* K8 */ be_nested_str_weak(set_param), /* K9 */ be_nested_str_weak(RichPaletteAnimation_X28_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20brightness_X3D_X25s_X29), /* K10 */ be_nested_str_weak(name), /* K11 */ be_nested_str_weak(RichPaletteAnimation_X28uninitialized_X29), @@ -1183,33 +1320,40 @@ be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ &be_ktab_class_RichPaletteAnimation, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x740E0009, // 0001 JMPT R3 #000C - 0x1C0C0301, // 0002 EQ R3 R1 K1 - 0x740E0007, // 0003 JMPT R3 #000C - 0x1C0C0302, // 0004 EQ R3 R1 K2 - 0x740E0005, // 0005 JMPT R3 #000C - 0x1C0C0303, // 0006 EQ R3 R1 K3 - 0x740E0003, // 0007 JMPT R3 #000C - 0x1C0C0304, // 0008 EQ R3 R1 K4 - 0x740E0001, // 0009 JMPT R3 #000C - 0x1C0C0305, // 000A EQ R3 R1 K5 - 0x780E0005, // 000B JMPF R3 #0012 - 0x880C0106, // 000C GETMBR R3 R0 K6 - 0x8C0C0707, // 000D GETMET R3 R3 K7 - 0x5C140200, // 000E MOVE R5 R1 - 0x5C180400, // 000F MOVE R6 R2 - 0x7C0C0600, // 0010 CALL R3 3 - 0x70020006, // 0011 JMP #0019 - 0x600C0003, // 0012 GETGBL R3 G3 - 0x5C100000, // 0013 MOVE R4 R0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0708, // 0015 GETMET R3 R3 K8 - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C0C0600, // 0018 CALL R3 3 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[33]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x740E0009, // 0008 JMPT R3 #0013 + 0x1C0C0302, // 0009 EQ R3 R1 K2 + 0x740E0007, // 000A JMPT R3 #0013 + 0x1C0C0303, // 000B EQ R3 R1 K3 + 0x740E0005, // 000C JMPT R3 #0013 + 0x1C0C0304, // 000D EQ R3 R1 K4 + 0x740E0003, // 000E JMPT R3 #0013 + 0x1C0C0305, // 000F EQ R3 R1 K5 + 0x740E0001, // 0010 JMPT R3 #0013 + 0x1C0C0306, // 0011 EQ R3 R1 K6 + 0x780E0005, // 0012 JMPF R3 #0019 + 0x880C0107, // 0013 GETMBR R3 R0 K7 + 0x8C0C0708, // 0014 GETMET R3 R3 K8 + 0x5C140200, // 0015 MOVE R5 R1 + 0x5C180400, // 0016 MOVE R6 R2 + 0x7C0C0600, // 0017 CALL R3 3 + 0x70020006, // 0018 JMP #0020 + 0x600C0003, // 0019 GETGBL R3 G3 + 0x5C100000, // 001A MOVE R4 R0 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C0C0700, // 001C GETMET R3 R3 K0 + 0x5C140200, // 001D MOVE R5 R1 + 0x5C180400, // 001E MOVE R6 R2 + 0x7C0C0600, // 001F CALL R3 3 + 0x80000000, // 0020 RET 0 }) ) ); @@ -1237,8 +1381,8 @@ be_local_closure(class_RichPaletteAnimation_tostring, /* name */ 0x60040018, // 0001 GETGBL R1 G24 0x58080009, // 0002 LDCONST R2 K9 0x880C010A, // 0003 GETMBR R3 R0 K10 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x88140103, // 0005 GETMBR R5 R0 K3 + 0x88100102, // 0004 GETMBR R4 R0 K2 + 0x88140104, // 0005 GETMBR R5 R0 K4 0x7C040800, // 0006 CALL R1 4 0xA8040001, // 0007 EXBLK 1 1 0x80040200, // 0008 RET 1 R1 @@ -1284,9 +1428,9 @@ be_local_closure(class_RichPaletteAnimation_init, /* name */ 0x8C08050D, // 0008 GETMET R2 R2 K13 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 - 0x90020C02, // 000B SETMBR R0 K6 R2 + 0x90020E02, // 000B SETMBR R0 K7 R2 0x8808010F, // 000C GETMBR R2 R0 K15 - 0x880C0106, // 000D GETMBR R3 R0 K6 + 0x880C0107, // 000D GETMBR R3 R0 K7 0x980A2003, // 000E SETIDX R2 K16 R3 0x80000000, // 000F RET 0 }) @@ -1318,7 +1462,7 @@ be_local_closure(class_RichPaletteAnimation_start, /* name */ 0x8C080511, // 0003 GETMET R2 R2 K17 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x88080106, // 0006 GETMBR R2 R0 K6 + 0x88080107, // 0006 GETMBR R2 R0 K7 0x8C080511, // 0007 GETMET R2 R2 K17 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 @@ -1390,44 +1534,782 @@ be_local_class(RichPaletteAnimation, })), be_str_weak(RichPaletteAnimation) ); +// compact class 'ScaleAnimation' ktab size: 43, total: 84 (saved 328 bytes) +static const bvalue be_ktab_class_ScaleAnimation[43] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(scale_phase), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(start_time), + /* K4 */ be_nested_str_weak(engine), + /* K5 */ be_nested_str_weak(time_ms), + /* K6 */ be_nested_str_weak(_initialize_buffers), + /* K7 */ be_nested_str_weak(start), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_nested_str_weak(update), + /* K11 */ be_nested_str_weak(scale_speed), + /* K12 */ be_nested_str_weak(scale_mode), + /* K13 */ be_nested_str_weak(source_animation), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(is_running), + /* K16 */ be_nested_str_weak(_calculate_scale), + /* K17 */ be_nested_str_weak(get_strip_length), + /* K18 */ be_nested_str_weak(current_colors), + /* K19 */ be_nested_str_weak(scale_center), + /* K20 */ be_nested_str_weak(interpolation), + /* K21 */ be_nested_str_weak(source_frame), + /* K22 */ be_nested_str_weak(clear), + /* K23 */ be_nested_str_weak(render), + /* K24 */ be_nested_str_weak(_get_current_scale_factor), + /* K25 */ be_const_int(1), + /* K26 */ be_nested_str_weak(get_pixel_color), + /* K27 */ be_const_int(-16777216), + /* K28 */ be_nested_str_weak(_interpolate_colors), + /* K29 */ be_nested_str_weak(animation), + /* K30 */ be_nested_str_weak(frame_buffer), + /* K31 */ be_nested_str_weak(resize), + /* K32 */ be_nested_str_weak(_fix_time_ms), + /* K33 */ be_nested_str_weak(width), + /* K34 */ be_nested_str_weak(set_pixel_color), + /* K35 */ be_nested_str_weak(scale_factor), + /* K36 */ be_nested_str_weak(_sine), + /* K37 */ be_nested_str_weak(static), + /* K38 */ be_nested_str_weak(oscillate), + /* K39 */ be_nested_str_weak(grow), + /* K40 */ be_nested_str_weak(shrink), + /* K41 */ be_nested_str_weak(unknown), + /* K42 */ be_nested_str_weak(ScaleAnimation_X28_X25s_X2C_X20factor_X3D_X25s_X2C_X20speed_X3D_X25s_X29), +}; + + +extern const bclass be_class_ScaleAnimation; /******************************************************************** -** Solidified function: jitter_brightness +** Solidified function: init ********************************************************************/ -be_local_closure(jitter_brightness, /* name */ +be_local_closure(class_ScaleAnimation_init, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 5, /* nstack */ + 2, /* argc */ + 10, /* 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(2), - /* K4 */ be_nested_str_weak(brightness_range), - }), - be_str_weak(jitter_brightness), + &be_ktab_class_ScaleAnimation, /* shared constants */ + be_str_weak(init), &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 - 0x540A0027, // 0005 LDINT R2 40 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 + ( &(const binstruction[13]) { /* 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 + 0x88080104, // 0007 GETMBR R2 R0 K4 + 0x88080505, // 0008 GETMBR R2 R2 K5 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x8C080106, // 000A GETMET R2 R0 K6 + 0x7C080200, // 000B CALL R2 1 + 0x80000000, // 000C RET 0 }) ) ); /*******************************************************************/ +/******************************************************************** +** 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 + 0x8C080507, // 0003 GETMET R2 R2 K7 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020302, // 0006 SETMBR R0 K1 K2 + 0x4C080000, // 0007 LDNIL R2 + 0x1C080202, // 0008 EQ R2 R1 R2 + 0x780A0001, // 0009 JMPF R2 #000C + 0x88080104, // 000A GETMBR R2 R0 K4 + 0x88040505, // 000B GETMBR R1 R2 K5 + 0x90020601, // 000C SETMBR R0 K3 R1 + 0x80040000, // 000D RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0xB80E1000, // 0005 GETNGBL R3 K8 + 0x8C0C0709, // 0006 GETMET R3 R3 K9 + 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 + 0xB80E1000, // 0012 GETNGBL R3 K8 + 0x8C0C0709, // 0013 GETMET R3 R3 K9 + 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 + 0xB80E1000, // 0020 GETNGBL R3 K8 + 0x8C0C0709, // 0021 GETMET R3 R3 K9 + 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 + 0xB80E1000, // 002B GETNGBL R3 K8 + 0x8C0C0709, // 002C GETMET R3 R3 K9 + 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: 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[49]) { /* 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 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8808010B, // 0009 GETMBR R2 R0 K11 + 0x880C010C, // 000A GETMBR R3 R0 K12 + 0x8810010D, // 000B GETMBR R4 R0 K13 + 0x24140502, // 000C GT R5 R2 K2 + 0x78160013, // 000D JMPF R5 #0022 + 0x24140702, // 000E GT R5 R3 K2 + 0x78160011, // 000F JMPF R5 #0022 + 0x88140103, // 0010 GETMBR R5 R0 K3 + 0x04140205, // 0011 SUB R5 R1 R5 + 0xB81A1000, // 0012 GETNGBL R6 K8 + 0x8C180D09, // 0013 GETMET R6 R6 K9 + 0x5C200400, // 0014 MOVE R8 R2 + 0x58240002, // 0015 LDCONST R9 K2 + 0x542A00FE, // 0016 LDINT R10 255 + 0x582C0002, // 0017 LDCONST R11 K2 + 0x5830000E, // 0018 LDCONST R12 K14 + 0x7C180C00, // 0019 CALL R6 6 + 0x241C0D02, // 001A GT R7 R6 K2 + 0x781E0005, // 001B JMPF R7 #0022 + 0x081C0A06, // 001C MUL R7 R5 R6 + 0x542203E7, // 001D LDINT R8 1000 + 0x0C1C0E08, // 001E DIV R7 R7 R8 + 0x542200FF, // 001F LDINT R8 256 + 0x101C0E08, // 0020 MOD R7 R7 R8 + 0x90020207, // 0021 SETMBR R0 K1 R7 + 0x4C140000, // 0022 LDNIL R5 + 0x20140805, // 0023 NE R5 R4 R5 + 0x78160007, // 0024 JMPF R5 #002D + 0x8814090F, // 0025 GETMBR R5 R4 K15 + 0x74160002, // 0026 JMPT R5 #002A + 0x8C140907, // 0027 GETMET R5 R4 K7 + 0x881C0103, // 0028 GETMBR R7 R0 K3 + 0x7C140400, // 0029 CALL R5 2 + 0x8C14090A, // 002A GETMET R5 R4 K10 + 0x5C1C0200, // 002B MOVE R7 R1 + 0x7C140400, // 002C CALL R5 2 + 0x8C140110, // 002D GETMET R5 R0 K16 + 0x7C140200, // 002E CALL R5 1 + 0x50140200, // 002F LDBOOL R5 1 0 + 0x80040A00, // 0030 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x7C040200, // 0002 CALL R1 1 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0112, // 0004 GETMBR R3 R0 K18 + 0x7C080200, // 0005 CALL R2 1 + 0x20080401, // 0006 NE R2 R2 R1 + 0x780A0001, // 0007 JMPF R2 #000A + 0x8C080106, // 0008 GETMET R2 R0 K6 + 0x7C080200, // 0009 CALL R2 1 + 0x8808010D, // 000A GETMBR R2 R0 K13 + 0x880C0113, // 000B GETMBR R3 R0 K19 + 0x88100114, // 000C GETMBR R4 R0 K20 + 0x88140115, // 000D GETMBR R5 R0 K21 + 0x8C140B16, // 000E GETMET R5 R5 K22 + 0x7C140200, // 000F CALL R5 1 + 0x4C140000, // 0010 LDNIL R5 + 0x20140405, // 0011 NE R5 R2 R5 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140517, // 0013 GETMET R5 R2 K23 + 0x881C0115, // 0014 GETMBR R7 R0 K21 + 0x58200002, // 0015 LDCONST R8 K2 + 0x7C140600, // 0016 CALL R5 3 + 0x8C140118, // 0017 GETMET R5 R0 K24 + 0x7C140200, // 0018 CALL R5 1 + 0xB81A1000, // 0019 GETNGBL R6 K8 + 0x8C180D09, // 001A GETMET R6 R6 K9 + 0x5C200600, // 001B MOVE R8 R3 + 0x58240002, // 001C LDCONST R9 K2 + 0x542A00FE, // 001D LDINT R10 255 + 0x582C0002, // 001E LDCONST R11 K2 + 0x04300319, // 001F SUB R12 R1 K25 + 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 + 0xB8261000, // 0025 GETNGBL R9 K8 + 0x8C241309, // 0026 GETMET R9 R9 K9 + 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 + 0x882C0112, // 003A GETMBR R11 R0 K18 + 0x88300115, // 003B GETMBR R12 R0 K21 + 0x8C30191A, // 003C GETMET R12 R12 K26 + 0x5C381400, // 003D MOVE R14 R10 + 0x7C300400, // 003E CALL R12 2 + 0x982C0E0C, // 003F SETIDX R11 R7 R12 + 0x70020001, // 0040 JMP #0043 + 0x882C0112, // 0041 GETMBR R11 R0 K18 + 0x982C0F1B, // 0042 SETIDX R11 R7 K27 + 0x70020026, // 0043 JMP #006B + 0x282C1502, // 0044 GE R11 R10 K2 + 0x782E0022, // 0045 JMPF R11 #0069 + 0x042C0319, // 0046 SUB R11 R1 K25 + 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 + 0x04340319, // 0053 SUB R13 R1 K25 + 0x1434160D, // 0054 LT R13 R11 R13 + 0x7836000F, // 0055 JMPF R13 #0066 + 0x88340115, // 0056 GETMBR R13 R0 K21 + 0x8C341B1A, // 0057 GETMET R13 R13 K26 + 0x5C3C1600, // 0058 MOVE R15 R11 + 0x7C340400, // 0059 CALL R13 2 + 0x88380115, // 005A GETMBR R14 R0 K21 + 0x8C381D1A, // 005B GETMET R14 R14 K26 + 0x00401719, // 005C ADD R16 R11 K25 + 0x7C380400, // 005D CALL R14 2 + 0x883C0112, // 005E GETMBR R15 R0 K18 + 0x8C40011C, // 005F GETMET R16 R0 K28 + 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 + 0x88340112, // 0066 GETMBR R13 R0 K18 + 0x98340F1B, // 0067 SETIDX R13 R7 K27 + 0x70020001, // 0068 JMP #006B + 0x882C0112, // 0069 GETMBR R11 R0 K18 + 0x982C0F1B, // 006A SETIDX R11 R7 K27 + 0x001C0F19, // 006B ADD R7 R7 K25 + 0x7001FFB4, // 006C JMP #0022 + 0x80000000, // 006D 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 */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x7C040200, // 0002 CALL R1 1 + 0xB80A3A00, // 0003 GETNGBL R2 K29 + 0x8C08051E, // 0004 GETMET R2 R2 K30 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x90022A02, // 0007 SETMBR R0 K21 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90022402, // 000A SETMBR R0 K18 R2 + 0x88080112, // 000B GETMBR R2 R0 K18 + 0x8C08051F, // 000C GETMET R2 R2 K31 + 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 + 0x880C0112, // 0012 GETMBR R3 R0 K18 + 0x980C051B, // 0013 SETIDX R3 R2 K27 + 0x00080519, // 0014 ADD R2 R2 K25 + 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[27]) { /* 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 + 0x8C0C0120, // 0005 GETMET R3 R0 K32 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x5C080600, // 0008 MOVE R2 R3 + 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x8C0C0711, // 000A GETMET R3 R3 K17 + 0x7C0C0200, // 000B CALL R3 1 + 0x58100002, // 000C LDCONST R4 K2 + 0x14140803, // 000D LT R5 R4 R3 + 0x78160009, // 000E JMPF R5 #0019 + 0x88140321, // 000F GETMBR R5 R1 K33 + 0x14140805, // 0010 LT R5 R4 R5 + 0x78160004, // 0011 JMPF R5 #0017 + 0x8C140322, // 0012 GETMET R5 R1 K34 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x88200112, // 0014 GETMBR R8 R0 K18 + 0x94201004, // 0015 GETIDX R8 R8 R4 + 0x7C140600, // 0016 CALL R5 3 + 0x00100919, // 0017 ADD R4 R4 K25 + 0x7001FFF3, // 0018 JMP #000D + 0x50140200, // 0019 LDBOOL R5 1 0 + 0x80040A00, // 001A RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8804010C, // 0000 GETMBR R1 R0 K12 + 0x88080123, // 0001 GETMBR R2 R0 K35 + 0x1C0C0302, // 0002 EQ R3 R1 K2 + 0x780E0001, // 0003 JMPF R3 #0006 + 0x80040400, // 0004 RET 1 R2 + 0x70020025, // 0005 JMP #002C + 0x1C0C0319, // 0006 EQ R3 R1 K25 + 0x780E000C, // 0007 JMPF R3 #0015 + 0x8C0C0124, // 0008 GETMET R3 R0 K36 + 0x88140101, // 0009 GETMBR R5 R0 K1 + 0x7C0C0400, // 000A CALL R3 2 + 0xB8121000, // 000B GETNGBL R4 K8 + 0x8C100909, // 000C GETMET R4 R4 K9 + 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 + 0x1C0C030E, // 0015 EQ R3 R1 K14 + 0x780E0009, // 0016 JMPF R3 #0021 + 0xB80E1000, // 0017 GETNGBL R3 K8 + 0x8C0C0709, // 0018 GETMET R3 R3 K9 + 0x88140101, // 0019 GETMBR R5 R0 K1 + 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 + 0xB80E1000, // 0021 GETNGBL R3 K8 + 0x8C0C0709, // 0022 GETMET R3 R3 K9 + 0x541600FE, // 0023 LDINT R5 255 + 0x88180101, // 0024 GETMBR R6 R0 K1 + 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: _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: 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 + 0x40080325, // 0002 CONNECT R2 R1 K37 + 0x40080326, // 0003 CONNECT R2 R1 K38 + 0x40080327, // 0004 CONNECT R2 R1 K39 + 0x40080328, // 0005 CONNECT R2 R1 K40 + 0x8808010C, // 0006 GETMBR R2 R0 K12 + 0x880C0123, // 0007 GETMBR R3 R0 K35 + 0x8810010B, // 0008 GETMBR R4 R0 K11 + 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 + 0x58140029, // 000F LDCONST R5 K41 + 0x60180018, // 0010 GETGBL R6 G24 + 0x581C002A, // 0011 LDCONST R7 K42 + 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 class: ScaleAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(ScaleAnimation, + 4, + &be_class_Animation, + be_nested_map(15, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(init, -1), be_const_closure(class_ScaleAnimation_init_closure) }, + { be_const_key_weak(tostring, 13), be_const_closure(class_ScaleAnimation_tostring_closure) }, + { be_const_key_weak(_sine, -1), be_const_closure(class_ScaleAnimation__sine_closure) }, + { be_const_key_weak(PARAMS, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(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(_calculate_scale, -1), be_const_closure(class_ScaleAnimation__calculate_scale_closure) }, + { be_const_key_weak(current_colors, -1), be_const_var(2) }, + { be_const_key_weak(source_frame, 14), be_const_var(1) }, + { be_const_key_weak(_interpolate_colors, -1), be_const_closure(class_ScaleAnimation__interpolate_colors_closure) }, + { be_const_key_weak(_get_current_scale_factor, -1), be_const_closure(class_ScaleAnimation__get_current_scale_factor_closure) }, + { be_const_key_weak(_initialize_buffers, 1), be_const_closure(class_ScaleAnimation__initialize_buffers_closure) }, + { be_const_key_weak(start, 8), be_const_closure(class_ScaleAnimation_start_closure) }, + { be_const_key_weak(start_time, -1), be_const_var(3) }, + { be_const_key_weak(scale_phase, -1), be_const_var(0) }, + { be_const_key_weak(render, -1), be_const_closure(class_ScaleAnimation_render_closure) }, + })), + be_str_weak(ScaleAnimation) +); + /******************************************************************** ** Solidified function: twinkle_solid ********************************************************************/ @@ -1476,39 +2358,464 @@ be_local_closure(twinkle_solid, /* name */ ); /*******************************************************************/ +// compact class 'CompositeColorProvider' ktab size: 14, total: 24 (saved 80 bytes) +static const bvalue be_ktab_class_CompositeColorProvider[14] = { + /* 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_const_real_hex(0x437F0000), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(scale_uint), + /* K13 */ be_nested_str_weak(init), +}; + + +extern const bclass be_class_CompositeColorProvider; /******************************************************************** -** Solidified function: get_user_function +** Solidified function: add_provider ********************************************************************/ -be_local_closure(get_user_function, /* name */ +be_local_closure(class_CompositeColorProvider_add_provider, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(_user_functions), - /* K2 */ be_nested_str_weak(find), - }), - be_str_weak(get_user_function), + &be_ktab_class_CompositeColorProvider, /* shared constants */ + be_str_weak(add_provider), &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 + ( &(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[ 8]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080007, // 0001 LDCONST R2 K7 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x88100108, // 0005 GETMBR R4 R0 K8 + 0x7C040600, // 0006 CALL R1 3 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0x0C401109, // 0023 DIV R16 R8 K9 + 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 + 0x1C40070A, // 0064 EQ R16 R3 K10 + 0x78420026, // 0065 JMPF R16 #008D + 0xB8421600, // 0066 GETNGBL R16 K11 + 0x8C40210C, // 0067 GETMET R16 R16 K12 + 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 + 0xB8421600, // 0071 GETNGBL R16 K11 + 0x8C40210C, // 0072 GETMET R16 R16 K12 + 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 + 0xB8421600, // 007C GETNGBL R16 K11 + 0x8C40210C, // 007D GETMET R16 R16 K12 + 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 + 0x8C08050D, // 0003 GETMET R2 R2 K13 + 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) +); // 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), @@ -2084,8 +3391,8 @@ be_local_class(EventManager, })), be_str_weak(EventManager) ); -// compact class 'SequenceManager' ktab size: 40, total: 151 (saved 888 bytes) -static const bvalue be_ktab_class_SequenceManager[40] = { +// compact class 'SequenceManager' ktab size: 41, total: 157 (saved 928 bytes) +static const bvalue be_ktab_class_SequenceManager[41] = { /* K0 */ be_nested_str_weak(step_index), /* K1 */ be_nested_str_weak(steps), /* K2 */ be_nested_str_weak(complete_iteration), @@ -2093,39 +3400,40 @@ static const bvalue be_ktab_class_SequenceManager[40] = { /* K4 */ be_nested_str_weak(play), /* K5 */ be_nested_str_weak(animation), /* K6 */ be_nested_str_weak(engine), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(start), - /* K9 */ be_nested_str_weak(wait), - /* K10 */ be_nested_str_weak(stop), - /* K11 */ be_nested_str_weak(remove), - /* K12 */ be_nested_str_weak(closure), - /* K13 */ be_nested_str_weak(subsequence), - /* K14 */ be_nested_str_weak(sequence_manager), - /* K15 */ be_nested_str_weak(step_start_time), - /* K16 */ be_nested_str_weak(stop_iteration), - /* K17 */ be_nested_str_weak(push), - /* K18 */ be_nested_str_weak(duration), - /* K19 */ be_const_int(0), - /* K20 */ be_const_int(1), - /* K21 */ be_nested_str_weak(execute_current_step), - /* K22 */ be_nested_str_weak(is_running), - /* K23 */ be_nested_str_weak(update), - /* K24 */ be_nested_str_weak(advance_to_next_step), - /* K25 */ be_nested_str_weak(execute_closure_steps_batch), - /* K26 */ be_nested_str_weak(contains), - /* K27 */ be_nested_str_weak(total_steps), - /* K28 */ be_nested_str_weak(current_step), - /* K29 */ be_nested_str_weak(elapsed_ms), - /* K30 */ be_nested_str_weak(time_ms), - /* K31 */ be_nested_str_weak(repeat_count), - /* K32 */ be_nested_str_weak(current_iteration), - /* K33 */ be_nested_str_weak(is_repeat_sequence), - /* K34 */ be_nested_str_weak(get_resolved_repeat_count), - /* K35 */ be_nested_str_weak(active_sequence), - /* K36 */ be_nested_str_weak(sequence_state), - /* K37 */ be_nested_str_weak(stop_all_subsequences), - /* K38 */ be_nested_str_weak(execute_closure_steps_batch_atomic), - /* K39 */ be_nested_str_weak(function), + /* K7 */ be_nested_str_weak(get_animations), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(add), + /* K10 */ be_nested_str_weak(start), + /* K11 */ be_nested_str_weak(wait), + /* K12 */ be_nested_str_weak(stop), + /* K13 */ be_nested_str_weak(remove), + /* K14 */ be_nested_str_weak(closure), + /* K15 */ be_nested_str_weak(subsequence), + /* K16 */ be_nested_str_weak(sequence_manager), + /* K17 */ be_nested_str_weak(step_start_time), + /* K18 */ be_nested_str_weak(push), + /* K19 */ be_nested_str_weak(duration), + /* K20 */ be_const_int(0), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(execute_current_step), + /* K23 */ be_nested_str_weak(is_running), + /* K24 */ be_nested_str_weak(update), + /* K25 */ be_nested_str_weak(advance_to_next_step), + /* K26 */ be_nested_str_weak(execute_closure_steps_batch), + /* K27 */ be_nested_str_weak(contains), + /* K28 */ be_nested_str_weak(total_steps), + /* K29 */ be_nested_str_weak(current_step), + /* K30 */ be_nested_str_weak(elapsed_ms), + /* K31 */ be_nested_str_weak(time_ms), + /* K32 */ be_nested_str_weak(repeat_count), + /* K33 */ be_nested_str_weak(current_iteration), + /* K34 */ be_nested_str_weak(is_repeat_sequence), + /* K35 */ be_nested_str_weak(get_resolved_repeat_count), + /* K36 */ be_nested_str_weak(active_sequence), + /* K37 */ be_nested_str_weak(sequence_state), + /* K38 */ be_nested_str_weak(stop_all_subsequences), + /* K39 */ be_nested_str_weak(execute_closure_steps_batch_atomic), + /* K40 */ be_nested_str_weak(function), }; @@ -2136,7 +3444,7 @@ extern const bclass be_class_SequenceManager; ********************************************************************/ be_local_closure(class_SequenceManager_execute_current_step, /* name */ be_nested_proto( - 7, /* nstack */ + 9, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2147,7 +3455,7 @@ be_local_closure(class_SequenceManager_execute_current_step, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(execute_current_step), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[80]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x600C000C, // 0001 GETGBL R3 G12 0x88100101, // 0002 GETMBR R4 R0 K1 @@ -2163,49 +3471,71 @@ be_local_closure(class_SequenceManager_execute_current_step, /* name */ 0x94080403, // 000C GETIDX R2 R2 R3 0x940C0503, // 000D GETIDX R3 R2 K3 0x1C0C0704, // 000E EQ R3 R3 K4 - 0x780E0008, // 000F JMPF R3 #0019 + 0x780E001E, // 000F JMPF R3 #002F 0x940C0505, // 0010 GETIDX R3 R2 K5 0x88100106, // 0011 GETMBR R4 R0 K6 0x8C100907, // 0012 GETMET R4 R4 K7 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x8C100708, // 0015 GETMET R4 R3 K8 - 0x5C180200, // 0016 MOVE R6 R1 - 0x7C100400, // 0017 CALL R4 2 - 0x7002001E, // 0018 JMP #0038 - 0x940C0503, // 0019 GETIDX R3 R2 K3 - 0x1C0C0709, // 001A EQ R3 R3 K9 - 0x780E0000, // 001B JMPF R3 #001D - 0x7002001A, // 001C JMP #0038 - 0x940C0503, // 001D GETIDX R3 R2 K3 - 0x1C0C070A, // 001E EQ R3 R3 K10 - 0x780E0005, // 001F JMPF R3 #0026 - 0x940C0505, // 0020 GETIDX R3 R2 K5 - 0x88100106, // 0021 GETMBR R4 R0 K6 - 0x8C10090B, // 0022 GETMET R4 R4 K11 - 0x5C180600, // 0023 MOVE R6 R3 - 0x7C100400, // 0024 CALL R4 2 - 0x70020011, // 0025 JMP #0038 - 0x940C0503, // 0026 GETIDX R3 R2 K3 - 0x1C0C070C, // 0027 EQ R3 R3 K12 - 0x780E0007, // 0028 JMPF R3 #0031 - 0x940C050C, // 0029 GETIDX R3 R2 K12 - 0x4C100000, // 002A LDNIL R4 - 0x20100604, // 002B NE R4 R3 R4 - 0x78120002, // 002C JMPF R4 #0030 - 0x5C100600, // 002D MOVE R4 R3 - 0x88140106, // 002E GETMBR R5 R0 K6 - 0x7C100200, // 002F CALL R4 1 - 0x70020006, // 0030 JMP #0038 - 0x940C0503, // 0031 GETIDX R3 R2 K3 - 0x1C0C070D, // 0032 EQ R3 R3 K13 - 0x780E0003, // 0033 JMPF R3 #0038 - 0x940C050E, // 0034 GETIDX R3 R2 K14 - 0x8C100708, // 0035 GETMET R4 R3 K8 - 0x5C180200, // 0036 MOVE R6 R1 - 0x7C100400, // 0037 CALL R4 2 - 0x90021E01, // 0038 SETMBR R0 K15 R1 - 0x80000000, // 0039 RET 0 + 0x7C100200, // 0013 CALL R4 1 + 0x50140000, // 0014 LDBOOL R5 0 0 + 0x60180010, // 0015 GETGBL R6 G16 + 0x5C1C0800, // 0016 MOVE R7 R4 + 0x7C180200, // 0017 CALL R6 1 + 0xA8020008, // 0018 EXBLK 0 #0022 + 0x5C1C0C00, // 0019 MOVE R7 R6 + 0x7C1C0000, // 001A CALL R7 0 + 0x1C200E03, // 001B EQ R8 R7 R3 + 0x78220001, // 001C JMPF R8 #001F + 0x50140200, // 001D LDBOOL R5 1 0 + 0x70020000, // 001E JMP #0020 + 0x7001FFF8, // 001F JMP #0019 + 0xA8040001, // 0020 EXBLK 1 1 + 0x70020002, // 0021 JMP #0025 + 0x58180008, // 0022 LDCONST R6 K8 + 0xAC180200, // 0023 CATCH R6 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x5C180A00, // 0025 MOVE R6 R5 + 0x741A0003, // 0026 JMPT R6 #002B + 0x88180106, // 0027 GETMBR R6 R0 K6 + 0x8C180D09, // 0028 GETMET R6 R6 K9 + 0x5C200600, // 0029 MOVE R8 R3 + 0x7C180400, // 002A CALL R6 2 + 0x8C18070A, // 002B GETMET R6 R3 K10 + 0x5C200200, // 002C MOVE R8 R1 + 0x7C180400, // 002D CALL R6 2 + 0x7002001E, // 002E JMP #004E + 0x940C0503, // 002F GETIDX R3 R2 K3 + 0x1C0C070B, // 0030 EQ R3 R3 K11 + 0x780E0000, // 0031 JMPF R3 #0033 + 0x7002001A, // 0032 JMP #004E + 0x940C0503, // 0033 GETIDX R3 R2 K3 + 0x1C0C070C, // 0034 EQ R3 R3 K12 + 0x780E0005, // 0035 JMPF R3 #003C + 0x940C0505, // 0036 GETIDX R3 R2 K5 + 0x88100106, // 0037 GETMBR R4 R0 K6 + 0x8C10090D, // 0038 GETMET R4 R4 K13 + 0x5C180600, // 0039 MOVE R6 R3 + 0x7C100400, // 003A CALL R4 2 + 0x70020011, // 003B JMP #004E + 0x940C0503, // 003C GETIDX R3 R2 K3 + 0x1C0C070E, // 003D EQ R3 R3 K14 + 0x780E0007, // 003E JMPF R3 #0047 + 0x940C050E, // 003F GETIDX R3 R2 K14 + 0x4C100000, // 0040 LDNIL R4 + 0x20100604, // 0041 NE R4 R3 R4 + 0x78120002, // 0042 JMPF R4 #0046 + 0x5C100600, // 0043 MOVE R4 R3 + 0x88140106, // 0044 GETMBR R5 R0 K6 + 0x7C100200, // 0045 CALL R4 1 + 0x70020006, // 0046 JMP #004E + 0x940C0503, // 0047 GETIDX R3 R2 K3 + 0x1C0C070F, // 0048 EQ R3 R3 K15 + 0x780E0003, // 0049 JMPF R3 #004E + 0x940C0510, // 004A GETIDX R3 R2 K16 + 0x8C10070A, // 004B GETMET R4 R3 K10 + 0x5C180200, // 004C MOVE R6 R1 + 0x7C100400, // 004D CALL R4 2 + 0x90022201, // 004E SETMBR R0 K17 R1 + 0x80000000, // 004F RET 0 }) ) ); @@ -2236,13 +3566,13 @@ be_local_closure(class_SequenceManager_stop_all_subsequences, /* name */ 0x5C080200, // 0004 MOVE R2 R1 0x7C080000, // 0005 CALL R2 0 0x940C0503, // 0006 GETIDX R3 R2 K3 - 0x1C0C070D, // 0007 EQ R3 R3 K13 + 0x1C0C070F, // 0007 EQ R3 R3 K15 0x780E0002, // 0008 JMPF R3 #000C - 0x940C050E, // 0009 GETIDX R3 R2 K14 - 0x8C10070A, // 000A GETMET R4 R3 K10 + 0x940C0510, // 0009 GETIDX R3 R2 K16 + 0x8C10070C, // 000A GETMET R4 R3 K12 0x7C100200, // 000B CALL R4 1 0x7001FFF6, // 000C JMP #0004 - 0x58040010, // 000D LDCONST R1 K16 + 0x58040008, // 000D LDCONST R1 K8 0xAC040200, // 000E CATCH R1 1 0 0xB0080000, // 000F RAISE 2 R0 R0 0x80040000, // 0010 RET 1 R0 @@ -2270,7 +3600,7 @@ be_local_closure(class_SequenceManager_push_play_step, /* name */ &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0x880C0101, // 0000 GETMBR R3 R0 K1 - 0x8C0C0711, // 0001 GETMET R3 R3 K17 + 0x8C0C0712, // 0001 GETMET R3 R3 K18 0x60140013, // 0002 GETGBL R5 G19 0x7C140000, // 0003 CALL R5 0 0x98160704, // 0004 SETIDX R5 K3 K4 @@ -2280,8 +3610,8 @@ be_local_closure(class_SequenceManager_push_play_step, /* name */ 0x781A0001, // 0008 JMPF R6 #000B 0x5C180400, // 0009 MOVE R6 R2 0x70020000, // 000A JMP #000C - 0x58180013, // 000B LDCONST R6 K19 - 0x98162406, // 000C SETIDX R5 K18 R6 + 0x58180014, // 000B LDCONST R6 K20 + 0x98162606, // 000C SETIDX R5 K19 R6 0x7C0C0400, // 000D CALL R3 2 0x80040000, // 000E RET 1 R0 }) @@ -2308,11 +3638,11 @@ be_local_closure(class_SequenceManager_push_repeat_subsequence, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x8C080511, // 0001 GETMET R2 R2 K17 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x60100013, // 0002 GETGBL R4 G19 0x7C100000, // 0003 CALL R4 0 - 0x9812070D, // 0004 SETIDX R4 K3 K13 - 0x98121C01, // 0005 SETIDX R4 K14 R1 + 0x9812070F, // 0004 SETIDX R4 K3 K15 + 0x98122001, // 0005 SETIDX R4 K16 R1 0x7C080400, // 0006 CALL R2 2 0x80040000, // 0007 RET 1 R0 }) @@ -2339,11 +3669,11 @@ be_local_closure(class_SequenceManager_push_closure_step, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x8C080511, // 0001 GETMET R2 R2 K17 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x60100013, // 0002 GETGBL R4 G19 0x7C100000, // 0003 CALL R4 0 - 0x9812070C, // 0004 SETIDX R4 K3 K12 - 0x98121801, // 0005 SETIDX R4 K12 R1 + 0x9812070E, // 0004 SETIDX R4 K3 K14 + 0x98121C01, // 0005 SETIDX R4 K14 R1 0x7C080400, // 0006 CALL R2 2 0x80040000, // 0007 RET 1 R0 }) @@ -2357,7 +3687,7 @@ be_local_closure(class_SequenceManager_push_closure_step, /* name */ ********************************************************************/ be_local_closure(class_SequenceManager_execute_closure_steps_batch_atomic, /* name */ be_nested_proto( - 7, /* nstack */ + 8, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2368,7 +3698,7 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch_atomic, /* &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(execute_closure_steps_batch_atomic), &be_const_str_solidified, - ( &(const binstruction[51]) { /* code */ + ( &(const binstruction[77]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 0x6010000C, // 0001 GETGBL R4 G12 0x88140101, // 0002 GETMBR R5 R0 K1 @@ -2379,9 +3709,9 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch_atomic, /* 0x88100100, // 0007 GETMBR R4 R0 K0 0x940C0604, // 0008 GETIDX R3 R3 R4 0x94100703, // 0009 GETIDX R4 R3 K3 - 0x1C10090C, // 000A EQ R4 R4 K12 + 0x1C10090E, // 000A EQ R4 R4 K14 0x7812000A, // 000B JMPF R4 #0017 - 0x9410070C, // 000C GETIDX R4 R3 K12 + 0x9410070E, // 000C GETIDX R4 R3 K14 0x4C140000, // 000D LDNIL R5 0x20140805, // 000E NE R5 R4 R5 0x78160002, // 000F JMPF R5 #0013 @@ -2389,37 +3719,63 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch_atomic, /* 0x88180106, // 0011 GETMBR R6 R0 K6 0x7C140200, // 0012 CALL R5 1 0x88140100, // 0013 GETMBR R5 R0 K0 - 0x00140B14, // 0014 ADD R5 R5 K20 + 0x00140B15, // 0014 ADD R5 R5 K21 0x90020005, // 0015 SETMBR R0 K0 R5 0x70020000, // 0016 JMP #0018 0x70020000, // 0017 JMP #0019 0x7001FFE6, // 0018 JMP #0000 - 0x880C0100, // 0019 GETMBR R3 R0 K0 - 0x6010000C, // 001A GETGBL R4 G12 - 0x88140101, // 001B GETMBR R5 R0 K1 - 0x7C100200, // 001C CALL R4 1 - 0x140C0604, // 001D LT R3 R3 R4 - 0x780E0002, // 001E JMPF R3 #0022 - 0x8C0C0115, // 001F GETMET R3 R0 K21 - 0x5C140200, // 0020 MOVE R5 R1 - 0x7C0C0400, // 0021 CALL R3 2 - 0x4C0C0000, // 0022 LDNIL R3 - 0x200C0403, // 0023 NE R3 R2 R3 - 0x780E0003, // 0024 JMPF R3 #0029 - 0x880C0106, // 0025 GETMBR R3 R0 K6 - 0x8C0C070B, // 0026 GETMET R3 R3 K11 - 0x5C140400, // 0027 MOVE R5 R2 - 0x7C0C0400, // 0028 CALL R3 2 - 0x880C0100, // 0029 GETMBR R3 R0 K0 - 0x6010000C, // 002A GETGBL R4 G12 - 0x88140101, // 002B GETMBR R5 R0 K1 - 0x7C100200, // 002C CALL R4 1 - 0x280C0604, // 002D GE R3 R3 R4 - 0x780E0002, // 002E JMPF R3 #0032 - 0x8C0C0102, // 002F GETMET R3 R0 K2 - 0x5C140200, // 0030 MOVE R5 R1 - 0x7C0C0400, // 0031 CALL R3 2 - 0x80000000, // 0032 RET 0 + 0x4C0C0000, // 0019 LDNIL R3 + 0x50100000, // 001A LDBOOL R4 0 0 + 0x88140100, // 001B GETMBR R5 R0 K0 + 0x6018000C, // 001C GETGBL R6 G12 + 0x881C0101, // 001D GETMBR R7 R0 K1 + 0x7C180200, // 001E CALL R6 1 + 0x14140A06, // 001F LT R5 R5 R6 + 0x7816000B, // 0020 JMPF R5 #002D + 0x88140101, // 0021 GETMBR R5 R0 K1 + 0x88180100, // 0022 GETMBR R6 R0 K0 + 0x940C0A06, // 0023 GETIDX R3 R5 R6 + 0x94180703, // 0024 GETIDX R6 R3 K3 + 0x1C180D04, // 0025 EQ R6 R6 K4 + 0x781A0005, // 0026 JMPF R6 #002D + 0x4C180000, // 0027 LDNIL R6 + 0x20180406, // 0028 NE R6 R2 R6 + 0x781A0002, // 0029 JMPF R6 #002D + 0x94180705, // 002A GETIDX R6 R3 K5 + 0x1C180C02, // 002B EQ R6 R6 R2 + 0x5C100C00, // 002C MOVE R4 R6 + 0x78120004, // 002D JMPF R4 #0033 + 0x90022201, // 002E SETMBR R0 K17 R1 + 0x8C14050A, // 002F GETMET R5 R2 K10 + 0x5C1C0200, // 0030 MOVE R7 R1 + 0x7C140400, // 0031 CALL R5 2 + 0x7002000F, // 0032 JMP #0043 + 0x88140100, // 0033 GETMBR R5 R0 K0 + 0x6018000C, // 0034 GETGBL R6 G12 + 0x881C0101, // 0035 GETMBR R7 R0 K1 + 0x7C180200, // 0036 CALL R6 1 + 0x14140A06, // 0037 LT R5 R5 R6 + 0x78160002, // 0038 JMPF R5 #003C + 0x8C140116, // 0039 GETMET R5 R0 K22 + 0x5C1C0200, // 003A MOVE R7 R1 + 0x7C140400, // 003B CALL R5 2 + 0x4C140000, // 003C LDNIL R5 + 0x20140405, // 003D NE R5 R2 R5 + 0x78160003, // 003E JMPF R5 #0043 + 0x88140106, // 003F GETMBR R5 R0 K6 + 0x8C140B0D, // 0040 GETMET R5 R5 K13 + 0x5C1C0400, // 0041 MOVE R7 R2 + 0x7C140400, // 0042 CALL R5 2 + 0x88140100, // 0043 GETMBR R5 R0 K0 + 0x6018000C, // 0044 GETGBL R6 G12 + 0x881C0101, // 0045 GETMBR R7 R0 K1 + 0x7C180200, // 0046 CALL R6 1 + 0x28140A06, // 0047 GE R5 R5 R6 + 0x78160002, // 0048 JMPF R5 #004C + 0x8C140102, // 0049 GETMET R5 R0 K2 + 0x5C1C0200, // 004A MOVE R7 R1 + 0x7C140400, // 004B CALL R5 2 + 0x80000000, // 004C RET 0 }) ) ); @@ -2443,12 +3799,12 @@ be_local_closure(class_SequenceManager_update, /* name */ be_str_weak(update), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x88080117, // 0000 GETMBR R2 R0 K23 0x780A0004, // 0001 JMPF R2 #0007 0x6008000C, // 0002 GETGBL R2 G12 0x880C0101, // 0003 GETMBR R3 R0 K1 0x7C080200, // 0004 CALL R2 1 - 0x1C080513, // 0005 EQ R2 R2 K19 + 0x1C080514, // 0005 EQ R2 R2 K20 0x780A0001, // 0006 JMPF R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 @@ -2456,44 +3812,44 @@ be_local_closure(class_SequenceManager_update, /* name */ 0x880C0100, // 000A GETMBR R3 R0 K0 0x94080403, // 000B GETIDX R2 R2 R3 0x940C0503, // 000C GETIDX R3 R2 K3 - 0x1C0C070D, // 000D EQ R3 R3 K13 + 0x1C0C070F, // 000D EQ R3 R3 K15 0x780E0008, // 000E JMPF R3 #0018 - 0x940C050E, // 000F GETIDX R3 R2 K14 - 0x8C100717, // 0010 GETMET R4 R3 K23 + 0x940C0510, // 000F GETIDX R3 R2 K16 + 0x8C100718, // 0010 GETMET R4 R3 K24 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x74120002, // 0013 JMPT R4 #0017 - 0x8C100118, // 0014 GETMET R4 R0 K24 + 0x8C100119, // 0014 GETMET R4 R0 K25 0x5C180200, // 0015 MOVE R6 R1 0x7C100400, // 0016 CALL R4 2 0x70020019, // 0017 JMP #0032 0x940C0503, // 0018 GETIDX R3 R2 K3 - 0x1C0C070C, // 0019 EQ R3 R3 K12 + 0x1C0C070E, // 0019 EQ R3 R3 K14 0x780E0003, // 001A JMPF R3 #001F - 0x8C0C0119, // 001B GETMET R3 R0 K25 + 0x8C0C011A, // 001B GETMET R3 R0 K26 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 0x70020012, // 001E JMP #0032 - 0x8C0C051A, // 001F GETMET R3 R2 K26 - 0x58140012, // 0020 LDCONST R5 K18 + 0x8C0C051B, // 001F GETMET R3 R2 K27 + 0x58140013, // 0020 LDCONST R5 K19 0x7C0C0400, // 0021 CALL R3 2 0x780E000B, // 0022 JMPF R3 #002F - 0x940C0512, // 0023 GETIDX R3 R2 K18 - 0x240C0713, // 0024 GT R3 R3 K19 + 0x940C0513, // 0023 GETIDX R3 R2 K19 + 0x240C0714, // 0024 GT R3 R3 K20 0x780E0008, // 0025 JMPF R3 #002F - 0x880C010F, // 0026 GETMBR R3 R0 K15 + 0x880C0111, // 0026 GETMBR R3 R0 K17 0x040C0203, // 0027 SUB R3 R1 R3 - 0x94100512, // 0028 GETIDX R4 R2 K18 + 0x94100513, // 0028 GETIDX R4 R2 K19 0x28100604, // 0029 GE R4 R3 R4 0x78120002, // 002A JMPF R4 #002E - 0x8C100118, // 002B GETMET R4 R0 K24 + 0x8C100119, // 002B GETMET R4 R0 K25 0x5C180200, // 002C MOVE R6 R1 0x7C100400, // 002D CALL R4 2 0x70020002, // 002E JMP #0032 - 0x8C0C0118, // 002F GETMET R3 R0 K24 + 0x8C0C0119, // 002F GETMET R3 R0 K25 0x5C140200, // 0030 MOVE R5 R1 0x7C0C0400, // 0031 CALL R3 2 - 0x880C0116, // 0032 GETMBR R3 R0 K22 + 0x880C0117, // 0032 GETMBR R3 R0 K23 0x80040600, // 0033 RET 1 R3 }) ) @@ -2528,9 +3884,9 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch, /* name */ 0x880C0100, // 0007 GETMBR R3 R0 K0 0x94080403, // 0008 GETIDX R2 R2 R3 0x940C0503, // 0009 GETIDX R3 R2 K3 - 0x1C0C070C, // 000A EQ R3 R3 K12 + 0x1C0C070E, // 000A EQ R3 R3 K14 0x780E000A, // 000B JMPF R3 #0017 - 0x940C050C, // 000C GETIDX R3 R2 K12 + 0x940C050E, // 000C GETIDX R3 R2 K14 0x4C100000, // 000D LDNIL R4 0x20100604, // 000E NE R4 R3 R4 0x78120002, // 000F JMPF R4 #0013 @@ -2538,7 +3894,7 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch, /* name */ 0x88140106, // 0011 GETMBR R5 R0 K6 0x7C100200, // 0012 CALL R4 1 0x88100100, // 0013 GETMBR R4 R0 K0 - 0x00100914, // 0014 ADD R4 R4 K20 + 0x00100915, // 0014 ADD R4 R4 K21 0x90020004, // 0015 SETMBR R0 K0 R4 0x70020000, // 0016 JMP #0018 0x70020000, // 0017 JMP #0019 @@ -2549,7 +3905,7 @@ be_local_closure(class_SequenceManager_execute_closure_steps_batch, /* name */ 0x7C0C0200, // 001C CALL R3 1 0x14080403, // 001D LT R2 R2 R3 0x780A0003, // 001E JMPF R2 #0023 - 0x8C080115, // 001F GETMET R2 R0 K21 + 0x8C080116, // 001F GETMET R2 R0 K22 0x5C100200, // 0020 MOVE R4 R1 0x7C080400, // 0021 CALL R2 2 0x70020002, // 0022 JMP #0026 @@ -2580,7 +3936,7 @@ be_local_closure(class_SequenceManager_is_sequence_running, /* name */ be_str_weak(is_sequence_running), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x88040117, // 0000 GETMBR R1 R0 K23 0x80040200, // 0001 RET 1 R1 }) ) @@ -2606,7 +3962,7 @@ be_local_closure(class_SequenceManager_push_step, /* name */ &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x8C080511, // 0001 GETMET R2 R2 K17 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040000, // 0004 RET 1 R0 @@ -2633,7 +3989,7 @@ be_local_closure(class_SequenceManager_get_current_step_info, /* name */ be_str_weak(get_current_step_info), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x88040117, // 0000 GETMBR R1 R0 K23 0x78060005, // 0001 JMPF R1 #0008 0x88040100, // 0002 GETMBR R1 R0 K0 0x6008000C, // 0003 GETGBL R2 G12 @@ -2650,22 +4006,22 @@ be_local_closure(class_SequenceManager_get_current_step_info, /* name */ 0x6008000C, // 000E GETGBL R2 G12 0x880C0101, // 000F GETMBR R3 R0 K1 0x7C080200, // 0010 CALL R2 1 - 0x98063602, // 0011 SETIDX R1 K27 R2 + 0x98063802, // 0011 SETIDX R1 K28 R2 0x88080101, // 0012 GETMBR R2 R0 K1 0x880C0100, // 0013 GETMBR R3 R0 K0 0x94080403, // 0014 GETIDX R2 R2 R3 - 0x98063802, // 0015 SETIDX R1 K28 R2 + 0x98063A02, // 0015 SETIDX R1 K29 R2 0x88080106, // 0016 GETMBR R2 R0 K6 - 0x8808051E, // 0017 GETMBR R2 R2 K30 - 0x880C010F, // 0018 GETMBR R3 R0 K15 + 0x8808051F, // 0017 GETMBR R2 R2 K31 + 0x880C0111, // 0018 GETMBR R3 R0 K17 0x04080403, // 0019 SUB R2 R2 R3 - 0x98063A02, // 001A SETIDX R1 K29 R2 - 0x8808011F, // 001B GETMBR R2 R0 K31 - 0x98063E02, // 001C SETIDX R1 K31 R2 - 0x88080120, // 001D GETMBR R2 R0 K32 - 0x98064002, // 001E SETIDX R1 K32 R2 - 0x88080121, // 001F GETMBR R2 R0 K33 - 0x98064202, // 0020 SETIDX R1 K33 R2 + 0x98063C02, // 001A SETIDX R1 K30 R2 + 0x88080120, // 001B GETMBR R2 R0 K32 + 0x98064002, // 001C SETIDX R1 K32 R2 + 0x88080121, // 001D GETMBR R2 R0 K33 + 0x98064202, // 001E SETIDX R1 K33 R2 + 0x88080122, // 001F GETMBR R2 R0 K34 + 0x98064402, // 0020 SETIDX R1 K34 R2 0x80040200, // 0021 RET 1 R1 }) ) @@ -2690,18 +4046,18 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ be_str_weak(complete_iteration), &be_const_str_solidified, ( &(const binstruction[50]) { /* code */ - 0x88080120, // 0000 GETMBR R2 R0 K32 - 0x00080514, // 0001 ADD R2 R2 K20 - 0x90024002, // 0002 SETMBR R0 K32 R2 - 0x8C080122, // 0003 GETMET R2 R0 K34 + 0x88080121, // 0000 GETMBR R2 R0 K33 + 0x00080515, // 0001 ADD R2 R2 K21 + 0x90024202, // 0002 SETMBR R0 K33 R2 + 0x8C080123, // 0003 GETMET R2 R0 K35 0x7C080200, // 0004 CALL R2 1 0x540DFFFE, // 0005 LDINT R3 -1 0x1C0C0403, // 0006 EQ R3 R2 R3 0x740E0002, // 0007 JMPT R3 #000B - 0x880C0120, // 0008 GETMBR R3 R0 K32 + 0x880C0121, // 0008 GETMBR R3 R0 K33 0x140C0602, // 0009 LT R3 R3 R2 0x780E0023, // 000A JMPF R3 #002F - 0x90020113, // 000B SETMBR R0 K0 K19 + 0x90020114, // 000B SETMBR R0 K0 K20 0x880C0100, // 000C GETMBR R3 R0 K0 0x6010000C, // 000D GETGBL R4 G12 0x88140101, // 000E GETMBR R5 R0 K1 @@ -2712,9 +4068,9 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ 0x88100100, // 0013 GETMBR R4 R0 K0 0x940C0604, // 0014 GETIDX R3 R3 R4 0x94100703, // 0015 GETIDX R4 R3 K3 - 0x1C10090C, // 0016 EQ R4 R4 K12 + 0x1C10090E, // 0016 EQ R4 R4 K14 0x7812000A, // 0017 JMPF R4 #0023 - 0x9410070C, // 0018 GETIDX R4 R3 K12 + 0x9410070E, // 0018 GETIDX R4 R3 K14 0x4C140000, // 0019 LDNIL R5 0x20140805, // 001A NE R5 R4 R5 0x78160002, // 001B JMPF R5 #001F @@ -2722,7 +4078,7 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ 0x88180106, // 001D GETMBR R6 R0 K6 0x7C140200, // 001E CALL R5 1 0x88140100, // 001F GETMBR R5 R0 K0 - 0x00140B14, // 0020 ADD R5 R5 K20 + 0x00140B15, // 0020 ADD R5 R5 K21 0x90020005, // 0021 SETMBR R0 K0 R5 0x70020000, // 0022 JMP #0024 0x70020000, // 0023 JMP #0025 @@ -2733,12 +4089,12 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ 0x7C100200, // 0028 CALL R4 1 0x140C0604, // 0029 LT R3 R3 R4 0x780E0002, // 002A JMPF R3 #002E - 0x8C0C0115, // 002B GETMET R3 R0 K21 + 0x8C0C0116, // 002B GETMET R3 R0 K22 0x5C140200, // 002C MOVE R5 R1 0x7C0C0400, // 002D CALL R3 2 0x70020001, // 002E JMP #0031 0x500C0000, // 002F LDBOOL R3 0 0 - 0x90022C03, // 0030 SETMBR R0 K22 R3 + 0x90022E03, // 0030 SETMBR R0 K23 R3 0x80000000, // 0031 RET 0 }) ) @@ -2765,33 +4121,33 @@ be_local_closure(class_SequenceManager_init, /* name */ ( &(const binstruction[30]) { /* code */ 0x90020C01, // 0000 SETMBR R0 K6 R1 0x4C0C0000, // 0001 LDNIL R3 - 0x90024603, // 0002 SETMBR R0 K35 R3 + 0x90024803, // 0002 SETMBR R0 K36 R3 0x600C0013, // 0003 GETGBL R3 G19 0x7C0C0000, // 0004 CALL R3 0 - 0x90024803, // 0005 SETMBR R0 K36 R3 - 0x90020113, // 0006 SETMBR R0 K0 K19 - 0x90021F13, // 0007 SETMBR R0 K15 K19 + 0x90024A03, // 0005 SETMBR R0 K37 R3 + 0x90020114, // 0006 SETMBR R0 K0 K20 + 0x90022314, // 0007 SETMBR R0 K17 K20 0x600C0012, // 0008 GETGBL R3 G18 0x7C0C0000, // 0009 CALL R3 0 0x90020203, // 000A SETMBR R0 K1 R3 0x500C0000, // 000B LDBOOL R3 0 0 - 0x90022C03, // 000C SETMBR R0 K22 R3 + 0x90022E03, // 000C SETMBR R0 K23 R3 0x4C0C0000, // 000D LDNIL R3 0x200C0403, // 000E NE R3 R2 R3 0x780E0001, // 000F JMPF R3 #0012 0x5C0C0400, // 0010 MOVE R3 R2 0x70020000, // 0011 JMP #0013 - 0x580C0014, // 0012 LDCONST R3 K20 - 0x90023E03, // 0013 SETMBR R0 K31 R3 - 0x90024113, // 0014 SETMBR R0 K32 K19 + 0x580C0015, // 0012 LDCONST R3 K21 + 0x90024003, // 0013 SETMBR R0 K32 R3 + 0x90024314, // 0014 SETMBR R0 K33 K20 0x4C0C0000, // 0015 LDNIL R3 0x200C0403, // 0016 NE R3 R2 R3 0x780E0001, // 0017 JMPF R3 #001A - 0x200C0514, // 0018 NE R3 R2 K20 + 0x200C0515, // 0018 NE R3 R2 K21 0x740E0000, // 0019 JMPT R3 #001B 0x500C0001, // 001A LDBOOL R3 0 1 0x500C0200, // 001B LDBOOL R3 1 0 - 0x90024203, // 001C SETMBR R0 K33 R3 + 0x90024403, // 001C SETMBR R0 K34 R3 0x80000000, // 001D RET 0 }) ) @@ -2816,10 +4172,10 @@ be_local_closure(class_SequenceManager_stop, /* name */ be_str_weak(stop), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x88040117, // 0000 GETMBR R1 R0 K23 0x7806001B, // 0001 JMPF R1 #001E 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90022C01, // 0003 SETMBR R0 K22 R1 + 0x90022E01, // 0003 SETMBR R0 K23 R1 0x88040100, // 0004 GETMBR R1 R0 K0 0x6008000C, // 0005 GETGBL R2 G12 0x880C0101, // 0006 GETMBR R3 R0 K1 @@ -2834,17 +4190,17 @@ be_local_closure(class_SequenceManager_stop, /* name */ 0x780A0005, // 000F JMPF R2 #0016 0x94080305, // 0010 GETIDX R2 R1 K5 0x880C0106, // 0011 GETMBR R3 R0 K6 - 0x8C0C070B, // 0012 GETMET R3 R3 K11 + 0x8C0C070D, // 0012 GETMET R3 R3 K13 0x5C140400, // 0013 MOVE R5 R2 0x7C0C0400, // 0014 CALL R3 2 0x70020005, // 0015 JMP #001C 0x94080303, // 0016 GETIDX R2 R1 K3 - 0x1C08050D, // 0017 EQ R2 R2 K13 + 0x1C08050F, // 0017 EQ R2 R2 K15 0x780A0002, // 0018 JMPF R2 #001C - 0x9408030E, // 0019 GETIDX R2 R1 K14 - 0x8C0C050A, // 001A GETMET R3 R2 K10 + 0x94080310, // 0019 GETIDX R2 R1 K16 + 0x8C0C050C, // 001A GETMET R3 R2 K12 0x7C0C0200, // 001B CALL R3 1 - 0x8C040125, // 001C GETMET R1 R0 K37 + 0x8C040126, // 001C GETMET R1 R0 K38 0x7C040200, // 001D CALL R1 1 0x80040000, // 001E RET 1 R0 }) @@ -2871,11 +4227,11 @@ be_local_closure(class_SequenceManager_push_wait_step, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x8C080511, // 0001 GETMET R2 R2 K17 + 0x8C080512, // 0001 GETMET R2 R2 K18 0x60100013, // 0002 GETGBL R4 G19 0x7C100000, // 0003 CALL R4 0 - 0x98120709, // 0004 SETIDX R4 K3 K9 - 0x98122401, // 0005 SETIDX R4 K18 R1 + 0x9812070B, // 0004 SETIDX R4 K3 K11 + 0x98122601, // 0005 SETIDX R4 K19 R1 0x7C080400, // 0006 CALL R2 2 0x80040000, // 0007 RET 1 R0 }) @@ -2908,13 +4264,13 @@ be_local_closure(class_SequenceManager_advance_to_next_step, /* name */ 0x94100503, // 0004 GETIDX R4 R2 K3 0x1C100904, // 0005 EQ R4 R4 K4 0x78120004, // 0006 JMPF R4 #000C - 0x8C10051A, // 0007 GETMET R4 R2 K26 - 0x58180012, // 0008 LDCONST R6 K18 + 0x8C10051B, // 0007 GETMET R4 R2 K27 + 0x58180013, // 0008 LDCONST R6 K19 0x7C100400, // 0009 CALL R4 2 0x78120000, // 000A JMPF R4 #000C 0x940C0505, // 000B GETIDX R3 R2 K5 0x88100100, // 000C GETMBR R4 R0 K0 - 0x00100914, // 000D ADD R4 R4 K20 + 0x00100915, // 000D ADD R4 R4 K21 0x90020004, // 000E SETMBR R0 K0 R4 0x88100100, // 000F GETMBR R4 R0 K0 0x6014000C, // 0010 GETGBL R5 G12 @@ -2926,14 +4282,14 @@ be_local_closure(class_SequenceManager_advance_to_next_step, /* name */ 0x20100604, // 0016 NE R4 R3 R4 0x78120003, // 0017 JMPF R4 #001C 0x88100106, // 0018 GETMBR R4 R0 K6 - 0x8C10090B, // 0019 GETMET R4 R4 K11 + 0x8C10090D, // 0019 GETMET R4 R4 K13 0x5C180600, // 001A MOVE R6 R3 0x7C100400, // 001B CALL R4 2 0x8C100102, // 001C GETMET R4 R0 K2 0x5C180200, // 001D MOVE R6 R1 0x7C100400, // 001E CALL R4 2 0x70020003, // 001F JMP #0024 - 0x8C100126, // 0020 GETMET R4 R0 K38 + 0x8C100127, // 0020 GETMET R4 R0 K39 0x5C180200, // 0021 MOVE R6 R1 0x5C1C0600, // 0022 MOVE R7 R3 0x7C100600, // 0023 CALL R4 3 @@ -2962,16 +4318,16 @@ be_local_closure(class_SequenceManager_get_resolved_repeat_count, /* name */ &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x60040004, // 0000 GETGBL R1 G4 - 0x8808011F, // 0001 GETMBR R2 R0 K31 + 0x88080120, // 0001 GETMBR R2 R0 K32 0x7C040200, // 0002 CALL R1 1 - 0x1C040327, // 0003 EQ R1 R1 K39 + 0x1C040328, // 0003 EQ R1 R1 K40 0x78060004, // 0004 JMPF R1 #000A - 0x8C04011F, // 0005 GETMET R1 R0 K31 + 0x8C040120, // 0005 GETMET R1 R0 K32 0x880C0106, // 0006 GETMBR R3 R0 K6 0x7C040400, // 0007 CALL R1 2 0x80040200, // 0008 RET 1 R1 0x70020001, // 0009 JMP #000C - 0x8804011F, // 000A GETMBR R1 R0 K31 + 0x88040120, // 000A GETMBR R1 R0 K32 0x80040200, // 000B RET 1 R1 0x80000000, // 000C RET 0 }) @@ -2997,21 +4353,21 @@ be_local_closure(class_SequenceManager_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[51]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x88080117, // 0000 GETMBR R2 R0 K23 0x780A0003, // 0001 JMPF R2 #0006 0x50080000, // 0002 LDBOOL R2 0 0 - 0x90022C02, // 0003 SETMBR R0 K22 R2 - 0x8C080125, // 0004 GETMET R2 R0 K37 + 0x90022E02, // 0003 SETMBR R0 K23 R2 + 0x8C080126, // 0004 GETMET R2 R0 K38 0x7C080200, // 0005 CALL R2 1 - 0x90020113, // 0006 SETMBR R0 K0 K19 - 0x90021E01, // 0007 SETMBR R0 K15 R1 - 0x90024113, // 0008 SETMBR R0 K32 K19 + 0x90020114, // 0006 SETMBR R0 K0 K20 + 0x90022201, // 0007 SETMBR R0 K17 R1 + 0x90024314, // 0008 SETMBR R0 K33 K20 0x50080200, // 0009 LDBOOL R2 1 0 - 0x90022C02, // 000A SETMBR R0 K22 R2 + 0x90022E02, // 000A SETMBR R0 K23 R2 0x6008000C, // 000B GETGBL R2 G12 0x880C0101, // 000C GETMBR R3 R0 K1 0x7C080200, // 000D CALL R2 1 - 0x24080513, // 000E GT R2 R2 K19 + 0x24080514, // 000E GT R2 R2 K20 0x780A0021, // 000F JMPF R2 #0032 0x88080100, // 0010 GETMBR R2 R0 K0 0x600C000C, // 0011 GETGBL R3 G12 @@ -3023,9 +4379,9 @@ be_local_closure(class_SequenceManager_start, /* name */ 0x880C0100, // 0017 GETMBR R3 R0 K0 0x94080403, // 0018 GETIDX R2 R2 R3 0x940C0503, // 0019 GETIDX R3 R2 K3 - 0x1C0C070C, // 001A EQ R3 R3 K12 + 0x1C0C070E, // 001A EQ R3 R3 K14 0x780E000A, // 001B JMPF R3 #0027 - 0x940C050C, // 001C GETIDX R3 R2 K12 + 0x940C050E, // 001C GETIDX R3 R2 K14 0x4C100000, // 001D LDNIL R4 0x20100604, // 001E NE R4 R3 R4 0x78120002, // 001F JMPF R4 #0023 @@ -3033,7 +4389,7 @@ be_local_closure(class_SequenceManager_start, /* name */ 0x88140106, // 0021 GETMBR R5 R0 K6 0x7C100200, // 0022 CALL R4 1 0x88100100, // 0023 GETMBR R4 R0 K0 - 0x00100914, // 0024 ADD R4 R4 K20 + 0x00100915, // 0024 ADD R4 R4 K21 0x90020004, // 0025 SETMBR R0 K0 R4 0x70020000, // 0026 JMP #0028 0x70020000, // 0027 JMP #0029 @@ -3044,7 +4400,7 @@ be_local_closure(class_SequenceManager_start, /* name */ 0x7C0C0200, // 002C CALL R3 1 0x14080403, // 002D LT R2 R2 R3 0x780A0002, // 002E JMPF R2 #0032 - 0x8C080115, // 002F GETMET R2 R0 K21 + 0x8C080116, // 002F GETMET R2 R0 K22 0x5C100200, // 0030 MOVE R4 R1 0x7C080400, // 0031 CALL R2 2 0x80040000, // 0032 RET 1 R0 @@ -3222,6 +4578,55 @@ be_local_closure(wave_single_sine, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: twinkle_classic +********************************************************************/ +be_local_closure(twinkle_classic, /* 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_classic), + &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 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: gradient_two_color_linear ********************************************************************/ @@ -3262,8 +4667,8 @@ be_local_closure(gradient_two_color_linear, /* name */ ); /*******************************************************************/ -// compact class 'CometAnimation' ktab size: 24, total: 45 (saved 168 bytes) -static const bvalue be_ktab_class_CometAnimation[24] = { +// compact class 'CometAnimation' ktab size: 25, total: 46 (saved 168 bytes) +static const bvalue be_ktab_class_CometAnimation[25] = { /* K0 */ be_nested_str_weak(update), /* K1 */ be_nested_str_weak(speed), /* K2 */ be_nested_str_weak(direction), @@ -3288,6 +4693,7 @@ static const bvalue be_ktab_class_CometAnimation[24] = { /* K21 */ be_nested_str_weak(scale_uint), /* K22 */ be_nested_str_weak(width), /* K23 */ be_nested_str_weak(set_pixel_color), + /* K24 */ be_nested_str_weak(on_param_changed), }; @@ -3587,7 +4993,7 @@ be_local_closure(class_CometAnimation_render, /* name */ ********************************************************************/ be_local_closure(class_CometAnimation_on_param_changed, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -3598,21 +5004,28 @@ be_local_closure(class_CometAnimation_on_param_changed, /* name */ &be_ktab_class_CometAnimation, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x1C0C0302, // 0000 EQ R3 R1 K2 - 0x780E000A, // 0001 JMPF R3 #000D - 0x880C0104, // 0002 GETMBR R3 R0 K4 - 0x8C0C0705, // 0003 GETMET R3 R3 K5 - 0x7C0C0200, // 0004 CALL R3 1 - 0x24100507, // 0005 GT R4 R2 K7 - 0x78120001, // 0006 JMPF R4 #0009 - 0x90021107, // 0007 SETMBR R0 K8 K7 - 0x70020003, // 0008 JMP #000D - 0x04100709, // 0009 SUB R4 R3 K9 - 0x541600FF, // 000A LDINT R5 256 - 0x08100805, // 000B MUL R4 R4 R5 - 0x90021004, // 000C SETMBR R0 K8 R4 - 0x80000000, // 000D RET 0 + ( &(const binstruction[21]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0718, // 0003 GETMET R3 R3 K24 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x780E000A, // 0008 JMPF R3 #0014 + 0x880C0104, // 0009 GETMBR R3 R0 K4 + 0x8C0C0705, // 000A GETMET R3 R3 K5 + 0x7C0C0200, // 000B CALL R3 1 + 0x24100507, // 000C GT R4 R2 K7 + 0x78120001, // 000D JMPF R4 #0010 + 0x90021107, // 000E SETMBR R0 K8 K7 + 0x70020003, // 000F JMP #0014 + 0x04100709, // 0010 SUB R4 R3 K9 + 0x541600FF, // 0011 LDINT R5 256 + 0x08100805, // 0012 MUL R4 R4 R5 + 0x90021004, // 0013 SETMBR R0 K8 R4 + 0x80000000, // 0014 RET 0 }) ) ); @@ -3685,65 +5098,108 @@ be_local_class(CometAnimation, })), be_str_weak(CometAnimation) ); -// compact class 'FireAnimation' ktab size: 46, total: 74 (saved 224 bytes) -static const bvalue be_ktab_class_FireAnimation[46] = { - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(heat_map), - /* K2 */ be_nested_str_weak(current_colors), - /* K3 */ be_nested_str_weak(last_update), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(random_seed), - /* K6 */ be_nested_str_weak(engine), - /* K7 */ be_nested_str_weak(time_ms), - /* K8 */ be_nested_str_weak(cooling_rate), - /* K9 */ be_nested_str_weak(sparking_rate), - /* K10 */ be_nested_str_weak(intensity), - /* K11 */ be_nested_str_weak(flicker_amount), - /* K12 */ be_nested_str_weak(color), - /* K13 */ be_nested_str_weak(get_strip_length), - /* K14 */ be_nested_str_weak(_initialize_buffers), - /* K15 */ be_nested_str_weak(_random_range), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(scale_uint), - /* K18 */ be_const_int(2), - /* K19 */ be_const_int(1), - /* K20 */ be_const_int(3), - /* K21 */ be_const_int(-16777216), - /* K22 */ be_nested_str_weak(animation), - /* K23 */ be_nested_str_weak(rich_palette), - /* K24 */ be_nested_str_weak(palette), - /* K25 */ be_nested_str_weak(PALETTE_FIRE), - /* K26 */ be_nested_str_weak(cycle_period), - /* K27 */ be_nested_str_weak(transition_type), - /* K28 */ be_nested_str_weak(brightness), - /* K29 */ be_nested_str_weak(range_min), - /* K30 */ be_nested_str_weak(range_max), - /* K31 */ be_nested_str_weak(is_color_provider), - /* K32 */ be_nested_str_weak(get_color_for_value), - /* K33 */ be_const_int(1103515245), - /* K34 */ be_const_int(2147483647), - /* K35 */ be_nested_str_weak(start), - /* K36 */ be_nested_str_weak(resize), - /* K37 */ be_nested_str_weak(is_running), - /* K38 */ be_nested_str_weak(width), - /* K39 */ be_nested_str_weak(set_pixel_color), - /* K40 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K41 */ be_nested_str_weak(flicker_speed), - /* K42 */ be_nested_str_weak(priority), - /* K43 */ be_nested_str_weak(_random), - /* K44 */ be_nested_str_weak(update), - /* K45 */ be_nested_str_weak(_update_fire_simulation), + +/******************************************************************** +** Solidified function: gradient_rainbow_linear +********************************************************************/ +be_local_closure(gradient_rainbow_linear, /* 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(0), + /* K5 */ be_nested_str_weak(direction), + /* K6 */ be_nested_str_weak(movement_speed), + }), + be_str_weak(gradient_rainbow_linear), + &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 + 0x4C080000, // 0004 LDNIL R2 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x90060B04, // 0007 SETMBR R1 K5 K4 + 0x540A0031, // 0008 LDINT R2 50 + 0x90060C02, // 0009 SETMBR R1 K6 R2 + 0x80040200, // 000A RET 1 R1 + }) + ) +); +/*******************************************************************/ + +// compact class 'FireAnimation' ktab size: 47, total: 75 (saved 224 bytes) +static const bvalue be_ktab_class_FireAnimation[47] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(_random), + /* K2 */ be_nested_str_weak(is_running), + /* K3 */ be_nested_str_weak(_fix_time_ms), + /* K4 */ be_nested_str_weak(engine), + /* K5 */ be_nested_str_weak(get_strip_length), + /* K6 */ be_nested_str_weak(width), + /* K7 */ be_nested_str_weak(set_pixel_color), + /* K8 */ be_nested_str_weak(current_colors), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K11 */ be_nested_str_weak(intensity), + /* K12 */ be_nested_str_weak(flicker_speed), + /* K13 */ be_nested_str_weak(priority), + /* K14 */ be_nested_str_weak(init), + /* K15 */ be_nested_str_weak(heat_map), + /* K16 */ be_nested_str_weak(last_update), + /* K17 */ be_nested_str_weak(random_seed), + /* K18 */ be_nested_str_weak(time_ms), + /* K19 */ be_nested_str_weak(resize), + /* K20 */ be_const_int(-16777216), + /* K21 */ be_nested_str_weak(update), + /* K22 */ be_nested_str_weak(_update_fire_simulation), + /* K23 */ be_const_int(1103515245), + /* K24 */ be_const_int(2147483647), + /* K25 */ be_nested_str_weak(cooling_rate), + /* K26 */ be_nested_str_weak(sparking_rate), + /* K27 */ be_nested_str_weak(flicker_amount), + /* K28 */ be_nested_str_weak(color), + /* K29 */ be_nested_str_weak(_initialize_buffers), + /* K30 */ be_nested_str_weak(_random_range), + /* K31 */ be_nested_str_weak(tasmota), + /* K32 */ be_nested_str_weak(scale_uint), + /* K33 */ be_const_int(2), + /* K34 */ be_const_int(3), + /* K35 */ be_nested_str_weak(animation), + /* K36 */ be_nested_str_weak(rich_palette), + /* K37 */ be_nested_str_weak(palette), + /* K38 */ be_nested_str_weak(PALETTE_FIRE), + /* K39 */ be_nested_str_weak(cycle_period), + /* K40 */ be_nested_str_weak(transition_type), + /* K41 */ be_nested_str_weak(brightness), + /* K42 */ be_nested_str_weak(range_min), + /* K43 */ be_nested_str_weak(range_max), + /* K44 */ be_nested_str_weak(is_color_provider), + /* K45 */ be_nested_str_weak(get_color_for_value), + /* K46 */ be_nested_str_weak(start), }; extern const bclass be_class_FireAnimation; /******************************************************************** -** Solidified function: init +** Solidified function: _random_range ********************************************************************/ -be_local_closure(class_FireAnimation_init, /* name */ +be_local_closure(class_FireAnimation__random_range, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -3752,397 +5208,16 @@ be_local_closure(class_FireAnimation_init, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(init), + be_str_weak(_random_range), &be_const_str_solidified, - ( &(const binstruction[19]) { /* 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 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020402, // 000B SETMBR R0 K2 R2 - 0x90020704, // 000C SETMBR R0 K3 K4 - 0x88080106, // 000D GETMBR R2 R0 K6 - 0x88080507, // 000E GETMBR R2 R2 K7 - 0x540EFFFF, // 000F LDINT R3 65536 - 0x10080403, // 0010 MOD R2 R2 R3 - 0x90020A02, // 0011 SETMBR R0 K5 R2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_fire_simulation -********************************************************************/ -be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ - be_nested_proto( - 23, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_update_fire_simulation), - &be_const_str_solidified, - ( &(const binstruction[209]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x880C0109, // 0001 GETMBR R3 R0 K9 - 0x8810010A, // 0002 GETMBR R4 R0 K10 - 0x8814010B, // 0003 GETMBR R5 R0 K11 - 0x8818010C, // 0004 GETMBR R6 R0 K12 - 0x881C0106, // 0005 GETMBR R7 R0 K6 - 0x8C1C0F0D, // 0006 GETMET R7 R7 K13 - 0x7C1C0200, // 0007 CALL R7 1 - 0x6020000C, // 0008 GETGBL R8 G12 - 0x88240101, // 0009 GETMBR R9 R0 K1 - 0x7C200200, // 000A CALL R8 1 - 0x20201007, // 000B NE R8 R8 R7 - 0x78220001, // 000C JMPF R8 #000F - 0x8C20010E, // 000D GETMET R8 R0 K14 - 0x7C200200, // 000E CALL R8 1 - 0x58200004, // 000F LDCONST R8 K4 - 0x14241007, // 0010 LT R9 R8 R7 - 0x78260017, // 0011 JMPF R9 #002A - 0x8C24010F, // 0012 GETMET R9 R0 K15 - 0xB82E2000, // 0013 GETNGBL R11 K16 - 0x8C2C1711, // 0014 GETMET R11 R11 K17 - 0x5C340400, // 0015 MOVE R13 R2 - 0x58380004, // 0016 LDCONST R14 K4 - 0x543E00FE, // 0017 LDINT R15 255 - 0x58400004, // 0018 LDCONST R16 K4 - 0x54460009, // 0019 LDINT R17 10 - 0x7C2C0C00, // 001A CALL R11 6 - 0x002C1712, // 001B ADD R11 R11 K18 - 0x7C240400, // 001C CALL R9 2 - 0x88280101, // 001D GETMBR R10 R0 K1 - 0x94281408, // 001E GETIDX R10 R10 R8 - 0x2828120A, // 001F GE R10 R9 R10 - 0x782A0002, // 0020 JMPF R10 #0024 - 0x88280101, // 0021 GETMBR R10 R0 K1 - 0x98281104, // 0022 SETIDX R10 R8 K4 - 0x70020003, // 0023 JMP #0028 - 0x88280101, // 0024 GETMBR R10 R0 K1 - 0x942C1408, // 0025 GETIDX R11 R10 R8 - 0x042C1609, // 0026 SUB R11 R11 R9 - 0x9828100B, // 0027 SETIDX R10 R8 R11 - 0x00201113, // 0028 ADD R8 R8 K19 - 0x7001FFE5, // 0029 JMP #0010 - 0x28240F14, // 002A GE R9 R7 K20 - 0x78260012, // 002B JMPF R9 #003F - 0x04240F13, // 002C SUB R9 R7 K19 - 0x28281312, // 002D GE R10 R9 K18 - 0x782A000F, // 002E JMPF R10 #003F - 0x04281313, // 002F SUB R10 R9 K19 - 0x882C0101, // 0030 GETMBR R11 R0 K1 - 0x9428160A, // 0031 GETIDX R10 R11 R10 - 0x042C1312, // 0032 SUB R11 R9 K18 - 0x88300101, // 0033 GETMBR R12 R0 K1 - 0x942C180B, // 0034 GETIDX R11 R12 R11 - 0x0028140B, // 0035 ADD R10 R10 R11 - 0x042C1312, // 0036 SUB R11 R9 K18 - 0x88300101, // 0037 GETMBR R12 R0 K1 - 0x942C180B, // 0038 GETIDX R11 R12 R11 - 0x0028140B, // 0039 ADD R10 R10 R11 - 0x0C281514, // 003A DIV R10 R10 K20 - 0x882C0101, // 003B GETMBR R11 R0 K1 - 0x982C120A, // 003C SETIDX R11 R9 R10 - 0x04241313, // 003D SUB R9 R9 K19 - 0x7001FFED, // 003E JMP #002D - 0x8C24010F, // 003F GETMET R9 R0 K15 - 0x542E00FE, // 0040 LDINT R11 255 - 0x7C240400, // 0041 CALL R9 2 - 0x14241203, // 0042 LT R9 R9 R3 - 0x7826000B, // 0043 JMPF R9 #0050 - 0x8C24010F, // 0044 GETMET R9 R0 K15 - 0x542E0006, // 0045 LDINT R11 7 - 0x7C240400, // 0046 CALL R9 2 - 0x8C28010F, // 0047 GETMET R10 R0 K15 - 0x5432005E, // 0048 LDINT R12 95 - 0x7C280400, // 0049 CALL R10 2 - 0x542E009F, // 004A LDINT R11 160 - 0x0028140B, // 004B ADD R10 R10 R11 - 0x142C1207, // 004C LT R11 R9 R7 - 0x782E0001, // 004D JMPF R11 #0050 - 0x882C0101, // 004E GETMBR R11 R0 K1 - 0x982C120A, // 004F SETIDX R11 R9 R10 - 0x58200004, // 0050 LDCONST R8 K4 - 0x14241007, // 0051 LT R9 R8 R7 - 0x7826007C, // 0052 JMPF R9 #00D0 - 0x88240101, // 0053 GETMBR R9 R0 K1 - 0x94241208, // 0054 GETIDX R9 R9 R8 - 0xB82A2000, // 0055 GETNGBL R10 K16 - 0x8C281511, // 0056 GETMET R10 R10 K17 - 0x5C301200, // 0057 MOVE R12 R9 - 0x58340004, // 0058 LDCONST R13 K4 - 0x543A00FE, // 0059 LDINT R14 255 - 0x583C0004, // 005A LDCONST R15 K4 - 0x5C400800, // 005B MOVE R16 R4 - 0x7C280C00, // 005C CALL R10 6 - 0x5C241400, // 005D MOVE R9 R10 - 0x24280B04, // 005E GT R10 R5 K4 - 0x782A0012, // 005F JMPF R10 #0073 - 0x8C28010F, // 0060 GETMET R10 R0 K15 - 0x5C300A00, // 0061 MOVE R12 R5 - 0x7C280400, // 0062 CALL R10 2 - 0x8C2C010F, // 0063 GETMET R11 R0 K15 - 0x58340012, // 0064 LDCONST R13 K18 - 0x7C2C0400, // 0065 CALL R11 2 - 0x1C2C1704, // 0066 EQ R11 R11 K4 - 0x782E0001, // 0067 JMPF R11 #006A - 0x0024120A, // 0068 ADD R9 R9 R10 - 0x70020004, // 0069 JMP #006F - 0x242C120A, // 006A GT R11 R9 R10 - 0x782E0001, // 006B JMPF R11 #006E - 0x0424120A, // 006C SUB R9 R9 R10 - 0x70020000, // 006D JMP #006F - 0x58240004, // 006E LDCONST R9 K4 - 0x542E00FE, // 006F LDINT R11 255 - 0x242C120B, // 0070 GT R11 R9 R11 - 0x782E0000, // 0071 JMPF R11 #0073 - 0x542600FE, // 0072 LDINT R9 255 - 0x58280015, // 0073 LDCONST R10 K21 - 0x242C1304, // 0074 GT R11 R9 K4 - 0x782E0055, // 0075 JMPF R11 #00CC - 0x5C2C0C00, // 0076 MOVE R11 R6 - 0x4C300000, // 0077 LDNIL R12 - 0x1C30160C, // 0078 EQ R12 R11 R12 - 0x7832000E, // 0079 JMPF R12 #0089 - 0xB8322C00, // 007A GETNGBL R12 K22 - 0x8C301917, // 007B GETMET R12 R12 K23 - 0x88380106, // 007C GETMBR R14 R0 K6 - 0x7C300400, // 007D CALL R12 2 - 0xB8362C00, // 007E GETNGBL R13 K22 - 0x88341B19, // 007F GETMBR R13 R13 K25 - 0x9032300D, // 0080 SETMBR R12 K24 R13 - 0x90323504, // 0081 SETMBR R12 K26 K4 - 0x90323713, // 0082 SETMBR R12 K27 K19 - 0x543600FE, // 0083 LDINT R13 255 - 0x9032380D, // 0084 SETMBR R12 K28 R13 - 0x90323B04, // 0085 SETMBR R12 K29 K4 - 0x543600FE, // 0086 LDINT R13 255 - 0x90323C0D, // 0087 SETMBR R12 K30 R13 - 0x5C2C1800, // 0088 MOVE R11 R12 - 0xB8322C00, // 0089 GETNGBL R12 K22 - 0x8C30191F, // 008A GETMET R12 R12 K31 - 0x5C381600, // 008B MOVE R14 R11 - 0x7C300400, // 008C CALL R12 2 - 0x78320009, // 008D JMPF R12 #0098 - 0x88301720, // 008E GETMBR R12 R11 K32 - 0x4C340000, // 008F LDNIL R13 - 0x2030180D, // 0090 NE R12 R12 R13 - 0x78320005, // 0091 JMPF R12 #0098 - 0x8C301720, // 0092 GETMET R12 R11 K32 - 0x5C381200, // 0093 MOVE R14 R9 - 0x583C0004, // 0094 LDCONST R15 K4 - 0x7C300600, // 0095 CALL R12 3 - 0x5C281800, // 0096 MOVE R10 R12 - 0x70020033, // 0097 JMP #00CC - 0x5C281600, // 0098 MOVE R10 R11 - 0x54320017, // 0099 LDINT R12 24 - 0x3C30140C, // 009A SHR R12 R10 R12 - 0x543600FE, // 009B LDINT R13 255 - 0x2C30180D, // 009C AND R12 R12 R13 - 0x5436000F, // 009D LDINT R13 16 - 0x3C34140D, // 009E SHR R13 R10 R13 - 0x543A00FE, // 009F LDINT R14 255 - 0x2C341A0E, // 00A0 AND R13 R13 R14 - 0x543A0007, // 00A1 LDINT R14 8 - 0x3C38140E, // 00A2 SHR R14 R10 R14 - 0x543E00FE, // 00A3 LDINT R15 255 - 0x2C381C0F, // 00A4 AND R14 R14 R15 - 0x543E00FE, // 00A5 LDINT R15 255 - 0x2C3C140F, // 00A6 AND R15 R10 R15 - 0xB8422000, // 00A7 GETNGBL R16 K16 - 0x8C402111, // 00A8 GETMET R16 R16 K17 - 0x5C481200, // 00A9 MOVE R18 R9 - 0x584C0004, // 00AA LDCONST R19 K4 - 0x545200FE, // 00AB LDINT R20 255 - 0x58540004, // 00AC LDCONST R21 K4 - 0x5C581A00, // 00AD MOVE R22 R13 - 0x7C400C00, // 00AE CALL R16 6 - 0x5C342000, // 00AF MOVE R13 R16 - 0xB8422000, // 00B0 GETNGBL R16 K16 - 0x8C402111, // 00B1 GETMET R16 R16 K17 - 0x5C481200, // 00B2 MOVE R18 R9 - 0x584C0004, // 00B3 LDCONST R19 K4 - 0x545200FE, // 00B4 LDINT R20 255 - 0x58540004, // 00B5 LDCONST R21 K4 - 0x5C581C00, // 00B6 MOVE R22 R14 - 0x7C400C00, // 00B7 CALL R16 6 - 0x5C382000, // 00B8 MOVE R14 R16 - 0xB8422000, // 00B9 GETNGBL R16 K16 - 0x8C402111, // 00BA GETMET R16 R16 K17 - 0x5C481200, // 00BB MOVE R18 R9 - 0x584C0004, // 00BC LDCONST R19 K4 - 0x545200FE, // 00BD LDINT R20 255 - 0x58540004, // 00BE LDCONST R21 K4 - 0x5C581E00, // 00BF MOVE R22 R15 - 0x7C400C00, // 00C0 CALL R16 6 - 0x5C3C2000, // 00C1 MOVE R15 R16 - 0x54420017, // 00C2 LDINT R16 24 - 0x38401810, // 00C3 SHL R16 R12 R16 - 0x5446000F, // 00C4 LDINT R17 16 - 0x38441A11, // 00C5 SHL R17 R13 R17 - 0x30402011, // 00C6 OR R16 R16 R17 - 0x54460007, // 00C7 LDINT R17 8 - 0x38441C11, // 00C8 SHL R17 R14 R17 - 0x30402011, // 00C9 OR R16 R16 R17 - 0x3040200F, // 00CA OR R16 R16 R15 - 0x5C282000, // 00CB MOVE R10 R16 - 0x882C0102, // 00CC GETMBR R11 R0 K2 - 0x982C100A, // 00CD SETIDX R11 R8 R10 - 0x00201113, // 00CE ADD R8 R8 K19 - 0x7001FF80, // 00CF JMP #0051 - 0x80000000, // 00D0 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _random -********************************************************************/ -be_local_closure(class_FireAnimation__random, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_random), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88040105, // 0000 GETMBR R1 R0 K5 - 0x08040321, // 0001 MUL R1 R1 K33 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040322, // 0004 AND R1 R1 K34 - 0x90020A01, // 0005 SETMBR R0 K5 R1 - 0x88040105, // 0006 GETMBR R1 R0 K5 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_FireAnimation_start, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080523, // 0003 GETMET R2 R2 K35 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020704, // 0006 SETMBR R0 K3 K4 - 0x8C08010E, // 0007 GETMET R2 R0 K14 - 0x7C080200, // 0008 CALL R2 1 - 0x88080106, // 0009 GETMBR R2 R0 K6 - 0x88080507, // 000A GETMBR R2 R2 K7 - 0x540EFFFF, // 000B LDINT R3 65536 - 0x10080403, // 000C MOD R2 R2 R3 - 0x90020A02, // 000D SETMBR R0 K5 R2 - 0x80040000, // 000E RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_FireAnimation_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_FireAnimation, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_FireAnimation__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_FireAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x8C04030D, // 0001 GETMET R1 R1 K13 - 0x7C040200, // 0002 CALL R1 1 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x8C080524, // 0004 GETMET R2 R2 K36 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x8C080524, // 0008 GETMET R2 R2 K36 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x58080004, // 000B LDCONST R2 K4 - 0x140C0401, // 000C LT R3 R2 R1 - 0x780E0005, // 000D JMPF R3 #0014 - 0x880C0101, // 000E GETMBR R3 R0 K1 - 0x980C0504, // 000F SETIDX R3 R2 K4 - 0x880C0102, // 0010 GETMBR R3 R0 K2 - 0x980C0515, // 0011 SETIDX R3 R2 K21 - 0x00080513, // 0012 ADD R2 R2 K19 - 0x7001FFF7, // 0013 JMP #000C - 0x80000000, // 0014 RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80060000, // 0002 RET 1 K0 + 0x8C080101, // 0003 GETMET R2 R0 K1 + 0x7C080200, // 0004 CALL R2 1 + 0x10080401, // 0005 MOD R2 R2 R1 + 0x80040400, // 0006 RET 1 R2 }) ) ); @@ -4165,32 +5240,36 @@ be_local_closure(class_FireAnimation_render, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C0125, // 0000 GETMBR R3 R0 K37 + ( &(const binstruction[29]) { /* code */ + 0x880C0102, // 0000 GETMBR R3 R0 K2 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 - 0x880C0106, // 0007 GETMBR R3 R0 K6 - 0x8C0C070D, // 0008 GETMET R3 R3 K13 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100004, // 000A LDCONST R4 K4 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x88140326, // 000D GETMBR R5 R1 K38 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C140327, // 0010 GETMET R5 R1 K39 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200102, // 0012 GETMBR R8 R0 K2 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x00100913, // 0015 ADD R4 R4 K19 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 + 0x8C0C0103, // 0007 GETMET R3 R0 K3 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0104, // 000B GETMBR R3 R0 K4 + 0x8C0C0705, // 000C GETMET R3 R3 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100000, // 000E LDCONST R4 K0 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x88140306, // 0011 GETMBR R5 R1 K6 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C140307, // 0014 GETMET R5 R1 K7 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200108, // 0016 GETMBR R8 R0 K8 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x00100909, // 0019 ADD R4 R4 K9 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 }) ) ); @@ -4215,11 +5294,11 @@ be_local_closure(class_FireAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080028, // 0001 LDCONST R2 K40 - 0x880C010A, // 0002 GETMBR R3 R0 K10 - 0x88100129, // 0003 GETMBR R4 R0 K41 - 0x8814012A, // 0004 GETMBR R5 R0 K42 - 0x88180125, // 0005 GETMBR R6 R0 K37 + 0x5808000A, // 0001 LDCONST R2 K10 + 0x880C010B, // 0002 GETMBR R3 R0 K11 + 0x8810010C, // 0003 GETMBR R4 R0 K12 + 0x8814010D, // 0004 GETMBR R5 R0 K13 + 0x88180102, // 0005 GETMBR R6 R0 K2 0x7C040A00, // 0006 CALL R1 5 0x80040200, // 0007 RET 1 R1 }) @@ -4229,11 +5308,11 @@ be_local_closure(class_FireAnimation_tostring, /* name */ /******************************************************************** -** Solidified function: _random_range +** Solidified function: init ********************************************************************/ -be_local_closure(class_FireAnimation__random_range, /* name */ +be_local_closure(class_FireAnimation_init, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -4242,16 +5321,72 @@ be_local_closure(class_FireAnimation__random_range, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_FireAnimation, /* shared constants */ - be_str_weak(_random_range), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x18080304, // 0000 LE R2 R1 K4 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80060800, // 0002 RET 1 K4 - 0x8C08012B, // 0003 GETMET R2 R0 K43 - 0x7C080200, // 0004 CALL R2 1 - 0x10080401, // 0005 MOD R2 R2 R1 - 0x80040400, // 0006 RET 1 R2 + ( &(const binstruction[19]) { /* 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 + 0x90021E02, // 0008 SETMBR R0 K15 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90021002, // 000B SETMBR R0 K8 R2 + 0x90022100, // 000C SETMBR R0 K16 K0 + 0x88080104, // 000D GETMBR R2 R0 K4 + 0x88080512, // 000E GETMBR R2 R2 K18 + 0x540EFFFF, // 000F LDINT R3 65536 + 0x10080403, // 0010 MOD R2 R2 R3 + 0x90022202, // 0011 SETMBR R0 K17 R2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_buffers +********************************************************************/ +be_local_closure(class_FireAnimation__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_FireAnimation, /* shared constants */ + be_str_weak(_initialize_buffers), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x88040104, // 0000 GETMBR R1 R0 K4 + 0x8C040305, // 0001 GETMET R1 R1 K5 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010F, // 0003 GETMBR R2 R0 K15 + 0x8C080513, // 0004 GETMET R2 R2 K19 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x8C080513, // 0008 GETMET R2 R2 K19 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x58080000, // 000B LDCONST R2 K0 + 0x140C0401, // 000C LT R3 R2 R1 + 0x780E0005, // 000D JMPF R3 #0014 + 0x880C010F, // 000E GETMBR R3 R0 K15 + 0x980C0500, // 000F SETIDX R3 R2 K0 + 0x880C0108, // 0010 GETMBR R3 R0 K8 + 0x980C0514, // 0011 SETIDX R3 R2 K20 + 0x00080509, // 0012 ADD R2 R2 K9 + 0x7001FFF7, // 0013 JMP #000C + 0x80000000, // 0014 RET 0 }) ) ); @@ -4278,21 +5413,21 @@ be_local_closure(class_FireAnimation_update, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052C, // 0003 GETMET R2 R2 K44 + 0x8C080515, // 0003 GETMET R2 R2 K21 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 - 0x88080129, // 0009 GETMBR R2 R0 K41 + 0x8808010C, // 0009 GETMBR R2 R0 K12 0x540E03E7, // 000A LDINT R3 1000 0x0C0C0602, // 000B DIV R3 R3 R2 - 0x88100103, // 000C GETMBR R4 R0 K3 + 0x88100110, // 000C GETMBR R4 R0 K16 0x04100204, // 000D SUB R4 R1 R4 0x28100803, // 000E GE R4 R4 R3 0x78120003, // 000F JMPF R4 #0014 - 0x90020601, // 0010 SETMBR R0 K3 R1 - 0x8C10012D, // 0011 GETMET R4 R0 K45 + 0x90022001, // 0010 SETMBR R0 K16 R1 + 0x8C100116, // 0011 GETMET R4 R0 K22 0x5C180200, // 0012 MOVE R6 R1 0x7C100400, // 0013 CALL R4 2 0x50100200, // 0014 LDBOOL R4 1 0 @@ -4303,6 +5438,307 @@ be_local_closure(class_FireAnimation_update, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: _random +********************************************************************/ +be_local_closure(class_FireAnimation__random, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_FireAnimation, /* shared constants */ + be_str_weak(_random), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x08040317, // 0001 MUL R1 R1 K23 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040318, // 0004 AND R1 R1 K24 + 0x90022201, // 0005 SETMBR R0 K17 R1 + 0x88040111, // 0006 GETMBR R1 R0 K17 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_fire_simulation +********************************************************************/ +be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ + be_nested_proto( + 23, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_FireAnimation, /* shared constants */ + be_str_weak(_update_fire_simulation), + &be_const_str_solidified, + ( &(const binstruction[209]) { /* code */ + 0x88080119, // 0000 GETMBR R2 R0 K25 + 0x880C011A, // 0001 GETMBR R3 R0 K26 + 0x8810010B, // 0002 GETMBR R4 R0 K11 + 0x8814011B, // 0003 GETMBR R5 R0 K27 + 0x8818011C, // 0004 GETMBR R6 R0 K28 + 0x881C0104, // 0005 GETMBR R7 R0 K4 + 0x8C1C0F05, // 0006 GETMET R7 R7 K5 + 0x7C1C0200, // 0007 CALL R7 1 + 0x6020000C, // 0008 GETGBL R8 G12 + 0x8824010F, // 0009 GETMBR R9 R0 K15 + 0x7C200200, // 000A CALL R8 1 + 0x20201007, // 000B NE R8 R8 R7 + 0x78220001, // 000C JMPF R8 #000F + 0x8C20011D, // 000D GETMET R8 R0 K29 + 0x7C200200, // 000E CALL R8 1 + 0x58200000, // 000F LDCONST R8 K0 + 0x14241007, // 0010 LT R9 R8 R7 + 0x78260017, // 0011 JMPF R9 #002A + 0x8C24011E, // 0012 GETMET R9 R0 K30 + 0xB82E3E00, // 0013 GETNGBL R11 K31 + 0x8C2C1720, // 0014 GETMET R11 R11 K32 + 0x5C340400, // 0015 MOVE R13 R2 + 0x58380000, // 0016 LDCONST R14 K0 + 0x543E00FE, // 0017 LDINT R15 255 + 0x58400000, // 0018 LDCONST R16 K0 + 0x54460009, // 0019 LDINT R17 10 + 0x7C2C0C00, // 001A CALL R11 6 + 0x002C1721, // 001B ADD R11 R11 K33 + 0x7C240400, // 001C CALL R9 2 + 0x8828010F, // 001D GETMBR R10 R0 K15 + 0x94281408, // 001E GETIDX R10 R10 R8 + 0x2828120A, // 001F GE R10 R9 R10 + 0x782A0002, // 0020 JMPF R10 #0024 + 0x8828010F, // 0021 GETMBR R10 R0 K15 + 0x98281100, // 0022 SETIDX R10 R8 K0 + 0x70020003, // 0023 JMP #0028 + 0x8828010F, // 0024 GETMBR R10 R0 K15 + 0x942C1408, // 0025 GETIDX R11 R10 R8 + 0x042C1609, // 0026 SUB R11 R11 R9 + 0x9828100B, // 0027 SETIDX R10 R8 R11 + 0x00201109, // 0028 ADD R8 R8 K9 + 0x7001FFE5, // 0029 JMP #0010 + 0x28240F22, // 002A GE R9 R7 K34 + 0x78260012, // 002B JMPF R9 #003F + 0x04240F09, // 002C SUB R9 R7 K9 + 0x28281321, // 002D GE R10 R9 K33 + 0x782A000F, // 002E JMPF R10 #003F + 0x04281309, // 002F SUB R10 R9 K9 + 0x882C010F, // 0030 GETMBR R11 R0 K15 + 0x9428160A, // 0031 GETIDX R10 R11 R10 + 0x042C1321, // 0032 SUB R11 R9 K33 + 0x8830010F, // 0033 GETMBR R12 R0 K15 + 0x942C180B, // 0034 GETIDX R11 R12 R11 + 0x0028140B, // 0035 ADD R10 R10 R11 + 0x042C1321, // 0036 SUB R11 R9 K33 + 0x8830010F, // 0037 GETMBR R12 R0 K15 + 0x942C180B, // 0038 GETIDX R11 R12 R11 + 0x0028140B, // 0039 ADD R10 R10 R11 + 0x0C281522, // 003A DIV R10 R10 K34 + 0x882C010F, // 003B GETMBR R11 R0 K15 + 0x982C120A, // 003C SETIDX R11 R9 R10 + 0x04241309, // 003D SUB R9 R9 K9 + 0x7001FFED, // 003E JMP #002D + 0x8C24011E, // 003F GETMET R9 R0 K30 + 0x542E00FE, // 0040 LDINT R11 255 + 0x7C240400, // 0041 CALL R9 2 + 0x14241203, // 0042 LT R9 R9 R3 + 0x7826000B, // 0043 JMPF R9 #0050 + 0x8C24011E, // 0044 GETMET R9 R0 K30 + 0x542E0006, // 0045 LDINT R11 7 + 0x7C240400, // 0046 CALL R9 2 + 0x8C28011E, // 0047 GETMET R10 R0 K30 + 0x5432005E, // 0048 LDINT R12 95 + 0x7C280400, // 0049 CALL R10 2 + 0x542E009F, // 004A LDINT R11 160 + 0x0028140B, // 004B ADD R10 R10 R11 + 0x142C1207, // 004C LT R11 R9 R7 + 0x782E0001, // 004D JMPF R11 #0050 + 0x882C010F, // 004E GETMBR R11 R0 K15 + 0x982C120A, // 004F SETIDX R11 R9 R10 + 0x58200000, // 0050 LDCONST R8 K0 + 0x14241007, // 0051 LT R9 R8 R7 + 0x7826007C, // 0052 JMPF R9 #00D0 + 0x8824010F, // 0053 GETMBR R9 R0 K15 + 0x94241208, // 0054 GETIDX R9 R9 R8 + 0xB82A3E00, // 0055 GETNGBL R10 K31 + 0x8C281520, // 0056 GETMET R10 R10 K32 + 0x5C301200, // 0057 MOVE R12 R9 + 0x58340000, // 0058 LDCONST R13 K0 + 0x543A00FE, // 0059 LDINT R14 255 + 0x583C0000, // 005A LDCONST R15 K0 + 0x5C400800, // 005B MOVE R16 R4 + 0x7C280C00, // 005C CALL R10 6 + 0x5C241400, // 005D MOVE R9 R10 + 0x24280B00, // 005E GT R10 R5 K0 + 0x782A0012, // 005F JMPF R10 #0073 + 0x8C28011E, // 0060 GETMET R10 R0 K30 + 0x5C300A00, // 0061 MOVE R12 R5 + 0x7C280400, // 0062 CALL R10 2 + 0x8C2C011E, // 0063 GETMET R11 R0 K30 + 0x58340021, // 0064 LDCONST R13 K33 + 0x7C2C0400, // 0065 CALL R11 2 + 0x1C2C1700, // 0066 EQ R11 R11 K0 + 0x782E0001, // 0067 JMPF R11 #006A + 0x0024120A, // 0068 ADD R9 R9 R10 + 0x70020004, // 0069 JMP #006F + 0x242C120A, // 006A GT R11 R9 R10 + 0x782E0001, // 006B JMPF R11 #006E + 0x0424120A, // 006C SUB R9 R9 R10 + 0x70020000, // 006D JMP #006F + 0x58240000, // 006E LDCONST R9 K0 + 0x542E00FE, // 006F LDINT R11 255 + 0x242C120B, // 0070 GT R11 R9 R11 + 0x782E0000, // 0071 JMPF R11 #0073 + 0x542600FE, // 0072 LDINT R9 255 + 0x58280014, // 0073 LDCONST R10 K20 + 0x242C1300, // 0074 GT R11 R9 K0 + 0x782E0055, // 0075 JMPF R11 #00CC + 0x5C2C0C00, // 0076 MOVE R11 R6 + 0x4C300000, // 0077 LDNIL R12 + 0x1C30160C, // 0078 EQ R12 R11 R12 + 0x7832000E, // 0079 JMPF R12 #0089 + 0xB8324600, // 007A GETNGBL R12 K35 + 0x8C301924, // 007B GETMET R12 R12 K36 + 0x88380104, // 007C GETMBR R14 R0 K4 + 0x7C300400, // 007D CALL R12 2 + 0xB8364600, // 007E GETNGBL R13 K35 + 0x88341B26, // 007F GETMBR R13 R13 K38 + 0x90324A0D, // 0080 SETMBR R12 K37 R13 + 0x90324F00, // 0081 SETMBR R12 K39 K0 + 0x90325109, // 0082 SETMBR R12 K40 K9 + 0x543600FE, // 0083 LDINT R13 255 + 0x9032520D, // 0084 SETMBR R12 K41 R13 + 0x90325500, // 0085 SETMBR R12 K42 K0 + 0x543600FE, // 0086 LDINT R13 255 + 0x9032560D, // 0087 SETMBR R12 K43 R13 + 0x5C2C1800, // 0088 MOVE R11 R12 + 0xB8324600, // 0089 GETNGBL R12 K35 + 0x8C30192C, // 008A GETMET R12 R12 K44 + 0x5C381600, // 008B MOVE R14 R11 + 0x7C300400, // 008C CALL R12 2 + 0x78320009, // 008D JMPF R12 #0098 + 0x8830172D, // 008E GETMBR R12 R11 K45 + 0x4C340000, // 008F LDNIL R13 + 0x2030180D, // 0090 NE R12 R12 R13 + 0x78320005, // 0091 JMPF R12 #0098 + 0x8C30172D, // 0092 GETMET R12 R11 K45 + 0x5C381200, // 0093 MOVE R14 R9 + 0x583C0000, // 0094 LDCONST R15 K0 + 0x7C300600, // 0095 CALL R12 3 + 0x5C281800, // 0096 MOVE R10 R12 + 0x70020033, // 0097 JMP #00CC + 0x5C281600, // 0098 MOVE R10 R11 + 0x54320017, // 0099 LDINT R12 24 + 0x3C30140C, // 009A SHR R12 R10 R12 + 0x543600FE, // 009B LDINT R13 255 + 0x2C30180D, // 009C AND R12 R12 R13 + 0x5436000F, // 009D LDINT R13 16 + 0x3C34140D, // 009E SHR R13 R10 R13 + 0x543A00FE, // 009F LDINT R14 255 + 0x2C341A0E, // 00A0 AND R13 R13 R14 + 0x543A0007, // 00A1 LDINT R14 8 + 0x3C38140E, // 00A2 SHR R14 R10 R14 + 0x543E00FE, // 00A3 LDINT R15 255 + 0x2C381C0F, // 00A4 AND R14 R14 R15 + 0x543E00FE, // 00A5 LDINT R15 255 + 0x2C3C140F, // 00A6 AND R15 R10 R15 + 0xB8423E00, // 00A7 GETNGBL R16 K31 + 0x8C402120, // 00A8 GETMET R16 R16 K32 + 0x5C481200, // 00A9 MOVE R18 R9 + 0x584C0000, // 00AA LDCONST R19 K0 + 0x545200FE, // 00AB LDINT R20 255 + 0x58540000, // 00AC LDCONST R21 K0 + 0x5C581A00, // 00AD MOVE R22 R13 + 0x7C400C00, // 00AE CALL R16 6 + 0x5C342000, // 00AF MOVE R13 R16 + 0xB8423E00, // 00B0 GETNGBL R16 K31 + 0x8C402120, // 00B1 GETMET R16 R16 K32 + 0x5C481200, // 00B2 MOVE R18 R9 + 0x584C0000, // 00B3 LDCONST R19 K0 + 0x545200FE, // 00B4 LDINT R20 255 + 0x58540000, // 00B5 LDCONST R21 K0 + 0x5C581C00, // 00B6 MOVE R22 R14 + 0x7C400C00, // 00B7 CALL R16 6 + 0x5C382000, // 00B8 MOVE R14 R16 + 0xB8423E00, // 00B9 GETNGBL R16 K31 + 0x8C402120, // 00BA GETMET R16 R16 K32 + 0x5C481200, // 00BB MOVE R18 R9 + 0x584C0000, // 00BC LDCONST R19 K0 + 0x545200FE, // 00BD LDINT R20 255 + 0x58540000, // 00BE LDCONST R21 K0 + 0x5C581E00, // 00BF MOVE R22 R15 + 0x7C400C00, // 00C0 CALL R16 6 + 0x5C3C2000, // 00C1 MOVE R15 R16 + 0x54420017, // 00C2 LDINT R16 24 + 0x38401810, // 00C3 SHL R16 R12 R16 + 0x5446000F, // 00C4 LDINT R17 16 + 0x38441A11, // 00C5 SHL R17 R13 R17 + 0x30402011, // 00C6 OR R16 R16 R17 + 0x54460007, // 00C7 LDINT R17 8 + 0x38441C11, // 00C8 SHL R17 R14 R17 + 0x30402011, // 00C9 OR R16 R16 R17 + 0x3040200F, // 00CA OR R16 R16 R15 + 0x5C282000, // 00CB MOVE R10 R16 + 0x882C0108, // 00CC GETMBR R11 R0 K8 + 0x982C100A, // 00CD SETIDX R11 R8 R10 + 0x00201109, // 00CE ADD R8 R8 K9 + 0x7001FF80, // 00CF JMP #0051 + 0x80000000, // 00D0 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_FireAnimation_start, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_FireAnimation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08052E, // 0003 GETMET R2 R2 K46 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90022100, // 0006 SETMBR R0 K16 K0 + 0x8C08011D, // 0007 GETMET R2 R0 K29 + 0x7C080200, // 0008 CALL R2 1 + 0x88080104, // 0009 GETMBR R2 R0 K4 + 0x88080512, // 000A GETMBR R2 R2 K18 + 0x540EFFFF, // 000B LDINT R3 65536 + 0x10080403, // 000C MOD R2 R2 R3 + 0x90022202, // 000D SETMBR R0 K17 R2 + 0x80040000, // 000E RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: FireAnimation ********************************************************************/ @@ -4310,12 +5746,18 @@ extern const bclass be_class_Animation; be_local_class(FireAnimation, 4, &be_class_Animation, - be_nested_map(15, + be_nested_map(14, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(init, -1), be_const_closure(class_FireAnimation_init_closure) }, { be_const_key_weak(heat_map, -1), be_const_var(0) }, + { be_const_key_weak(start, -1), be_const_closure(class_FireAnimation_start_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_FireAnimation_init_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_FireAnimation_tostring_closure) }, + { be_const_key_weak(random_seed, -1), be_const_var(3) }, + { be_const_key_weak(render, 9), be_const_closure(class_FireAnimation_render_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_FireAnimation_update_closure) }, { be_const_key_weak(last_update, -1), be_const_var(2) }, - { be_const_key_weak(PARAMS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(_initialize_buffers, 6), be_const_closure(class_FireAnimation__initialize_buffers_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(intensity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { @@ -4359,111 +5801,14 @@ be_local_class(FireAnimation, { be_const_key_weak(max, 1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(_update_fire_simulation, 6), be_const_closure(class_FireAnimation__update_fire_simulation_closure) }, - { be_const_key_weak(_random, -1), be_const_closure(class_FireAnimation__random_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_FireAnimation_update_closure) }, - { be_const_key_weak(on_param_changed, 14), be_const_closure(class_FireAnimation_on_param_changed_closure) }, - { be_const_key_weak(random_seed, 13), be_const_var(3) }, + { be_const_key_weak(_random, 2), be_const_closure(class_FireAnimation__random_closure) }, { be_const_key_weak(current_colors, -1), be_const_var(1) }, - { be_const_key_weak(_initialize_buffers, 8), be_const_closure(class_FireAnimation__initialize_buffers_closure) }, - { be_const_key_weak(start, 12), be_const_closure(class_FireAnimation_start_closure) }, - { be_const_key_weak(_random_range, -1), be_const_closure(class_FireAnimation__random_range_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_FireAnimation_tostring_closure) }, - { be_const_key_weak(render, -1), be_const_closure(class_FireAnimation_render_closure) }, + { be_const_key_weak(_update_fire_simulation, -1), be_const_closure(class_FireAnimation__update_fire_simulation_closure) }, + { be_const_key_weak(_random_range, 1), be_const_closure(class_FireAnimation__random_range_closure) }, })), be_str_weak(FireAnimation) ); -/******************************************************************** -** Solidified function: list_user_functions -********************************************************************/ -be_local_closure(list_user_functions, /* name */ - be_nested_proto( - 6, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(user_functions), - /* K2 */ be_nested_str_weak(keys), - /* K3 */ be_nested_str_weak(push), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(list_user_functions), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60000012, // 0000 GETGBL R0 G18 - 0x7C000000, // 0001 CALL R0 0 - 0x60040010, // 0002 GETGBL R1 G16 - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x88080501, // 0004 GETMBR R2 R2 K1 - 0x8C080502, // 0005 GETMET R2 R2 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x7C040200, // 0007 CALL R1 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C080200, // 0009 MOVE R2 R1 - 0x7C080000, // 000A CALL R2 0 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x5C140400, // 000C MOVE R5 R2 - 0x7C0C0400, // 000D CALL R3 2 - 0x7001FFF9, // 000E JMP #0009 - 0x58040004, // 000F LDCONST R1 K4 - 0xAC040200, // 0010 CATCH R1 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040000, // 0012 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: gradient_rainbow_linear -********************************************************************/ -be_local_closure(gradient_rainbow_linear, /* 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(0), - /* K5 */ be_nested_str_weak(direction), - /* K6 */ be_nested_str_weak(movement_speed), - }), - be_str_weak(gradient_rainbow_linear), - &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 - 0x4C080000, // 0004 LDNIL R2 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x90060B04, // 0007 SETMBR R1 K5 K4 - 0x540A0031, // 0008 LDINT R2 50 - 0x90060C02, // 0009 SETMBR R1 K6 R2 - 0x80040200, // 000A RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: jitter_position ********************************************************************/ @@ -4537,45 +5882,8 @@ be_local_closure(sparkle_white, /* 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 'JitterAnimation' ktab size: 47, total: 93 (saved 368 bytes) -static const bvalue be_ktab_class_JitterAnimation[47] = { +// compact class 'JitterAnimation' ktab size: 49, total: 95 (saved 368 bytes) +static const bvalue be_ktab_class_JitterAnimation[49] = { /* K0 */ be_nested_str_weak(jitter_type), /* K1 */ be_nested_str_weak(color_range), /* K2 */ be_nested_str_weak(brightness_range), @@ -4612,17 +5920,19 @@ static const bvalue be_ktab_class_JitterAnimation[47] = { /* K33 */ be_nested_str_weak(get_pixel_color), /* K34 */ be_nested_str_weak(_apply_color_jitter), /* K35 */ be_nested_str_weak(current_colors), - /* K36 */ be_nested_str_weak(width), - /* K37 */ be_nested_str_weak(set_pixel_color), - /* K38 */ be_const_int(1103515245), - /* K39 */ be_const_int(2147483647), - /* K40 */ be_nested_str_weak(_update_jitter), - /* K41 */ be_nested_str_weak(update), - /* K42 */ be_nested_str_weak(_calculate_jitter), - /* K43 */ be_nested_str_weak(start), - /* K44 */ be_nested_str_weak(resize), - /* K45 */ be_nested_str_weak(animation), - /* K46 */ be_nested_str_weak(frame_buffer), + /* K36 */ be_nested_str_weak(is_running), + /* K37 */ be_nested_str_weak(_fix_time_ms), + /* K38 */ be_nested_str_weak(width), + /* K39 */ be_nested_str_weak(set_pixel_color), + /* K40 */ be_const_int(1103515245), + /* K41 */ be_const_int(2147483647), + /* K42 */ be_nested_str_weak(update), + /* K43 */ be_nested_str_weak(_update_jitter), + /* K44 */ be_nested_str_weak(_calculate_jitter), + /* K45 */ be_nested_str_weak(start), + /* K46 */ be_nested_str_weak(resize), + /* K47 */ be_nested_str_weak(animation), + /* K48 */ be_nested_str_weak(frame_buffer), }; @@ -5050,30 +6360,36 @@ be_local_closure(class_JitterAnimation_render, /* name */ &be_ktab_class_JitterAnimation, /* 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 - 0x880C0115, // 0005 GETMBR R3 R0 K21 - 0x8C0C0719, // 0006 GETMET R3 R3 K25 - 0x7C0C0200, // 0007 CALL R3 1 - 0x58100007, // 0008 LDCONST R4 K7 - 0x14140803, // 0009 LT R5 R4 R3 - 0x78160009, // 000A JMPF R5 #0015 - 0x88140324, // 000B GETMBR R5 R1 K36 - 0x14140805, // 000C LT R5 R4 R5 - 0x78160004, // 000D JMPF R5 #0013 - 0x8C140325, // 000E GETMET R5 R1 K37 - 0x5C1C0800, // 000F MOVE R7 R4 - 0x88200123, // 0010 GETMBR R8 R0 K35 - 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 + ( &(const binstruction[29]) { /* code */ + 0x880C0124, // 0000 GETMBR R3 R0 K36 + 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 + 0x8C0C0125, // 0007 GETMET R3 R0 K37 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0115, // 000B GETMBR R3 R0 K21 + 0x8C0C0719, // 000C GETMET R3 R3 K25 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100007, // 000E LDCONST R4 K7 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x88140326, // 0011 GETMBR R5 R1 K38 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C140327, // 0014 GETMET R5 R1 K39 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200123, // 0016 GETMBR R8 R0 K35 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x00100903, // 0019 ADD R4 R4 K3 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 }) ) ); @@ -5098,10 +6414,10 @@ be_local_closure(class_JitterAnimation__random, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x08040326, // 0001 MUL R1 R1 K38 + 0x08040328, // 0001 MUL R1 R1 K40 0x540A3038, // 0002 LDINT R2 12345 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040327, // 0004 AND R1 R1 K39 + 0x2C040329, // 0004 AND R1 R1 K41 0x90022801, // 0005 SETMBR R0 K20 R1 0x88040114, // 0006 GETMBR R1 R0 K20 0x80040200, // 0007 RET 1 R1 @@ -5127,42 +6443,51 @@ be_local_closure(class_JitterAnimation_update, /* name */ &be_ktab_class_JitterAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x88080111, // 0000 GETMBR R2 R0 K17 - 0x880C011B, // 0001 GETMBR R3 R0 K27 - 0x24100507, // 0002 GT R4 R2 K7 - 0x78120014, // 0003 JMPF R4 #0019 - 0xB8120A00, // 0004 GETNGBL R4 K5 - 0x8C100906, // 0005 GETMET R4 R4 K6 - 0x5C180400, // 0006 MOVE R6 R2 - 0x581C0007, // 0007 LDCONST R7 K7 - 0x542200FE, // 0008 LDINT R8 255 - 0x58240007, // 0009 LDCONST R9 K7 - 0x542A001D, // 000A LDINT R10 30 - 0x7C100C00, // 000B CALL R4 6 - 0x24140907, // 000C GT R5 R4 K7 - 0x78160002, // 000D JMPF R5 #0011 - 0x541603E7, // 000E LDINT R5 1000 - 0x0C140A04, // 000F DIV R5 R5 R4 - 0x70020000, // 0010 JMP #0012 - 0x541603E7, // 0011 LDINT R5 1000 - 0x88180117, // 0012 GETMBR R6 R0 K23 - 0x04180206, // 0013 SUB R6 R1 R6 - 0x28180C05, // 0014 GE R6 R6 R5 - 0x781A0002, // 0015 JMPF R6 #0019 - 0x90022E01, // 0016 SETMBR R0 K23 R1 - 0x8C180128, // 0017 GETMET R6 R0 K40 - 0x7C180200, // 0018 CALL R6 1 - 0x4C100000, // 0019 LDNIL R4 - 0x20100604, // 001A NE R4 R3 R4 - 0x78120002, // 001B JMPF R4 #001F - 0x8C100729, // 001C GETMET R4 R3 K41 - 0x5C180200, // 001D MOVE R6 R1 - 0x7C100400, // 001E CALL R4 2 - 0x8C10012A, // 001F GETMET R4 R0 K42 - 0x7C100200, // 0020 CALL R4 1 - 0x50100200, // 0021 LDBOOL R4 1 0 - 0x80040800, // 0022 RET 1 R4 + ( &(const binstruction[44]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08052A, // 0003 GETMET R2 R2 K42 + 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 + 0x88080111, // 0009 GETMBR R2 R0 K17 + 0x880C011B, // 000A GETMBR R3 R0 K27 + 0x24100507, // 000B GT R4 R2 K7 + 0x78120014, // 000C JMPF R4 #0022 + 0xB8120A00, // 000D GETNGBL R4 K5 + 0x8C100906, // 000E GETMET R4 R4 K6 + 0x5C180400, // 000F MOVE R6 R2 + 0x581C0007, // 0010 LDCONST R7 K7 + 0x542200FE, // 0011 LDINT R8 255 + 0x58240007, // 0012 LDCONST R9 K7 + 0x542A001D, // 0013 LDINT R10 30 + 0x7C100C00, // 0014 CALL R4 6 + 0x24140907, // 0015 GT R5 R4 K7 + 0x78160002, // 0016 JMPF R5 #001A + 0x541603E7, // 0017 LDINT R5 1000 + 0x0C140A04, // 0018 DIV R5 R5 R4 + 0x70020000, // 0019 JMP #001B + 0x541603E7, // 001A LDINT R5 1000 + 0x88180117, // 001B GETMBR R6 R0 K23 + 0x04180206, // 001C SUB R6 R1 R6 + 0x28180C05, // 001D GE R6 R6 R5 + 0x781A0002, // 001E JMPF R6 #0022 + 0x90022E01, // 001F SETMBR R0 K23 R1 + 0x8C18012B, // 0020 GETMET R6 R0 K43 + 0x7C180200, // 0021 CALL R6 1 + 0x4C100000, // 0022 LDNIL R4 + 0x20100604, // 0023 NE R4 R3 R4 + 0x78120002, // 0024 JMPF R4 #0028 + 0x8C10072A, // 0025 GETMET R4 R3 K42 + 0x5C180200, // 0026 MOVE R6 R1 + 0x7C100400, // 0027 CALL R4 2 + 0x8C10012C, // 0028 GETMET R4 R0 K44 + 0x7C100200, // 0029 CALL R4 1 + 0x50100200, // 002A LDBOOL R4 1 0 + 0x80040800, // 002B RET 1 R4 }) ) ); @@ -5189,7 +6514,7 @@ be_local_closure(class_JitterAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052B, // 0003 GETMET R2 R2 K43 + 0x8C08052D, // 0003 GETMET R2 R2 K45 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x4C080000, // 0006 LDNIL R2 @@ -5233,11 +6558,11 @@ be_local_closure(class_JitterAnimation__initialize_buffers, /* name */ 0x7C080000, // 0004 CALL R2 0 0x90023402, // 0005 SETMBR R0 K26 R2 0x8808011A, // 0006 GETMBR R2 R0 K26 - 0x8C08052C, // 0007 GETMET R2 R2 K44 + 0x8C08052E, // 0007 GETMET R2 R2 K46 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 - 0xB80A5A00, // 000A GETNGBL R2 K45 - 0x8C08052E, // 000B GETMET R2 R2 K46 + 0xB80A5E00, // 000A GETNGBL R2 K47 + 0x8C080530, // 000B GETMET R2 R2 K48 0x5C100200, // 000C MOVE R4 R1 0x7C080400, // 000D CALL R2 2 0x90023A02, // 000E SETMBR R0 K29 R2 @@ -5245,7 +6570,7 @@ be_local_closure(class_JitterAnimation__initialize_buffers, /* name */ 0x7C080000, // 0010 CALL R2 0 0x90024602, // 0011 SETMBR R0 K35 R2 0x88080123, // 0012 GETMBR R2 R0 K35 - 0x8C08052C, // 0013 GETMET R2 R2 K44 + 0x8C08052E, // 0013 GETMET R2 R2 K46 0x5C100200, // 0014 MOVE R4 R1 0x7C080400, // 0015 CALL R2 2 0x58080007, // 0016 LDCONST R2 K7 @@ -5344,58 +6669,531 @@ be_local_class(JitterAnimation, })), be_str_weak(JitterAnimation) ); -// compact class 'RichPaletteColorProvider' ktab size: 45, total: 102 (saved 456 bytes) -static const bvalue be_ktab_class_RichPaletteColorProvider[45] = { - /* K0 */ be_nested_str_weak(_get_palette_bytes), - /* K1 */ be_nested_str_weak(slots), - /* K2 */ be_nested_str_weak(resize), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(tasmota), - /* K7 */ be_nested_str_weak(scale_int), - /* K8 */ be_nested_str_weak(RichPaletteColorProvider_X28slots_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X29), - /* K9 */ be_nested_str_weak(cycle_period), - /* K10 */ be_nested_str_weak(RichPaletteColorProvider_X28uninitialized_X29), - /* K11 */ be_nested_str_weak(range_min), - /* K12 */ be_nested_str_weak(range_max), - /* K13 */ be_nested_str_weak(palette), - /* K14 */ be_nested_str_weak(slots_arr), - /* K15 */ be_nested_str_weak(value_arr), - /* K16 */ be_nested_str_weak(_recompute_palette), - /* K17 */ be_nested_str_weak(brightness), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(scale_uint), - /* K20 */ be_nested_str_weak(_parse_palette), - /* K21 */ be_nested_str_weak(value_error), - /* K22 */ be_nested_str_weak(range_min_X20must_X20be_X20lower_X20than_X20range_max), - /* K23 */ be_nested_str_weak(current_color), - /* K24 */ be_nested_str_weak(_get_color_at_index), - /* K25 */ be_nested_str_weak(init), - /* K26 */ be_nested_str_weak(cycle_start), - /* K27 */ be_nested_str_weak(engine), - /* K28 */ be_nested_str_weak(time_ms), - /* K29 */ be_nested_str_weak(global), - /* K30 */ be_nested_str_weak(light_state), - /* K31 */ be_nested_str_weak(RGB), - /* K32 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right_X2C_X20_X23000000_X29_X3B), - /* K33 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), - /* K34 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), - /* K35 */ be_const_real_hex(0x41200000), - /* K36 */ be_nested_str_weak(_X29_X3B), - /* K37 */ be_const_int(-16777216), - /* K38 */ be_nested_str_weak(_DEFAULT_PALETTE), - /* K39 */ be_nested_str_weak(set_rgb), - /* K40 */ be_nested_str_weak(bri), - /* K41 */ be_nested_str_weak(set_bri), - /* K42 */ be_nested_str_weak(r), - /* K43 */ be_nested_str_weak(g), - /* K44 */ be_nested_str_weak(b), + +/******************************************************************** +** Solidified function: jitter_brightness +********************************************************************/ +be_local_closure(jitter_brightness, /* 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(2), + /* K4 */ be_nested_str_weak(brightness_range), + }), + be_str_weak(jitter_brightness), + &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 + 0x540A0027, // 0005 LDINT R2 40 + 0x90060802, // 0006 SETMBR R1 K4 R2 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 +********************************************************************/ +be_local_closure(scale_oscillate, /* 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(1), + /* K4 */ be_nested_str_weak(scale_speed), + }), + be_str_weak(scale_oscillate), + &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 'RichPaletteColorProvider' ktab size: 46, total: 99 (saved 424 bytes) +static const bvalue be_ktab_class_RichPaletteColorProvider[46] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(range_min), + /* K2 */ be_nested_str_weak(range_max), + /* K3 */ be_nested_str_weak(cycle_period), + /* K4 */ be_nested_str_weak(palette), + /* K5 */ be_nested_str_weak(slots_arr), + /* K6 */ be_nested_str_weak(value_arr), + /* K7 */ be_nested_str_weak(_recompute_palette), + /* K8 */ be_nested_str_weak(_fix_time_ms), + /* K9 */ be_nested_str_weak(_get_palette_bytes), + /* K10 */ be_nested_str_weak(slots), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_str_weak(brightness), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(get), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(scale_uint), + /* K17 */ be_nested_str_weak(current_color), + /* K18 */ be_nested_str_weak(start_time), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(light_state), + /* K21 */ be_nested_str_weak(set_rgb), + /* K22 */ be_nested_str_weak(bri), + /* K23 */ be_nested_str_weak(set_bri), + /* K24 */ be_nested_str_weak(r), + /* K25 */ be_nested_str_weak(g), + /* K26 */ be_nested_str_weak(b), + /* K27 */ be_const_int(-16777216), + /* K28 */ be_nested_str_weak(resize), + /* K29 */ be_nested_str_weak(scale_int), + /* K30 */ be_nested_str_weak(RichPaletteColorProvider_X28slots_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X29), + /* K31 */ be_nested_str_weak(RichPaletteColorProvider_X28uninitialized_X29), + /* K32 */ be_nested_str_weak(init), + /* K33 */ be_nested_str_weak(global), + /* K34 */ be_nested_str_weak(RGB), + /* K35 */ be_nested_str_weak(start), + /* K36 */ be_nested_str_weak(_parse_palette), + /* K37 */ be_nested_str_weak(value_error), + /* K38 */ be_nested_str_weak(range_min_X20must_X20be_X20lower_X20than_X20range_max), + /* K39 */ be_nested_str_weak(_get_color_at_index), + /* K40 */ be_nested_str_weak(_DEFAULT_PALETTE), + /* K41 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right_X2C_X20_X23000000_X29_X3B), + /* K42 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), + /* K43 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), + /* K44 */ be_const_real_hex(0x41200000), + /* K45 */ be_nested_str_weak(_X29_X3B), }; extern const bclass be_class_RichPaletteColorProvider; +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_RichPaletteColorProvider_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_RichPaletteColorProvider, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x740E0005, // 0008 JMPT R3 #000F + 0x1C0C0302, // 0009 EQ R3 R1 K2 + 0x740E0003, // 000A JMPT R3 #000F + 0x1C0C0303, // 000B EQ R3 R1 K3 + 0x740E0001, // 000C JMPT R3 #000F + 0x1C0C0304, // 000D EQ R3 R1 K4 + 0x780E0009, // 000E JMPF R3 #0019 + 0x880C0105, // 000F GETMBR R3 R0 K5 + 0x4C100000, // 0010 LDNIL R4 + 0x200C0604, // 0011 NE R3 R3 R4 + 0x740E0003, // 0012 JMPT R3 #0017 + 0x880C0106, // 0013 GETMBR R3 R0 K6 + 0x4C100000, // 0014 LDNIL R4 + 0x200C0604, // 0015 NE R3 R3 R4 + 0x780E0001, // 0016 JMPF R3 #0019 + 0x8C0C0107, // 0017 GETMET R3 R0 K7 + 0x7C0C0200, // 0018 CALL R3 1 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ + be_nested_proto( + 28, /* 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_RichPaletteColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[250]) { /* code */ + 0x8C0C0108, // 0000 GETMET R3 R0 K8 + 0x5C140400, // 0001 MOVE R5 R2 + 0x7C0C0400, // 0002 CALL R3 2 + 0x5C080600, // 0003 MOVE R2 R3 + 0x880C0105, // 0004 GETMBR R3 R0 K5 + 0x4C100000, // 0005 LDNIL R4 + 0x1C0C0604, // 0006 EQ R3 R3 R4 + 0x780E0005, // 0007 JMPF R3 #000E + 0x880C0106, // 0008 GETMBR R3 R0 K6 + 0x4C100000, // 0009 LDNIL R4 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x780E0001, // 000B JMPF R3 #000E + 0x8C0C0107, // 000C GETMET R3 R0 K7 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0109, // 000E GETMET R3 R0 K9 + 0x7C0C0200, // 000F CALL R3 1 + 0x4C100000, // 0010 LDNIL R4 + 0x1C100604, // 0011 EQ R4 R3 R4 + 0x74120002, // 0012 JMPT R4 #0016 + 0x8810010A, // 0013 GETMBR R4 R0 K10 + 0x1410090B, // 0014 LT R4 R4 K11 + 0x78120001, // 0015 JMPF R4 #0018 + 0x5411FFFE, // 0016 LDINT R4 -1 + 0x80040800, // 0017 RET 1 R4 + 0x88100103, // 0018 GETMBR R4 R0 K3 + 0x8814010C, // 0019 GETMBR R5 R0 K12 + 0x1C18090D, // 001A EQ R6 R4 K13 + 0x781A0039, // 001B JMPF R6 #0056 + 0x8C18070E, // 001C GETMET R6 R3 K14 + 0x5820000D, // 001D LDCONST R8 K13 + 0x54260003, // 001E LDINT R9 4 + 0x7C180600, // 001F CALL R6 3 + 0x541E0007, // 0020 LDINT R7 8 + 0x3C1C0C07, // 0021 SHR R7 R6 R7 + 0x542200FE, // 0022 LDINT R8 255 + 0x2C1C0E08, // 0023 AND R7 R7 R8 + 0x5422000F, // 0024 LDINT R8 16 + 0x3C200C08, // 0025 SHR R8 R6 R8 + 0x542600FE, // 0026 LDINT R9 255 + 0x2C201009, // 0027 AND R8 R8 R9 + 0x54260017, // 0028 LDINT R9 24 + 0x3C240C09, // 0029 SHR R9 R6 R9 + 0x542A00FE, // 002A LDINT R10 255 + 0x2C24120A, // 002B AND R9 R9 R10 + 0x542A00FE, // 002C LDINT R10 255 + 0x20280A0A, // 002D NE R10 R5 R10 + 0x782A001A, // 002E JMPF R10 #004A + 0xB82A1E00, // 002F GETNGBL R10 K15 + 0x8C281510, // 0030 GETMET R10 R10 K16 + 0x5C300E00, // 0031 MOVE R12 R7 + 0x5834000D, // 0032 LDCONST R13 K13 + 0x543A00FE, // 0033 LDINT R14 255 + 0x583C000D, // 0034 LDCONST R15 K13 + 0x5C400A00, // 0035 MOVE R16 R5 + 0x7C280C00, // 0036 CALL R10 6 + 0x5C1C1400, // 0037 MOVE R7 R10 + 0xB82A1E00, // 0038 GETNGBL R10 K15 + 0x8C281510, // 0039 GETMET R10 R10 K16 + 0x5C301000, // 003A MOVE R12 R8 + 0x5834000D, // 003B LDCONST R13 K13 + 0x543A00FE, // 003C LDINT R14 255 + 0x583C000D, // 003D LDCONST R15 K13 + 0x5C400A00, // 003E MOVE R16 R5 + 0x7C280C00, // 003F CALL R10 6 + 0x5C201400, // 0040 MOVE R8 R10 + 0xB82A1E00, // 0041 GETNGBL R10 K15 + 0x8C281510, // 0042 GETMET R10 R10 K16 + 0x5C301200, // 0043 MOVE R12 R9 + 0x5834000D, // 0044 LDCONST R13 K13 + 0x543A00FE, // 0045 LDINT R14 255 + 0x583C000D, // 0046 LDCONST R15 K13 + 0x5C400A00, // 0047 MOVE R16 R5 + 0x7C280C00, // 0048 CALL R10 6 + 0x5C241400, // 0049 MOVE R9 R10 + 0x542A00FE, // 004A LDINT R10 255 + 0x542E0017, // 004B LDINT R11 24 + 0x3828140B, // 004C SHL R10 R10 R11 + 0x542E000F, // 004D LDINT R11 16 + 0x382C0E0B, // 004E SHL R11 R7 R11 + 0x3028140B, // 004F OR R10 R10 R11 + 0x542E0007, // 0050 LDINT R11 8 + 0x382C100B, // 0051 SHL R11 R8 R11 + 0x3028140B, // 0052 OR R10 R10 R11 + 0x30281409, // 0053 OR R10 R10 R9 + 0x9002220A, // 0054 SETMBR R0 K17 R10 + 0x80041400, // 0055 RET 1 R10 + 0x88180112, // 0056 GETMBR R6 R0 K18 + 0x04180406, // 0057 SUB R6 R2 R6 + 0x101C0C04, // 0058 MOD R7 R6 R4 + 0x8820010A, // 0059 GETMBR R8 R0 K10 + 0x0424110B, // 005A SUB R9 R8 K11 + 0x2428130D, // 005B GT R10 R9 K13 + 0x782A0006, // 005C JMPF R10 #0064 + 0x88280105, // 005D GETMBR R10 R0 K5 + 0x94281409, // 005E GETIDX R10 R10 R9 + 0x28280E0A, // 005F GE R10 R7 R10 + 0x782A0000, // 0060 JMPF R10 #0062 + 0x70020001, // 0061 JMP #0064 + 0x04241313, // 0062 SUB R9 R9 K19 + 0x7001FFF6, // 0063 JMP #005B + 0x8C28070E, // 0064 GETMET R10 R3 K14 + 0x54320003, // 0065 LDINT R12 4 + 0x0830120C, // 0066 MUL R12 R9 R12 + 0x54360003, // 0067 LDINT R13 4 + 0x7C280600, // 0068 CALL R10 3 + 0x8C2C070E, // 0069 GETMET R11 R3 K14 + 0x00341313, // 006A ADD R13 R9 K19 + 0x543A0003, // 006B LDINT R14 4 + 0x08341A0E, // 006C MUL R13 R13 R14 + 0x543A0003, // 006D LDINT R14 4 + 0x7C2C0600, // 006E CALL R11 3 + 0x88300105, // 006F GETMBR R12 R0 K5 + 0x94301809, // 0070 GETIDX R12 R12 R9 + 0x00341313, // 0071 ADD R13 R9 K19 + 0x88380105, // 0072 GETMBR R14 R0 K5 + 0x94341C0D, // 0073 GETIDX R13 R14 R13 + 0xB83A1E00, // 0074 GETNGBL R14 K15 + 0x8C381D10, // 0075 GETMET R14 R14 K16 + 0x5C400E00, // 0076 MOVE R16 R7 + 0x5C441800, // 0077 MOVE R17 R12 + 0x5C481A00, // 0078 MOVE R18 R13 + 0x544E0007, // 0079 LDINT R19 8 + 0x3C4C1413, // 007A SHR R19 R10 R19 + 0x545200FE, // 007B LDINT R20 255 + 0x2C4C2614, // 007C AND R19 R19 R20 + 0x54520007, // 007D LDINT R20 8 + 0x3C501614, // 007E SHR R20 R11 R20 + 0x545600FE, // 007F LDINT R21 255 + 0x2C502815, // 0080 AND R20 R20 R21 + 0x7C380C00, // 0081 CALL R14 6 + 0xB83E1E00, // 0082 GETNGBL R15 K15 + 0x8C3C1F10, // 0083 GETMET R15 R15 K16 + 0x5C440E00, // 0084 MOVE R17 R7 + 0x5C481800, // 0085 MOVE R18 R12 + 0x5C4C1A00, // 0086 MOVE R19 R13 + 0x5452000F, // 0087 LDINT R20 16 + 0x3C501414, // 0088 SHR R20 R10 R20 + 0x545600FE, // 0089 LDINT R21 255 + 0x2C502815, // 008A AND R20 R20 R21 + 0x5456000F, // 008B LDINT R21 16 + 0x3C541615, // 008C SHR R21 R11 R21 + 0x545A00FE, // 008D LDINT R22 255 + 0x2C542A16, // 008E AND R21 R21 R22 + 0x7C3C0C00, // 008F CALL R15 6 + 0xB8421E00, // 0090 GETNGBL R16 K15 + 0x8C402110, // 0091 GETMET R16 R16 K16 + 0x5C480E00, // 0092 MOVE R18 R7 + 0x5C4C1800, // 0093 MOVE R19 R12 + 0x5C501A00, // 0094 MOVE R20 R13 + 0x54560017, // 0095 LDINT R21 24 + 0x3C541415, // 0096 SHR R21 R10 R21 + 0x545A00FE, // 0097 LDINT R22 255 + 0x2C542A16, // 0098 AND R21 R21 R22 + 0x545A0017, // 0099 LDINT R22 24 + 0x3C581616, // 009A SHR R22 R11 R22 + 0x545E00FE, // 009B LDINT R23 255 + 0x2C582C17, // 009C AND R22 R22 R23 + 0x7C400C00, // 009D CALL R16 6 + 0x88440114, // 009E GETMBR R17 R0 K20 + 0x8C482315, // 009F GETMET R18 R17 K21 + 0x54520007, // 00A0 LDINT R20 8 + 0x3C501414, // 00A1 SHR R20 R10 R20 + 0x545600FE, // 00A2 LDINT R21 255 + 0x2C502815, // 00A3 AND R20 R20 R21 + 0x5456000F, // 00A4 LDINT R21 16 + 0x3C541415, // 00A5 SHR R21 R10 R21 + 0x545A00FE, // 00A6 LDINT R22 255 + 0x2C542A16, // 00A7 AND R21 R21 R22 + 0x545A0017, // 00A8 LDINT R22 24 + 0x3C581416, // 00A9 SHR R22 R10 R22 + 0x545E00FE, // 00AA LDINT R23 255 + 0x2C582C17, // 00AB AND R22 R22 R23 + 0x7C480800, // 00AC CALL R18 4 + 0x88482316, // 00AD GETMBR R18 R17 K22 + 0x8C4C2315, // 00AE GETMET R19 R17 K21 + 0x54560007, // 00AF LDINT R21 8 + 0x3C541615, // 00B0 SHR R21 R11 R21 + 0x545A00FE, // 00B1 LDINT R22 255 + 0x2C542A16, // 00B2 AND R21 R21 R22 + 0x545A000F, // 00B3 LDINT R22 16 + 0x3C581616, // 00B4 SHR R22 R11 R22 + 0x545E00FE, // 00B5 LDINT R23 255 + 0x2C582C17, // 00B6 AND R22 R22 R23 + 0x545E0017, // 00B7 LDINT R23 24 + 0x3C5C1617, // 00B8 SHR R23 R11 R23 + 0x546200FE, // 00B9 LDINT R24 255 + 0x2C5C2E18, // 00BA AND R23 R23 R24 + 0x7C4C0800, // 00BB CALL R19 4 + 0x884C2316, // 00BC GETMBR R19 R17 K22 + 0xB8521E00, // 00BD GETNGBL R20 K15 + 0x8C502910, // 00BE GETMET R20 R20 K16 + 0x5C580E00, // 00BF MOVE R22 R7 + 0x5C5C1800, // 00C0 MOVE R23 R12 + 0x5C601A00, // 00C1 MOVE R24 R13 + 0x5C642400, // 00C2 MOVE R25 R18 + 0x5C682600, // 00C3 MOVE R26 R19 + 0x7C500C00, // 00C4 CALL R20 6 + 0x8C542315, // 00C5 GETMET R21 R17 K21 + 0x5C5C1C00, // 00C6 MOVE R23 R14 + 0x5C601E00, // 00C7 MOVE R24 R15 + 0x5C642000, // 00C8 MOVE R25 R16 + 0x7C540800, // 00C9 CALL R21 4 + 0x8C542317, // 00CA GETMET R21 R17 K23 + 0x5C5C2800, // 00CB MOVE R23 R20 + 0x7C540400, // 00CC CALL R21 2 + 0x88382318, // 00CD GETMBR R14 R17 K24 + 0x883C2319, // 00CE GETMBR R15 R17 K25 + 0x8840231A, // 00CF GETMBR R16 R17 K26 + 0x545600FE, // 00D0 LDINT R21 255 + 0x20540A15, // 00D1 NE R21 R5 R21 + 0x7856001A, // 00D2 JMPF R21 #00EE + 0xB8561E00, // 00D3 GETNGBL R21 K15 + 0x8C542B10, // 00D4 GETMET R21 R21 K16 + 0x5C5C1C00, // 00D5 MOVE R23 R14 + 0x5860000D, // 00D6 LDCONST R24 K13 + 0x546600FE, // 00D7 LDINT R25 255 + 0x5868000D, // 00D8 LDCONST R26 K13 + 0x5C6C0A00, // 00D9 MOVE R27 R5 + 0x7C540C00, // 00DA CALL R21 6 + 0x5C382A00, // 00DB MOVE R14 R21 + 0xB8561E00, // 00DC GETNGBL R21 K15 + 0x8C542B10, // 00DD GETMET R21 R21 K16 + 0x5C5C1E00, // 00DE MOVE R23 R15 + 0x5860000D, // 00DF LDCONST R24 K13 + 0x546600FE, // 00E0 LDINT R25 255 + 0x5868000D, // 00E1 LDCONST R26 K13 + 0x5C6C0A00, // 00E2 MOVE R27 R5 + 0x7C540C00, // 00E3 CALL R21 6 + 0x5C3C2A00, // 00E4 MOVE R15 R21 + 0xB8561E00, // 00E5 GETNGBL R21 K15 + 0x8C542B10, // 00E6 GETMET R21 R21 K16 + 0x5C5C2000, // 00E7 MOVE R23 R16 + 0x5860000D, // 00E8 LDCONST R24 K13 + 0x546600FE, // 00E9 LDINT R25 255 + 0x5868000D, // 00EA LDCONST R26 K13 + 0x5C6C0A00, // 00EB MOVE R27 R5 + 0x7C540C00, // 00EC CALL R21 6 + 0x5C402A00, // 00ED MOVE R16 R21 + 0x545600FE, // 00EE LDINT R21 255 + 0x545A0017, // 00EF LDINT R22 24 + 0x38542A16, // 00F0 SHL R21 R21 R22 + 0x545A000F, // 00F1 LDINT R22 16 + 0x38581C16, // 00F2 SHL R22 R14 R22 + 0x30542A16, // 00F3 OR R21 R21 R22 + 0x545A0007, // 00F4 LDINT R22 8 + 0x38581E16, // 00F5 SHL R22 R15 R22 + 0x30542A16, // 00F6 OR R21 R21 R22 + 0x30542A10, // 00F7 OR R21 R21 R16 + 0x90022215, // 00F8 SETMBR R0 K17 R21 + 0x80042A00, // 00F9 RET 1 R21 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _get_color_at_index +********************************************************************/ +be_local_closure(class_RichPaletteColorProvider__get_color_at_index, /* 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_RichPaletteColorProvider, /* shared constants */ + be_str_weak(_get_color_at_index), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x1408030D, // 0000 LT R2 R1 K13 + 0x740A0002, // 0001 JMPT R2 #0005 + 0x8808010A, // 0002 GETMBR R2 R0 K10 + 0x28080202, // 0003 GE R2 R1 R2 + 0x780A0001, // 0004 JMPF R2 #0007 + 0x5409FFFE, // 0005 LDINT R2 -1 + 0x80040400, // 0006 RET 1 R2 + 0x8C080109, // 0007 GETMET R2 R0 K9 + 0x7C080200, // 0008 CALL R2 1 + 0x8C0C050E, // 0009 GETMET R3 R2 K14 + 0x54160003, // 000A LDINT R5 4 + 0x08140205, // 000B MUL R5 R1 R5 + 0x5419FFFB, // 000C LDINT R6 -4 + 0x7C0C0600, // 000D CALL R3 3 + 0x300C071B, // 000E OR R3 R3 K27 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: _parse_palette ********************************************************************/ @@ -5413,73 +7211,73 @@ be_local_closure(class_RichPaletteColorProvider__parse_palette, /* name */ be_str_weak(_parse_palette), &be_const_str_solidified, ( &(const binstruction[69]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x8C0C0109, // 0000 GETMET R3 R0 K9 0x7C0C0200, // 0001 CALL R3 1 0x60100012, // 0002 GETGBL R4 G18 0x7C100000, // 0003 CALL R4 0 - 0x88140101, // 0004 GETMBR R5 R0 K1 - 0x8C180902, // 0005 GETMET R6 R4 K2 + 0x8814010A, // 0004 GETMBR R5 R0 K10 + 0x8C18091C, // 0005 GETMET R6 R4 K28 0x5C200A00, // 0006 MOVE R8 R5 0x7C180400, // 0007 CALL R6 2 - 0x8C180703, // 0008 GETMET R6 R3 K3 - 0x58200004, // 0009 LDCONST R8 K4 - 0x58240005, // 000A LDCONST R9 K5 + 0x8C18070E, // 0008 GETMET R6 R3 K14 + 0x5820000D, // 0009 LDCONST R8 K13 + 0x58240013, // 000A LDCONST R9 K19 0x7C180600, // 000B CALL R6 3 - 0x20180D04, // 000C NE R6 R6 K4 + 0x20180D0D, // 000C NE R6 R6 K13 0x781A0022, // 000D JMPF R6 #0031 - 0x58180004, // 000E LDCONST R6 K4 - 0x581C0004, // 000F LDCONST R7 K4 - 0x04200B05, // 0010 SUB R8 R5 K5 + 0x5818000D, // 000E LDCONST R6 K13 + 0x581C000D, // 000F LDCONST R7 K13 + 0x04200B13, // 0010 SUB R8 R5 K19 0x14200E08, // 0011 LT R8 R7 R8 0x78220007, // 0012 JMPF R8 #001B - 0x8C200703, // 0013 GETMET R8 R3 K3 + 0x8C20070E, // 0013 GETMET R8 R3 K14 0x542A0003, // 0014 LDINT R10 4 0x08280E0A, // 0015 MUL R10 R7 R10 - 0x582C0005, // 0016 LDCONST R11 K5 + 0x582C0013, // 0016 LDCONST R11 K19 0x7C200600, // 0017 CALL R8 3 0x00180C08, // 0018 ADD R6 R6 R8 - 0x001C0F05, // 0019 ADD R7 R7 K5 + 0x001C0F13, // 0019 ADD R7 R7 K19 0x7001FFF4, // 001A JMP #0010 - 0x58200004, // 001B LDCONST R8 K4 - 0x581C0004, // 001C LDCONST R7 K4 + 0x5820000D, // 001B LDCONST R8 K13 + 0x581C000D, // 001C LDCONST R7 K13 0x14240E05, // 001D LT R9 R7 R5 0x78260010, // 001E JMPF R9 #0030 - 0xB8260C00, // 001F GETNGBL R9 K6 - 0x8C241307, // 0020 GETMET R9 R9 K7 + 0xB8261E00, // 001F GETNGBL R9 K15 + 0x8C24131D, // 0020 GETMET R9 R9 K29 0x5C2C1000, // 0021 MOVE R11 R8 - 0x58300004, // 0022 LDCONST R12 K4 + 0x5830000D, // 0022 LDCONST R12 K13 0x5C340C00, // 0023 MOVE R13 R6 0x5C380200, // 0024 MOVE R14 R1 0x5C3C0400, // 0025 MOVE R15 R2 0x7C240C00, // 0026 CALL R9 6 0x98100E09, // 0027 SETIDX R4 R7 R9 - 0x8C240703, // 0028 GETMET R9 R3 K3 + 0x8C24070E, // 0028 GETMET R9 R3 K14 0x542E0003, // 0029 LDINT R11 4 0x082C0E0B, // 002A MUL R11 R7 R11 - 0x58300005, // 002B LDCONST R12 K5 + 0x58300013, // 002B LDCONST R12 K19 0x7C240600, // 002C CALL R9 3 0x00201009, // 002D ADD R8 R8 R9 - 0x001C0F05, // 002E ADD R7 R7 K5 + 0x001C0F13, // 002E ADD R7 R7 K19 0x7001FFEC, // 002F JMP #001D 0x70020012, // 0030 JMP #0044 - 0x58180004, // 0031 LDCONST R6 K4 + 0x5818000D, // 0031 LDCONST R6 K13 0x141C0C05, // 0032 LT R7 R6 R5 0x781E000F, // 0033 JMPF R7 #0044 - 0x8C1C0703, // 0034 GETMET R7 R3 K3 + 0x8C1C070E, // 0034 GETMET R7 R3 K14 0x54260003, // 0035 LDINT R9 4 0x08240C09, // 0036 MUL R9 R6 R9 - 0x58280005, // 0037 LDCONST R10 K5 + 0x58280013, // 0037 LDCONST R10 K19 0x7C1C0600, // 0038 CALL R7 3 - 0xB8220C00, // 0039 GETNGBL R8 K6 - 0x8C201107, // 003A GETMET R8 R8 K7 + 0xB8221E00, // 0039 GETNGBL R8 K15 + 0x8C20111D, // 003A GETMET R8 R8 K29 0x5C280E00, // 003B MOVE R10 R7 - 0x582C0004, // 003C LDCONST R11 K4 + 0x582C000D, // 003C LDCONST R11 K13 0x543200FE, // 003D LDINT R12 255 0x5C340200, // 003E MOVE R13 R1 0x5C380400, // 003F MOVE R14 R2 0x7C200C00, // 0040 CALL R8 6 0x98100C08, // 0041 SETIDX R4 R6 R8 - 0x00180D05, // 0042 ADD R6 R6 K5 + 0x00180D13, // 0042 ADD R6 R6 K19 0x7001FFED, // 0043 JMP #0032 0x80040800, // 0044 RET 1 R4 }) @@ -5507,9 +7305,9 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ ( &(const binstruction[16]) { /* code */ 0xA8020008, // 0000 EXBLK 0 #000A 0x60040018, // 0001 GETGBL R1 G24 - 0x58080008, // 0002 LDCONST R2 K8 - 0x880C0101, // 0003 GETMBR R3 R0 K1 - 0x88100109, // 0004 GETMBR R4 R0 K9 + 0x5808001E, // 0002 LDCONST R2 K30 + 0x880C010A, // 0003 GETMBR R3 R0 K10 + 0x88100103, // 0004 GETMBR R4 R0 K3 0x7C040600, // 0005 CALL R1 3 0xA8040001, // 0006 EXBLK 1 1 0x80040200, // 0007 RET 1 R1 @@ -5517,7 +7315,7 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ 0x70020004, // 0009 JMP #000F 0xAC040000, // 000A CATCH R1 0 0 0x70020001, // 000B JMP #000E - 0x80061400, // 000C RET 1 K10 + 0x80063E00, // 000C RET 1 K31 0x70020000, // 000D JMP #000F 0xB0080000, // 000E RAISE 2 R0 R0 0x80000000, // 000F RET 0 @@ -5528,12 +7326,12 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ /******************************************************************** -** Solidified function: on_param_changed +** Solidified function: init ********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_on_param_changed, /* name */ +be_local_closure(class_RichPaletteColorProvider_init, /* name */ be_nested_proto( - 5, /* nstack */ - 3, /* argc */ + 6, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -5541,28 +7339,65 @@ be_local_closure(class_RichPaletteColorProvider_on_param_changed, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ - be_str_weak(on_param_changed), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x1C0C030B, // 0000 EQ R3 R1 K11 - 0x740E0005, // 0001 JMPT R3 #0008 - 0x1C0C030C, // 0002 EQ R3 R1 K12 - 0x740E0003, // 0003 JMPT R3 #0008 - 0x1C0C0309, // 0004 EQ R3 R1 K9 - 0x740E0001, // 0005 JMPT R3 #0008 - 0x1C0C030D, // 0006 EQ R3 R1 K13 - 0x780E0009, // 0007 JMPF R3 #0012 - 0x880C010E, // 0008 GETMBR R3 R0 K14 - 0x4C100000, // 0009 LDNIL R4 - 0x200C0604, // 000A NE R3 R3 R4 - 0x740E0003, // 000B JMPT R3 #0010 - 0x880C010F, // 000C GETMBR R3 R0 K15 - 0x4C100000, // 000D LDNIL R4 - 0x200C0604, // 000E NE R3 R3 R4 - 0x780E0001, // 000F JMPF R3 #0012 - 0x8C0C0110, // 0010 GETMET R3 R0 K16 - 0x7C0C0200, // 0011 CALL R3 1 - 0x80000000, // 0012 RET 0 + ( &(const binstruction[16]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080520, // 0003 GETMET R2 R2 K32 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x5409FFFE, // 0006 LDINT R2 -1 + 0x90022202, // 0007 SETMBR R0 K17 R2 + 0x9002150D, // 0008 SETMBR R0 K10 K13 + 0xA40A4200, // 0009 IMPORT R2 K33 + 0x8C0C0514, // 000A GETMET R3 R2 K20 + 0x88140514, // 000B GETMBR R5 R2 K20 + 0x88140B22, // 000C GETMBR R5 R5 K34 + 0x7C0C0400, // 000D CALL R3 2 + 0x90022803, // 000E SETMBR R0 K20 R3 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_RichPaletteColorProvider_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_RichPaletteColorProvider, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x88080105, // 0000 GETMBR R2 R0 K5 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x780A0005, // 0003 JMPF R2 #000A + 0x88080106, // 0004 GETMBR R2 R0 K6 + 0x4C0C0000, // 0005 LDNIL R3 + 0x1C080403, // 0006 EQ R2 R2 R3 + 0x780A0001, // 0007 JMPF R2 #000A + 0x8C080107, // 0008 GETMET R2 R0 K7 + 0x7C080200, // 0009 CALL R2 1 + 0x60080003, // 000A GETGBL R2 G3 + 0x5C0C0000, // 000B MOVE R3 R0 + 0x7C080200, // 000C CALL R2 1 + 0x8C080523, // 000D GETMET R2 R2 K35 + 0x5C100200, // 000E MOVE R4 R1 + 0x7C080400, // 000F CALL R2 2 + 0x80040000, // 0010 RET 1 R0 }) ) ); @@ -5586,21 +7421,21 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * be_str_weak(get_color_for_value), &be_const_str_solidified, ( &(const binstruction[133]) { /* code */ - 0x880C010E, // 0000 GETMBR R3 R0 K14 + 0x880C0105, // 0000 GETMBR R3 R0 K5 0x4C100000, // 0001 LDNIL R4 0x1C0C0604, // 0002 EQ R3 R3 R4 0x780E0005, // 0003 JMPF R3 #000A - 0x880C010F, // 0004 GETMBR R3 R0 K15 + 0x880C0106, // 0004 GETMBR R3 R0 K6 0x4C100000, // 0005 LDNIL R4 0x1C0C0604, // 0006 EQ R3 R3 R4 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0110, // 0008 GETMET R3 R0 K16 + 0x8C0C0107, // 0008 GETMET R3 R0 K7 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0100, // 000A GETMET R3 R0 K0 + 0x8C0C0109, // 000A GETMET R3 R0 K9 0x7C0C0200, // 000B CALL R3 1 - 0x8810010B, // 000C GETMBR R4 R0 K11 - 0x8814010C, // 000D GETMBR R5 R0 K12 - 0x88180111, // 000E GETMBR R6 R0 K17 + 0x88100101, // 000C GETMBR R4 R0 K1 + 0x88140102, // 000D GETMBR R5 R0 K2 + 0x8818010C, // 000E GETMBR R6 R0 K12 0x4C1C0000, // 000F LDNIL R7 0x1C1C0807, // 0010 EQ R7 R4 R7 0x741E0002, // 0011 JMPT R7 #0015 @@ -5609,35 +7444,35 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * 0x781E0001, // 0014 JMPF R7 #0017 0x4C1C0000, // 0015 LDNIL R7 0x80040E00, // 0016 RET 1 R7 - 0x881C0101, // 0017 GETMBR R7 R0 K1 - 0x04200F12, // 0018 SUB R8 R7 K18 - 0x24241104, // 0019 GT R9 R8 K4 + 0x881C010A, // 0017 GETMBR R7 R0 K10 + 0x04200F0B, // 0018 SUB R8 R7 K11 + 0x2424110D, // 0019 GT R9 R8 K13 0x78260006, // 001A JMPF R9 #0022 - 0x8824010F, // 001B GETMBR R9 R0 K15 + 0x88240106, // 001B GETMBR R9 R0 K6 0x94241208, // 001C GETIDX R9 R9 R8 0x28240209, // 001D GE R9 R1 R9 0x78260000, // 001E JMPF R9 #0020 0x70020001, // 001F JMP #0022 - 0x04201105, // 0020 SUB R8 R8 K5 + 0x04201113, // 0020 SUB R8 R8 K19 0x7001FFF6, // 0021 JMP #0019 - 0x8C240703, // 0022 GETMET R9 R3 K3 + 0x8C24070E, // 0022 GETMET R9 R3 K14 0x542E0003, // 0023 LDINT R11 4 0x082C100B, // 0024 MUL R11 R8 R11 0x54320003, // 0025 LDINT R12 4 0x7C240600, // 0026 CALL R9 3 - 0x8C280703, // 0027 GETMET R10 R3 K3 - 0x00301105, // 0028 ADD R12 R8 K5 + 0x8C28070E, // 0027 GETMET R10 R3 K14 + 0x00301113, // 0028 ADD R12 R8 K19 0x54360003, // 0029 LDINT R13 4 0x0830180D, // 002A MUL R12 R12 R13 0x54360003, // 002B LDINT R13 4 0x7C280600, // 002C CALL R10 3 - 0x882C010F, // 002D GETMBR R11 R0 K15 + 0x882C0106, // 002D GETMBR R11 R0 K6 0x942C1608, // 002E GETIDX R11 R11 R8 - 0x00301105, // 002F ADD R12 R8 K5 - 0x8834010F, // 0030 GETMBR R13 R0 K15 + 0x00301113, // 002F ADD R12 R8 K19 + 0x88340106, // 0030 GETMBR R13 R0 K6 0x94301A0C, // 0031 GETIDX R12 R13 R12 - 0xB8360C00, // 0032 GETNGBL R13 K6 - 0x8C341B13, // 0033 GETMET R13 R13 K19 + 0xB8361E00, // 0032 GETNGBL R13 K15 + 0x8C341B10, // 0033 GETMET R13 R13 K16 0x5C3C0200, // 0034 MOVE R15 R1 0x5C401600, // 0035 MOVE R16 R11 0x5C441800, // 0036 MOVE R17 R12 @@ -5650,8 +7485,8 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * 0x545200FE, // 003D LDINT R20 255 0x2C4C2614, // 003E AND R19 R19 R20 0x7C340C00, // 003F CALL R13 6 - 0xB83A0C00, // 0040 GETNGBL R14 K6 - 0x8C381D13, // 0041 GETMET R14 R14 K19 + 0xB83A1E00, // 0040 GETNGBL R14 K15 + 0x8C381D10, // 0041 GETMET R14 R14 K16 0x5C400200, // 0042 MOVE R16 R1 0x5C441600, // 0043 MOVE R17 R11 0x5C481800, // 0044 MOVE R18 R12 @@ -5664,8 +7499,8 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * 0x545600FE, // 004B LDINT R21 255 0x2C502815, // 004C AND R20 R20 R21 0x7C380C00, // 004D CALL R14 6 - 0xB83E0C00, // 004E GETNGBL R15 K6 - 0x8C3C1F13, // 004F GETMET R15 R15 K19 + 0xB83E1E00, // 004E GETNGBL R15 K15 + 0x8C3C1F10, // 004F GETMET R15 R15 K16 0x5C440200, // 0050 MOVE R17 R1 0x5C481600, // 0051 MOVE R18 R11 0x5C4C1800, // 0052 MOVE R19 R12 @@ -5681,30 +7516,30 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * 0x544200FE, // 005C LDINT R16 255 0x20400C10, // 005D NE R16 R6 R16 0x7842001A, // 005E JMPF R16 #007A - 0xB8420C00, // 005F GETNGBL R16 K6 - 0x8C402113, // 0060 GETMET R16 R16 K19 + 0xB8421E00, // 005F GETNGBL R16 K15 + 0x8C402110, // 0060 GETMET R16 R16 K16 0x5C481A00, // 0061 MOVE R18 R13 - 0x584C0004, // 0062 LDCONST R19 K4 + 0x584C000D, // 0062 LDCONST R19 K13 0x545200FE, // 0063 LDINT R20 255 - 0x58540004, // 0064 LDCONST R21 K4 + 0x5854000D, // 0064 LDCONST R21 K13 0x5C580C00, // 0065 MOVE R22 R6 0x7C400C00, // 0066 CALL R16 6 0x5C342000, // 0067 MOVE R13 R16 - 0xB8420C00, // 0068 GETNGBL R16 K6 - 0x8C402113, // 0069 GETMET R16 R16 K19 + 0xB8421E00, // 0068 GETNGBL R16 K15 + 0x8C402110, // 0069 GETMET R16 R16 K16 0x5C481C00, // 006A MOVE R18 R14 - 0x584C0004, // 006B LDCONST R19 K4 + 0x584C000D, // 006B LDCONST R19 K13 0x545200FE, // 006C LDINT R20 255 - 0x58540004, // 006D LDCONST R21 K4 + 0x5854000D, // 006D LDCONST R21 K13 0x5C580C00, // 006E MOVE R22 R6 0x7C400C00, // 006F CALL R16 6 0x5C382000, // 0070 MOVE R14 R16 - 0xB8420C00, // 0071 GETNGBL R16 K6 - 0x8C402113, // 0072 GETMET R16 R16 K19 + 0xB8421E00, // 0071 GETNGBL R16 K15 + 0x8C402110, // 0072 GETMET R16 R16 K16 0x5C481E00, // 0073 MOVE R18 R15 - 0x584C0004, // 0074 LDCONST R19 K4 + 0x584C000D, // 0074 LDCONST R19 K13 0x545200FE, // 0075 LDINT R20 255 - 0x58540004, // 0076 LDCONST R21 K4 + 0x5854000D, // 0076 LDCONST R21 K13 0x5C580C00, // 0077 MOVE R22 R6 0x7C400C00, // 0078 CALL R16 6 0x5C3C2000, // 0079 MOVE R15 R16 @@ -5742,53 +7577,53 @@ be_local_closure(class_RichPaletteColorProvider__recompute_palette, /* name */ be_str_weak(_recompute_palette), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x88040103, // 0000 GETMBR R1 R0 K3 + 0x8C080109, // 0001 GETMET R2 R0 K9 0x7C080200, // 0002 CALL R2 1 0x600C000C, // 0003 GETGBL R3 G12 0x5C100400, // 0004 MOVE R4 R2 0x7C0C0200, // 0005 CALL R3 1 0x54120003, // 0006 LDINT R4 4 0x0C0C0604, // 0007 DIV R3 R3 R4 - 0x90020203, // 0008 SETMBR R0 K1 R3 - 0x240C0304, // 0009 GT R3 R1 K4 + 0x90021403, // 0008 SETMBR R0 K10 R3 + 0x240C030D, // 0009 GT R3 R1 K13 0x780E0008, // 000A JMPF R3 #0014 0x4C0C0000, // 000B LDNIL R3 0x200C0403, // 000C NE R3 R2 R3 0x780E0005, // 000D JMPF R3 #0014 - 0x8C0C0114, // 000E GETMET R3 R0 K20 - 0x58140004, // 000F LDCONST R5 K4 - 0x04180305, // 0010 SUB R6 R1 K5 + 0x8C0C0124, // 000E GETMET R3 R0 K36 + 0x5814000D, // 000F LDCONST R5 K13 + 0x04180313, // 0010 SUB R6 R1 K19 0x7C0C0600, // 0011 CALL R3 3 - 0x90021C03, // 0012 SETMBR R0 K14 R3 + 0x90020A03, // 0012 SETMBR R0 K5 R3 0x70020001, // 0013 JMP #0016 0x4C0C0000, // 0014 LDNIL R3 - 0x90021C03, // 0015 SETMBR R0 K14 R3 - 0x880C010B, // 0016 GETMBR R3 R0 K11 - 0x8810010C, // 0017 GETMBR R4 R0 K12 + 0x90020A03, // 0015 SETMBR R0 K5 R3 + 0x880C0101, // 0016 GETMBR R3 R0 K1 + 0x88100102, // 0017 GETMBR R4 R0 K2 0x28140604, // 0018 GE R5 R3 R4 0x78160000, // 0019 JMPF R5 #001B - 0xB0062B16, // 001A RAISE 1 K21 K22 - 0x8C140100, // 001B GETMET R5 R0 K0 + 0xB0064B26, // 001A RAISE 1 K37 K38 + 0x8C140109, // 001B GETMET R5 R0 K9 0x7C140200, // 001C CALL R5 1 0x4C180000, // 001D LDNIL R6 0x20140A06, // 001E NE R5 R5 R6 0x78160005, // 001F JMPF R5 #0026 - 0x8C140114, // 0020 GETMET R5 R0 K20 + 0x8C140124, // 0020 GETMET R5 R0 K36 0x5C1C0600, // 0021 MOVE R7 R3 0x5C200800, // 0022 MOVE R8 R4 0x7C140600, // 0023 CALL R5 3 - 0x90021E05, // 0024 SETMBR R0 K15 R5 + 0x90020C05, // 0024 SETMBR R0 K6 R5 0x70020001, // 0025 JMP #0028 0x4C140000, // 0026 LDNIL R5 - 0x90021E05, // 0027 SETMBR R0 K15 R5 - 0x88140101, // 0028 GETMBR R5 R0 K1 - 0x24140B04, // 0029 GT R5 R5 K4 + 0x90020C05, // 0027 SETMBR R0 K6 R5 + 0x8814010A, // 0028 GETMBR R5 R0 K10 + 0x24140B0D, // 0029 GT R5 R5 K13 0x78160003, // 002A JMPF R5 #002F - 0x8C140118, // 002B GETMET R5 R0 K24 - 0x581C0004, // 002C LDCONST R7 K4 + 0x8C140127, // 002B GETMET R5 R0 K39 + 0x581C000D, // 002C LDCONST R7 K13 0x7C140400, // 002D CALL R5 2 - 0x90022E05, // 002E SETMBR R0 K23 R5 + 0x90022205, // 002E SETMBR R0 K17 R5 0x80040000, // 002F RET 1 R0 }) ) @@ -5796,199 +7631,6 @@ be_local_closure(class_RichPaletteColorProvider__recompute_palette, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_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_RichPaletteColorProvider, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080519, // 0003 GETMET R2 R2 K25 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x5409FFFE, // 0006 LDINT R2 -1 - 0x90022E02, // 0007 SETMBR R0 K23 R2 - 0x8808011B, // 0008 GETMBR R2 R0 K27 - 0x8808051C, // 0009 GETMBR R2 R2 K28 - 0x90023402, // 000A SETMBR R0 K26 R2 - 0x90020304, // 000B SETMBR R0 K1 K4 - 0xA40A3A00, // 000C IMPORT R2 K29 - 0x8C0C051E, // 000D GETMET R3 R2 K30 - 0x8814051E, // 000E GETMBR R5 R2 K30 - 0x88140B1F, // 000F GETMBR R5 R5 K31 - 0x7C0C0400, // 0010 CALL R3 2 - 0x90023C03, // 0011 SETMBR R0 K30 R3 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: to_css_gradient -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_to_css_gradient, /* name */ - be_nested_proto( - 16, /* 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_RichPaletteColorProvider, /* shared constants */ - be_str_weak(to_css_gradient), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80064000, // 0005 RET 1 K32 - 0x8C080114, // 0006 GETMET R2 R0 K20 - 0x58100004, // 0007 LDCONST R4 K4 - 0x541603E7, // 0008 LDINT R5 1000 - 0x7C080600, // 0009 CALL R2 3 - 0x580C0021, // 000A LDCONST R3 K33 - 0x58100004, // 000B LDCONST R4 K4 - 0x6014000C, // 000C GETGBL R5 G12 - 0x5C180400, // 000D MOVE R6 R2 - 0x7C140200, // 000E CALL R5 1 - 0x14140805, // 000F LT R5 R4 R5 - 0x7816001B, // 0010 JMPF R5 #002D - 0x94140404, // 0011 GETIDX R5 R2 R4 - 0x8C180303, // 0012 GETMET R6 R1 K3 - 0x54220003, // 0013 LDINT R8 4 - 0x08200808, // 0014 MUL R8 R4 R8 - 0x54260003, // 0015 LDINT R9 4 - 0x7C180600, // 0016 CALL R6 3 - 0x541E0007, // 0017 LDINT R7 8 - 0x3C1C0C07, // 0018 SHR R7 R6 R7 - 0x542200FE, // 0019 LDINT R8 255 - 0x2C1C0E08, // 001A AND R7 R7 R8 - 0x5422000F, // 001B LDINT R8 16 - 0x3C200C08, // 001C SHR R8 R6 R8 - 0x542600FE, // 001D LDINT R9 255 - 0x2C201009, // 001E AND R8 R8 R9 - 0x54260017, // 001F LDINT R9 24 - 0x3C240C09, // 0020 SHR R9 R6 R9 - 0x542A00FE, // 0021 LDINT R10 255 - 0x2C24120A, // 0022 AND R9 R9 R10 - 0x60280018, // 0023 GETGBL R10 G24 - 0x582C0022, // 0024 LDCONST R11 K34 - 0x5C300E00, // 0025 MOVE R12 R7 - 0x5C341000, // 0026 MOVE R13 R8 - 0x5C381200, // 0027 MOVE R14 R9 - 0x0C3C0B23, // 0028 DIV R15 R5 K35 - 0x7C280A00, // 0029 CALL R10 5 - 0x000C060A, // 002A ADD R3 R3 R10 - 0x00100905, // 002B ADD R4 R4 K5 - 0x7001FFDE, // 002C JMP #000C - 0x000C0724, // 002D ADD R3 R3 K36 - 0x80040600, // 002E RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_color_at_index -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider__get_color_at_index, /* 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_RichPaletteColorProvider, /* shared constants */ - be_str_weak(_get_color_at_index), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x14080304, // 0000 LT R2 R1 K4 - 0x740A0002, // 0001 JMPT R2 #0005 - 0x88080101, // 0002 GETMBR R2 R0 K1 - 0x28080202, // 0003 GE R2 R1 R2 - 0x780A0001, // 0004 JMPF R2 #0007 - 0x5409FFFE, // 0005 LDINT R2 -1 - 0x80040400, // 0006 RET 1 R2 - 0x8C080100, // 0007 GETMET R2 R0 K0 - 0x7C080200, // 0008 CALL R2 1 - 0x8C0C0503, // 0009 GETMET R3 R2 K3 - 0x54160003, // 000A LDINT R5 4 - 0x08140205, // 000B MUL R5 R1 R5 - 0x5419FFFB, // 000C LDINT R6 -4 - 0x7C0C0600, // 000D CALL R3 3 - 0x300C0725, // 000E OR R3 R3 K37 - 0x80040600, // 000F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_start, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_RichPaletteColorProvider, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8808010E, // 0000 GETMBR R2 R0 K14 - 0x4C0C0000, // 0001 LDNIL R3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x780A0005, // 0003 JMPF R2 #000A - 0x8808010F, // 0004 GETMBR R2 R0 K15 - 0x4C0C0000, // 0005 LDNIL R3 - 0x1C080403, // 0006 EQ R2 R2 R3 - 0x780A0001, // 0007 JMPF R2 #000A - 0x8C080110, // 0008 GETMET R2 R0 K16 - 0x7C080200, // 0009 CALL R2 1 - 0x4C080000, // 000A LDNIL R2 - 0x20080202, // 000B NE R2 R1 R2 - 0x780A0001, // 000C JMPF R2 #000F - 0x5C080200, // 000D MOVE R2 R1 - 0x70020001, // 000E JMP #0011 - 0x8808011B, // 000F GETMBR R2 R0 K27 - 0x8808051C, // 0010 GETMBR R2 R2 K28 - 0x90023402, // 0011 SETMBR R0 K26 R2 - 0x80040000, // 0012 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _get_palette_bytes ********************************************************************/ @@ -6006,13 +7648,13 @@ be_local_closure(class_RichPaletteColorProvider__get_palette_bytes, /* name */ be_str_weak(_get_palette_bytes), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8804010D, // 0000 GETMBR R1 R0 K13 + 0x88040104, // 0000 GETMBR R1 R0 K4 0x4C080000, // 0001 LDNIL R2 0x20080202, // 0002 NE R2 R1 R2 0x780A0001, // 0003 JMPF R2 #0006 0x5C080200, // 0004 MOVE R2 R1 0x70020000, // 0005 JMP #0007 - 0x88080126, // 0006 GETMBR R2 R0 K38 + 0x88080128, // 0006 GETMBR R2 R0 K40 0x80040400, // 0007 RET 1 R2 }) ) @@ -6021,12 +7663,12 @@ be_local_closure(class_RichPaletteColorProvider__get_palette_bytes, /* name */ /******************************************************************** -** Solidified function: produce_value +** Solidified function: to_css_gradient ********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ +be_local_closure(class_RichPaletteColorProvider_to_css_gradient, /* name */ be_nested_proto( - 28, /* nstack */ - 3, /* argc */ + 16, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -6034,255 +7676,56 @@ be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ - be_str_weak(produce_value), + be_str_weak(to_css_gradient), &be_const_str_solidified, - ( &(const binstruction[246]) { /* code */ - 0x880C010E, // 0000 GETMBR R3 R0 K14 - 0x4C100000, // 0001 LDNIL R4 - 0x1C0C0604, // 0002 EQ R3 R3 R4 - 0x780E0005, // 0003 JMPF R3 #000A - 0x880C010F, // 0004 GETMBR R3 R0 K15 - 0x4C100000, // 0005 LDNIL R4 - 0x1C0C0604, // 0006 EQ R3 R3 R4 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0110, // 0008 GETMET R3 R0 K16 - 0x7C0C0200, // 0009 CALL R3 1 - 0x8C0C0100, // 000A GETMET R3 R0 K0 - 0x7C0C0200, // 000B CALL R3 1 - 0x4C100000, // 000C LDNIL R4 - 0x1C100604, // 000D EQ R4 R3 R4 - 0x74120002, // 000E JMPT R4 #0012 - 0x88100101, // 000F GETMBR R4 R0 K1 - 0x14100912, // 0010 LT R4 R4 K18 - 0x78120001, // 0011 JMPF R4 #0014 - 0x5411FFFE, // 0012 LDINT R4 -1 - 0x80040800, // 0013 RET 1 R4 - 0x88100109, // 0014 GETMBR R4 R0 K9 - 0x88140111, // 0015 GETMBR R5 R0 K17 - 0x1C180904, // 0016 EQ R6 R4 K4 - 0x781A0039, // 0017 JMPF R6 #0052 - 0x8C180703, // 0018 GETMET R6 R3 K3 - 0x58200004, // 0019 LDCONST R8 K4 - 0x54260003, // 001A LDINT R9 4 - 0x7C180600, // 001B CALL R6 3 - 0x541E0007, // 001C LDINT R7 8 - 0x3C1C0C07, // 001D SHR R7 R6 R7 - 0x542200FE, // 001E LDINT R8 255 - 0x2C1C0E08, // 001F AND R7 R7 R8 - 0x5422000F, // 0020 LDINT R8 16 - 0x3C200C08, // 0021 SHR R8 R6 R8 - 0x542600FE, // 0022 LDINT R9 255 - 0x2C201009, // 0023 AND R8 R8 R9 - 0x54260017, // 0024 LDINT R9 24 - 0x3C240C09, // 0025 SHR R9 R6 R9 - 0x542A00FE, // 0026 LDINT R10 255 - 0x2C24120A, // 0027 AND R9 R9 R10 - 0x542A00FE, // 0028 LDINT R10 255 - 0x20280A0A, // 0029 NE R10 R5 R10 - 0x782A001A, // 002A JMPF R10 #0046 - 0xB82A0C00, // 002B GETNGBL R10 K6 - 0x8C281513, // 002C GETMET R10 R10 K19 - 0x5C300E00, // 002D MOVE R12 R7 - 0x58340004, // 002E LDCONST R13 K4 - 0x543A00FE, // 002F LDINT R14 255 - 0x583C0004, // 0030 LDCONST R15 K4 - 0x5C400A00, // 0031 MOVE R16 R5 - 0x7C280C00, // 0032 CALL R10 6 - 0x5C1C1400, // 0033 MOVE R7 R10 - 0xB82A0C00, // 0034 GETNGBL R10 K6 - 0x8C281513, // 0035 GETMET R10 R10 K19 - 0x5C301000, // 0036 MOVE R12 R8 - 0x58340004, // 0037 LDCONST R13 K4 - 0x543A00FE, // 0038 LDINT R14 255 - 0x583C0004, // 0039 LDCONST R15 K4 - 0x5C400A00, // 003A MOVE R16 R5 - 0x7C280C00, // 003B CALL R10 6 - 0x5C201400, // 003C MOVE R8 R10 - 0xB82A0C00, // 003D GETNGBL R10 K6 - 0x8C281513, // 003E GETMET R10 R10 K19 - 0x5C301200, // 003F MOVE R12 R9 - 0x58340004, // 0040 LDCONST R13 K4 - 0x543A00FE, // 0041 LDINT R14 255 - 0x583C0004, // 0042 LDCONST R15 K4 - 0x5C400A00, // 0043 MOVE R16 R5 - 0x7C280C00, // 0044 CALL R10 6 - 0x5C241400, // 0045 MOVE R9 R10 - 0x542A00FE, // 0046 LDINT R10 255 - 0x542E0017, // 0047 LDINT R11 24 - 0x3828140B, // 0048 SHL R10 R10 R11 - 0x542E000F, // 0049 LDINT R11 16 - 0x382C0E0B, // 004A SHL R11 R7 R11 - 0x3028140B, // 004B OR R10 R10 R11 - 0x542E0007, // 004C LDINT R11 8 - 0x382C100B, // 004D SHL R11 R8 R11 - 0x3028140B, // 004E OR R10 R10 R11 - 0x30281409, // 004F OR R10 R10 R9 - 0x90022E0A, // 0050 SETMBR R0 K23 R10 - 0x80041400, // 0051 RET 1 R10 - 0x8818011A, // 0052 GETMBR R6 R0 K26 - 0x04180406, // 0053 SUB R6 R2 R6 - 0x101C0C04, // 0054 MOD R7 R6 R4 - 0x88200101, // 0055 GETMBR R8 R0 K1 - 0x04241112, // 0056 SUB R9 R8 K18 - 0x24281304, // 0057 GT R10 R9 K4 - 0x782A0006, // 0058 JMPF R10 #0060 - 0x8828010E, // 0059 GETMBR R10 R0 K14 - 0x94281409, // 005A GETIDX R10 R10 R9 - 0x28280E0A, // 005B GE R10 R7 R10 - 0x782A0000, // 005C JMPF R10 #005E - 0x70020001, // 005D JMP #0060 - 0x04241305, // 005E SUB R9 R9 K5 - 0x7001FFF6, // 005F JMP #0057 - 0x8C280703, // 0060 GETMET R10 R3 K3 - 0x54320003, // 0061 LDINT R12 4 - 0x0830120C, // 0062 MUL R12 R9 R12 - 0x54360003, // 0063 LDINT R13 4 - 0x7C280600, // 0064 CALL R10 3 - 0x8C2C0703, // 0065 GETMET R11 R3 K3 - 0x00341305, // 0066 ADD R13 R9 K5 - 0x543A0003, // 0067 LDINT R14 4 - 0x08341A0E, // 0068 MUL R13 R13 R14 - 0x543A0003, // 0069 LDINT R14 4 - 0x7C2C0600, // 006A CALL R11 3 - 0x8830010E, // 006B GETMBR R12 R0 K14 - 0x94301809, // 006C GETIDX R12 R12 R9 - 0x00341305, // 006D ADD R13 R9 K5 - 0x8838010E, // 006E GETMBR R14 R0 K14 - 0x94341C0D, // 006F GETIDX R13 R14 R13 - 0xB83A0C00, // 0070 GETNGBL R14 K6 - 0x8C381D13, // 0071 GETMET R14 R14 K19 - 0x5C400E00, // 0072 MOVE R16 R7 - 0x5C441800, // 0073 MOVE R17 R12 - 0x5C481A00, // 0074 MOVE R18 R13 - 0x544E0007, // 0075 LDINT R19 8 - 0x3C4C1413, // 0076 SHR R19 R10 R19 - 0x545200FE, // 0077 LDINT R20 255 - 0x2C4C2614, // 0078 AND R19 R19 R20 - 0x54520007, // 0079 LDINT R20 8 - 0x3C501614, // 007A SHR R20 R11 R20 - 0x545600FE, // 007B LDINT R21 255 - 0x2C502815, // 007C AND R20 R20 R21 - 0x7C380C00, // 007D CALL R14 6 - 0xB83E0C00, // 007E GETNGBL R15 K6 - 0x8C3C1F13, // 007F GETMET R15 R15 K19 - 0x5C440E00, // 0080 MOVE R17 R7 - 0x5C481800, // 0081 MOVE R18 R12 - 0x5C4C1A00, // 0082 MOVE R19 R13 - 0x5452000F, // 0083 LDINT R20 16 - 0x3C501414, // 0084 SHR R20 R10 R20 - 0x545600FE, // 0085 LDINT R21 255 - 0x2C502815, // 0086 AND R20 R20 R21 - 0x5456000F, // 0087 LDINT R21 16 - 0x3C541615, // 0088 SHR R21 R11 R21 - 0x545A00FE, // 0089 LDINT R22 255 - 0x2C542A16, // 008A AND R21 R21 R22 - 0x7C3C0C00, // 008B CALL R15 6 - 0xB8420C00, // 008C GETNGBL R16 K6 - 0x8C402113, // 008D GETMET R16 R16 K19 - 0x5C480E00, // 008E MOVE R18 R7 - 0x5C4C1800, // 008F MOVE R19 R12 - 0x5C501A00, // 0090 MOVE R20 R13 - 0x54560017, // 0091 LDINT R21 24 - 0x3C541415, // 0092 SHR R21 R10 R21 - 0x545A00FE, // 0093 LDINT R22 255 - 0x2C542A16, // 0094 AND R21 R21 R22 - 0x545A0017, // 0095 LDINT R22 24 - 0x3C581616, // 0096 SHR R22 R11 R22 - 0x545E00FE, // 0097 LDINT R23 255 - 0x2C582C17, // 0098 AND R22 R22 R23 - 0x7C400C00, // 0099 CALL R16 6 - 0x8844011E, // 009A GETMBR R17 R0 K30 - 0x8C482327, // 009B GETMET R18 R17 K39 - 0x54520007, // 009C LDINT R20 8 - 0x3C501414, // 009D SHR R20 R10 R20 - 0x545600FE, // 009E LDINT R21 255 - 0x2C502815, // 009F AND R20 R20 R21 - 0x5456000F, // 00A0 LDINT R21 16 - 0x3C541415, // 00A1 SHR R21 R10 R21 - 0x545A00FE, // 00A2 LDINT R22 255 - 0x2C542A16, // 00A3 AND R21 R21 R22 - 0x545A0017, // 00A4 LDINT R22 24 - 0x3C581416, // 00A5 SHR R22 R10 R22 - 0x545E00FE, // 00A6 LDINT R23 255 - 0x2C582C17, // 00A7 AND R22 R22 R23 - 0x7C480800, // 00A8 CALL R18 4 - 0x88482328, // 00A9 GETMBR R18 R17 K40 - 0x8C4C2327, // 00AA GETMET R19 R17 K39 - 0x54560007, // 00AB LDINT R21 8 - 0x3C541615, // 00AC SHR R21 R11 R21 - 0x545A00FE, // 00AD LDINT R22 255 - 0x2C542A16, // 00AE AND R21 R21 R22 - 0x545A000F, // 00AF LDINT R22 16 - 0x3C581616, // 00B0 SHR R22 R11 R22 - 0x545E00FE, // 00B1 LDINT R23 255 - 0x2C582C17, // 00B2 AND R22 R22 R23 - 0x545E0017, // 00B3 LDINT R23 24 - 0x3C5C1617, // 00B4 SHR R23 R11 R23 - 0x546200FE, // 00B5 LDINT R24 255 - 0x2C5C2E18, // 00B6 AND R23 R23 R24 - 0x7C4C0800, // 00B7 CALL R19 4 - 0x884C2328, // 00B8 GETMBR R19 R17 K40 - 0xB8520C00, // 00B9 GETNGBL R20 K6 - 0x8C502913, // 00BA GETMET R20 R20 K19 - 0x5C580E00, // 00BB MOVE R22 R7 - 0x5C5C1800, // 00BC MOVE R23 R12 - 0x5C601A00, // 00BD MOVE R24 R13 - 0x5C642400, // 00BE MOVE R25 R18 - 0x5C682600, // 00BF MOVE R26 R19 - 0x7C500C00, // 00C0 CALL R20 6 - 0x8C542327, // 00C1 GETMET R21 R17 K39 - 0x5C5C1C00, // 00C2 MOVE R23 R14 - 0x5C601E00, // 00C3 MOVE R24 R15 - 0x5C642000, // 00C4 MOVE R25 R16 - 0x7C540800, // 00C5 CALL R21 4 - 0x8C542329, // 00C6 GETMET R21 R17 K41 - 0x5C5C2800, // 00C7 MOVE R23 R20 - 0x7C540400, // 00C8 CALL R21 2 - 0x8838232A, // 00C9 GETMBR R14 R17 K42 - 0x883C232B, // 00CA GETMBR R15 R17 K43 - 0x8840232C, // 00CB GETMBR R16 R17 K44 - 0x545600FE, // 00CC LDINT R21 255 - 0x20540A15, // 00CD NE R21 R5 R21 - 0x7856001A, // 00CE JMPF R21 #00EA - 0xB8560C00, // 00CF GETNGBL R21 K6 - 0x8C542B13, // 00D0 GETMET R21 R21 K19 - 0x5C5C1C00, // 00D1 MOVE R23 R14 - 0x58600004, // 00D2 LDCONST R24 K4 - 0x546600FE, // 00D3 LDINT R25 255 - 0x58680004, // 00D4 LDCONST R26 K4 - 0x5C6C0A00, // 00D5 MOVE R27 R5 - 0x7C540C00, // 00D6 CALL R21 6 - 0x5C382A00, // 00D7 MOVE R14 R21 - 0xB8560C00, // 00D8 GETNGBL R21 K6 - 0x8C542B13, // 00D9 GETMET R21 R21 K19 - 0x5C5C1E00, // 00DA MOVE R23 R15 - 0x58600004, // 00DB LDCONST R24 K4 - 0x546600FE, // 00DC LDINT R25 255 - 0x58680004, // 00DD LDCONST R26 K4 - 0x5C6C0A00, // 00DE MOVE R27 R5 - 0x7C540C00, // 00DF CALL R21 6 - 0x5C3C2A00, // 00E0 MOVE R15 R21 - 0xB8560C00, // 00E1 GETNGBL R21 K6 - 0x8C542B13, // 00E2 GETMET R21 R21 K19 - 0x5C5C2000, // 00E3 MOVE R23 R16 - 0x58600004, // 00E4 LDCONST R24 K4 - 0x546600FE, // 00E5 LDINT R25 255 - 0x58680004, // 00E6 LDCONST R26 K4 - 0x5C6C0A00, // 00E7 MOVE R27 R5 - 0x7C540C00, // 00E8 CALL R21 6 - 0x5C402A00, // 00E9 MOVE R16 R21 - 0x545600FE, // 00EA LDINT R21 255 - 0x545A0017, // 00EB LDINT R22 24 - 0x38542A16, // 00EC SHL R21 R21 R22 - 0x545A000F, // 00ED LDINT R22 16 - 0x38581C16, // 00EE SHL R22 R14 R22 - 0x30542A16, // 00EF OR R21 R21 R22 - 0x545A0007, // 00F0 LDINT R22 8 - 0x38581E16, // 00F1 SHL R22 R15 R22 - 0x30542A16, // 00F2 OR R21 R21 R22 - 0x30542A10, // 00F3 OR R21 R21 R16 - 0x90022E15, // 00F4 SETMBR R0 K23 R21 - 0x80042A00, // 00F5 RET 1 R21 + ( &(const binstruction[47]) { /* code */ + 0x8C040109, // 0000 GETMET R1 R0 K9 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80065200, // 0005 RET 1 K41 + 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x5810000D, // 0007 LDCONST R4 K13 + 0x541603E7, // 0008 LDINT R5 1000 + 0x7C080600, // 0009 CALL R2 3 + 0x580C002A, // 000A LDCONST R3 K42 + 0x5810000D, // 000B LDCONST R4 K13 + 0x6014000C, // 000C GETGBL R5 G12 + 0x5C180400, // 000D MOVE R6 R2 + 0x7C140200, // 000E CALL R5 1 + 0x14140805, // 000F LT R5 R4 R5 + 0x7816001B, // 0010 JMPF R5 #002D + 0x94140404, // 0011 GETIDX R5 R2 R4 + 0x8C18030E, // 0012 GETMET R6 R1 K14 + 0x54220003, // 0013 LDINT R8 4 + 0x08200808, // 0014 MUL R8 R4 R8 + 0x54260003, // 0015 LDINT R9 4 + 0x7C180600, // 0016 CALL R6 3 + 0x541E0007, // 0017 LDINT R7 8 + 0x3C1C0C07, // 0018 SHR R7 R6 R7 + 0x542200FE, // 0019 LDINT R8 255 + 0x2C1C0E08, // 001A AND R7 R7 R8 + 0x5422000F, // 001B LDINT R8 16 + 0x3C200C08, // 001C SHR R8 R6 R8 + 0x542600FE, // 001D LDINT R9 255 + 0x2C201009, // 001E AND R8 R8 R9 + 0x54260017, // 001F LDINT R9 24 + 0x3C240C09, // 0020 SHR R9 R6 R9 + 0x542A00FE, // 0021 LDINT R10 255 + 0x2C24120A, // 0022 AND R9 R9 R10 + 0x60280018, // 0023 GETGBL R10 G24 + 0x582C002B, // 0024 LDCONST R11 K43 + 0x5C300E00, // 0025 MOVE R12 R7 + 0x5C341000, // 0026 MOVE R13 R8 + 0x5C381200, // 0027 MOVE R14 R9 + 0x0C3C0B2C, // 0028 DIV R15 R5 K44 + 0x7C280A00, // 0029 CALL R10 5 + 0x000C060A, // 002A ADD R3 R3 R10 + 0x00100913, // 002B ADD R4 R4 K19 + 0x7001FFDE, // 002C JMP #000C + 0x000C072D, // 002D ADD R3 R3 K45 + 0x80040600, // 002E RET 1 R3 }) ) ); @@ -6294,14 +7737,17 @@ be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ ********************************************************************/ extern const bclass be_class_ColorProvider; be_local_class(RichPaletteColorProvider, - 6, + 5, &be_class_ColorProvider, - be_nested_map(19, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(light_state, -1), be_const_var(4) }, - { be_const_key_weak(value_arr, 5), be_const_var(1) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_RichPaletteColorProvider_tostring_closure) }, - { be_const_key_weak(PARAMS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(value_arr, -1), be_const_var(1) }, + { be_const_key_weak(to_css_gradient, -1), be_const_closure(class_RichPaletteColorProvider_to_css_gradient_closure) }, + { be_const_key_weak(_parse_palette, -1), be_const_closure(class_RichPaletteColorProvider__parse_palette_closure) }, + { be_const_key_weak(_DEFAULT_PALETTE, 17), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(slots_arr, -1), be_const_var(0) }, + { be_const_key_weak(_get_color_at_index, 2), be_const_closure(class_RichPaletteColorProvider__get_color_at_index_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(range_min, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { @@ -6345,29 +7791,25 @@ be_local_class(RichPaletteColorProvider, { be_const_key_weak(default, -1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(_parse_palette, 1), be_const_closure(class_RichPaletteColorProvider__parse_palette_closure) }, - { be_const_key_weak(slots_arr, -1), be_const_var(0) }, - { be_const_key_weak(get_color_for_value, 15), be_const_closure(class_RichPaletteColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(_DEFAULT_PALETTE, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, - { be_const_key_weak(_recompute_palette, -1), be_const_closure(class_RichPaletteColorProvider__recompute_palette_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteColorProvider_start_closure) }, - { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_RichPaletteColorProvider__get_color_at_index_closure) }, - { be_const_key_weak(to_css_gradient, -1), be_const_closure(class_RichPaletteColorProvider_to_css_gradient_closure) }, - { be_const_key_weak(slots, -1), be_const_var(2) }, - { be_const_key_weak(init, 12), be_const_closure(class_RichPaletteColorProvider_init_closure) }, - { be_const_key_weak(cycle_start, 10), be_const_var(5) }, + { be_const_key_weak(tostring, 1), be_const_closure(class_RichPaletteColorProvider_tostring_closure) }, + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_RichPaletteColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(light_state, -1), be_const_var(4) }, { be_const_key_weak(current_color, -1), be_const_var(3) }, + { be_const_key_weak(start, 8), be_const_closure(class_RichPaletteColorProvider_start_closure) }, + { be_const_key_weak(slots, -1), be_const_var(2) }, + { be_const_key_weak(on_param_changed, 9), be_const_closure(class_RichPaletteColorProvider_on_param_changed_closure) }, + { be_const_key_weak(_recompute_palette, -1), be_const_closure(class_RichPaletteColorProvider__recompute_palette_closure) }, + { be_const_key_weak(init, 6), be_const_closure(class_RichPaletteColorProvider_init_closure) }, { be_const_key_weak(_get_palette_bytes, -1), be_const_closure(class_RichPaletteColorProvider__get_palette_bytes_closure) }, { be_const_key_weak(produce_value, -1), be_const_closure(class_RichPaletteColorProvider_produce_value_closure) }, - { be_const_key_weak(on_param_changed, 0), be_const_closure(class_RichPaletteColorProvider_on_param_changed_closure) }, })), be_str_weak(RichPaletteColorProvider) ); /******************************************************************** -** Solidified function: scale_oscillate +** Solidified function: bounce_basic ********************************************************************/ -be_local_closure(scale_oscillate, /* name */ +be_local_closure(bounce_basic, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -6377,24 +7819,32 @@ be_local_closure(scale_oscillate, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 9]) { /* 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(1), - /* K4 */ be_nested_str_weak(scale_speed), + /* 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(scale_oscillate), + be_str_weak(bounce_basic), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* 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 - 0x90060503, // 0004 SETMBR R1 K2 K3 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x80040200, // 0007 RET 1 R1 + 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 }) ) ); @@ -6500,870 +7950,6 @@ be_local_closure(trigger_event, /* 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: 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: 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: bounce_constrained @@ -7411,167 +7997,6 @@ be_local_closure(bounce_constrained, /* name */ /*******************************************************************/ -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( - 18, /* 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 - 0xB82E0C00, // 002B GETNGBL R11 K6 - 0x8C2C170B, // 002C GETMET R11 R11 K11 - 0x5C341400, // 002D MOVE R13 R10 - 0x5439EFFF, // 002E LDINT R14 -4096 - 0x543E0FFF, // 002F LDINT R15 4096 - 0x58400008, // 0030 LDCONST R16 K8 - 0x544600FE, // 0031 LDINT R17 255 - 0x7C2C0C00, // 0032 CALL R11 6 - 0x88300104, // 0033 GETMBR R12 R0 K4 - 0x98300E0B, // 0034 SETIDX R12 R7 R11 - 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) -); - /******************************************************************** ** Solidified function: bounce_gravity ********************************************************************/ @@ -7617,11 +8042,1094 @@ be_local_closure(bounce_gravity, /* name */ ); /*******************************************************************/ -// compact class 'StaticColorProvider' ktab size: 3, total: 5 (saved 16 bytes) -static const bvalue be_ktab_class_StaticColorProvider[3] = { + +/******************************************************************** +** 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 + }) + ) +); +/*******************************************************************/ + +// compact class 'BounceAnimation' ktab size: 39, total: 86 (saved 376 bytes) +static const bvalue be_ktab_class_BounceAnimation[39] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(bounce_speed), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(scale_uint), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(current_velocity), + /* K6 */ be_nested_str_weak(init), + /* K7 */ be_nested_str_weak(current_position), + /* K8 */ be_nested_str_weak(bounce_center), + /* K9 */ be_nested_str_weak(source_frame), + /* K10 */ be_nested_str_weak(current_colors), + /* K11 */ be_nested_str_weak(last_update_time), + /* K12 */ be_nested_str_weak(_initialize_buffers), + /* K13 */ be_nested_str_weak(update), + /* K14 */ be_nested_str_weak(_update_physics), + /* K15 */ be_nested_str_weak(source_animation), + /* K16 */ be_nested_str_weak(is_running), + /* K17 */ be_nested_str_weak(start), + /* K18 */ be_nested_str_weak(start_time), + /* K19 */ be_nested_str_weak(_calculate_bounce), + /* K20 */ be_nested_str_weak(BounceAnimation_X28speed_X3D_X25s_X2C_X20damping_X3D_X25s_X2C_X20gravity_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K21 */ be_nested_str_weak(damping), + /* K22 */ be_nested_str_weak(gravity), + /* K23 */ be_nested_str_weak(priority), + /* K24 */ be_nested_str_weak(bounce_range), + /* K25 */ be_nested_str_weak(engine), + /* K26 */ be_nested_str_weak(get_strip_length), + /* K27 */ be_const_int(2), + /* K28 */ be_nested_str_weak(animation), + /* K29 */ be_nested_str_weak(frame_buffer), + /* K30 */ be_nested_str_weak(resize), + /* K31 */ be_const_int(-16777216), + /* K32 */ be_const_int(1), + /* K33 */ be_nested_str_weak(width), + /* K34 */ be_nested_str_weak(set_pixel_color), + /* K35 */ be_nested_str_weak(clear), + /* K36 */ be_nested_str_weak(render), + /* K37 */ be_nested_str_weak(get_pixel_color), + /* K38 */ be_nested_str_weak(time_ms), +}; + + +extern const bclass be_class_BounceAnimation; + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_BounceAnimation_on_param_changed, /* 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_BounceAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x780E0010, // 0008 JMPF R3 #001A + 0xB80E0400, // 0009 GETNGBL R3 K2 + 0x8C0C0703, // 000A GETMET R3 R3 K3 + 0x5C140400, // 000B MOVE R5 R2 + 0x58180004, // 000C LDCONST R6 K4 + 0x541E00FE, // 000D LDINT R7 255 + 0x58200004, // 000E LDCONST R8 K4 + 0x54260013, // 000F LDINT R9 20 + 0x7C0C0C00, // 0010 CALL R3 6 + 0x541200FF, // 0011 LDINT R4 256 + 0x08100604, // 0012 MUL R4 R3 R4 + 0x88140105, // 0013 GETMBR R5 R0 K5 + 0x14140B04, // 0014 LT R5 R5 K4 + 0x78160002, // 0015 JMPF R5 #0019 + 0x44140800, // 0016 NEG R5 R4 + 0x90020A05, // 0017 SETMBR R0 K5 R5 + 0x70020000, // 0018 JMP #001A + 0x90020A04, // 0019 SETMBR R0 K5 R4 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080506, // 0003 GETMET R2 R2 K6 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020F04, // 0006 SETMBR R0 K7 K4 + 0x90020B04, // 0007 SETMBR R0 K5 K4 + 0x90021104, // 0008 SETMBR R0 K8 K4 + 0x4C080000, // 0009 LDNIL R2 + 0x90021202, // 000A SETMBR R0 K9 R2 + 0x60080012, // 000B GETGBL R2 G18 + 0x7C080000, // 000C CALL R2 0 + 0x90021402, // 000D SETMBR R0 K10 R2 + 0x90021704, // 000E SETMBR R0 K11 K4 + 0x8C08010C, // 000F GETMET R2 R0 K12 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: update +********************************************************************/ +be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ + be_str_weak(update), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08050D, // 0003 GETMET R2 R2 K13 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8808010B, // 0009 GETMBR R2 R0 K11 + 0x1C080504, // 000A EQ R2 R2 K4 + 0x780A0000, // 000B JMPF R2 #000D + 0x90021601, // 000C SETMBR R0 K11 R1 + 0x8808010B, // 000D GETMBR R2 R0 K11 + 0x04080202, // 000E SUB R2 R1 R2 + 0x180C0504, // 000F LE R3 R2 K4 + 0x780E0001, // 0010 JMPF R3 #0013 + 0x500C0200, // 0011 LDBOOL R3 1 0 + 0x80040600, // 0012 RET 1 R3 + 0x90021601, // 0013 SETMBR R0 K11 R1 + 0x8C0C010E, // 0014 GETMET R3 R0 K14 + 0x5C140400, // 0015 MOVE R5 R2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x880C010F, // 0017 GETMBR R3 R0 K15 + 0x4C100000, // 0018 LDNIL R4 + 0x20100604, // 0019 NE R4 R3 R4 + 0x78120007, // 001A JMPF R4 #0023 + 0x88100710, // 001B GETMBR R4 R3 K16 + 0x74120002, // 001C JMPT R4 #0020 + 0x8C100711, // 001D GETMET R4 R3 K17 + 0x88180112, // 001E GETMBR R6 R0 K18 + 0x7C100400, // 001F CALL R4 2 + 0x8C10070D, // 0020 GETMET R4 R3 K13 + 0x5C180200, // 0021 MOVE R6 R1 + 0x7C100400, // 0022 CALL R4 2 + 0x8C100113, // 0023 GETMET R4 R0 K19 + 0x7C100200, // 0024 CALL R4 1 + 0x50100200, // 0025 LDBOOL R4 1 0 + 0x80040800, // 0026 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080014, // 0001 LDCONST R2 K20 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x88100115, // 0003 GETMBR R4 R0 K21 + 0x88140116, // 0004 GETMBR R5 R0 K22 + 0x88180117, // 0005 GETMBR R6 R0 K23 + 0x881C0110, // 0006 GETMBR R7 R0 K16 + 0x7C040C00, // 0007 CALL R1 6 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_physics +********************************************************************/ +be_local_closure(class_BounceAnimation__update_physics, /* name */ + be_nested_proto( + 19, /* 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_BounceAnimation, /* shared constants */ + be_str_weak(_update_physics), + &be_const_str_solidified, + ( &(const binstruction[95]) { /* code */ + 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x880C0118, // 0001 GETMBR R3 R0 K24 + 0x88100119, // 0002 GETMBR R4 R0 K25 + 0x8C10091A, // 0003 GETMET R4 R4 K26 + 0x7C100200, // 0004 CALL R4 1 + 0x88140115, // 0005 GETMBR R5 R0 K21 + 0x24180504, // 0006 GT R6 R2 K4 + 0x781A000D, // 0007 JMPF R6 #0016 + 0xB81A0400, // 0008 GETNGBL R6 K2 + 0x8C180D03, // 0009 GETMET R6 R6 K3 + 0x5C200400, // 000A MOVE R8 R2 + 0x58240004, // 000B LDCONST R9 K4 + 0x542A00FE, // 000C LDINT R10 255 + 0x582C0004, // 000D LDCONST R11 K4 + 0x543203E7, // 000E LDINT R12 1000 + 0x7C180C00, // 000F CALL R6 6 + 0x081C0C01, // 0010 MUL R7 R6 R1 + 0x542203E7, // 0011 LDINT R8 1000 + 0x0C1C0E08, // 0012 DIV R7 R7 R8 + 0x88200105, // 0013 GETMBR R8 R0 K5 + 0x00201007, // 0014 ADD R8 R8 R7 + 0x90020A08, // 0015 SETMBR R0 K5 R8 + 0x881C0105, // 0016 GETMBR R7 R0 K5 + 0x081C0E01, // 0017 MUL R7 R7 R1 + 0x542203E7, // 0018 LDINT R8 1000 + 0x0C1C0E08, // 0019 DIV R7 R7 R8 + 0x88180107, // 001A GETMBR R6 R0 K7 + 0x00180C07, // 001B ADD R6 R6 R7 + 0x90020E06, // 001C SETMBR R0 K7 R6 + 0x24180704, // 001D GT R6 R3 K4 + 0x781A0001, // 001E JMPF R6 #0021 + 0x5C180600, // 001F MOVE R6 R3 + 0x70020000, // 0020 JMP #0022 + 0x5C180800, // 0021 MOVE R6 R4 + 0x541E00FF, // 0022 LDINT R7 256 + 0x081C0C07, // 0023 MUL R7 R6 R7 + 0x0C1C0F1B, // 0024 DIV R7 R7 K27 + 0x88200108, // 0025 GETMBR R8 R0 K8 + 0x04201007, // 0026 SUB R8 R8 R7 + 0x88240108, // 0027 GETMBR R9 R0 K8 + 0x00241207, // 0028 ADD R9 R9 R7 + 0x50280000, // 0029 LDBOOL R10 0 0 + 0x882C0107, // 002A GETMBR R11 R0 K7 + 0x182C1608, // 002B LE R11 R11 R8 + 0x782E0005, // 002C JMPF R11 #0033 + 0x90020E08, // 002D SETMBR R0 K7 R8 + 0x882C0105, // 002E GETMBR R11 R0 K5 + 0x442C1600, // 002F NEG R11 R11 + 0x90020A0B, // 0030 SETMBR R0 K5 R11 + 0x50280200, // 0031 LDBOOL R10 1 0 + 0x70020007, // 0032 JMP #003B + 0x882C0107, // 0033 GETMBR R11 R0 K7 + 0x282C1609, // 0034 GE R11 R11 R9 + 0x782E0004, // 0035 JMPF R11 #003B + 0x90020E09, // 0036 SETMBR R0 K7 R9 + 0x882C0105, // 0037 GETMBR R11 R0 K5 + 0x442C1600, // 0038 NEG R11 R11 + 0x90020A0B, // 0039 SETMBR R0 K5 R11 + 0x50280200, // 003A LDBOOL R10 1 0 + 0x782A0021, // 003B JMPF R10 #005E + 0x542E00FE, // 003C LDINT R11 255 + 0x142C0A0B, // 003D LT R11 R5 R11 + 0x782E001E, // 003E JMPF R11 #005E + 0xB82E0400, // 003F GETNGBL R11 K2 + 0x8C2C1703, // 0040 GETMET R11 R11 K3 + 0x5C340A00, // 0041 MOVE R13 R5 + 0x58380004, // 0042 LDCONST R14 K4 + 0x543E00FE, // 0043 LDINT R15 255 + 0x58400004, // 0044 LDCONST R16 K4 + 0x544600FE, // 0045 LDINT R17 255 + 0x7C2C0C00, // 0046 CALL R11 6 + 0xB8320400, // 0047 GETNGBL R12 K2 + 0x8C301903, // 0048 GETMET R12 R12 K3 + 0x88380105, // 0049 GETMBR R14 R0 K5 + 0x583C0004, // 004A LDCONST R15 K4 + 0x544200FE, // 004B LDINT R16 255 + 0x58440004, // 004C LDCONST R17 K4 + 0x5C481600, // 004D MOVE R18 R11 + 0x7C300C00, // 004E CALL R12 6 + 0x90020A0C, // 004F SETMBR R0 K5 R12 + 0x88300105, // 0050 GETMBR R12 R0 K5 + 0x14301904, // 0051 LT R12 R12 K4 + 0x7832000A, // 0052 JMPF R12 #005E + 0xB8320400, // 0053 GETNGBL R12 K2 + 0x8C301903, // 0054 GETMET R12 R12 K3 + 0x88380105, // 0055 GETMBR R14 R0 K5 + 0x44381C00, // 0056 NEG R14 R14 + 0x583C0004, // 0057 LDCONST R15 K4 + 0x544200FE, // 0058 LDINT R16 255 + 0x58440004, // 0059 LDCONST R17 K4 + 0x5C481600, // 005A MOVE R18 R11 + 0x7C300C00, // 005B CALL R12 6 + 0x44301800, // 005C NEG R12 R12 + 0x90020A0C, // 005D SETMBR R0 K5 R12 + 0x80000000, // 005E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_buffers +********************************************************************/ +be_local_closure(class_BounceAnimation__initialize_buffers, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_BounceAnimation, /* shared constants */ + be_str_weak(_initialize_buffers), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x88040119, // 0000 GETMBR R1 R0 K25 + 0x8C04031A, // 0001 GETMET R1 R1 K26 + 0x7C040200, // 0002 CALL R1 1 + 0x540A00FF, // 0003 LDINT R2 256 + 0x08080202, // 0004 MUL R2 R1 R2 + 0x0C08051B, // 0005 DIV R2 R2 K27 + 0x90021002, // 0006 SETMBR R0 K8 R2 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x90020E02, // 0008 SETMBR R0 K7 R2 + 0xB80A0400, // 0009 GETNGBL R2 K2 + 0x8C080503, // 000A GETMET R2 R2 K3 + 0x88100101, // 000B GETMBR R4 R0 K1 + 0x58140004, // 000C LDCONST R5 K4 + 0x541A00FE, // 000D LDINT R6 255 + 0x581C0004, // 000E LDCONST R7 K4 + 0x54220013, // 000F LDINT R8 20 + 0x7C080C00, // 0010 CALL R2 6 + 0x540E00FF, // 0011 LDINT R3 256 + 0x080C0403, // 0012 MUL R3 R2 R3 + 0x90020A03, // 0013 SETMBR R0 K5 R3 + 0xB80E3800, // 0014 GETNGBL R3 K28 + 0x8C0C071D, // 0015 GETMET R3 R3 K29 + 0x5C140200, // 0016 MOVE R5 R1 + 0x7C0C0400, // 0017 CALL R3 2 + 0x90021203, // 0018 SETMBR R0 K9 R3 + 0x880C010A, // 0019 GETMBR R3 R0 K10 + 0x8C0C071E, // 001A GETMET R3 R3 K30 + 0x5C140200, // 001B MOVE R5 R1 + 0x7C0C0400, // 001C CALL R3 2 + 0x580C0004, // 001D LDCONST R3 K4 + 0x14100601, // 001E LT R4 R3 R1 + 0x78120003, // 001F JMPF R4 #0024 + 0x8810010A, // 0020 GETMBR R4 R0 K10 + 0x9810071F, // 0021 SETIDX R4 R3 K31 + 0x000C0720, // 0022 ADD R3 R3 K32 + 0x7001FFF9, // 0023 JMP #001E + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x880C0110, // 0000 GETMBR R3 R0 K16 + 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 + 0x880C0119, // 0007 GETMBR R3 R0 K25 + 0x8C0C071A, // 0008 GETMET R3 R3 K26 + 0x7C0C0200, // 0009 CALL R3 1 + 0x58100004, // 000A LDCONST R4 K4 + 0x14140803, // 000B LT R5 R4 R3 + 0x78160009, // 000C JMPF R5 #0017 + 0x88140321, // 000D GETMBR R5 R1 K33 + 0x14140805, // 000E LT R5 R4 R5 + 0x78160004, // 000F JMPF R5 #0015 + 0x8C140322, // 0010 GETMET R5 R1 K34 + 0x5C1C0800, // 0011 MOVE R7 R4 + 0x8820010A, // 0012 GETMBR R8 R0 K10 + 0x94201004, // 0013 GETIDX R8 R8 R4 + 0x7C140600, // 0014 CALL R5 3 + 0x00100920, // 0015 ADD R4 R4 K32 + 0x7001FFF3, // 0016 JMP #000B + 0x50140200, // 0017 LDBOOL R5 1 0 + 0x80040A00, // 0018 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _calculate_bounce +********************************************************************/ +be_local_closure(class_BounceAnimation__calculate_bounce, /* 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_BounceAnimation, /* shared constants */ + be_str_weak(_calculate_bounce), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C040323, // 0001 GETMET R1 R1 K35 + 0x7C040200, // 0002 CALL R1 1 + 0x8804010F, // 0003 GETMBR R1 R0 K15 + 0x4C080000, // 0004 LDNIL R2 + 0x20080202, // 0005 NE R2 R1 R2 + 0x780A0003, // 0006 JMPF R2 #000B + 0x8C080324, // 0007 GETMET R2 R1 K36 + 0x88100109, // 0008 GETMBR R4 R0 K9 + 0x58140004, // 0009 LDCONST R5 K4 + 0x7C080600, // 000A CALL R2 3 + 0x88080119, // 000B GETMBR R2 R0 K25 + 0x8C08051A, // 000C GETMET R2 R2 K26 + 0x7C080200, // 000D CALL R2 1 + 0x880C0107, // 000E GETMBR R3 R0 K7 + 0x541200FF, // 000F LDINT R4 256 + 0x0C0C0604, // 0010 DIV R3 R3 R4 + 0x0C10051B, // 0011 DIV R4 R2 K27 + 0x04100604, // 0012 SUB R4 R3 R4 + 0x58140004, // 0013 LDCONST R5 K4 + 0x14180A02, // 0014 LT R6 R5 R2 + 0x781A000F, // 0015 JMPF R6 #0026 + 0x04180A04, // 0016 SUB R6 R5 R4 + 0x281C0D04, // 0017 GE R7 R6 K4 + 0x781E0008, // 0018 JMPF R7 #0022 + 0x141C0C02, // 0019 LT R7 R6 R2 + 0x781E0006, // 001A JMPF R7 #0022 + 0x881C010A, // 001B GETMBR R7 R0 K10 + 0x88200109, // 001C GETMBR R8 R0 K9 + 0x8C201125, // 001D GETMET R8 R8 K37 + 0x5C280C00, // 001E MOVE R10 R6 + 0x7C200400, // 001F CALL R8 2 + 0x981C0A08, // 0020 SETIDX R7 R5 R8 + 0x70020001, // 0021 JMP #0024 + 0x881C010A, // 0022 GETMBR R7 R0 K10 + 0x981C0B1F, // 0023 SETIDX R7 R5 K31 + 0x00140B20, // 0024 ADD R5 R5 K32 + 0x7001FFED, // 0025 JMP #0014 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_BounceAnimation_start, /* 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_BounceAnimation, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080511, // 0003 GETMET R2 R2 K17 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x4C080000, // 0006 LDNIL R2 + 0x20080202, // 0007 NE R2 R1 R2 + 0x780A0001, // 0008 JMPF R2 #000B + 0x5C080200, // 0009 MOVE R2 R1 + 0x70020001, // 000A JMP #000D + 0x88080119, // 000B GETMBR R2 R0 K25 + 0x88080526, // 000C GETMBR R2 R2 K38 + 0x90021602, // 000D SETMBR R0 K11 R2 + 0x8C0C010C, // 000E GETMET R3 R0 K12 + 0x7C0C0200, // 000F CALL R3 1 + 0x880C010F, // 0010 GETMBR R3 R0 K15 + 0x4C100000, // 0011 LDNIL R4 + 0x20100604, // 0012 NE R4 R3 R4 + 0x78120002, // 0013 JMPF R4 #0017 + 0x8C100711, // 0014 GETMET R4 R3 K17 + 0x5C180400, // 0015 MOVE R6 R2 + 0x7C100400, // 0016 CALL R4 2 + 0x80040000, // 0017 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: BounceAnimation +********************************************************************/ +extern const bclass be_class_Animation; +be_local_class(BounceAnimation, + 6, + &be_class_Animation, + be_nested_map(16, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(last_update_time, -1), be_const_var(5) }, + { be_const_key_weak(_calculate_bounce, 14), be_const_closure(class_BounceAnimation__calculate_bounce_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_BounceAnimation_render_closure) }, + { be_const_key_weak(init, 1), be_const_closure(class_BounceAnimation_init_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_BounceAnimation_update_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_BounceAnimation_tostring_closure) }, + { be_const_key_weak(source_frame, -1), be_const_var(3) }, + { be_const_key_weak(current_colors, -1), be_const_var(4) }, + { be_const_key_weak(current_velocity, -1), be_const_var(1) }, + { be_const_key_weak(_update_physics, -1), be_const_closure(class_BounceAnimation__update_physics_closure) }, + { be_const_key_weak(current_position, -1), be_const_var(0) }, + { be_const_key_weak(bounce_center, -1), be_const_var(2) }, + { be_const_key_weak(_initialize_buffers, 10), be_const_closure(class_BounceAnimation__initialize_buffers_closure) }, + { be_const_key_weak(on_param_changed, 2), be_const_closure(class_BounceAnimation_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(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(damping, 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(250) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(255) }, + })) ) } )) }, + { be_const_key_weak(bounce_range, -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(1000) }, + })) ) } )) }, + { be_const_key_weak(bounce_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(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(gravity, -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(source_animation, -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(start, -1), be_const_closure(class_BounceAnimation_start_closure) }, + })), + be_str_weak(BounceAnimation) +); + +/******************************************************************** +** 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 + }) + ) +); +/*******************************************************************/ + +// compact class 'PalettePatternAnimation' ktab size: 22, total: 42 (saved 160 bytes) +static const bvalue be_ktab_class_PalettePatternAnimation[22] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(pattern_func), + /* K2 */ be_nested_str_weak(color_source), + /* K3 */ be_nested_str_weak(_initialize_value_buffer), + /* K4 */ be_nested_str_weak(is_running), + /* K5 */ be_nested_str_weak(_fix_time_ms), + /* K6 */ be_nested_str_weak(get_param), + /* K7 */ be_nested_str_weak(get_color_for_value), + /* K8 */ be_nested_str_weak(start_time), + /* K9 */ be_nested_str_weak(engine), + /* K10 */ be_nested_str_weak(get_strip_length), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(width), + /* K13 */ be_nested_str_weak(value_buffer), + /* K14 */ be_nested_str_weak(set_pixel_color), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(resize), + /* K17 */ be_nested_str_weak(init), + /* K18 */ be_nested_str_weak(PalettePatternAnimation_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K19 */ be_nested_str_weak(priority), + /* K20 */ be_nested_str_weak(update), + /* K21 */ 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( + 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x740E0001, // 0008 JMPT R3 #000B + 0x1C0C0302, // 0009 EQ R3 R1 K2 + 0x780E0001, // 000A JMPF R3 #000D + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x80000000, // 000D 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[50]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 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 + 0x8C0C0105, // 0007 GETMET R3 R0 K5 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x8C0C0106, // 000B GETMET R3 R0 K6 + 0x58140002, // 000C LDCONST R5 K2 + 0x7C0C0400, // 000D CALL R3 2 + 0x4C100000, // 000E LDNIL R4 + 0x1C100604, // 000F EQ R4 R3 R4 + 0x78120001, // 0010 JMPF R4 #0013 + 0x50100000, // 0011 LDBOOL R4 0 0 + 0x80040800, // 0012 RET 1 R4 + 0x88100707, // 0013 GETMBR R4 R3 K7 + 0x4C140000, // 0014 LDNIL R5 + 0x1C100805, // 0015 EQ R4 R4 R5 + 0x78120001, // 0016 JMPF R4 #0019 + 0x50100000, // 0017 LDBOOL R4 0 0 + 0x80040800, // 0018 RET 1 R4 + 0x88100108, // 0019 GETMBR R4 R0 K8 + 0x04100404, // 001A SUB R4 R2 R4 + 0x88140109, // 001B GETMBR R5 R0 K9 + 0x8C140B0A, // 001C GETMET R5 R5 K10 + 0x7C140200, // 001D CALL R5 1 + 0x5818000B, // 001E LDCONST R6 K11 + 0x141C0C05, // 001F LT R7 R6 R5 + 0x781E000E, // 0020 JMPF R7 #0030 + 0x881C030C, // 0021 GETMBR R7 R1 K12 + 0x141C0C07, // 0022 LT R7 R6 R7 + 0x781E000B, // 0023 JMPF R7 #0030 + 0x881C010D, // 0024 GETMBR R7 R0 K13 + 0x941C0E06, // 0025 GETIDX R7 R7 R6 + 0x8C200707, // 0026 GETMET R8 R3 K7 + 0x5C280E00, // 0027 MOVE R10 R7 + 0x5C2C0800, // 0028 MOVE R11 R4 + 0x7C200600, // 0029 CALL R8 3 + 0x8C24030E, // 002A GETMET R9 R1 K14 + 0x5C2C0C00, // 002B MOVE R11 R6 + 0x5C301000, // 002C MOVE R12 R8 + 0x7C240600, // 002D CALL R9 3 + 0x00180D0F, // 002E ADD R6 R6 K15 + 0x7001FFEE, // 002F JMP #001F + 0x501C0200, // 0030 LDBOOL R7 1 0 + 0x80040E00, // 0031 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_value_buffer +********************************************************************/ +be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* 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_PalettePatternAnimation, /* shared constants */ + be_str_weak(_update_value_buffer), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C0C0403, // 0002 EQ R3 R2 R3 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x880C0109, // 0005 GETMBR R3 R0 K9 + 0x8C0C070A, // 0006 GETMET R3 R3 K10 + 0x7C0C0200, // 0007 CALL R3 1 + 0x6010000C, // 0008 GETGBL R4 G12 + 0x8814010D, // 0009 GETMBR R5 R0 K13 + 0x7C100200, // 000A CALL R4 1 + 0x20100803, // 000B NE R4 R4 R3 + 0x78120003, // 000C JMPF R4 #0011 + 0x8810010D, // 000D GETMBR R4 R0 K13 + 0x8C100910, // 000E GETMET R4 R4 K16 + 0x5C180600, // 000F MOVE R6 R3 + 0x7C100400, // 0010 CALL R4 2 + 0x5810000B, // 0011 LDCONST R4 K11 + 0x14140803, // 0012 LT R5 R4 R3 + 0x78160012, // 0013 JMPF R5 #0027 + 0x5C140400, // 0014 MOVE R5 R2 + 0x5C180800, // 0015 MOVE R6 R4 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x5C200000, // 0017 MOVE R8 R0 + 0x7C140600, // 0018 CALL R5 3 + 0x60180009, // 0019 GETGBL R6 G9 + 0x5C1C0A00, // 001A MOVE R7 R5 + 0x7C180200, // 001B CALL R6 1 + 0x141C0D0B, // 001C LT R7 R6 K11 + 0x781E0000, // 001D JMPF R7 #001F + 0x5818000B, // 001E LDCONST R6 K11 + 0x541E00FE, // 001F LDINT R7 255 + 0x241C0C07, // 0020 GT R7 R6 R7 + 0x781E0000, // 0021 JMPF R7 #0023 + 0x541A00FE, // 0022 LDINT R6 255 + 0x881C010D, // 0023 GETMBR R7 R0 K13 + 0x981C0806, // 0024 SETIDX R7 R4 R6 + 0x0010090F, // 0025 ADD R4 R4 K15 + 0x7001FFEA, // 0026 JMP #0012 + 0x80000000, // 0027 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 */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010D, // 0003 GETMBR R2 R0 K13 + 0x8C080510, // 0004 GETMET R2 R2 K16 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x5808000B, // 0007 LDCONST R2 K11 + 0x140C0401, // 0008 LT R3 R2 R1 + 0x780E0003, // 0009 JMPF R3 #000E + 0x880C010D, // 000A GETMBR R3 R0 K13 + 0x980C050B, // 000B SETIDX R3 R2 K11 + 0x0008050F, // 000C ADD R2 R2 K15 + 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 + 0x8C080511, // 0003 GETMET R2 R2 K17 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080015, // 0006 GETGBL R2 G21 + 0x7C080000, // 0007 CALL R2 0 + 0x90021A02, // 0008 SETMBR R0 K13 R2 + 0x8C080103, // 0009 GETMET R2 R0 K3 + 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 */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x60080018, // 0003 GETGBL R2 G24 + 0x580C0012, // 0004 LDCONST R3 K18 + 0x5C100200, // 0005 MOVE R4 R1 + 0x88140113, // 0006 GETMBR R5 R0 K19 + 0x88180104, // 0007 GETMBR R6 R0 K4 + 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[20]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080514, // 0003 GETMET R2 R2 K20 + 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 + 0x8C080105, // 0009 GETMET R2 R0 K5 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x88080108, // 000D GETMBR R2 R0 K8 + 0x04080202, // 000E SUB R2 R1 R2 + 0x8C0C0115, // 000F GETMET R3 R0 K21 + 0x5C140400, // 0010 MOVE R5 R2 + 0x7C0C0400, // 0011 CALL R3 2 + 0x500C0200, // 0012 LDBOOL R3 1 0 + 0x80040600, // 0013 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: 2, total: 4 (saved 16 bytes) +static const bvalue be_ktab_class_StaticColorProvider[2] = { /* K0 */ be_nested_str_weak(color), /* K1 */ be_nested_str_weak(StaticColorProvider_X28color_X3D0x_X2508X_X29), - /* K2 */ be_nested_str_weak(StaticColorProvider_X28color_X3Dunset_X29), }; @@ -7668,22 +9176,12 @@ be_local_closure(class_StaticColorProvider_tostring, /* name */ &be_ktab_class_StaticColorProvider, /* 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 + ( &(const binstruction[ 5]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080001, // 0001 LDCONST R2 K1 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -7771,1790 +9269,8 @@ be_local_closure(get_registered_events, /* name */ ); /*******************************************************************/ -// compact class 'BounceAnimation' ktab size: 38, total: 85 (saved 376 bytes) -static const bvalue be_ktab_class_BounceAnimation[38] = { - /* K0 */ be_nested_str_weak(bounce_speed), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(scale_uint), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(current_velocity), - /* K5 */ be_nested_str_weak(init), - /* K6 */ be_nested_str_weak(current_position), - /* K7 */ be_nested_str_weak(bounce_center), - /* K8 */ be_nested_str_weak(source_frame), - /* K9 */ be_nested_str_weak(current_colors), - /* K10 */ be_nested_str_weak(last_update_time), - /* K11 */ be_nested_str_weak(_initialize_buffers), - /* K12 */ be_nested_str_weak(update), - /* K13 */ be_nested_str_weak(_update_physics), - /* K14 */ be_nested_str_weak(source_animation), - /* K15 */ be_nested_str_weak(is_running), - /* K16 */ be_nested_str_weak(start), - /* K17 */ be_nested_str_weak(start_time), - /* K18 */ be_nested_str_weak(_calculate_bounce), - /* K19 */ be_nested_str_weak(BounceAnimation_X28speed_X3D_X25s_X2C_X20damping_X3D_X25s_X2C_X20gravity_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K20 */ be_nested_str_weak(damping), - /* K21 */ be_nested_str_weak(gravity), - /* K22 */ be_nested_str_weak(priority), - /* K23 */ be_nested_str_weak(bounce_range), - /* K24 */ be_nested_str_weak(engine), - /* K25 */ be_nested_str_weak(get_strip_length), - /* K26 */ be_const_int(2), - /* K27 */ be_nested_str_weak(animation), - /* K28 */ be_nested_str_weak(frame_buffer), - /* K29 */ be_nested_str_weak(resize), - /* K30 */ be_const_int(-16777216), - /* K31 */ be_const_int(1), - /* K32 */ be_nested_str_weak(width), - /* K33 */ be_nested_str_weak(set_pixel_color), - /* K34 */ be_nested_str_weak(clear), - /* K35 */ be_nested_str_weak(render), - /* K36 */ be_nested_str_weak(get_pixel_color), - /* K37 */ be_nested_str_weak(time_ms), -}; - - -extern const bclass be_class_BounceAnimation; - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_BounceAnimation_on_param_changed, /* 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_BounceAnimation, /* 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 - 0xB80E0200, // 0002 GETNGBL R3 K1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x5C140400, // 0004 MOVE R5 R2 - 0x58180003, // 0005 LDCONST R6 K3 - 0x541E00FE, // 0006 LDINT R7 255 - 0x58200003, // 0007 LDCONST R8 K3 - 0x54260013, // 0008 LDINT R9 20 - 0x7C0C0C00, // 0009 CALL R3 6 - 0x541200FF, // 000A LDINT R4 256 - 0x08100604, // 000B MUL R4 R3 R4 - 0x88140104, // 000C GETMBR R5 R0 K4 - 0x14140B03, // 000D LT R5 R5 K3 - 0x78160002, // 000E JMPF R5 #0012 - 0x44140800, // 000F NEG R5 R4 - 0x90020805, // 0010 SETMBR R0 K4 R5 - 0x70020000, // 0011 JMP #0013 - 0x90020804, // 0012 SETMBR R0 K4 R4 - 0x80000000, // 0013 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080505, // 0003 GETMET R2 R2 K5 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020D03, // 0006 SETMBR R0 K6 K3 - 0x90020903, // 0007 SETMBR R0 K4 K3 - 0x90020F03, // 0008 SETMBR R0 K7 K3 - 0x4C080000, // 0009 LDNIL R2 - 0x90021002, // 000A SETMBR R0 K8 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021202, // 000D SETMBR R0 K9 R2 - 0x90021503, // 000E SETMBR R0 K10 K3 - 0x8C08010B, // 000F GETMET R2 R0 K11 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C08050C, // 0003 GETMET R2 R2 K12 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8808010A, // 0009 GETMBR R2 R0 K10 - 0x1C080503, // 000A EQ R2 R2 K3 - 0x780A0000, // 000B JMPF R2 #000D - 0x90021401, // 000C SETMBR R0 K10 R1 - 0x8808010A, // 000D GETMBR R2 R0 K10 - 0x04080202, // 000E SUB R2 R1 R2 - 0x180C0503, // 000F LE R3 R2 K3 - 0x780E0001, // 0010 JMPF R3 #0013 - 0x500C0200, // 0011 LDBOOL R3 1 0 - 0x80040600, // 0012 RET 1 R3 - 0x90021401, // 0013 SETMBR R0 K10 R1 - 0x8C0C010D, // 0014 GETMET R3 R0 K13 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x880C010E, // 0017 GETMBR R3 R0 K14 - 0x4C100000, // 0018 LDNIL R4 - 0x20100604, // 0019 NE R4 R3 R4 - 0x78120007, // 001A JMPF R4 #0023 - 0x8810070F, // 001B GETMBR R4 R3 K15 - 0x74120002, // 001C JMPT R4 #0020 - 0x8C100710, // 001D GETMET R4 R3 K16 - 0x88180111, // 001E GETMBR R6 R0 K17 - 0x7C100400, // 001F CALL R4 2 - 0x8C10070C, // 0020 GETMET R4 R3 K12 - 0x5C180200, // 0021 MOVE R6 R1 - 0x7C100400, // 0022 CALL R4 2 - 0x8C100112, // 0023 GETMET R4 R0 K18 - 0x7C100200, // 0024 CALL R4 1 - 0x50100200, // 0025 LDBOOL R4 1 0 - 0x80040800, // 0026 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080013, // 0001 LDCONST R2 K19 - 0x880C0100, // 0002 GETMBR R3 R0 K0 - 0x88100114, // 0003 GETMBR R4 R0 K20 - 0x88140115, // 0004 GETMBR R5 R0 K21 - 0x88180116, // 0005 GETMBR R6 R0 K22 - 0x881C010F, // 0006 GETMBR R7 R0 K15 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_physics -********************************************************************/ -be_local_closure(class_BounceAnimation__update_physics, /* name */ - be_nested_proto( - 19, /* 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_BounceAnimation, /* shared constants */ - be_str_weak(_update_physics), - &be_const_str_solidified, - ( &(const binstruction[95]) { /* code */ - 0x88080115, // 0000 GETMBR R2 R0 K21 - 0x880C0117, // 0001 GETMBR R3 R0 K23 - 0x88100118, // 0002 GETMBR R4 R0 K24 - 0x8C100919, // 0003 GETMET R4 R4 K25 - 0x7C100200, // 0004 CALL R4 1 - 0x88140114, // 0005 GETMBR R5 R0 K20 - 0x24180503, // 0006 GT R6 R2 K3 - 0x781A000D, // 0007 JMPF R6 #0016 - 0xB81A0200, // 0008 GETNGBL R6 K1 - 0x8C180D02, // 0009 GETMET R6 R6 K2 - 0x5C200400, // 000A MOVE R8 R2 - 0x58240003, // 000B LDCONST R9 K3 - 0x542A00FE, // 000C LDINT R10 255 - 0x582C0003, // 000D LDCONST R11 K3 - 0x543203E7, // 000E LDINT R12 1000 - 0x7C180C00, // 000F CALL R6 6 - 0x081C0C01, // 0010 MUL R7 R6 R1 - 0x542203E7, // 0011 LDINT R8 1000 - 0x0C1C0E08, // 0012 DIV R7 R7 R8 - 0x88200104, // 0013 GETMBR R8 R0 K4 - 0x00201007, // 0014 ADD R8 R8 R7 - 0x90020808, // 0015 SETMBR R0 K4 R8 - 0x881C0104, // 0016 GETMBR R7 R0 K4 - 0x081C0E01, // 0017 MUL R7 R7 R1 - 0x542203E7, // 0018 LDINT R8 1000 - 0x0C1C0E08, // 0019 DIV R7 R7 R8 - 0x88180106, // 001A GETMBR R6 R0 K6 - 0x00180C07, // 001B ADD R6 R6 R7 - 0x90020C06, // 001C SETMBR R0 K6 R6 - 0x24180703, // 001D GT R6 R3 K3 - 0x781A0001, // 001E JMPF R6 #0021 - 0x5C180600, // 001F MOVE R6 R3 - 0x70020000, // 0020 JMP #0022 - 0x5C180800, // 0021 MOVE R6 R4 - 0x541E00FF, // 0022 LDINT R7 256 - 0x081C0C07, // 0023 MUL R7 R6 R7 - 0x0C1C0F1A, // 0024 DIV R7 R7 K26 - 0x88200107, // 0025 GETMBR R8 R0 K7 - 0x04201007, // 0026 SUB R8 R8 R7 - 0x88240107, // 0027 GETMBR R9 R0 K7 - 0x00241207, // 0028 ADD R9 R9 R7 - 0x50280000, // 0029 LDBOOL R10 0 0 - 0x882C0106, // 002A GETMBR R11 R0 K6 - 0x182C1608, // 002B LE R11 R11 R8 - 0x782E0005, // 002C JMPF R11 #0033 - 0x90020C08, // 002D SETMBR R0 K6 R8 - 0x882C0104, // 002E GETMBR R11 R0 K4 - 0x442C1600, // 002F NEG R11 R11 - 0x9002080B, // 0030 SETMBR R0 K4 R11 - 0x50280200, // 0031 LDBOOL R10 1 0 - 0x70020007, // 0032 JMP #003B - 0x882C0106, // 0033 GETMBR R11 R0 K6 - 0x282C1609, // 0034 GE R11 R11 R9 - 0x782E0004, // 0035 JMPF R11 #003B - 0x90020C09, // 0036 SETMBR R0 K6 R9 - 0x882C0104, // 0037 GETMBR R11 R0 K4 - 0x442C1600, // 0038 NEG R11 R11 - 0x9002080B, // 0039 SETMBR R0 K4 R11 - 0x50280200, // 003A LDBOOL R10 1 0 - 0x782A0021, // 003B JMPF R10 #005E - 0x542E00FE, // 003C LDINT R11 255 - 0x142C0A0B, // 003D LT R11 R5 R11 - 0x782E001E, // 003E JMPF R11 #005E - 0xB82E0200, // 003F GETNGBL R11 K1 - 0x8C2C1702, // 0040 GETMET R11 R11 K2 - 0x5C340A00, // 0041 MOVE R13 R5 - 0x58380003, // 0042 LDCONST R14 K3 - 0x543E00FE, // 0043 LDINT R15 255 - 0x58400003, // 0044 LDCONST R16 K3 - 0x544600FE, // 0045 LDINT R17 255 - 0x7C2C0C00, // 0046 CALL R11 6 - 0xB8320200, // 0047 GETNGBL R12 K1 - 0x8C301902, // 0048 GETMET R12 R12 K2 - 0x88380104, // 0049 GETMBR R14 R0 K4 - 0x583C0003, // 004A LDCONST R15 K3 - 0x544200FE, // 004B LDINT R16 255 - 0x58440003, // 004C LDCONST R17 K3 - 0x5C481600, // 004D MOVE R18 R11 - 0x7C300C00, // 004E CALL R12 6 - 0x9002080C, // 004F SETMBR R0 K4 R12 - 0x88300104, // 0050 GETMBR R12 R0 K4 - 0x14301903, // 0051 LT R12 R12 K3 - 0x7832000A, // 0052 JMPF R12 #005E - 0xB8320200, // 0053 GETNGBL R12 K1 - 0x8C301902, // 0054 GETMET R12 R12 K2 - 0x88380104, // 0055 GETMBR R14 R0 K4 - 0x44381C00, // 0056 NEG R14 R14 - 0x583C0003, // 0057 LDCONST R15 K3 - 0x544200FE, // 0058 LDINT R16 255 - 0x58440003, // 0059 LDCONST R17 K3 - 0x5C481600, // 005A MOVE R18 R11 - 0x7C300C00, // 005B CALL R12 6 - 0x44301800, // 005C NEG R12 R12 - 0x9002080C, // 005D SETMBR R0 K4 R12 - 0x80000000, // 005E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _initialize_buffers -********************************************************************/ -be_local_closure(class_BounceAnimation__initialize_buffers, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_BounceAnimation, /* shared constants */ - be_str_weak(_initialize_buffers), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x88040118, // 0000 GETMBR R1 R0 K24 - 0x8C040319, // 0001 GETMET R1 R1 K25 - 0x7C040200, // 0002 CALL R1 1 - 0x540A00FF, // 0003 LDINT R2 256 - 0x08080202, // 0004 MUL R2 R1 R2 - 0x0C08051A, // 0005 DIV R2 R2 K26 - 0x90020E02, // 0006 SETMBR R0 K7 R2 - 0x88080107, // 0007 GETMBR R2 R0 K7 - 0x90020C02, // 0008 SETMBR R0 K6 R2 - 0xB80A0200, // 0009 GETNGBL R2 K1 - 0x8C080502, // 000A GETMET R2 R2 K2 - 0x88100100, // 000B GETMBR R4 R0 K0 - 0x58140003, // 000C LDCONST R5 K3 - 0x541A00FE, // 000D LDINT R6 255 - 0x581C0003, // 000E LDCONST R7 K3 - 0x54220013, // 000F LDINT R8 20 - 0x7C080C00, // 0010 CALL R2 6 - 0x540E00FF, // 0011 LDINT R3 256 - 0x080C0403, // 0012 MUL R3 R2 R3 - 0x90020803, // 0013 SETMBR R0 K4 R3 - 0xB80E3600, // 0014 GETNGBL R3 K27 - 0x8C0C071C, // 0015 GETMET R3 R3 K28 - 0x5C140200, // 0016 MOVE R5 R1 - 0x7C0C0400, // 0017 CALL R3 2 - 0x90021003, // 0018 SETMBR R0 K8 R3 - 0x880C0109, // 0019 GETMBR R3 R0 K9 - 0x8C0C071D, // 001A GETMET R3 R3 K29 - 0x5C140200, // 001B MOVE R5 R1 - 0x7C0C0400, // 001C CALL R3 2 - 0x580C0003, // 001D LDCONST R3 K3 - 0x14100601, // 001E LT R4 R3 R1 - 0x78120003, // 001F JMPF R4 #0024 - 0x88100109, // 0020 GETMBR R4 R0 K9 - 0x9810071E, // 0021 SETIDX R4 R3 K30 - 0x000C071F, // 0022 ADD R3 R3 K31 - 0x7001FFF9, // 0023 JMP #001E - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_BounceAnimation_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_BounceAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C010F, // 0000 GETMBR R3 R0 K15 - 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 - 0x880C0118, // 0007 GETMBR R3 R0 K24 - 0x8C0C0719, // 0008 GETMET R3 R3 K25 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100003, // 000A LDCONST R4 K3 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x88140320, // 000D GETMBR R5 R1 K32 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C140321, // 0010 GETMET R5 R1 K33 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200109, // 0012 GETMBR R8 R0 K9 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x0010091F, // 0015 ADD R4 R4 K31 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _calculate_bounce -********************************************************************/ -be_local_closure(class_BounceAnimation__calculate_bounce, /* 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_BounceAnimation, /* shared constants */ - be_str_weak(_calculate_bounce), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x8C040322, // 0001 GETMET R1 R1 K34 - 0x7C040200, // 0002 CALL R1 1 - 0x8804010E, // 0003 GETMBR R1 R0 K14 - 0x4C080000, // 0004 LDNIL R2 - 0x20080202, // 0005 NE R2 R1 R2 - 0x780A0003, // 0006 JMPF R2 #000B - 0x8C080323, // 0007 GETMET R2 R1 K35 - 0x88100108, // 0008 GETMBR R4 R0 K8 - 0x58140003, // 0009 LDCONST R5 K3 - 0x7C080600, // 000A CALL R2 3 - 0x88080118, // 000B GETMBR R2 R0 K24 - 0x8C080519, // 000C GETMET R2 R2 K25 - 0x7C080200, // 000D CALL R2 1 - 0x880C0106, // 000E GETMBR R3 R0 K6 - 0x541200FF, // 000F LDINT R4 256 - 0x0C0C0604, // 0010 DIV R3 R3 R4 - 0x0C10051A, // 0011 DIV R4 R2 K26 - 0x04100604, // 0012 SUB R4 R3 R4 - 0x58140003, // 0013 LDCONST R5 K3 - 0x14180A02, // 0014 LT R6 R5 R2 - 0x781A000F, // 0015 JMPF R6 #0026 - 0x04180A04, // 0016 SUB R6 R5 R4 - 0x281C0D03, // 0017 GE R7 R6 K3 - 0x781E0008, // 0018 JMPF R7 #0022 - 0x141C0C02, // 0019 LT R7 R6 R2 - 0x781E0006, // 001A JMPF R7 #0022 - 0x881C0109, // 001B GETMBR R7 R0 K9 - 0x88200108, // 001C GETMBR R8 R0 K8 - 0x8C201124, // 001D GETMET R8 R8 K36 - 0x5C280C00, // 001E MOVE R10 R6 - 0x7C200400, // 001F CALL R8 2 - 0x981C0A08, // 0020 SETIDX R7 R5 R8 - 0x70020001, // 0021 JMP #0024 - 0x881C0109, // 0022 GETMBR R7 R0 K9 - 0x981C0B1E, // 0023 SETIDX R7 R5 K30 - 0x00140B1F, // 0024 ADD R5 R5 K31 - 0x7001FFED, // 0025 JMP #0014 - 0x80000000, // 0026 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_BounceAnimation_start, /* 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_BounceAnimation, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* 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 - 0x4C080000, // 0006 LDNIL R2 - 0x20080202, // 0007 NE R2 R1 R2 - 0x780A0001, // 0008 JMPF R2 #000B - 0x5C080200, // 0009 MOVE R2 R1 - 0x70020001, // 000A JMP #000D - 0x88080118, // 000B GETMBR R2 R0 K24 - 0x88080525, // 000C GETMBR R2 R2 K37 - 0x90021402, // 000D SETMBR R0 K10 R2 - 0x8C0C010B, // 000E GETMET R3 R0 K11 - 0x7C0C0200, // 000F CALL R3 1 - 0x880C010E, // 0010 GETMBR R3 R0 K14 - 0x4C100000, // 0011 LDNIL R4 - 0x20100604, // 0012 NE R4 R3 R4 - 0x78120002, // 0013 JMPF R4 #0017 - 0x8C100710, // 0014 GETMET R4 R3 K16 - 0x5C180400, // 0015 MOVE R6 R2 - 0x7C100400, // 0016 CALL R4 2 - 0x80040000, // 0017 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: BounceAnimation -********************************************************************/ -extern const bclass be_class_Animation; -be_local_class(BounceAnimation, - 6, - &be_class_Animation, - be_nested_map(16, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(last_update_time, -1), be_const_var(5) }, - { be_const_key_weak(_calculate_bounce, 14), be_const_closure(class_BounceAnimation__calculate_bounce_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_BounceAnimation_render_closure) }, - { be_const_key_weak(init, 1), be_const_closure(class_BounceAnimation_init_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_BounceAnimation_update_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_BounceAnimation_tostring_closure) }, - { be_const_key_weak(source_frame, -1), be_const_var(3) }, - { be_const_key_weak(current_colors, -1), be_const_var(4) }, - { be_const_key_weak(current_velocity, -1), be_const_var(1) }, - { be_const_key_weak(_update_physics, -1), be_const_closure(class_BounceAnimation__update_physics_closure) }, - { be_const_key_weak(current_position, -1), be_const_var(0) }, - { be_const_key_weak(bounce_center, -1), be_const_var(2) }, - { be_const_key_weak(_initialize_buffers, 10), be_const_closure(class_BounceAnimation__initialize_buffers_closure) }, - { be_const_key_weak(on_param_changed, 2), be_const_closure(class_BounceAnimation_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(5, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(damping, 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(250) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, - })) ) } )) }, - { be_const_key_weak(bounce_range, -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(1000) }, - })) ) } )) }, - { be_const_key_weak(bounce_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(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(gravity, -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(source_animation, -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(start, -1), be_const_closure(class_BounceAnimation_start_closure) }, - })), - be_str_weak(BounceAnimation) -); - -/******************************************************************** -** 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: 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 - }) - ) -); -/*******************************************************************/ - -// 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(get_param), - /* K7 */ be_nested_str_weak(get_color_for_value), - /* K8 */ be_nested_str_weak(start_time), - /* K9 */ be_nested_str_weak(get_strip_length), - /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(width), - /* K12 */ be_nested_str_weak(value_buffer), - /* 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 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x58140001, // 000D LDCONST R5 K1 - 0x7C0C0400, // 000E CALL R3 2 - 0x4C100000, // 000F LDNIL R4 - 0x1C100604, // 0010 EQ R4 R3 R4 - 0x78120001, // 0011 JMPF R4 #0014 - 0x50100000, // 0012 LDBOOL R4 0 0 - 0x80040800, // 0013 RET 1 R4 - 0x88100707, // 0014 GETMBR R4 R3 K7 - 0x4C140000, // 0015 LDNIL R5 - 0x1C100805, // 0016 EQ R4 R4 R5 - 0x78120001, // 0017 JMPF R4 #001A - 0x50100000, // 0018 LDBOOL R4 0 0 - 0x80040800, // 0019 RET 1 R4 - 0x88100108, // 001A GETMBR R4 R0 K8 - 0x04100404, // 001B SUB R4 R2 R4 - 0x88140104, // 001C GETMBR R5 R0 K4 - 0x8C140B09, // 001D GETMET R5 R5 K9 - 0x7C140200, // 001E CALL R5 1 - 0x5818000A, // 001F LDCONST R6 K10 - 0x141C0C05, // 0020 LT R7 R6 R5 - 0x781E000E, // 0021 JMPF R7 #0031 - 0x881C030B, // 0022 GETMBR R7 R1 K11 - 0x141C0C07, // 0023 LT R7 R6 R7 - 0x781E000B, // 0024 JMPF R7 #0031 - 0x881C010C, // 0025 GETMBR R7 R0 K12 - 0x941C0E06, // 0026 GETIDX R7 R7 R6 - 0x8C200707, // 0027 GETMET R8 R3 K7 - 0x5C280E00, // 0028 MOVE R10 R7 - 0x5C2C0800, // 0029 MOVE R11 R4 - 0x7C200600, // 002A CALL R8 3 - 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 - 0x7001FFEE, // 0030 JMP #0020 - 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( - 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_PalettePatternAnimation, /* shared constants */ - be_str_weak(_update_value_buffer), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* 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 - 0x8C0C0709, // 0006 GETMET R3 R3 K9 - 0x7C0C0200, // 0007 CALL R3 1 - 0x6010000C, // 0008 GETGBL R4 G12 - 0x8814010C, // 0009 GETMBR R5 R0 K12 - 0x7C100200, // 000A CALL R4 1 - 0x20100803, // 000B NE R4 R4 R3 - 0x78120003, // 000C JMPF R4 #0011 - 0x8810010C, // 000D GETMBR R4 R0 K12 - 0x8C10090F, // 000E GETMET R4 R4 K15 - 0x5C180600, // 000F MOVE R6 R3 - 0x7C100400, // 0010 CALL R4 2 - 0x5810000A, // 0011 LDCONST R4 K10 - 0x14140803, // 0012 LT R5 R4 R3 - 0x78160012, // 0013 JMPF R5 #0027 - 0x5C140400, // 0014 MOVE R5 R2 - 0x5C180800, // 0015 MOVE R6 R4 - 0x5C1C0200, // 0016 MOVE R7 R1 - 0x5C200000, // 0017 MOVE R8 R0 - 0x7C140600, // 0018 CALL R5 3 - 0x60180009, // 0019 GETGBL R6 G9 - 0x5C1C0A00, // 001A MOVE R7 R5 - 0x7C180200, // 001B CALL R6 1 - 0x141C0D0A, // 001C LT R7 R6 K10 - 0x781E0000, // 001D JMPF R7 #001F - 0x5818000A, // 001E LDCONST R6 K10 - 0x541E00FE, // 001F LDINT R7 255 - 0x241C0C07, // 0020 GT R7 R6 R7 - 0x781E0000, // 0021 JMPF R7 #0023 - 0x541A00FE, // 0022 LDINT R6 255 - 0x881C010C, // 0023 GETMBR R7 R0 K12 - 0x981C0806, // 0024 SETIDX R7 R4 R6 - 0x0010090E, // 0025 ADD R4 R4 K14 - 0x7001FFEA, // 0026 JMP #0012 - 0x80000000, // 0027 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 - 0x8C040309, // 0001 GETMET R1 R1 K9 - 0x7C040200, // 0002 CALL R1 1 - 0x8808010C, // 0003 GETMBR R2 R0 K12 - 0x8C08050F, // 0004 GETMET R2 R2 K15 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x5808000A, // 0007 LDCONST R2 K10 - 0x140C0401, // 0008 LT R3 R2 R1 - 0x780E0003, // 0009 JMPF R3 #000E - 0x880C010C, // 000A GETMBR R3 R0 K12 - 0x980C050A, // 000B SETIDX R3 R2 K10 - 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 - 0x60080015, // 0006 GETGBL R2 G21 - 0x7C080000, // 0007 CALL R2 0 - 0x90021802, // 0008 SETMBR R0 K12 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 - 0x8C040309, // 0001 GETMET R1 R1 K9 - 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 - 0x88080108, // 0009 GETMBR R2 R0 K8 - 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: 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: bounce -********************************************************************/ -be_local_closure(bounce, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 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(BOUNCE), - }), - be_str_weak(bounce), - &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 'ShiftAnimation' ktab size: 33, total: 62 (saved 232 bytes) -static const bvalue be_ktab_class_ShiftAnimation[33] = { +// compact class 'ShiftAnimation' ktab size: 35, total: 64 (saved 232 bytes) +static const bvalue be_ktab_class_ShiftAnimation[35] = { /* K0 */ be_nested_str_weak(engine), /* K1 */ be_nested_str_weak(get_strip_length), /* K2 */ be_nested_str_weak(source_frame), @@ -9581,13 +9297,15 @@ static const bvalue be_ktab_class_ShiftAnimation[33] = { /* K23 */ be_nested_str_weak(right), /* K24 */ be_nested_str_weak(left), /* K25 */ be_nested_str_weak(ShiftAnimation_X28_X25s_X2C_X20speed_X3D_X25s_X2C_X20wrap_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K26 */ be_nested_str_weak(width), - /* K27 */ be_nested_str_weak(set_pixel_color), - /* K28 */ be_nested_str_weak(_initialize_buffers), - /* K29 */ be_nested_str_weak(clear), - /* K30 */ be_nested_str_weak(render), - /* K31 */ be_nested_str_weak(get_pixel_color), - /* K32 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(_fix_time_ms), + /* K27 */ be_nested_str_weak(width), + /* K28 */ be_nested_str_weak(set_pixel_color), + /* K29 */ be_nested_str_weak(on_param_changed), + /* K30 */ be_nested_str_weak(_initialize_buffers), + /* K31 */ be_nested_str_weak(clear), + /* K32 */ be_nested_str_weak(render), + /* K33 */ be_nested_str_weak(get_pixel_color), + /* K34 */ be_nested_str_weak(init), }; @@ -9655,70 +9373,73 @@ be_local_closure(class_ShiftAnimation_update, /* name */ &be_ktab_class_ShiftAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ + ( &(const binstruction[66]) { /* 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 - 0x8808010B, // 0006 GETMBR R2 R0 K11 - 0x880C010C, // 0007 GETMBR R3 R0 K12 - 0x8810010D, // 0008 GETMBR R4 R0 K13 - 0x8814010E, // 0009 GETMBR R5 R0 K14 - 0x88180100, // 000A GETMBR R6 R0 K0 - 0x8C180D01, // 000B GETMET R6 R6 K1 - 0x7C180200, // 000C CALL R6 1 - 0x241C0507, // 000D GT R7 R2 K7 - 0x781E0020, // 000E JMPF R7 #0030 - 0x881C010F, // 000F GETMBR R7 R0 K15 - 0x041C0207, // 0010 SUB R7 R1 R7 - 0xB8222000, // 0011 GETNGBL R8 K16 - 0x8C201111, // 0012 GETMET R8 R8 K17 - 0x5C280400, // 0013 MOVE R10 R2 - 0x582C0007, // 0014 LDCONST R11 K7 - 0x543200FE, // 0015 LDINT R12 255 - 0x58340007, // 0016 LDCONST R13 K7 - 0x543A0009, // 0017 LDINT R14 10 - 0x543E00FF, // 0018 LDINT R15 256 - 0x08381C0F, // 0019 MUL R14 R14 R15 - 0x7C200C00, // 001A CALL R8 6 - 0x24241107, // 001B GT R9 R8 K7 - 0x78260012, // 001C JMPF R9 #0030 - 0x08240E08, // 001D MUL R9 R7 R8 - 0x542A03E7, // 001E LDINT R10 1000 - 0x0C24120A, // 001F DIV R9 R9 R10 - 0x08241203, // 0020 MUL R9 R9 R3 - 0x7812000C, // 0021 JMPF R4 #002F - 0x542A00FF, // 0022 LDINT R10 256 - 0x08280C0A, // 0023 MUL R10 R6 R10 - 0x1028120A, // 0024 MOD R10 R9 R10 - 0x9002240A, // 0025 SETMBR R0 K18 R10 - 0x88280112, // 0026 GETMBR R10 R0 K18 - 0x14281507, // 0027 LT R10 R10 K7 - 0x782A0004, // 0028 JMPF R10 #002E - 0x542E00FF, // 0029 LDINT R11 256 - 0x082C0C0B, // 002A MUL R11 R6 R11 - 0x88280112, // 002B GETMBR R10 R0 K18 - 0x0028140B, // 002C ADD R10 R10 R11 - 0x9002240A, // 002D SETMBR R0 K18 R10 - 0x70020000, // 002E JMP #0030 - 0x90022409, // 002F SETMBR R0 K18 R9 - 0x4C1C0000, // 0030 LDNIL R7 - 0x201C0A07, // 0031 NE R7 R5 R7 - 0x781E0007, // 0032 JMPF R7 #003B - 0x881C0B13, // 0033 GETMBR R7 R5 K19 - 0x741E0002, // 0034 JMPT R7 #0038 - 0x8C1C0B14, // 0035 GETMET R7 R5 K20 - 0x8824010F, // 0036 GETMBR R9 R0 K15 - 0x7C1C0400, // 0037 CALL R7 2 - 0x8C1C0B0A, // 0038 GETMET R7 R5 K10 - 0x5C240200, // 0039 MOVE R9 R1 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8808010B, // 0009 GETMBR R2 R0 K11 + 0x880C010C, // 000A GETMBR R3 R0 K12 + 0x8810010D, // 000B GETMBR R4 R0 K13 + 0x8814010E, // 000C GETMBR R5 R0 K14 + 0x88180100, // 000D GETMBR R6 R0 K0 + 0x8C180D01, // 000E GETMET R6 R6 K1 + 0x7C180200, // 000F CALL R6 1 + 0x241C0507, // 0010 GT R7 R2 K7 + 0x781E0020, // 0011 JMPF R7 #0033 + 0x881C010F, // 0012 GETMBR R7 R0 K15 + 0x041C0207, // 0013 SUB R7 R1 R7 + 0xB8222000, // 0014 GETNGBL R8 K16 + 0x8C201111, // 0015 GETMET R8 R8 K17 + 0x5C280400, // 0016 MOVE R10 R2 + 0x582C0007, // 0017 LDCONST R11 K7 + 0x543200FE, // 0018 LDINT R12 255 + 0x58340007, // 0019 LDCONST R13 K7 + 0x543A0009, // 001A LDINT R14 10 + 0x543E00FF, // 001B LDINT R15 256 + 0x08381C0F, // 001C MUL R14 R14 R15 + 0x7C200C00, // 001D CALL R8 6 + 0x24241107, // 001E GT R9 R8 K7 + 0x78260012, // 001F JMPF R9 #0033 + 0x08240E08, // 0020 MUL R9 R7 R8 + 0x542A03E7, // 0021 LDINT R10 1000 + 0x0C24120A, // 0022 DIV R9 R9 R10 + 0x08241203, // 0023 MUL R9 R9 R3 + 0x7812000C, // 0024 JMPF R4 #0032 + 0x542A00FF, // 0025 LDINT R10 256 + 0x08280C0A, // 0026 MUL R10 R6 R10 + 0x1028120A, // 0027 MOD R10 R9 R10 + 0x9002240A, // 0028 SETMBR R0 K18 R10 + 0x88280112, // 0029 GETMBR R10 R0 K18 + 0x14281507, // 002A LT R10 R10 K7 + 0x782A0004, // 002B JMPF R10 #0031 + 0x542E00FF, // 002C LDINT R11 256 + 0x082C0C0B, // 002D MUL R11 R6 R11 + 0x88280112, // 002E GETMBR R10 R0 K18 + 0x0028140B, // 002F ADD R10 R10 R11 + 0x9002240A, // 0030 SETMBR R0 K18 R10 + 0x70020000, // 0031 JMP #0033 + 0x90022409, // 0032 SETMBR R0 K18 R9 + 0x4C1C0000, // 0033 LDNIL R7 + 0x201C0A07, // 0034 NE R7 R5 R7 + 0x781E0007, // 0035 JMPF R7 #003E + 0x881C0B13, // 0036 GETMBR R7 R5 K19 + 0x741E0002, // 0037 JMPT R7 #003B + 0x8C1C0B14, // 0038 GETMET R7 R5 K20 + 0x8824010F, // 0039 GETMBR R9 R0 K15 0x7C1C0400, // 003A CALL R7 2 - 0x8C1C0115, // 003B GETMET R7 R0 K21 - 0x7C1C0200, // 003C CALL R7 1 - 0x501C0200, // 003D LDBOOL R7 1 0 - 0x80040E00, // 003E RET 1 R7 + 0x8C1C0B0A, // 003B GETMET R7 R5 K10 + 0x5C240200, // 003C MOVE R9 R1 + 0x7C1C0400, // 003D CALL R7 2 + 0x8C1C0115, // 003E GETMET R7 R0 K21 + 0x7C1C0200, // 003F CALL R7 1 + 0x501C0200, // 0040 LDBOOL R7 1 0 + 0x80040E00, // 0041 RET 1 R7 }) ) ); @@ -9782,7 +9503,7 @@ be_local_closure(class_ShiftAnimation_render, /* name */ &be_ktab_class_ShiftAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ + ( &(const binstruction[29]) { /* code */ 0x880C0113, // 0000 GETMBR R3 R0 K19 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -9790,24 +9511,28 @@ be_local_closure(class_ShiftAnimation_render, /* name */ 0x780E0001, // 0004 JMPF R3 #0007 0x500C0000, // 0005 LDBOOL R3 0 0 0x80040600, // 0006 RET 1 R3 - 0x880C0100, // 0007 GETMBR R3 R0 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100007, // 000A LDCONST R4 K7 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x8814031A, // 000D GETMBR R5 R1 K26 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C14031B, // 0010 GETMET R5 R1 K27 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200105, // 0012 GETMBR R8 R0 K5 - 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 + 0x8C0C011A, // 0007 GETMET R3 R0 K26 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0100, // 000B GETMBR R3 R0 K0 + 0x8C0C0701, // 000C GETMET R3 R3 K1 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100007, // 000E LDCONST R4 K7 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x8814031B, // 0011 GETMBR R5 R1 K27 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C14031C, // 0014 GETMET R5 R1 K28 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200105, // 0016 GETMBR R8 R0 K5 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x00100909, // 0019 ADD R4 R4 K9 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 }) ) ); @@ -9819,7 +9544,7 @@ be_local_closure(class_ShiftAnimation_render, /* name */ ********************************************************************/ be_local_closure(class_ShiftAnimation_on_param_changed, /* name */ be_nested_proto( - 5, /* nstack */ + 7, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -9830,12 +9555,19 @@ be_local_closure(class_ShiftAnimation_on_param_changed, /* name */ &be_ktab_class_ShiftAnimation, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x1C0C030E, // 0000 EQ R3 R1 K14 - 0x780E0001, // 0001 JMPF R3 #0004 - 0x8C0C011C, // 0002 GETMET R3 R0 K28 - 0x7C0C0200, // 0003 CALL R3 1 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C071D, // 0003 GETMET R3 R3 K29 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C030E, // 0007 EQ R3 R1 K14 + 0x780E0001, // 0008 JMPF R3 #000B + 0x8C0C011E, // 0009 GETMET R3 R0 K30 + 0x7C0C0200, // 000A CALL R3 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -9867,17 +9599,17 @@ be_local_closure(class_ShiftAnimation__calculate_shift, /* name */ 0x7C080200, // 0005 CALL R2 1 0x20080401, // 0006 NE R2 R2 R1 0x780A0001, // 0007 JMPF R2 #000A - 0x8C08011C, // 0008 GETMET R2 R0 K28 + 0x8C08011E, // 0008 GETMET R2 R0 K30 0x7C080200, // 0009 CALL R2 1 0x8808010E, // 000A GETMBR R2 R0 K14 0x880C010D, // 000B GETMBR R3 R0 K13 0x88100102, // 000C GETMBR R4 R0 K2 - 0x8C10091D, // 000D GETMET R4 R4 K29 + 0x8C10091F, // 000D GETMET R4 R4 K31 0x7C100200, // 000E CALL R4 1 0x4C100000, // 000F LDNIL R4 0x20100404, // 0010 NE R4 R2 R4 0x78120003, // 0011 JMPF R4 #0016 - 0x8C10051E, // 0012 GETMET R4 R2 K30 + 0x8C100520, // 0012 GETMET R4 R2 K32 0x88180102, // 0013 GETMBR R6 R0 K2 0x581C0007, // 0014 LDCONST R7 K7 0x7C100600, // 0015 CALL R4 3 @@ -9902,7 +9634,7 @@ be_local_closure(class_ShiftAnimation__calculate_shift, /* name */ 0x7001FFFB, // 0028 JMP #0025 0x88200105, // 0029 GETMBR R8 R0 K5 0x88240102, // 002A GETMBR R9 R0 K2 - 0x8C24131F, // 002B GETMET R9 R9 K31 + 0x8C241321, // 002B GETMET R9 R9 K33 0x5C2C0E00, // 002C MOVE R11 R7 0x7C240400, // 002D CALL R9 2 0x98200C09, // 002E SETIDX R8 R6 R9 @@ -9913,7 +9645,7 @@ be_local_closure(class_ShiftAnimation__calculate_shift, /* name */ 0x78220006, // 0033 JMPF R8 #003B 0x88200105, // 0034 GETMBR R8 R0 K5 0x88240102, // 0035 GETMBR R9 R0 K2 - 0x8C24131F, // 0036 GETMET R9 R9 K31 + 0x8C241321, // 0036 GETMET R9 R9 K33 0x5C2C0E00, // 0037 MOVE R11 R7 0x7C240400, // 0038 CALL R9 2 0x98200C09, // 0039 SETIDX R8 R6 R9 @@ -9949,11 +9681,11 @@ be_local_closure(class_ShiftAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080520, // 0003 GETMET R2 R2 K32 + 0x8C080522, // 0003 GETMET R2 R2 K34 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x90022507, // 0006 SETMBR R0 K18 K7 - 0x8C08011C, // 0007 GETMET R2 R0 K28 + 0x8C08011E, // 0007 GETMET R2 R0 K30 0x7C080200, // 0008 CALL R2 1 0x80000000, // 0009 RET 0 }) @@ -10015,6 +9747,867 @@ be_local_class(ShiftAnimation, be_str_weak(ShiftAnimation) ); +/******************************************************************** +** 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: 30, total: 37 (saved 56 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_nested_str_weak(_fix_time_ms), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(start_time), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(scale_uint), + /* K11 */ be_nested_str_weak(animation), + /* K12 */ be_nested_str_weak(SAWTOOTH), + /* K13 */ be_nested_str_weak(value), + /* K14 */ be_nested_str_weak(scale_int), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(TRIANGLE), + /* K17 */ be_nested_str_weak(SQUARE), + /* K18 */ be_nested_str_weak(COSINE), + /* K19 */ be_nested_str_weak(sine_int), + /* K20 */ be_nested_str_weak(SINE), + /* K21 */ be_nested_str_weak(EASE_IN), + /* K22 */ be_nested_str_weak(EASE_OUT), + /* K23 */ be_nested_str_weak(ELASTIC), + /* K24 */ be_nested_str_weak(BOUNCE), + /* K25 */ be_nested_str_weak(form_names), + /* K26 */ be_nested_str_weak(UNKNOWN), + /* K27 */ be_nested_str_weak(OscillatorValueProvider_X28min_value_X3D_X25s_X2C_X20max_value_X3D_X25s_X2C_X20duration_X3D_X25sms_X2C_X20form_X3D_X25s_X29), + /* K28 */ be_nested_str_weak(init), + /* K29 */ be_nested_str_weak(start), +}; + + +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[386]) { /* 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 + 0x8C240106, // 0006 GETMET R9 R0 K6 + 0x5C2C0400, // 0007 MOVE R11 R2 + 0x7C240400, // 0008 CALL R9 2 + 0x5C081200, // 0009 MOVE R2 R9 + 0x4C240000, // 000A LDNIL R9 + 0x1C240609, // 000B EQ R9 R3 R9 + 0x74260001, // 000C JMPT R9 #000F + 0x18240707, // 000D LE R9 R3 K7 + 0x78260000, // 000E JMPF R9 #0010 + 0x80040800, // 000F RET 1 R4 + 0x88240108, // 0010 GETMBR R9 R0 K8 + 0x04240409, // 0011 SUB R9 R2 R9 + 0x14281307, // 0012 LT R10 R9 K7 + 0x782A0000, // 0013 JMPF R10 #0015 + 0x58240007, // 0014 LDCONST R9 K7 + 0xB82A1200, // 0015 GETNGBL R10 K9 + 0x8C28150A, // 0016 GETMET R10 R10 K10 + 0x5C301000, // 0017 MOVE R12 R8 + 0x58340007, // 0018 LDCONST R13 K7 + 0x543A0063, // 0019 LDINT R14 100 + 0x583C0007, // 001A LDCONST R15 K7 + 0x5C400600, // 001B MOVE R16 R3 + 0x7C280C00, // 001C CALL R10 6 + 0x282C1203, // 001D GE R11 R9 R3 + 0x782E0005, // 001E JMPF R11 #0025 + 0x0C2C1203, // 001F DIV R11 R9 R3 + 0x08341603, // 0020 MUL R13 R11 R3 + 0x88300108, // 0021 GETMBR R12 R0 K8 + 0x0030180D, // 0022 ADD R12 R12 R13 + 0x9002100C, // 0023 SETMBR R0 K8 R12 + 0x10241203, // 0024 MOD R9 R9 R3 + 0x5C2C1200, // 0025 MOVE R11 R9 + 0x24300F07, // 0026 GT R12 R7 K7 + 0x7832000B, // 0027 JMPF R12 #0034 + 0xB8321200, // 0028 GETNGBL R12 K9 + 0x8C30190A, // 0029 GETMET R12 R12 K10 + 0x5C380E00, // 002A MOVE R14 R7 + 0x583C0007, // 002B LDCONST R15 K7 + 0x54420063, // 002C LDINT R16 100 + 0x58440007, // 002D LDCONST R17 K7 + 0x5C480600, // 002E MOVE R18 R3 + 0x7C300C00, // 002F CALL R12 6 + 0x002C160C, // 0030 ADD R11 R11 R12 + 0x28301603, // 0031 GE R12 R11 R3 + 0x78320000, // 0032 JMPF R12 #0034 + 0x042C1603, // 0033 SUB R11 R11 R3 + 0xB8321600, // 0034 GETNGBL R12 K11 + 0x8830190C, // 0035 GETMBR R12 R12 K12 + 0x1C300C0C, // 0036 EQ R12 R6 R12 + 0x78320009, // 0037 JMPF R12 #0042 + 0xB8321200, // 0038 GETNGBL R12 K9 + 0x8C30190E, // 0039 GETMET R12 R12 K14 + 0x5C381600, // 003A MOVE R14 R11 + 0x583C0007, // 003B LDCONST R15 K7 + 0x0440070F, // 003C SUB R16 R3 K15 + 0x5C440800, // 003D MOVE R17 R4 + 0x5C480A00, // 003E MOVE R18 R5 + 0x7C300C00, // 003F CALL R12 6 + 0x90021A0C, // 0040 SETMBR R0 K13 R12 + 0x7002013D, // 0041 JMP #0180 + 0xB8321600, // 0042 GETNGBL R12 K11 + 0x88301910, // 0043 GETMBR R12 R12 K16 + 0x1C300C0C, // 0044 EQ R12 R6 R12 + 0x78320015, // 0045 JMPF R12 #005C + 0x1430160A, // 0046 LT R12 R11 R10 + 0x78320009, // 0047 JMPF R12 #0052 + 0xB8321200, // 0048 GETNGBL R12 K9 + 0x8C30190E, // 0049 GETMET R12 R12 K14 + 0x5C381600, // 004A MOVE R14 R11 + 0x583C0007, // 004B LDCONST R15 K7 + 0x0440150F, // 004C SUB R16 R10 K15 + 0x5C440800, // 004D MOVE R17 R4 + 0x5C480A00, // 004E MOVE R18 R5 + 0x7C300C00, // 004F CALL R12 6 + 0x90021A0C, // 0050 SETMBR R0 K13 R12 + 0x70020008, // 0051 JMP #005B + 0xB8321200, // 0052 GETNGBL R12 K9 + 0x8C30190E, // 0053 GETMET R12 R12 K14 + 0x5C381600, // 0054 MOVE R14 R11 + 0x5C3C1400, // 0055 MOVE R15 R10 + 0x0440070F, // 0056 SUB R16 R3 K15 + 0x5C440A00, // 0057 MOVE R17 R5 + 0x5C480800, // 0058 MOVE R18 R4 + 0x7C300C00, // 0059 CALL R12 6 + 0x90021A0C, // 005A SETMBR R0 K13 R12 + 0x70020123, // 005B JMP #0180 + 0xB8321600, // 005C GETNGBL R12 K11 + 0x88301911, // 005D GETMBR R12 R12 K17 + 0x1C300C0C, // 005E EQ R12 R6 R12 + 0x78320005, // 005F JMPF R12 #0066 + 0x1430160A, // 0060 LT R12 R11 R10 + 0x78320001, // 0061 JMPF R12 #0064 + 0x90021A04, // 0062 SETMBR R0 K13 R4 + 0x70020000, // 0063 JMP #0065 + 0x90021A05, // 0064 SETMBR R0 K13 R5 + 0x70020119, // 0065 JMP #0180 + 0xB8321600, // 0066 GETNGBL R12 K11 + 0x88301912, // 0067 GETMBR R12 R12 K18 + 0x1C300C0C, // 0068 EQ R12 R6 R12 + 0x78320016, // 0069 JMPF R12 #0081 + 0xB8321200, // 006A GETNGBL R12 K9 + 0x8C30190A, // 006B GETMET R12 R12 K10 + 0x5C381600, // 006C MOVE R14 R11 + 0x583C0007, // 006D LDCONST R15 K7 + 0x0440070F, // 006E SUB R16 R3 K15 + 0x58440007, // 006F LDCONST R17 K7 + 0x544A7FFE, // 0070 LDINT R18 32767 + 0x7C300C00, // 0071 CALL R12 6 + 0xB8361200, // 0072 GETNGBL R13 K9 + 0x8C341B13, // 0073 GETMET R13 R13 K19 + 0x543E1FFF, // 0074 LDINT R15 8192 + 0x043C180F, // 0075 SUB R15 R12 R15 + 0x7C340400, // 0076 CALL R13 2 + 0xB83A1200, // 0077 GETNGBL R14 K9 + 0x8C381D0E, // 0078 GETMET R14 R14 K14 + 0x5C401A00, // 0079 MOVE R16 R13 + 0x5445EFFF, // 007A LDINT R17 -4096 + 0x544A0FFF, // 007B LDINT R18 4096 + 0x5C4C0800, // 007C MOVE R19 R4 + 0x5C500A00, // 007D MOVE R20 R5 + 0x7C380C00, // 007E CALL R14 6 + 0x90021A0E, // 007F SETMBR R0 K13 R14 + 0x700200FE, // 0080 JMP #0180 + 0xB8321600, // 0081 GETNGBL R12 K11 + 0x88301914, // 0082 GETMBR R12 R12 K20 + 0x1C300C0C, // 0083 EQ R12 R6 R12 + 0x78320015, // 0084 JMPF R12 #009B + 0xB8321200, // 0085 GETNGBL R12 K9 + 0x8C30190A, // 0086 GETMET R12 R12 K10 + 0x5C381600, // 0087 MOVE R14 R11 + 0x583C0007, // 0088 LDCONST R15 K7 + 0x0440070F, // 0089 SUB R16 R3 K15 + 0x58440007, // 008A LDCONST R17 K7 + 0x544A7FFE, // 008B LDINT R18 32767 + 0x7C300C00, // 008C CALL R12 6 + 0xB8361200, // 008D GETNGBL R13 K9 + 0x8C341B13, // 008E GETMET R13 R13 K19 + 0x5C3C1800, // 008F MOVE R15 R12 + 0x7C340400, // 0090 CALL R13 2 + 0xB83A1200, // 0091 GETNGBL R14 K9 + 0x8C381D0E, // 0092 GETMET R14 R14 K14 + 0x5C401A00, // 0093 MOVE R16 R13 + 0x5445EFFF, // 0094 LDINT R17 -4096 + 0x544A0FFF, // 0095 LDINT R18 4096 + 0x5C4C0800, // 0096 MOVE R19 R4 + 0x5C500A00, // 0097 MOVE R20 R5 + 0x7C380C00, // 0098 CALL R14 6 + 0x90021A0E, // 0099 SETMBR R0 K13 R14 + 0x700200E4, // 009A JMP #0180 + 0xB8321600, // 009B GETNGBL R12 K11 + 0x88301915, // 009C GETMBR R12 R12 K21 + 0x1C300C0C, // 009D EQ R12 R6 R12 + 0x78320014, // 009E JMPF R12 #00B4 + 0xB8321200, // 009F GETNGBL R12 K9 + 0x8C30190A, // 00A0 GETMET R12 R12 K10 + 0x5C381600, // 00A1 MOVE R14 R11 + 0x583C0007, // 00A2 LDCONST R15 K7 + 0x0440070F, // 00A3 SUB R16 R3 K15 + 0x58440007, // 00A4 LDCONST R17 K7 + 0x544A00FE, // 00A5 LDINT R18 255 + 0x7C300C00, // 00A6 CALL R12 6 + 0x0834180C, // 00A7 MUL R13 R12 R12 + 0x543A00FE, // 00A8 LDINT R14 255 + 0x0C341A0E, // 00A9 DIV R13 R13 R14 + 0xB83A1200, // 00AA GETNGBL R14 K9 + 0x8C381D0E, // 00AB GETMET R14 R14 K14 + 0x5C401A00, // 00AC MOVE R16 R13 + 0x58440007, // 00AD LDCONST R17 K7 + 0x544A00FE, // 00AE LDINT R18 255 + 0x5C4C0800, // 00AF MOVE R19 R4 + 0x5C500A00, // 00B0 MOVE R20 R5 + 0x7C380C00, // 00B1 CALL R14 6 + 0x90021A0E, // 00B2 SETMBR R0 K13 R14 + 0x700200CB, // 00B3 JMP #0180 + 0xB8321600, // 00B4 GETNGBL R12 K11 + 0x88301916, // 00B5 GETMBR R12 R12 K22 + 0x1C300C0C, // 00B6 EQ R12 R6 R12 + 0x7832001A, // 00B7 JMPF R12 #00D3 + 0xB8321200, // 00B8 GETNGBL R12 K9 + 0x8C30190A, // 00B9 GETMET R12 R12 K10 + 0x5C381600, // 00BA MOVE R14 R11 + 0x583C0007, // 00BB LDCONST R15 K7 + 0x0440070F, // 00BC SUB R16 R3 K15 + 0x58440007, // 00BD LDCONST R17 K7 + 0x544A00FE, // 00BE LDINT R18 255 + 0x7C300C00, // 00BF CALL R12 6 + 0x543600FE, // 00C0 LDINT R13 255 + 0x543A00FE, // 00C1 LDINT R14 255 + 0x04381C0C, // 00C2 SUB R14 R14 R12 + 0x543E00FE, // 00C3 LDINT R15 255 + 0x043C1E0C, // 00C4 SUB R15 R15 R12 + 0x08381C0F, // 00C5 MUL R14 R14 R15 + 0x543E00FE, // 00C6 LDINT R15 255 + 0x0C381C0F, // 00C7 DIV R14 R14 R15 + 0x04341A0E, // 00C8 SUB R13 R13 R14 + 0xB83A1200, // 00C9 GETNGBL R14 K9 + 0x8C381D0E, // 00CA GETMET R14 R14 K14 + 0x5C401A00, // 00CB MOVE R16 R13 + 0x58440007, // 00CC LDCONST R17 K7 + 0x544A00FE, // 00CD LDINT R18 255 + 0x5C4C0800, // 00CE MOVE R19 R4 + 0x5C500A00, // 00CF MOVE R20 R5 + 0x7C380C00, // 00D0 CALL R14 6 + 0x90021A0E, // 00D1 SETMBR R0 K13 R14 + 0x700200AC, // 00D2 JMP #0180 + 0xB8321600, // 00D3 GETNGBL R12 K11 + 0x88301917, // 00D4 GETMBR R12 R12 K23 + 0x1C300C0C, // 00D5 EQ R12 R6 R12 + 0x78320046, // 00D6 JMPF R12 #011E + 0xB8321200, // 00D7 GETNGBL R12 K9 + 0x8C30190A, // 00D8 GETMET R12 R12 K10 + 0x5C381600, // 00D9 MOVE R14 R11 + 0x583C0007, // 00DA LDCONST R15 K7 + 0x0440070F, // 00DB SUB R16 R3 K15 + 0x58440007, // 00DC LDCONST R17 K7 + 0x544A00FE, // 00DD LDINT R18 255 + 0x7C300C00, // 00DE CALL R12 6 + 0x1C341907, // 00DF EQ R13 R12 K7 + 0x78360001, // 00E0 JMPF R13 #00E3 + 0x90021A04, // 00E1 SETMBR R0 K13 R4 + 0x70020039, // 00E2 JMP #011D + 0x543600FE, // 00E3 LDINT R13 255 + 0x1C34180D, // 00E4 EQ R13 R12 R13 + 0x78360001, // 00E5 JMPF R13 #00E8 + 0x90021A05, // 00E6 SETMBR R0 K13 R5 + 0x70020034, // 00E7 JMP #011D + 0xB8361200, // 00E8 GETNGBL R13 K9 + 0x8C341B0A, // 00E9 GETMET R13 R13 K10 + 0x543E00FE, // 00EA LDINT R15 255 + 0x043C1E0C, // 00EB SUB R15 R15 R12 + 0x58400007, // 00EC LDCONST R16 K7 + 0x544600FE, // 00ED LDINT R17 255 + 0x544A00FE, // 00EE LDINT R18 255 + 0x544E001F, // 00EF LDINT R19 32 + 0x7C340C00, // 00F0 CALL R13 6 + 0xB83A1200, // 00F1 GETNGBL R14 K9 + 0x8C381D0A, // 00F2 GETMET R14 R14 K10 + 0x5C401800, // 00F3 MOVE R16 R12 + 0x58440007, // 00F4 LDCONST R17 K7 + 0x544A00FE, // 00F5 LDINT R18 255 + 0x584C0007, // 00F6 LDCONST R19 K7 + 0x54527FFE, // 00F7 LDINT R20 32767 + 0x54560005, // 00F8 LDINT R21 6 + 0x08502815, // 00F9 MUL R20 R20 R21 + 0x7C380C00, // 00FA CALL R14 6 + 0xB83E1200, // 00FB GETNGBL R15 K9 + 0x8C3C1F13, // 00FC GETMET R15 R15 K19 + 0x54467FFE, // 00FD LDINT R17 32767 + 0x10441C11, // 00FE MOD R17 R14 R17 + 0x7C3C0400, // 00FF CALL R15 2 + 0x08401E0D, // 0100 MUL R16 R15 R13 + 0x54460FFF, // 0101 LDINT R17 4096 + 0x0C402011, // 0102 DIV R16 R16 R17 + 0xB8461200, // 0103 GETNGBL R17 K9 + 0x8C44230E, // 0104 GETMET R17 R17 K14 + 0x5C4C1800, // 0105 MOVE R19 R12 + 0x58500007, // 0106 LDCONST R20 K7 + 0x545600FE, // 0107 LDINT R21 255 + 0x58580007, // 0108 LDCONST R22 K7 + 0x045C0A04, // 0109 SUB R23 R5 R4 + 0x7C440C00, // 010A CALL R17 6 + 0x00480811, // 010B ADD R18 R4 R17 + 0x00482410, // 010C ADD R18 R18 R16 + 0x90021A12, // 010D SETMBR R0 K13 R18 + 0x04480A04, // 010E SUB R18 R5 R4 + 0x544E0003, // 010F LDINT R19 4 + 0x0C4C2413, // 0110 DIV R19 R18 R19 + 0x8850010D, // 0111 GETMBR R20 R0 K13 + 0x00540A13, // 0112 ADD R21 R5 R19 + 0x24502815, // 0113 GT R20 R20 R21 + 0x78520001, // 0114 JMPF R20 #0117 + 0x00500A13, // 0115 ADD R20 R5 R19 + 0x90021A14, // 0116 SETMBR R0 K13 R20 + 0x8850010D, // 0117 GETMBR R20 R0 K13 + 0x04540813, // 0118 SUB R21 R4 R19 + 0x14502815, // 0119 LT R20 R20 R21 + 0x78520001, // 011A JMPF R20 #011D + 0x04500813, // 011B SUB R20 R4 R19 + 0x90021A14, // 011C SETMBR R0 K13 R20 + 0x70020061, // 011D JMP #0180 + 0xB8321600, // 011E GETNGBL R12 K11 + 0x88301918, // 011F GETMBR R12 R12 K24 + 0x1C300C0C, // 0120 EQ R12 R6 R12 + 0x7832005D, // 0121 JMPF R12 #0180 + 0xB8321200, // 0122 GETNGBL R12 K9 + 0x8C30190A, // 0123 GETMET R12 R12 K10 + 0x5C381600, // 0124 MOVE R14 R11 + 0x583C0007, // 0125 LDCONST R15 K7 + 0x0440070F, // 0126 SUB R16 R3 K15 + 0x58440007, // 0127 LDCONST R17 K7 + 0x544A00FE, // 0128 LDINT R18 255 + 0x7C300C00, // 0129 CALL R12 6 + 0x58340007, // 012A LDCONST R13 K7 + 0x543A007F, // 012B LDINT R14 128 + 0x1438180E, // 012C LT R14 R12 R14 + 0x783A0012, // 012D JMPF R14 #0141 + 0xB83A1200, // 012E GETNGBL R14 K9 + 0x8C381D0A, // 012F GETMET R14 R14 K10 + 0x5C401800, // 0130 MOVE R16 R12 + 0x58440007, // 0131 LDCONST R17 K7 + 0x544A007E, // 0132 LDINT R18 127 + 0x584C0007, // 0133 LDCONST R19 K7 + 0x545200FE, // 0134 LDINT R20 255 + 0x7C380C00, // 0135 CALL R14 6 + 0x543E00FE, // 0136 LDINT R15 255 + 0x544200FE, // 0137 LDINT R16 255 + 0x0440200E, // 0138 SUB R16 R16 R14 + 0x544600FE, // 0139 LDINT R17 255 + 0x0444220E, // 013A SUB R17 R17 R14 + 0x08402011, // 013B MUL R16 R16 R17 + 0x544600FE, // 013C LDINT R17 255 + 0x0C402011, // 013D DIV R16 R16 R17 + 0x043C1E10, // 013E SUB R15 R15 R16 + 0x5C341E00, // 013F MOVE R13 R15 + 0x70020035, // 0140 JMP #0177 + 0x543A00BF, // 0141 LDINT R14 192 + 0x1438180E, // 0142 LT R14 R12 R14 + 0x783A0017, // 0143 JMPF R14 #015C + 0xB83A1200, // 0144 GETNGBL R14 K9 + 0x8C381D0A, // 0145 GETMET R14 R14 K10 + 0x5442007F, // 0146 LDINT R16 128 + 0x04401810, // 0147 SUB R16 R12 R16 + 0x58440007, // 0148 LDCONST R17 K7 + 0x544A003E, // 0149 LDINT R18 63 + 0x584C0007, // 014A LDCONST R19 K7 + 0x545200FE, // 014B LDINT R20 255 + 0x7C380C00, // 014C CALL R14 6 + 0x543E00FE, // 014D LDINT R15 255 + 0x544200FE, // 014E LDINT R16 255 + 0x0440200E, // 014F SUB R16 R16 R14 + 0x544600FE, // 0150 LDINT R17 255 + 0x0444220E, // 0151 SUB R17 R17 R14 + 0x08402011, // 0152 MUL R16 R16 R17 + 0x544600FE, // 0153 LDINT R17 255 + 0x0C402011, // 0154 DIV R16 R16 R17 + 0x043C1E10, // 0155 SUB R15 R15 R16 + 0x5442007F, // 0156 LDINT R16 128 + 0x08401E10, // 0157 MUL R16 R15 R16 + 0x544600FE, // 0158 LDINT R17 255 + 0x0C402011, // 0159 DIV R16 R16 R17 + 0x5C342000, // 015A MOVE R13 R16 + 0x7002001A, // 015B JMP #0177 + 0xB83A1200, // 015C GETNGBL R14 K9 + 0x8C381D0A, // 015D GETMET R14 R14 K10 + 0x544200BF, // 015E LDINT R16 192 + 0x04401810, // 015F SUB R16 R12 R16 + 0x58440007, // 0160 LDCONST R17 K7 + 0x544A003E, // 0161 LDINT R18 63 + 0x584C0007, // 0162 LDCONST R19 K7 + 0x545200FE, // 0163 LDINT R20 255 + 0x7C380C00, // 0164 CALL R14 6 + 0x543E00FE, // 0165 LDINT R15 255 + 0x544200FE, // 0166 LDINT R16 255 + 0x0440200E, // 0167 SUB R16 R16 R14 + 0x544600FE, // 0168 LDINT R17 255 + 0x0444220E, // 0169 SUB R17 R17 R14 + 0x08402011, // 016A MUL R16 R16 R17 + 0x544600FE, // 016B LDINT R17 255 + 0x0C402011, // 016C DIV R16 R16 R17 + 0x043C1E10, // 016D SUB R15 R15 R16 + 0x544200FE, // 016E LDINT R16 255 + 0x544600FE, // 016F LDINT R17 255 + 0x0444220F, // 0170 SUB R17 R17 R15 + 0x544A003F, // 0171 LDINT R18 64 + 0x08442212, // 0172 MUL R17 R17 R18 + 0x544A00FE, // 0173 LDINT R18 255 + 0x0C442212, // 0174 DIV R17 R17 R18 + 0x04402011, // 0175 SUB R16 R16 R17 + 0x5C342000, // 0176 MOVE R13 R16 + 0xB83A1200, // 0177 GETNGBL R14 K9 + 0x8C381D0E, // 0178 GETMET R14 R14 K14 + 0x5C401A00, // 0179 MOVE R16 R13 + 0x58440007, // 017A LDCONST R17 K7 + 0x544A00FE, // 017B LDINT R18 255 + 0x5C4C0800, // 017C MOVE R19 R4 + 0x5C500A00, // 017D MOVE R20 R5 + 0x7C380C00, // 017E CALL R14 6 + 0x90021A0E, // 017F SETMBR R0 K13 R14 + 0x8830010D, // 0180 GETMBR R12 R0 K13 + 0x80041800, // 0181 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 + 0x2804030F, // 0001 GE R1 R1 K15 + 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 + 0x88040119, // 0007 GETMBR R1 R0 K25 + 0x88080103, // 0008 GETMBR R2 R0 K3 + 0x94040202, // 0009 GETIDX R1 R1 R2 + 0x70020000, // 000A JMP #000C + 0x5804001A, // 000B LDCONST R1 K26 + 0x60080018, // 000C GETGBL R2 G24 + 0x580C001B, // 000D LDCONST R3 K27 + 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[ 8]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051C, // 0003 GETMET R2 R2 K28 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90021B07, // 0006 SETMBR R0 K13 K7 + 0x80000000, // 0007 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_OscillatorValueProvider_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_OscillatorValueProvider, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C08051D, // 0003 GETMET R2 R2 K29 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80040000, // 0006 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: OscillatorValueProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(OscillatorValueProvider, + 1, + &be_class_ValueProvider, + be_nested_map(7, + ( (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(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(produce_value, -1), be_const_closure(class_OscillatorValueProvider_produce_value_closure) }, + { be_const_key_weak(form_names, 4), 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(tostring, -1), be_const_closure(class_OscillatorValueProvider_tostring_closure) }, + { be_const_key_weak(init, 0), be_const_closure(class_OscillatorValueProvider_init_closure) }, + { be_const_key_weak(value, 2), be_const_var(0) }, + { be_const_key_weak(start, -1), be_const_closure(class_OscillatorValueProvider_start_closure) }, + })), + 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: shift_scroll_right +********************************************************************/ +be_local_closure(shift_scroll_right, /* 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_scroll_right), + &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 + 0x540A007F, // 0005 LDINT R2 128 + 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: jitter_all ********************************************************************/ @@ -10093,116 +10686,107 @@ be_local_closure(linear, /* 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 +** Solidified function: noise_fractal ********************************************************************/ -be_local_closure(class_PlasmaAnimation_start, /* name */ +be_local_closure(noise_fractal, /* name */ be_nested_proto( 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ + 1, /* argc */ + 0, /* 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), + ( &(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 */ - 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 + 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 '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_nested_str_weak(on_param_changed), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(form), + /* K9 */ be_nested_str_weak(animation), + /* K10 */ be_nested_str_weak(COSINE), + /* 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_PlasmaAnimation_tostring, /* name */ +be_local_closure(class_BreatheColorProvider_tostring, /* name */ be_nested_proto( - 11, /* nstack */ + 8, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10210,169 +10794,19 @@ be_local_closure(class_PlasmaAnimation_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ + &be_ktab_class_BreatheColorProvider, /* 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 + ( &(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 }) ) ); @@ -10382,9 +10816,9 @@ be_local_closure(class_PlasmaAnimation__initialize_colors, /* name */ /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_PlasmaAnimation_on_param_changed, /* name */ +be_local_closure(class_BreatheColorProvider_on_param_changed, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -10392,386 +10826,141 @@ be_local_closure(class_PlasmaAnimation_on_param_changed, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_PlasmaAnimation, /* shared constants */ + &be_ktab_class_BreatheColorProvider, /* 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 + ( &(const binstruction[26]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0706, // 0003 GETMET R3 R3 K6 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0305, // 0007 EQ R3 R1 K5 + 0x780E0008, // 0008 JMPF R3 #0012 + 0x1C0C0507, // 0009 EQ R3 R2 K7 + 0x780E0003, // 000A JMPF R3 #000F + 0xB80E1200, // 000B GETNGBL R3 K9 + 0x880C070A, // 000C GETMBR R3 R3 K10 + 0x90021003, // 000D SETMBR R0 K8 R3 + 0x70020002, // 000E JMP #0012 + 0xB80E1200, // 000F GETNGBL R3 K9 + 0x880C070A, // 0010 GETMBR R3 R3 K10 + 0x90021003, // 0011 SETMBR R0 K8 R3 + 0x600C0003, // 0012 GETGBL R3 G3 + 0x5C100000, // 0013 MOVE R4 R0 + 0x7C0C0200, // 0014 CALL R3 1 + 0x8C0C0706, // 0015 GETMET R3 R3 K6 + 0x5C140200, // 0016 MOVE R5 R1 + 0x5C180400, // 0017 MOVE R6 R2 + 0x7C0C0600, // 0018 CALL R3 3 + 0x80000000, // 0019 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) -); - -extern const bclass be_class_ColorProvider; - /******************************************************************** ** Solidified function: produce_value ********************************************************************/ -be_local_closure(class_ColorProvider_produce_value, /* name */ +be_local_closure(class_BreatheColorProvider_produce_value, /* name */ be_nested_proto( - 4, /* nstack */ + 15, /* nstack */ 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x540DFFFE, // 0000 LDINT R3 -1 - 0x80040600, // 0001 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_ColorProvider_get_color_for_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ + 10, /* 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(produce_value), - /* K1 */ be_nested_str_weak(color), - }), - be_str_weak(get_color_for_value), + &be_ktab_class_BreatheColorProvider, /* shared constants */ + be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x58140001, // 0001 LDCONST R5 K1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80040600, // 0004 RET 1 R3 + ( &(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 + 0x24180907, // 0009 GT R6 R4 K7 + 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 + 0x24200F07, // 0014 GT R8 R7 K7 + 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 + 0x041C0F07, // 001A SUB R7 R7 K7 + 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 }) ) ); @@ -10779,18 +10968,88 @@ be_local_closure(class_ColorProvider_get_color_for_value, /* name */ /******************************************************************** -** Solidified class: ColorProvider +** Solidified function: init ********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(ColorProvider, +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 + 0xB80A1200, // 0006 GETNGBL R2 K9 + 0x8808050A, // 0007 GETMBR R2 R2 K10 + 0x90021002, // 0008 SETMBR R0 K8 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_ValueProvider, - be_nested_map(2, + &be_class_OscillatorValueProvider, + be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorProvider_get_color_for_value_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorProvider_produce_value_closure) }, + { 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(ColorProvider) + be_str_weak(BreatheColorProvider) ); /******************************************************************** @@ -10829,11 +11088,10 @@ 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] = { +// compact class 'StaticValueProvider' ktab size: 2, total: 9 (saved 56 bytes) +static const bvalue be_ktab_class_StaticValueProvider[2] = { /* 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), }; @@ -11025,22 +11283,12 @@ be_local_closure(class_StaticValueProvider_tostring, /* name */ &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 + ( &(const binstruction[ 5]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080001, // 0001 LDCONST R2 K1 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -11178,8 +11426,8 @@ be_local_closure(sawtooth, /* name */ ); /*******************************************************************/ -// compact class 'NoiseAnimation' ktab size: 50, total: 107 (saved 456 bytes) -static const bvalue be_ktab_class_NoiseAnimation[50] = { +// compact class 'NoiseAnimation' ktab size: 52, total: 109 (saved 456 bytes) +static const bvalue be_ktab_class_NoiseAnimation[52] = { /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(engine), /* K2 */ be_nested_str_weak(get_strip_length), @@ -11216,20 +11464,22 @@ static const bvalue be_ktab_class_NoiseAnimation[50] = { /* K33 */ be_nested_str_weak(is_color_provider), /* K34 */ be_nested_str_weak(get_color_for_value), /* K35 */ be_nested_str_weak(resolve_value), - /* K36 */ be_nested_str_weak(_init_noise_table), - /* K37 */ be_nested_str_weak(is_running), - /* K38 */ be_nested_str_weak(width), - /* K39 */ be_nested_str_weak(set_pixel_color), - /* K40 */ be_nested_str_weak(is_value_provider), - /* K41 */ be_nested_str_weak(0x_X2508x), - /* K42 */ be_nested_str_weak(NoiseAnimation_X28color_X3D_X25s_X2C_X20scale_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20octaves_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K43 */ be_nested_str_weak(scale), - /* K44 */ be_nested_str_weak(octaves), - /* K45 */ be_nested_str_weak(priority), - /* K46 */ be_nested_str_weak(start), - /* K47 */ be_nested_str_weak(persistence), - /* K48 */ be_nested_str_weak(_noise_1d), - /* K49 */ be_const_int(2), + /* K36 */ be_nested_str_weak(on_param_changed), + /* K37 */ be_nested_str_weak(_init_noise_table), + /* K38 */ be_nested_str_weak(is_running), + /* K39 */ be_nested_str_weak(_fix_time_ms), + /* K40 */ be_nested_str_weak(width), + /* K41 */ be_nested_str_weak(set_pixel_color), + /* K42 */ be_nested_str_weak(is_value_provider), + /* K43 */ be_nested_str_weak(0x_X2508x), + /* K44 */ be_nested_str_weak(NoiseAnimation_X28color_X3D_X25s_X2C_X20scale_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20octaves_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K45 */ be_nested_str_weak(scale), + /* K46 */ be_nested_str_weak(octaves), + /* K47 */ be_nested_str_weak(priority), + /* K48 */ be_nested_str_weak(start), + /* K49 */ be_nested_str_weak(persistence), + /* K50 */ be_nested_str_weak(_noise_1d), + /* K51 */ be_const_int(2), }; @@ -11591,33 +11841,40 @@ be_local_closure(class_NoiseAnimation_on_param_changed, /* name */ &be_ktab_class_NoiseAnimation, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x1C0C0317, // 0000 EQ R3 R1 K23 - 0x780E0001, // 0001 JMPF R3 #0004 - 0x8C0C0124, // 0002 GETMET R3 R0 K36 - 0x7C0C0200, // 0003 CALL R3 1 - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x8C0C0702, // 0005 GETMET R3 R3 K2 - 0x7C0C0200, // 0006 CALL R3 1 - 0x6010000C, // 0007 GETGBL R4 G12 - 0x88140103, // 0008 GETMBR R5 R0 K3 - 0x7C100200, // 0009 CALL R4 1 - 0x20100803, // 000A NE R4 R4 R3 - 0x7812000C, // 000B JMPF R4 #0019 - 0x88100103, // 000C GETMBR R4 R0 K3 - 0x8C100904, // 000D GETMET R4 R4 K4 - 0x5C180600, // 000E MOVE R6 R3 - 0x7C100400, // 000F CALL R4 2 - 0x6010000C, // 0010 GETGBL R4 G12 - 0x88140103, // 0011 GETMBR R5 R0 K3 - 0x7C100200, // 0012 CALL R4 1 - 0x14140803, // 0013 LT R5 R4 R3 - 0x78160003, // 0014 JMPF R5 #0019 - 0x88140103, // 0015 GETMBR R5 R0 K3 - 0x98140907, // 0016 SETIDX R5 R4 K7 - 0x00100908, // 0017 ADD R4 R4 K8 - 0x7001FFF9, // 0018 JMP #0013 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[33]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0724, // 0003 GETMET R3 R3 K36 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0317, // 0007 EQ R3 R1 K23 + 0x780E0001, // 0008 JMPF R3 #000B + 0x8C0C0125, // 0009 GETMET R3 R0 K37 + 0x7C0C0200, // 000A CALL R3 1 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x6010000C, // 000E GETGBL R4 G12 + 0x88140103, // 000F GETMBR R5 R0 K3 + 0x7C100200, // 0010 CALL R4 1 + 0x20100803, // 0011 NE R4 R4 R3 + 0x7812000C, // 0012 JMPF R4 #0020 + 0x88100103, // 0013 GETMBR R4 R0 K3 + 0x8C100904, // 0014 GETMET R4 R4 K4 + 0x5C180600, // 0015 MOVE R6 R3 + 0x7C100400, // 0016 CALL R4 2 + 0x6010000C, // 0017 GETGBL R4 G12 + 0x88140103, // 0018 GETMBR R5 R0 K3 + 0x7C100200, // 0019 CALL R4 1 + 0x14140803, // 001A LT R5 R4 R3 + 0x78160003, // 001B JMPF R5 #0020 + 0x88140103, // 001C GETMBR R5 R0 K3 + 0x98140907, // 001D SETIDX R5 R4 K7 + 0x00100908, // 001E ADD R4 R4 K8 + 0x7001FFF9, // 001F JMP #001A + 0x80000000, // 0020 RET 0 }) ) ); @@ -11640,32 +11897,36 @@ be_local_closure(class_NoiseAnimation_render, /* name */ &be_ktab_class_NoiseAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x880C0125, // 0000 GETMBR R3 R0 K37 + ( &(const binstruction[29]) { /* code */ + 0x880C0126, // 0000 GETMBR R3 R0 K38 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 - 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 - 0x7C0C0200, // 0009 CALL R3 1 - 0x58100006, // 000A LDCONST R4 K6 - 0x14140803, // 000B LT R5 R4 R3 - 0x78160009, // 000C JMPF R5 #0017 - 0x88140326, // 000D GETMBR R5 R1 K38 - 0x14140805, // 000E LT R5 R4 R5 - 0x78160004, // 000F JMPF R5 #0015 - 0x8C140327, // 0010 GETMET R5 R1 K39 - 0x5C1C0800, // 0011 MOVE R7 R4 - 0x88200103, // 0012 GETMBR R8 R0 K3 - 0x94201004, // 0013 GETIDX R8 R8 R4 - 0x7C140600, // 0014 CALL R5 3 - 0x00100908, // 0015 ADD R4 R4 K8 - 0x7001FFF3, // 0016 JMP #000B - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 + 0x8C0C0127, // 0007 GETMET R3 R0 K39 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0101, // 000B GETMBR R3 R0 K1 + 0x8C0C0702, // 000C GETMET R3 R3 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100006, // 000E LDCONST R4 K6 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x88140328, // 0011 GETMBR R5 R1 K40 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C140329, // 0014 GETMET R5 R1 K41 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200103, // 0016 GETMBR R8 R0 K3 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x00100908, // 0019 ADD R4 R4 K8 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 }) ) ); @@ -11692,7 +11953,7 @@ be_local_closure(class_NoiseAnimation_tostring, /* name */ 0x8804010A, // 0000 GETMBR R1 R0 K10 0x4C080000, // 0001 LDNIL R2 0xB80E1600, // 0002 GETNGBL R3 K11 - 0x8C0C0728, // 0003 GETMET R3 R3 K40 + 0x8C0C072A, // 0003 GETMET R3 R3 K42 0x5C140200, // 0004 MOVE R5 R1 0x7C0C0400, // 0005 CALL R3 2 0x780E0004, // 0006 JMPF R3 #000C @@ -11702,18 +11963,18 @@ be_local_closure(class_NoiseAnimation_tostring, /* name */ 0x5C080600, // 000A MOVE R2 R3 0x70020004, // 000B JMP #0011 0x600C0018, // 000C GETGBL R3 G24 - 0x58100029, // 000D LDCONST R4 K41 + 0x5810002B, // 000D LDCONST R4 K43 0x5C140200, // 000E MOVE R5 R1 0x7C0C0400, // 000F CALL R3 2 0x5C080600, // 0010 MOVE R2 R3 0x600C0018, // 0011 GETGBL R3 G24 - 0x5810002A, // 0012 LDCONST R4 K42 + 0x5810002C, // 0012 LDCONST R4 K44 0x5C140400, // 0013 MOVE R5 R2 - 0x8818012B, // 0014 GETMBR R6 R0 K43 + 0x8818012D, // 0014 GETMBR R6 R0 K45 0x881C011B, // 0015 GETMBR R7 R0 K27 - 0x8820012C, // 0016 GETMBR R8 R0 K44 - 0x8824012D, // 0017 GETMBR R9 R0 K45 - 0x88280125, // 0018 GETMBR R10 R0 K37 + 0x8820012E, // 0016 GETMBR R8 R0 K46 + 0x8824012F, // 0017 GETMBR R9 R0 K47 + 0x88280126, // 0018 GETMBR R10 R0 K38 0x7C0C0E00, // 0019 CALL R3 7 0x80040600, // 001A RET 1 R3 }) @@ -11742,10 +12003,10 @@ be_local_closure(class_NoiseAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052E, // 0003 GETMET R2 R2 K46 + 0x8C080530, // 0003 GETMET R2 R2 K48 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x8C080125, // 0006 GETMET R2 R0 K37 0x7C080200, // 0007 CALL R2 1 0x90020B06, // 0008 SETMBR R0 K5 K6 0x80040000, // 0009 RET 1 R0 @@ -11833,9 +12094,9 @@ be_local_closure(class_NoiseAnimation__fractal_noise, /* name */ ( &(const binstruction[62]) { /* code */ 0x580C0006, // 0000 LDCONST R3 K6 0x541200FE, // 0001 LDINT R4 255 - 0x8814012B, // 0002 GETMBR R5 R0 K43 - 0x8818012C, // 0003 GETMBR R6 R0 K44 - 0x881C012F, // 0004 GETMBR R7 R0 K47 + 0x8814012D, // 0002 GETMBR R5 R0 K45 + 0x8818012E, // 0003 GETMBR R6 R0 K46 + 0x881C0131, // 0004 GETMBR R7 R0 K49 0x5C200A00, // 0005 MOVE R8 R5 0x58240006, // 0006 LDCONST R9 K6 0x58280006, // 0007 LDCONST R10 K6 @@ -11852,7 +12113,7 @@ be_local_closure(class_NoiseAnimation__fractal_noise, /* name */ 0x544600FE, // 0012 LDINT R17 255 0x7C2C0C00, // 0013 CALL R11 6 0x002C1602, // 0014 ADD R11 R11 R2 - 0x8C300130, // 0015 GETMET R12 R0 K48 + 0x8C300132, // 0015 GETMET R12 R0 K50 0x5C381600, // 0016 MOVE R14 R11 0x7C300400, // 0017 CALL R12 2 0xB8363A00, // 0018 GETNGBL R13 K29 @@ -11874,7 +12135,7 @@ be_local_closure(class_NoiseAnimation__fractal_noise, /* name */ 0x5C4C0E00, // 0028 MOVE R19 R7 0x7C340C00, // 0029 CALL R13 6 0x5C101A00, // 002A MOVE R4 R13 - 0x08201131, // 002B MUL R8 R8 K49 + 0x08201133, // 002B MUL R8 R8 K51 0x543600FE, // 002C LDINT R13 255 0x2434100D, // 002D GT R13 R8 R13 0x78360000, // 002E JMPF R13 #0030 @@ -11969,73 +12230,101 @@ be_local_class(NoiseAnimation, })), be_str_weak(NoiseAnimation) ); -// compact class 'ColorCycleColorProvider' ktab size: 27, total: 53 (saved 208 bytes) -static const bvalue be_ktab_class_ColorCycleColorProvider[27] = { - /* K0 */ be_nested_str_weak(palette), - /* K1 */ be_nested_str_weak(_get_param_def), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(default), - /* K4 */ be_nested_str_weak(cycle_period), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(manual), - /* K7 */ be_nested_str_weak(auto), - /* K8 */ be_nested_str_weak(_get_palette_size), - /* K9 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), - /* K10 */ be_nested_str_weak(current_index), - /* K11 */ be_nested_str_weak(ColorCycleColorProvider_X28uninitialized_X29), - /* K12 */ be_nested_str_weak(_get_palette_bytes), - /* K13 */ be_nested_str_weak(palette_size), - /* K14 */ be_nested_str_weak(values), - /* K15 */ be_nested_str_weak(value_error), - /* K16 */ be_nested_str_weak(Parameter_X20_X27palette_size_X27_X20is_X20read_X2Donly), - /* K17 */ be_nested_str_weak(current_color), - /* K18 */ be_nested_str_weak(_get_color_at_index), - /* K19 */ be_nested_str_weak(next), - /* K20 */ be_nested_str_weak(set_param), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(tasmota), - /* K23 */ be_nested_str_weak(scale_uint), - /* K24 */ be_nested_str_weak(init), - /* K25 */ be_nested_str_weak(get), - /* K26 */ be_const_int(-16777216), +extern const bclass be_class_AnimationMath; +// compact class 'AnimationMath' ktab size: 13, total: 31 (saved 144 bytes) +static const bvalue be_ktab_class_AnimationMath[13] = { + /* K0 */ be_const_class(be_class_AnimationMath), + /* K1 */ be_nested_str_weak(math), + /* K2 */ be_nested_str_weak(int), + /* K3 */ be_const_int(0), + /* K4 */ be_const_real_hex(0x437F0000), + /* K5 */ be_nested_str_weak(sqrt), + /* K6 */ be_nested_str_weak(max), + /* K7 */ be_nested_str_weak(round), + /* K8 */ be_nested_str_weak(abs), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(scale_int), + /* K11 */ be_nested_str_weak(sine_int), + /* K12 */ be_nested_str_weak(min), }; -extern const bclass be_class_ColorCycleColorProvider; +extern const bclass be_class_AnimationMath; /******************************************************************** -** Solidified function: _get_palette_bytes +** Solidified function: sqrt ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_palette_bytes, /* name */ +be_local_closure(class_AnimationMath_sqrt, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(sqrt), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x600C0004, // 0002 GETGBL R3 G4 + 0x5C100000, // 0003 MOVE R4 R0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x1C0C0702, // 0005 EQ R3 R3 K2 + 0x780E000E, // 0006 JMPF R3 #0016 + 0x280C0103, // 0007 GE R3 R0 K3 + 0x780E000C, // 0008 JMPF R3 #0016 + 0x540E00FE, // 0009 LDINT R3 255 + 0x180C0003, // 000A LE R3 R0 R3 + 0x780E0009, // 000B JMPF R3 #0016 + 0x0C0C0104, // 000C DIV R3 R0 K4 + 0x60100009, // 000D GETGBL R4 G9 + 0x8C140505, // 000E GETMET R5 R2 K5 + 0x5C1C0600, // 000F MOVE R7 R3 + 0x7C140400, // 0010 CALL R5 2 + 0x541A00FE, // 0011 LDINT R6 255 + 0x08140A06, // 0012 MUL R5 R5 R6 + 0x7C100200, // 0013 CALL R4 1 + 0x80040800, // 0014 RET 1 R4 + 0x70020003, // 0015 JMP #001A + 0x8C0C0505, // 0016 GETMET R3 R2 K5 + 0x5C140000, // 0017 MOVE R5 R0 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80040600, // 0019 RET 1 R3 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: max +********************************************************************/ +be_local_closure(class_AnimationMath_max, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ - 10, /* varg */ + 13, /* 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_palette_bytes), + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(max), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C080202, // 0002 EQ R2 R1 R2 - 0x780A000A, // 0003 JMPF R2 #000F - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x58100000, // 0005 LDCONST R4 K0 - 0x7C080400, // 0006 CALL R2 2 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0004, // 0009 JMPF R3 #000F - 0x8C0C0502, // 000A GETMET R3 R2 K2 - 0x58140003, // 000B LDCONST R5 K3 - 0x7C0C0400, // 000C CALL R3 2 - 0x780E0000, // 000D JMPF R3 #000F - 0x94040503, // 000E GETIDX R1 R2 K3 - 0x80040200, // 000F RET 1 R1 + ( &(const binstruction[ 7]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x600C0016, // 0002 GETGBL R3 G22 + 0x88100506, // 0003 GETMBR R4 R2 K6 + 0x5C140000, // 0004 MOVE R5 R0 + 0x7C0C0400, // 0005 CALL R3 2 + 0x80040600, // 0006 RET 1 R3 }) ) ); @@ -12043,79 +12332,30 @@ be_local_closure(class_ColorCycleColorProvider__get_palette_bytes, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: round ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ +be_local_closure(class_AnimationMath_round, /* name */ be_nested_proto( - 9, /* nstack */ + 7, /* nstack */ 1, /* argc */ - 10, /* varg */ + 12, /* 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 - 0x88040104, // 0001 GETMBR R1 R0 K4 - 0x1C040305, // 0002 EQ R1 R1 K5 - 0x78060001, // 0003 JMPF R1 #0006 - 0x58040006, // 0004 LDCONST R1 K6 - 0x70020000, // 0005 JMP #0007 - 0x58040007, // 0006 LDCONST R1 K7 - 0x8C080108, // 0007 GETMET R2 R0 K8 - 0x7C080200, // 0008 CALL R2 1 - 0x600C0018, // 0009 GETGBL R3 G24 - 0x58100009, // 000A LDCONST R4 K9 - 0x5C140400, // 000B MOVE R5 R2 - 0x88180104, // 000C GETMBR R6 R0 K4 - 0x5C1C0200, // 000D MOVE R7 R1 - 0x8820010A, // 000E GETMBR R8 R0 K10 - 0x7C0C0A00, // 000F CALL R3 5 - 0xA8040001, // 0010 EXBLK 1 1 - 0x80040600, // 0011 RET 1 R3 - 0xA8040001, // 0012 EXBLK 1 1 - 0x70020004, // 0013 JMP #0019 - 0xAC040000, // 0014 CATCH R1 0 0 - 0x70020001, // 0015 JMP #0018 - 0x80061600, // 0016 RET 1 K11 - 0x70020000, // 0017 JMP #0019 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _get_palette_size -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* 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_ColorCycleColorProvider, /* shared constants */ - be_str_weak(_get_palette_size), + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(round), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x8C04010C, // 0000 GETMET R1 R0 K12 - 0x7C040200, // 0001 CALL R1 1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x5C0C0200, // 0003 MOVE R3 R1 - 0x7C080200, // 0004 CALL R2 1 - 0x540E0003, // 0005 LDINT R3 4 - 0x0C080403, // 0006 DIV R2 R2 R3 - 0x80040400, // 0007 RET 1 R2 + 0x58040000, // 0000 LDCONST R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x600C0009, // 0002 GETGBL R3 G9 + 0x8C100507, // 0003 GETMET R4 R2 K7 + 0x5C180000, // 0004 MOVE R6 R0 + 0x7C100400, // 0005 CALL R4 2 + 0x7C0C0200, // 0006 CALL R3 1 + 0x80040600, // 0007 RET 1 R3 }) ) ); @@ -12123,233 +12363,28 @@ be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ /******************************************************************** -** Solidified function: on_param_changed +** Solidified function: abs ********************************************************************/ -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[49]) { /* code */ - 0x1C0C030D, // 0000 EQ R3 R1 K13 - 0x780E0005, // 0001 JMPF R3 #0008 - 0x880C010E, // 0002 GETMBR R3 R0 K14 - 0x8C100108, // 0003 GETMET R4 R0 K8 - 0x7C100200, // 0004 CALL R4 1 - 0x980E1A04, // 0005 SETIDX R3 K13 R4 - 0xB0061F10, // 0006 RAISE 1 K15 K16 - 0x70020027, // 0007 JMP #0030 - 0x1C0C0300, // 0008 EQ R3 R1 K0 - 0x780E000E, // 0009 JMPF R3 #0019 - 0x8C0C0108, // 000A GETMET R3 R0 K8 - 0x7C0C0200, // 000B CALL R3 1 - 0x24100705, // 000C GT R4 R3 K5 - 0x78120007, // 000D JMPF R4 #0016 - 0x8810010A, // 000E GETMBR R4 R0 K10 - 0x28100803, // 000F GE R4 R4 R3 - 0x78120000, // 0010 JMPF R4 #0012 - 0x90021505, // 0011 SETMBR R0 K10 K5 - 0x8C100112, // 0012 GETMET R4 R0 K18 - 0x8818010A, // 0013 GETMBR R6 R0 K10 - 0x7C100400, // 0014 CALL R4 2 - 0x90022204, // 0015 SETMBR R0 K17 R4 - 0x8810010E, // 0016 GETMBR R4 R0 K14 - 0x98121A03, // 0017 SETIDX R4 K13 R3 - 0x70020016, // 0018 JMP #0030 - 0x1C0C0313, // 0019 EQ R3 R1 K19 - 0x780E0014, // 001A JMPF R3 #0030 - 0x200C0505, // 001B NE R3 R2 K5 - 0x780E0012, // 001C JMPF R3 #0030 - 0x8C0C0108, // 001D GETMET R3 R0 K8 - 0x7C0C0200, // 001E CALL R3 1 - 0x24100705, // 001F GT R4 R3 K5 - 0x7812000A, // 0020 JMPF R4 #002C - 0x8810010A, // 0021 GETMBR R4 R0 K10 - 0x00100802, // 0022 ADD R4 R4 R2 - 0x10100803, // 0023 MOD R4 R4 R3 - 0x14140905, // 0024 LT R5 R4 K5 - 0x78160000, // 0025 JMPF R5 #0027 - 0x00100803, // 0026 ADD R4 R4 R3 - 0x90021404, // 0027 SETMBR R0 K10 R4 - 0x8C140112, // 0028 GETMET R5 R0 K18 - 0x881C010A, // 0029 GETMBR R7 R0 K10 - 0x7C140400, // 002A CALL R5 2 - 0x90022205, // 002B SETMBR R0 K17 R5 - 0x8C100114, // 002C GETMET R4 R0 K20 - 0x58180013, // 002D LDCONST R6 K19 - 0x581C0005, // 002E LDCONST R7 K5 - 0x7C100600, // 002F CALL R4 3 - 0x80000000, // 0030 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_produce_value, /* 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_ColorCycleColorProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x8C100108, // 0001 GETMET R4 R0 K8 - 0x7C100200, // 0002 CALL R4 1 - 0x1C140905, // 0003 EQ R5 R4 K5 - 0x78160001, // 0004 JMPF R5 #0007 - 0x5415FFFE, // 0005 LDINT R5 -1 - 0x80040A00, // 0006 RET 1 R5 - 0x1C140915, // 0007 EQ R5 R4 K21 - 0x78160005, // 0008 JMPF R5 #000F - 0x8C140112, // 0009 GETMET R5 R0 K18 - 0x581C0005, // 000A LDCONST R7 K5 - 0x7C140400, // 000B CALL R5 2 - 0x90022205, // 000C SETMBR R0 K17 R5 - 0x88140111, // 000D GETMBR R5 R0 K17 - 0x80040A00, // 000E RET 1 R5 - 0x1C140705, // 000F EQ R5 R3 K5 - 0x78160001, // 0010 JMPF R5 #0013 - 0x88140111, // 0011 GETMBR R5 R0 K17 - 0x80040A00, // 0012 RET 1 R5 - 0x10140403, // 0013 MOD R5 R2 R3 - 0xB81A2C00, // 0014 GETNGBL R6 K22 - 0x8C180D17, // 0015 GETMET R6 R6 K23 - 0x5C200A00, // 0016 MOVE R8 R5 - 0x58240005, // 0017 LDCONST R9 K5 - 0x04280715, // 0018 SUB R10 R3 K21 - 0x582C0005, // 0019 LDCONST R11 K5 - 0x04300915, // 001A SUB R12 R4 K21 - 0x7C180C00, // 001B CALL R6 6 - 0x281C0C04, // 001C GE R7 R6 R4 - 0x781E0001, // 001D JMPF R7 #0020 - 0x041C0915, // 001E SUB R7 R4 K21 - 0x5C180E00, // 001F MOVE R6 R7 - 0x90021406, // 0020 SETMBR R0 K10 R6 - 0x8C1C0112, // 0021 GETMET R7 R0 K18 - 0x5C240C00, // 0022 MOVE R9 R6 - 0x7C1C0400, // 0023 CALL R7 2 - 0x90022207, // 0024 SETMBR R0 K17 R7 - 0x881C0111, // 0025 GETMBR R7 R0 K17 - 0x80040E00, // 0026 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_color_for_value -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* 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_ColorCycleColorProvider, /* shared constants */ - be_str_weak(get_color_for_value), - &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x7C0C0200, // 0001 CALL R3 1 - 0x1C100705, // 0002 EQ R4 R3 K5 - 0x78120001, // 0003 JMPF R4 #0006 - 0x5411FFFE, // 0004 LDINT R4 -1 - 0x80040800, // 0005 RET 1 R4 - 0x1C100715, // 0006 EQ R4 R3 K21 - 0x78120003, // 0007 JMPF R4 #000C - 0x8C100112, // 0008 GETMET R4 R0 K18 - 0x58180005, // 0009 LDCONST R6 K5 - 0x7C100400, // 000A CALL R4 2 - 0x80040800, // 000B RET 1 R4 - 0x14100305, // 000C LT R4 R1 K5 - 0x78120001, // 000D JMPF R4 #0010 - 0x58040005, // 000E LDCONST R1 K5 - 0x70020003, // 000F JMP #0014 - 0x54120063, // 0010 LDINT R4 100 - 0x24100204, // 0011 GT R4 R1 R4 - 0x78120000, // 0012 JMPF R4 #0014 - 0x54060063, // 0013 LDINT R1 100 - 0xB8122C00, // 0014 GETNGBL R4 K22 - 0x8C100917, // 0015 GETMET R4 R4 K23 - 0x5C180200, // 0016 MOVE R6 R1 - 0x581C0005, // 0017 LDCONST R7 K5 - 0x54220063, // 0018 LDINT R8 100 - 0x58240005, // 0019 LDCONST R9 K5 - 0x04280715, // 001A SUB R10 R3 K21 - 0x7C100C00, // 001B CALL R4 6 - 0x28140803, // 001C GE R5 R4 R3 - 0x78160001, // 001D JMPF R5 #0020 - 0x04140715, // 001E SUB R5 R3 K21 - 0x5C100A00, // 001F MOVE R4 R5 - 0x8C140112, // 0020 GETMET R5 R0 K18 - 0x5C1C0800, // 0021 MOVE R7 R4 - 0x7C140400, // 0022 CALL R5 2 - 0x80040A00, // 0023 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ColorCycleColorProvider_init, /* name */ +be_local_closure(class_AnimationMath_abs, /* name */ be_nested_proto( 6, /* nstack */ - 2, /* argc */ - 10, /* varg */ + 1, /* argc */ + 12, /* 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_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(abs), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080518, // 0003 GETMET R2 R2 K24 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x8C08010C, // 0006 GETMET R2 R0 K12 - 0x7C080200, // 0007 CALL R2 1 - 0x8C0C0112, // 0008 GETMET R3 R0 K18 - 0x58140005, // 0009 LDCONST R5 K5 - 0x7C0C0400, // 000A CALL R3 2 - 0x90022203, // 000B SETMBR R0 K17 R3 - 0x90021505, // 000C SETMBR R0 K10 K5 - 0x880C010E, // 000D GETMBR R3 R0 K14 - 0x8C100108, // 000E GETMET R4 R0 K8 - 0x7C100200, // 000F CALL R4 1 - 0x980E1A04, // 0010 SETIDX R3 K13 R4 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x8C0C0508, // 0002 GETMET R3 R2 K8 + 0x5C140000, // 0003 MOVE R5 R0 + 0x7C0C0400, // 0004 CALL R3 2 + 0x80040600, // 0005 RET 1 R3 }) ) ); @@ -12357,43 +12392,89 @@ be_local_closure(class_ColorCycleColorProvider_init, /* name */ /******************************************************************** -** Solidified function: _get_color_at_index +** Solidified function: cos ********************************************************************/ -be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ +be_local_closure(class_AnimationMath_cos, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ + 11, /* nstack */ + 1, /* argc */ + 12, /* 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_at_index), + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(cos), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0xB80A1200, // 0001 GETNGBL R2 K9 + 0x8C08050A, // 0002 GETMET R2 R2 K10 + 0x5C100000, // 0003 MOVE R4 R0 + 0x58140003, // 0004 LDCONST R5 K3 + 0x541A00FE, // 0005 LDINT R6 255 + 0x581C0003, // 0006 LDCONST R7 K3 + 0x54227FFE, // 0007 LDINT R8 32767 + 0x7C080C00, // 0008 CALL R2 6 + 0xB80E1200, // 0009 GETNGBL R3 K9 + 0x8C0C070B, // 000A GETMET R3 R3 K11 + 0x54161FFF, // 000B LDINT R5 8192 + 0x04140405, // 000C SUB R5 R2 R5 + 0x7C0C0400, // 000D CALL R3 2 + 0xB8121200, // 000E GETNGBL R4 K9 + 0x8C10090A, // 000F GETMET R4 R4 K10 + 0x5C180600, // 0010 MOVE R6 R3 + 0x541DEFFF, // 0011 LDINT R7 -4096 + 0x54220FFF, // 0012 LDINT R8 4096 + 0x5425FF00, // 0013 LDINT R9 -255 + 0x542A00FE, // 0014 LDINT R10 255 + 0x7C100C00, // 0015 CALL R4 6 + 0x80040800, // 0016 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: sin +********************************************************************/ +be_local_closure(class_AnimationMath_sin, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(sin), &be_const_str_solidified, ( &(const binstruction[22]) { /* code */ - 0x8C08010C, // 0000 GETMET R2 R0 K12 - 0x7C080200, // 0001 CALL R2 1 - 0x600C000C, // 0002 GETGBL R3 G12 - 0x5C100400, // 0003 MOVE R4 R2 - 0x7C0C0200, // 0004 CALL R3 1 - 0x54120003, // 0005 LDINT R4 4 - 0x0C0C0604, // 0006 DIV R3 R3 R4 - 0x1C100705, // 0007 EQ R4 R3 K5 - 0x74120003, // 0008 JMPT R4 #000D - 0x14100305, // 0009 LT R4 R1 K5 - 0x74120001, // 000A JMPT R4 #000D - 0x28100203, // 000B GE R4 R1 R3 - 0x78120001, // 000C JMPF R4 #000F - 0x5411FFFE, // 000D LDINT R4 -1 - 0x80040800, // 000E RET 1 R4 - 0x8C100519, // 000F GETMET R4 R2 K25 - 0x541A0003, // 0010 LDINT R6 4 - 0x08180206, // 0011 MUL R6 R1 R6 - 0x541DFFFB, // 0012 LDINT R7 -4 - 0x7C100600, // 0013 CALL R4 3 - 0x3010091A, // 0014 OR R4 R4 K26 + 0x58040000, // 0000 LDCONST R1 K0 + 0xB80A1200, // 0001 GETNGBL R2 K9 + 0x8C08050A, // 0002 GETMET R2 R2 K10 + 0x5C100000, // 0003 MOVE R4 R0 + 0x58140003, // 0004 LDCONST R5 K3 + 0x541A00FE, // 0005 LDINT R6 255 + 0x581C0003, // 0006 LDCONST R7 K3 + 0x54227FFE, // 0007 LDINT R8 32767 + 0x7C080C00, // 0008 CALL R2 6 + 0xB80E1200, // 0009 GETNGBL R3 K9 + 0x8C0C070B, // 000A GETMET R3 R3 K11 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C0C0400, // 000C CALL R3 2 + 0xB8121200, // 000D GETNGBL R4 K9 + 0x8C10090A, // 000E GETMET R4 R4 K10 + 0x5C180600, // 000F MOVE R6 R3 + 0x541DEFFF, // 0010 LDINT R7 -4096 + 0x54220FFF, // 0011 LDINT R8 4096 + 0x5425FF00, // 0012 LDINT R9 -255 + 0x542A00FE, // 0013 LDINT R10 255 + 0x7C100C00, // 0014 CALL R4 6 0x80040800, // 0015 RET 1 R4 }) ) @@ -12402,53 +12483,86 @@ be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* name */ /******************************************************************** -** Solidified class: ColorCycleColorProvider +** Solidified function: scale ********************************************************************/ -extern const bclass be_class_ColorProvider; -be_local_class(ColorCycleColorProvider, - 2, - &be_class_ColorProvider, - be_nested_map(11, +be_local_closure(class_AnimationMath_scale, /* name */ + be_nested_proto( + 13, /* nstack */ + 5, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(scale), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x58140000, // 0000 LDCONST R5 K0 + 0xB81A1200, // 0001 GETNGBL R6 K9 + 0x8C180D0A, // 0002 GETMET R6 R6 K10 + 0x5C200000, // 0003 MOVE R8 R0 + 0x5C240200, // 0004 MOVE R9 R1 + 0x5C280400, // 0005 MOVE R10 R2 + 0x5C2C0600, // 0006 MOVE R11 R3 + 0x5C300800, // 0007 MOVE R12 R4 + 0x7C180C00, // 0008 CALL R6 6 + 0x80040C00, // 0009 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: min +********************************************************************/ +be_local_closure(class_AnimationMath_min, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 13, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationMath, /* shared constants */ + be_str_weak(min), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0x600C0016, // 0002 GETGBL R3 G22 + 0x8810050C, // 0003 GETMBR R4 R2 K12 + 0x5C140000, // 0004 MOVE R5 R0 + 0x7C0C0400, // 0005 CALL R3 2 + 0x80040600, // 0006 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: AnimationMath +********************************************************************/ +be_local_class(AnimationMath, + 0, + NULL, + be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_ColorCycleColorProvider__get_color_at_index_closure) }, - { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_ColorCycleColorProvider__get_palette_size_closure) }, - { be_const_key_weak(current_color, 6), be_const_var(0) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, - { be_const_key_weak(_get_palette_bytes, 1), be_const_closure(class_ColorCycleColorProvider__get_palette_bytes_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, - { be_const_key_weak(current_index, -1), 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(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(4, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(palette, 2), 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_bytes_instance(FF0000FFFF00FF00FFFF0000) }, - { be_const_key_weak(type, -1), be_nested_str_weak(bytes) }, - })) ) } )) }, - { be_const_key_weak(palette_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(type, -1), be_nested_str_weak(int) }, - })) ) } )) }, - { 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(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(init, -1), be_const_closure(class_ColorCycleColorProvider_init_closure) }, - { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, + { be_const_key_weak(min, -1), be_const_static_closure(class_AnimationMath_min_closure) }, + { be_const_key_weak(max, 2), be_const_static_closure(class_AnimationMath_max_closure) }, + { be_const_key_weak(scale, -1), be_const_static_closure(class_AnimationMath_scale_closure) }, + { be_const_key_weak(round, 6), be_const_static_closure(class_AnimationMath_round_closure) }, + { be_const_key_weak(cos, -1), be_const_static_closure(class_AnimationMath_cos_closure) }, + { be_const_key_weak(sin, -1), be_const_static_closure(class_AnimationMath_sin_closure) }, + { be_const_key_weak(abs, -1), be_const_static_closure(class_AnimationMath_abs_closure) }, + { be_const_key_weak(sqrt, 0), be_const_static_closure(class_AnimationMath_sqrt_closure) }, })), - be_str_weak(ColorCycleColorProvider) + be_str_weak(AnimationMath) ); /******************************************************************** @@ -12568,512 +12682,43 @@ be_local_closure(clear_all_event_handlers, /* name */ ); /*******************************************************************/ -// compact class 'ClosureValueProvider' ktab size: 26, total: 39 (saved 104 bytes) -static const bvalue be_ktab_class_ClosureValueProvider[26] = { - /* 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(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), - /* K20 */ be_nested_str_weak(engine), - /* K21 */ be_nested_str_weak(time_ms), - /* K22 */ be_nested_str_weak(parameterized_object), - /* K23 */ be_nested_str_weak(value_error), - /* K24 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), - /* K25 */ be_nested_str_weak(get_param_value), -}; - - -extern const bclass be_class_ClosureValueProvider; /******************************************************************** -** Solidified function: on_param_changed +** Solidified function: smooth ********************************************************************/ -be_local_closure(class_ClosureValueProvider_on_param_changed, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x1C0C0300, // 0000 EQ R3 R1 K0 - 0x780E0000, // 0001 JMPF R3 #0003 - 0x90020202, // 0002 SETMBR R0 K1 R2 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: abs -********************************************************************/ -be_local_closure(class_ClosureValueProvider_abs, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(abs), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0xA40A0400, // 0000 IMPORT R2 K2 - 0x8C0C0503, // 0001 GETMET R3 R2 K3 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sqrt -********************************************************************/ -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 - 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ClosureValueProvider_tostring, /* name */ +be_local_closure(smooth, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ - 10, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(tostring), + ( &(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[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080008, // 0001 LDCONST R2 K8 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x780E0001, // 0003 JMPF R3 #0006 - 0x580C0009, // 0004 LDCONST R3 K9 - 0x70020000, // 0005 JMP #0007 - 0x580C000A, // 0006 LDCONST R3 K10 - 0x7C040400, // 0007 CALL R1 2 - 0x80040200, // 0008 RET 1 R1 + ( &(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: cos -********************************************************************/ -be_local_closure(class_ClosureValueProvider_cos, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(cos), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* 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 - 0x54161FFF, // 000A LDINT R5 8192 - 0x04140405, // 000B SUB R5 R2 R5 - 0x7C0C0400, // 000C CALL R3 2 - 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 - 0x5425FF00, // 0012 LDINT R9 -255 - 0x542A00FE, // 0013 LDINT R10 255 - 0x7C100C00, // 0014 CALL R4 6 - 0x80040800, // 0015 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sin -********************************************************************/ -be_local_closure(class_ClosureValueProvider_sin, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(sin), - &be_const_str_solidified, - ( &(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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: min -********************************************************************/ -be_local_closure(class_ClosureValueProvider_min, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 11, /* 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(min), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA40A0400, // 0000 IMPORT R2 K2 - 0x600C0016, // 0001 GETGBL R3 G22 - 0x8810050E, // 0002 GETMBR R4 R2 K14 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x80040600, // 0005 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 -********************************************************************/ -be_local_closure(class_ClosureValueProvider_max, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 11, /* 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(max), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0xA40A0400, // 0000 IMPORT R2 K2 - 0x600C0016, // 0001 GETGBL R3 G22 - 0x88100510, // 0002 GETMBR R4 R2 K16 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x80040600, // 0005 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: produce_value -********************************************************************/ -be_local_closure(class_ClosureValueProvider_produce_value, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(produce_value), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x880C0101, // 0000 GETMBR R3 R0 K1 - 0x4C100000, // 0001 LDNIL R4 - 0x1C100604, // 0002 EQ R4 R3 R4 - 0x78120001, // 0003 JMPF R4 #0006 - 0x4C100000, // 0004 LDNIL R4 - 0x80040800, // 0005 RET 1 R4 - 0x5C100600, // 0006 MOVE R4 R3 - 0x5C140000, // 0007 MOVE R5 R0 - 0x5C180200, // 0008 MOVE R6 R1 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C100600, // 000A CALL R4 3 - 0x80040800, // 000B RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve -********************************************************************/ -be_local_closure(class_ClosureValueProvider_resolve, /* 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_ClosureValueProvider, /* shared constants */ - be_str_weak(resolve), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0xB80E2200, // 0000 GETNGBL R3 K17 - 0x8C0C0712, // 0001 GETMET R3 R3 K18 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0006, // 0004 JMPF R3 #000C - 0x8C0C0313, // 0005 GETMET R3 R1 K19 - 0x5C140400, // 0006 MOVE R5 R2 - 0x88180114, // 0007 GETMBR R6 R0 K20 - 0x88180D15, // 0008 GETMBR R6 R6 K21 - 0x7C0C0600, // 0009 CALL R3 3 - 0x80040600, // 000A RET 1 R3 - 0x70020014, // 000B JMP #0021 - 0x4C0C0000, // 000C LDNIL R3 - 0x200C0203, // 000D NE R3 R1 R3 - 0x780E0010, // 000E JMPF R3 #0020 - 0x600C000F, // 000F GETGBL R3 G15 - 0x5C100200, // 0010 MOVE R4 R1 - 0xB8162200, // 0011 GETNGBL R5 K17 - 0x88140B16, // 0012 GETMBR R5 R5 K22 - 0x7C0C0400, // 0013 CALL R3 2 - 0x780E000A, // 0014 JMPF R3 #0020 - 0x4C0C0000, // 0015 LDNIL R3 - 0x1C0C0403, // 0016 EQ R3 R2 R3 - 0x780E0000, // 0017 JMPF R3 #0019 - 0xB0062F18, // 0018 RAISE 1 K23 K24 - 0x8C0C0319, // 0019 GETMET R3 R1 K25 - 0x5C140400, // 001A MOVE R5 R2 - 0x88180114, // 001B GETMBR R6 R0 K20 - 0x88180D15, // 001C GETMBR R6 R6 K21 - 0x7C0C0600, // 001D CALL R3 3 - 0x80040600, // 001E RET 1 R3 - 0x70020000, // 001F JMP #0021 - 0x80040200, // 0020 RET 1 R1 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: scale -********************************************************************/ -be_local_closure(class_ClosureValueProvider_scale, /* name */ - be_nested_proto( - 13, /* nstack */ - 6, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ClosureValueProvider, /* shared constants */ - be_str_weak(scale), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 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 - 0x5C2C0800, // 0005 MOVE R11 R4 - 0x5C300A00, // 0006 MOVE R12 R5 - 0x7C180C00, // 0007 CALL R6 6 - 0x80040C00, // 0008 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ClosureValueProvider -********************************************************************/ -extern const bclass be_class_ValueProvider; -be_local_class(ClosureValueProvider, - 1, - &be_class_ValueProvider, - be_nested_map(14, - ( (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(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[]) { - { be_const_key_weak(closure, -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(_closure, -1), be_const_var(0) }, - { 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: plasma_fast ********************************************************************/ @@ -13120,6 +12765,37 @@ be_local_closure(plasma_fast, /* 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 + }) + ) +); +/*******************************************************************/ + + extern const bclass be_class_PaletteGradientAnimation; /******************************************************************** @@ -15067,235 +14743,74 @@ be_local_class(FrameBuffer, })), be_str_weak(FrameBuffer) ); - -/******************************************************************** -** Solidified function: twinkle_gentle -********************************************************************/ -be_local_closure(twinkle_gentle, /* 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(twinkle_animation), - /* K2 */ be_nested_str_weak(color), - /* K3 */ be_nested_str_weak(density), - /* K4 */ be_nested_str_weak(twinkle_speed), - /* K5 */ be_const_int(3), - /* K6 */ be_nested_str_weak(fade_speed), - /* K7 */ be_nested_str_weak(min_brightness), - /* K8 */ be_nested_str_weak(max_brightness), - }), - be_str_weak(twinkle_gentle), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x5409D6FF, // 0004 LDINT R2 -10496 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x540A003F, // 0006 LDINT R2 64 - 0x90060602, // 0007 SETMBR R1 K3 R2 - 0x90060905, // 0008 SETMBR R1 K4 K5 - 0x540A0077, // 0009 LDINT R2 120 - 0x90060C02, // 000A SETMBR R1 K6 R2 - 0x540A000F, // 000B LDINT R2 16 - 0x90060E02, // 000C SETMBR R1 K7 R2 - 0x540A00B3, // 000D LDINT R2 180 - 0x90061002, // 000E SETMBR R1 K8 R2 - 0x80040200, // 000F RET 1 R1 - }) - ) -); -/*******************************************************************/ - -// 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), +// compact class 'ColorCycleColorProvider' ktab size: 28, total: 54 (saved 208 bytes) +static const bvalue be_ktab_class_ColorCycleColorProvider[28] = { + /* K0 */ be_nested_str_weak(palette), + /* K1 */ be_nested_str_weak(_get_param_def), + /* K2 */ be_nested_str_weak(contains), + /* K3 */ be_nested_str_weak(default), + /* K4 */ be_nested_str_weak(cycle_period), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(manual), + /* K7 */ be_nested_str_weak(auto), + /* K8 */ be_nested_str_weak(_get_palette_size), + /* K9 */ be_nested_str_weak(ColorCycleColorProvider_X28palette_size_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20mode_X3D_X25s_X2C_X20current_index_X3D_X25s_X29), + /* K10 */ be_nested_str_weak(current_index), + /* K11 */ be_nested_str_weak(ColorCycleColorProvider_X28uninitialized_X29), + /* K12 */ be_nested_str_weak(_get_palette_bytes), + /* K13 */ be_nested_str_weak(on_param_changed), + /* K14 */ be_nested_str_weak(palette_size), + /* K15 */ be_nested_str_weak(values), + /* K16 */ be_nested_str_weak(value_error), + /* K17 */ be_nested_str_weak(Parameter_X20_X27palette_size_X27_X20is_X20read_X2Donly), + /* K18 */ be_nested_str_weak(current_color), + /* K19 */ be_nested_str_weak(_get_color_at_index), + /* K20 */ be_nested_str_weak(next), + /* K21 */ be_nested_str_weak(set_param), + /* K22 */ be_const_int(1), + /* K23 */ be_nested_str_weak(tasmota), + /* K24 */ be_nested_str_weak(scale_uint), + /* K25 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(get), + /* K27 */ be_const_int(-16777216), }; -extern const bclass be_class_CompositeColorProvider; +extern const bclass be_class_ColorCycleColorProvider; /******************************************************************** -** Solidified function: add_provider +** Solidified function: _get_palette_bytes ********************************************************************/ -be_local_closure(class_CompositeColorProvider_add_provider, /* name */ +be_local_closure(class_ColorCycleColorProvider__get_palette_bytes, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 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_CompositeColorProvider, /* shared constants */ - be_str_weak(add_provider), + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_palette_bytes), &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 + ( &(const binstruction[16]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C080202, // 0002 EQ R2 R1 R2 + 0x780A000A, // 0003 JMPF R2 #000F + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x58100000, // 0005 LDCONST R4 K0 + 0x7C080400, // 0006 CALL R2 2 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0004, // 0009 JMPF R3 #000F + 0x8C0C0502, // 000A GETMET R3 R2 K2 + 0x58140003, // 000B LDCONST R5 K3 + 0x7C0C0400, // 000C CALL R3 2 + 0x780E0000, // 000D JMPF R3 #000F + 0x94040503, // 000E GETIDX R1 R2 K3 + 0x80040200, // 000F RET 1 R1 }) ) ); @@ -15305,9 +14820,9 @@ be_local_closure(class_CompositeColorProvider_produce_value, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -be_local_closure(class_CompositeColorProvider_tostring, /* name */ +be_local_closure(class_ColorCycleColorProvider_tostring, /* name */ be_nested_proto( - 5, /* nstack */ + 9, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -15315,28 +14830,36 @@ be_local_closure(class_CompositeColorProvider_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_CompositeColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* 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 + ( &(const binstruction[26]) { /* code */ + 0xA8020012, // 0000 EXBLK 0 #0014 + 0x88040104, // 0001 GETMBR R1 R0 K4 + 0x1C040305, // 0002 EQ R1 R1 K5 + 0x78060001, // 0003 JMPF R1 #0006 + 0x58040006, // 0004 LDCONST R1 K6 + 0x70020000, // 0005 JMP #0007 + 0x58040007, // 0006 LDCONST R1 K7 + 0x8C080108, // 0007 GETMET R2 R0 K8 + 0x7C080200, // 0008 CALL R2 1 + 0x600C0018, // 0009 GETGBL R3 G24 + 0x58100009, // 000A LDCONST R4 K9 + 0x5C140400, // 000B MOVE R5 R2 + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x5C1C0200, // 000D MOVE R7 R1 + 0x8820010A, // 000E GETMBR R8 R0 K10 + 0x7C0C0A00, // 000F CALL R3 5 + 0xA8040001, // 0010 EXBLK 1 1 + 0x80040600, // 0011 RET 1 R3 + 0xA8040001, // 0012 EXBLK 1 1 + 0x70020004, // 0013 JMP #0019 + 0xAC040000, // 0014 CATCH R1 0 0 + 0x70020001, // 0015 JMP #0018 + 0x80061600, // 0016 RET 1 K11 + 0x70020000, // 0017 JMP #0019 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x80000000, // 0019 RET 0 }) ) ); @@ -15344,11 +14867,42 @@ be_local_closure(class_CompositeColorProvider_tostring, /* name */ /******************************************************************** -** Solidified function: _blend_colors +** Solidified function: _get_palette_size ********************************************************************/ -be_local_closure(class_CompositeColorProvider__blend_colors, /* name */ +be_local_closure(class_ColorCycleColorProvider__get_palette_size, /* name */ be_nested_proto( - 23, /* nstack */ + 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_palette_size), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0x8C04010C, // 0000 GETMET R1 R0 K12 + 0x7C040200, // 0001 CALL R1 1 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x5C0C0200, // 0003 MOVE R3 R1 + 0x7C080200, // 0004 CALL R2 1 + 0x540E0003, // 0005 LDINT R3 4 + 0x0C080403, // 0006 DIV R2 R2 R3 + 0x80040400, // 0007 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ @@ -15356,161 +14910,187 @@ be_local_closure(class_CompositeColorProvider__blend_colors, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_CompositeColorProvider, /* shared constants */ - be_str_weak(_blend_colors), + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ + be_str_weak(on_param_changed), &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 + ( &(const binstruction[56]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C070D, // 0003 GETMET R3 R3 K13 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C030E, // 0007 EQ R3 R1 K14 + 0x780E0005, // 0008 JMPF R3 #000F + 0x880C010F, // 0009 GETMBR R3 R0 K15 + 0x8C100108, // 000A GETMET R4 R0 K8 + 0x7C100200, // 000B CALL R4 1 + 0x980E1C04, // 000C SETIDX R3 K14 R4 + 0xB0062111, // 000D RAISE 1 K16 K17 + 0x70020027, // 000E JMP #0037 + 0x1C0C0300, // 000F EQ R3 R1 K0 + 0x780E000E, // 0010 JMPF R3 #0020 + 0x8C0C0108, // 0011 GETMET R3 R0 K8 + 0x7C0C0200, // 0012 CALL R3 1 + 0x24100705, // 0013 GT R4 R3 K5 + 0x78120007, // 0014 JMPF R4 #001D + 0x8810010A, // 0015 GETMBR R4 R0 K10 + 0x28100803, // 0016 GE R4 R4 R3 + 0x78120000, // 0017 JMPF R4 #0019 + 0x90021505, // 0018 SETMBR R0 K10 K5 + 0x8C100113, // 0019 GETMET R4 R0 K19 + 0x8818010A, // 001A GETMBR R6 R0 K10 + 0x7C100400, // 001B CALL R4 2 + 0x90022404, // 001C SETMBR R0 K18 R4 + 0x8810010F, // 001D GETMBR R4 R0 K15 + 0x98121C03, // 001E SETIDX R4 K14 R3 + 0x70020016, // 001F JMP #0037 + 0x1C0C0314, // 0020 EQ R3 R1 K20 + 0x780E0014, // 0021 JMPF R3 #0037 + 0x200C0505, // 0022 NE R3 R2 K5 + 0x780E0012, // 0023 JMPF R3 #0037 + 0x8C0C0108, // 0024 GETMET R3 R0 K8 + 0x7C0C0200, // 0025 CALL R3 1 + 0x24100705, // 0026 GT R4 R3 K5 + 0x7812000A, // 0027 JMPF R4 #0033 + 0x8810010A, // 0028 GETMBR R4 R0 K10 + 0x00100802, // 0029 ADD R4 R4 R2 + 0x10100803, // 002A MOD R4 R4 R3 + 0x14140905, // 002B LT R5 R4 K5 + 0x78160000, // 002C JMPF R5 #002E + 0x00100803, // 002D ADD R4 R4 R3 + 0x90021404, // 002E SETMBR R0 K10 R4 + 0x8C140113, // 002F GETMET R5 R0 K19 + 0x881C010A, // 0030 GETMBR R7 R0 K10 + 0x7C140400, // 0031 CALL R5 2 + 0x90022405, // 0032 SETMBR R0 K18 R5 + 0x8C100115, // 0033 GETMET R4 R0 K21 + 0x58180014, // 0034 LDCONST R6 K20 + 0x581C0005, // 0035 LDCONST R7 K5 + 0x7C100600, // 0036 CALL R4 3 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_produce_value, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C100108, // 0001 GETMET R4 R0 K8 + 0x7C100200, // 0002 CALL R4 1 + 0x1C140905, // 0003 EQ R5 R4 K5 + 0x78160001, // 0004 JMPF R5 #0007 + 0x5415FFFE, // 0005 LDINT R5 -1 + 0x80040A00, // 0006 RET 1 R5 + 0x1C140916, // 0007 EQ R5 R4 K22 + 0x78160005, // 0008 JMPF R5 #000F + 0x8C140113, // 0009 GETMET R5 R0 K19 + 0x581C0005, // 000A LDCONST R7 K5 + 0x7C140400, // 000B CALL R5 2 + 0x90022405, // 000C SETMBR R0 K18 R5 + 0x88140112, // 000D GETMBR R5 R0 K18 + 0x80040A00, // 000E RET 1 R5 + 0x1C140705, // 000F EQ R5 R3 K5 + 0x78160001, // 0010 JMPF R5 #0013 + 0x88140112, // 0011 GETMBR R5 R0 K18 + 0x80040A00, // 0012 RET 1 R5 + 0x10140403, // 0013 MOD R5 R2 R3 + 0xB81A2E00, // 0014 GETNGBL R6 K23 + 0x8C180D18, // 0015 GETMET R6 R6 K24 + 0x5C200A00, // 0016 MOVE R8 R5 + 0x58240005, // 0017 LDCONST R9 K5 + 0x04280716, // 0018 SUB R10 R3 K22 + 0x582C0005, // 0019 LDCONST R11 K5 + 0x04300916, // 001A SUB R12 R4 K22 + 0x7C180C00, // 001B CALL R6 6 + 0x281C0C04, // 001C GE R7 R6 R4 + 0x781E0001, // 001D JMPF R7 #0020 + 0x041C0916, // 001E SUB R7 R4 K22 + 0x5C180E00, // 001F MOVE R6 R7 + 0x90021406, // 0020 SETMBR R0 K10 R6 + 0x8C1C0113, // 0021 GETMET R7 R0 K19 + 0x5C240C00, // 0022 MOVE R9 R6 + 0x7C1C0400, // 0023 CALL R7 2 + 0x90022407, // 0024 SETMBR R0 K18 R7 + 0x881C0112, // 0025 GETMBR R7 R0 K18 + 0x80040E00, // 0026 RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider_get_color_for_value, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x8C0C0108, // 0000 GETMET R3 R0 K8 + 0x7C0C0200, // 0001 CALL R3 1 + 0x1C100705, // 0002 EQ R4 R3 K5 + 0x78120001, // 0003 JMPF R4 #0006 + 0x5411FFFE, // 0004 LDINT R4 -1 + 0x80040800, // 0005 RET 1 R4 + 0x1C100716, // 0006 EQ R4 R3 K22 + 0x78120003, // 0007 JMPF R4 #000C + 0x8C100113, // 0008 GETMET R4 R0 K19 + 0x58180005, // 0009 LDCONST R6 K5 + 0x7C100400, // 000A CALL R4 2 + 0x80040800, // 000B RET 1 R4 + 0x14100305, // 000C LT R4 R1 K5 + 0x78120001, // 000D JMPF R4 #0010 + 0x58040005, // 000E LDCONST R1 K5 + 0x70020003, // 000F JMP #0014 + 0x54120063, // 0010 LDINT R4 100 + 0x24100204, // 0011 GT R4 R1 R4 + 0x78120000, // 0012 JMPF R4 #0014 + 0x54060063, // 0013 LDINT R1 100 + 0xB8122E00, // 0014 GETNGBL R4 K23 + 0x8C100918, // 0015 GETMET R4 R4 K24 + 0x5C180200, // 0016 MOVE R6 R1 + 0x581C0005, // 0017 LDCONST R7 K5 + 0x54220063, // 0018 LDINT R8 100 + 0x58240005, // 0019 LDCONST R9 K5 + 0x04280716, // 001A SUB R10 R3 K22 + 0x7C100C00, // 001B CALL R4 6 + 0x28140803, // 001C GE R5 R4 R3 + 0x78160001, // 001D JMPF R5 #0020 + 0x04140716, // 001E SUB R5 R3 K22 + 0x5C100A00, // 001F MOVE R4 R5 + 0x8C140113, // 0020 GETMET R5 R0 K19 + 0x5C1C0800, // 0021 MOVE R7 R4 + 0x7C140400, // 0022 CALL R5 2 + 0x80040A00, // 0023 RET 1 R5 }) ) ); @@ -15520,9 +15100,9 @@ be_local_closure(class_CompositeColorProvider__blend_colors, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_CompositeColorProvider_init, /* name */ +be_local_closure(class_ColorCycleColorProvider_init, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -15530,20 +15110,28 @@ be_local_closure(class_CompositeColorProvider_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_CompositeColorProvider, /* shared constants */ + &be_ktab_class_ColorCycleColorProvider, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050E, // 0003 GETMET R2 R2 K14 + 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 - 0x90020002, // 0008 SETMBR R0 K0 R2 - 0x80000000, // 0009 RET 0 + 0x8C08010C, // 0006 GETMET R2 R0 K12 + 0x7C080200, // 0007 CALL R2 1 + 0x8C0C0113, // 0008 GETMET R3 R0 K19 + 0x58140005, // 0009 LDCONST R5 K5 + 0x7C0C0400, // 000A CALL R3 2 + 0x90022403, // 000B SETMBR R0 K18 R3 + 0x90021505, // 000C SETMBR R0 K10 K5 + 0x880C010F, // 000D GETMBR R3 R0 K15 + 0x8C100108, // 000E GETMET R4 R0 K8 + 0x7C100200, // 000F CALL R4 1 + 0x980E1C04, // 0010 SETIDX R3 K14 R4 + 0x80000000, // 0011 RET 0 }) ) ); @@ -15551,109 +15139,104 @@ be_local_closure(class_CompositeColorProvider_init, /* name */ /******************************************************************** -** Solidified class: CompositeColorProvider +** Solidified function: _get_color_at_index +********************************************************************/ +be_local_closure(class_ColorCycleColorProvider__get_color_at_index, /* 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_ColorCycleColorProvider, /* shared constants */ + be_str_weak(_get_color_at_index), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C08010C, // 0000 GETMET R2 R0 K12 + 0x7C080200, // 0001 CALL R2 1 + 0x600C000C, // 0002 GETGBL R3 G12 + 0x5C100400, // 0003 MOVE R4 R2 + 0x7C0C0200, // 0004 CALL R3 1 + 0x54120003, // 0005 LDINT R4 4 + 0x0C0C0604, // 0006 DIV R3 R3 R4 + 0x1C100705, // 0007 EQ R4 R3 K5 + 0x74120003, // 0008 JMPT R4 #000D + 0x14100305, // 0009 LT R4 R1 K5 + 0x74120001, // 000A JMPT R4 #000D + 0x28100203, // 000B GE R4 R1 R3 + 0x78120001, // 000C JMPF R4 #000F + 0x5411FFFE, // 000D LDINT R4 -1 + 0x80040800, // 000E RET 1 R4 + 0x8C10051A, // 000F GETMET R4 R2 K26 + 0x541A0003, // 0010 LDINT R6 4 + 0x08180206, // 0011 MUL R6 R1 R6 + 0x541DFFFB, // 0012 LDINT R7 -4 + 0x7C100600, // 0013 CALL R4 3 + 0x3010091B, // 0014 OR R4 R4 K27 + 0x80040800, // 0015 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ColorCycleColorProvider ********************************************************************/ extern const bclass be_class_ColorProvider; -be_local_class(CompositeColorProvider, - 1, +be_local_class(ColorCycleColorProvider, + 2, &be_class_ColorProvider, - be_nested_map(8, + be_nested_map(11, ( (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, + { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_ColorCycleColorProvider__get_color_at_index_closure) }, + { be_const_key_weak(_get_palette_size, -1), be_const_closure(class_ColorCycleColorProvider__get_palette_size_closure) }, + { be_const_key_weak(current_color, 6), be_const_var(0) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_ColorCycleColorProvider_tostring_closure) }, + { be_const_key_weak(_get_palette_bytes, 1), be_const_closure(class_ColorCycleColorProvider__get_palette_bytes_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ColorCycleColorProvider_on_param_changed_closure) }, + { be_const_key_weak(current_index, -1), 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(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(4, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(blend_mode, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(palette, 2), 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_bytes_instance(FF0000FFFF00FF00FFFF0000) }, + { be_const_key_weak(type, -1), be_nested_str_weak(bytes) }, })) ) } )) }, + { be_const_key_weak(palette_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(type, -1), be_nested_str_weak(int) }, + })) ) } )) }, + { 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(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(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_const_key_weak(init, -1), be_const_closure(class_ColorCycleColorProvider_init_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorCycleColorProvider_produce_value_closure) }, })), - be_str_weak(CompositeColorProvider) + be_str_weak(ColorCycleColorProvider) ); /******************************************************************** -** Solidified function: solid +** Solidified function: bounce ********************************************************************/ -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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: smooth -********************************************************************/ -be_local_closure(smooth, /* name */ +be_local_closure(bounce, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -15667,9 +15250,9 @@ be_local_closure(smooth, /* name */ /* 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), + /* K3 */ be_nested_str_weak(BOUNCE), }), - be_str_weak(smooth), + be_str_weak(bounce), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 @@ -15685,6 +15268,2029 @@ be_local_closure(smooth, /* name */ ); /*******************************************************************/ +// compact class 'AnimationEngine' ktab size: 60, total: 159 (saved 792 bytes) +static const bvalue be_ktab_class_AnimationEngine[60] = { + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(width), + /* K2 */ be_nested_str_weak(strip), + /* K3 */ be_nested_str_weak(set_pixel_color), + /* K4 */ be_nested_str_weak(frame_buffer), + /* K5 */ be_nested_str_weak(get_pixel_color), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(show), + /* K8 */ be_nested_str_weak(animations), + /* K9 */ be_nested_str_weak(name), + /* K10 */ be_nested_str_weak(stop), + /* K11 */ be_nested_str_weak(remove), + /* K12 */ be_nested_str_weak(sequence_managers), + /* K13 */ be_nested_str_weak(animation), + /* K14 */ be_nested_str_weak(SequenceManager), + /* K15 */ be_nested_str_weak(_add_sequence_manager), + /* K16 */ be_nested_str_weak(_add_animation), + /* K17 */ be_nested_str_weak(introspect), + /* K18 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), + /* K19 */ be_nested_str_weak(type_error), + /* K20 */ be_nested_str_weak(event_manager), + /* K21 */ be_nested_str_weak(_process_queued_events), + /* K22 */ be_nested_str_weak(resume), + /* K23 */ be_nested_str_weak(update), + /* K24 */ be_nested_str_weak(is_running), + /* K25 */ be_nested_str_weak(render_needed), + /* K26 */ be_nested_str_weak(_clear_strip), + /* K27 */ be_nested_str_weak(_render_animations), + /* K28 */ be_nested_str_weak(length), + /* K29 */ be_nested_str_weak(_handle_strip_length_change), + /* K30 */ be_nested_str_weak(find), + /* K31 */ be_nested_str_weak(push), + /* K32 */ be_nested_str_weak(_sort_animations), + /* K33 */ be_nested_str_weak(start), + /* K34 */ be_nested_str_weak(time_ms), + /* K35 */ be_nested_str_weak(clear), + /* K36 */ be_nested_str_weak(temp_buffer), + /* K37 */ be_nested_str_weak(render), + /* K38 */ be_nested_str_weak(post_render), + /* K39 */ be_nested_str_weak(blend_pixels), + /* K40 */ be_nested_str_weak(_output_to_strip), + /* K41 */ be_nested_str_weak(tasmota), + /* K42 */ be_nested_str_weak(millis), + /* K43 */ be_nested_str_weak(last_update), + /* K44 */ be_nested_str_weak(fast_loop_closure), + /* K45 */ be_nested_str_weak(add_fast_loop), + /* K46 */ be_nested_str_weak(remove_sequence_manager), + /* K47 */ be_nested_str_weak(remove_animation), + /* K48 */ be_nested_str_weak(Cannot_X20remove_X20object_X20of_X20type_X20_X27_X25s_X27_X20from_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), + /* K49 */ be_nested_str_weak(check_strip_length), + /* K50 */ be_nested_str_weak(can_show), + /* K51 */ be_nested_str_weak(_process_events), + /* K52 */ be_nested_str_weak(_update_and_render), + /* K53 */ be_nested_str_weak(remove_fast_loop), + /* K54 */ be_nested_str_weak(priority), + /* K55 */ be_nested_str_weak(stop_iteration), + /* K56 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), + /* K57 */ be_nested_str_weak(resize), + /* K58 */ be_nested_str_weak(value_error), + /* K59 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), +}; + + +extern const bclass be_class_AnimationEngine; + +/******************************************************************** +** 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 */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x14080202, // 0002 LT R2 R1 R2 + 0x780A0009, // 0003 JMPF R2 #000E + 0x88080102, // 0004 GETMBR R2 R0 K2 + 0x8C080503, // 0005 GETMET R2 R2 K3 + 0x5C100200, // 0006 MOVE R4 R1 + 0x88140104, // 0007 GETMBR R5 R0 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x7C140400, // 000A CALL R5 2 + 0x7C080600, // 000B CALL R2 3 + 0x00040306, // 000C ADD R1 R1 K6 + 0x7001FFF2, // 000D JMP #0001 + 0x88080102, // 000E GETMBR R2 R0 K2 + 0x8C080507, // 000F GETMET R2 R2 K7 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 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 */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100108, // 0002 GETMBR R4 R0 K8 + 0x7C0C0200, // 0003 CALL R3 1 + 0x140C0403, // 0004 LT R3 R2 R3 + 0x780E0012, // 0005 JMPF R3 #0019 + 0x880C0108, // 0006 GETMBR R3 R0 K8 + 0x940C0602, // 0007 GETIDX R3 R3 R2 + 0x88100709, // 0008 GETMBR R4 R3 K9 + 0x4C140000, // 0009 LDNIL R5 + 0x20100805, // 000A NE R4 R4 R5 + 0x7812000A, // 000B JMPF R4 #0017 + 0x88100709, // 000C GETMBR R4 R3 K9 + 0x1C100801, // 000D EQ R4 R4 R1 + 0x78120007, // 000E JMPF R4 #0017 + 0x8C10070A, // 000F GETMET R4 R3 K10 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C100400, // 0011 CALL R4 2 + 0x88100108, // 0012 GETMBR R4 R0 K8 + 0x8C10090B, // 0013 GETMET R4 R4 K11 + 0x5C180400, // 0014 MOVE R6 R2 + 0x7C100400, // 0015 CALL R4 2 + 0x80000800, // 0016 RET 0 + 0x00080506, // 0017 ADD R2 R2 K6 + 0x7001FFE7, // 0018 JMP #0001 + 0x80000000, // 0019 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 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x8814010C, // 0003 GETMBR R5 R0 K12 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x8810010C, // 0007 GETMBR R4 R0 K12 + 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 + 0x000C0706, // 000D ADD R3 R3 K6 + 0x7001FFF2, // 000E JMP #0002 + 0x28100500, // 000F GE R4 R2 K0 + 0x78120005, // 0010 JMPF R4 #0017 + 0x8810010C, // 0011 GETMBR R4 R0 K12 + 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 +********************************************************************/ +be_local_closure(class_AnimationEngine_add, /* 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(add), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8121A00, // 0002 GETNGBL R4 K13 + 0x8810090E, // 0003 GETMBR R4 R4 K14 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C08010F, // 0006 GETMET R2 R0 K15 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020013, // 000A JMP #001F + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8121A00, // 000D GETNGBL R4 K13 + 0x8810090D, // 000E GETMBR R4 R4 K13 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C080110, // 0011 GETMET R2 R0 K16 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x70020008, // 0015 JMP #001F + 0xA40A2200, // 0016 IMPORT R2 K17 + 0x8C0C0509, // 0017 GETMET R3 R2 K9 + 0x5C140200, // 0018 MOVE R5 R1 + 0x7C0C0400, // 0019 CALL R3 2 + 0x60100018, // 001A GETGBL R4 G24 + 0x58140012, // 001B LDCONST R5 K18 + 0x5C180600, // 001C MOVE R6 R3 + 0x7C100400, // 001D CALL R4 2 + 0xB0062604, // 001E RAISE 1 K19 R4 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0xB80A1A00, // 0000 GETNGBL R2 K13 + 0x88080514, // 0001 GETMBR R2 R2 K20 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0xB80A1A00, // 0005 GETNGBL R2 K13 + 0x88080514, // 0006 GETMBR R2 R2 K20 + 0x8C080515, // 0007 GETMET R2 R2 K21 + 0x7C080200, // 0008 CALL R2 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: size +********************************************************************/ +be_local_closure(class_AnimationEngine_size, /* 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(size), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: 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 */ + 0x8C080116, // 0000 GETMET R2 R0 K22 + 0x7C080200, // 0001 CALL R2 1 + 0x80000000, // 0002 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 */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140108, // 0003 GETMBR R5 R0 K8 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120011, // 0006 JMPF R4 #0019 + 0x88100108, // 0007 GETMBR R4 R0 K8 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x8C140917, // 0009 GETMET R5 R4 K23 + 0x5C1C0200, // 000A MOVE R7 R1 + 0x7C140400, // 000B CALL R5 2 + 0x78160004, // 000C JMPF R5 #0012 + 0x88180918, // 000D GETMBR R6 R4 K24 + 0x781A0002, // 000E JMPF R6 #0012 + 0x00080506, // 000F ADD R2 R2 K6 + 0x000C0706, // 0010 ADD R3 R3 K6 + 0x70020005, // 0011 JMP #0018 + 0x88180108, // 0012 GETMBR R6 R0 K8 + 0x8C180D0B, // 0013 GETMET R6 R6 K11 + 0x5C200600, // 0014 MOVE R8 R3 + 0x7C180400, // 0015 CALL R6 2 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x90023206, // 0017 SETMBR R0 K25 R6 + 0x7001FFE8, // 0018 JMP #0002 + 0x1C100500, // 0019 EQ R4 R2 K0 + 0x78120006, // 001A JMPF R4 #0022 + 0x88100119, // 001B GETMBR R4 R0 K25 + 0x78120003, // 001C JMPF R4 #0021 + 0x8C10011A, // 001D GETMET R4 R0 K26 + 0x7C100200, // 001E CALL R4 1 + 0x50100000, // 001F LDBOOL R4 0 0 + 0x90023204, // 0020 SETMBR R0 K25 R4 + 0x80000800, // 0021 RET 0 + 0x8C10011B, // 0022 GETMET R4 R0 K27 + 0x88180108, // 0023 GETMBR R6 R0 K8 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C100600, // 0025 CALL R4 3 + 0x50100000, // 0026 LDBOOL R4 0 0 + 0x90023204, // 0027 SETMBR R0 K25 R4 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_strip_length +********************************************************************/ +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 */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C04031C, // 0001 GETMET R1 R1 K28 + 0x7C040200, // 0002 CALL R1 1 + 0x88080101, // 0003 GETMBR R2 R0 K1 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C08011D, // 0006 GETMET R2 R0 K29 + 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: _add_animation +********************************************************************/ +be_local_closure(class_AnimationEngine__add_animation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_add_animation), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C08051E, // 0001 GETMET R2 R2 K30 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A000F, // 0006 JMPF R2 #0017 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x8C08051F, // 0008 GETMET R2 R2 K31 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x8C080120, // 000B GETMET R2 R0 K32 + 0x7C080200, // 000C CALL R2 1 + 0x88080118, // 000D GETMBR R2 R0 K24 + 0x780A0002, // 000E JMPF R2 #0012 + 0x8C080321, // 000F GETMET R2 R1 K33 + 0x88100122, // 0010 GETMBR R4 R0 K34 + 0x7C080400, // 0011 CALL R2 2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90023202, // 0013 SETMBR R0 K25 R2 + 0x50080200, // 0014 LDBOOL R2 1 0 + 0x80040400, // 0015 RET 1 R2 + 0x70020001, // 0016 JMP #0019 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x80040400, // 0018 RET 1 R2 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_animation +********************************************************************/ +be_local_closure(class_AnimationEngine_remove_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(remove_animation), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x5409FFFE, // 0000 LDINT R2 -1 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140108, // 0003 GETMBR R5 R0 K8 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x88100108, // 0007 GETMBR R4 R0 K8 + 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 + 0x000C0706, // 000D ADD R3 R3 K6 + 0x7001FFF2, // 000E JMP #0002 + 0x28100500, // 000F GE R4 R2 K0 + 0x78120007, // 0010 JMPF R4 #0019 + 0x88100108, // 0011 GETMBR R4 R0 K8 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x90023204, // 0016 SETMBR R0 K25 R4 + 0x50100200, // 0017 LDBOOL R4 1 0 + 0x80040800, // 0018 RET 1 R4 + 0x50100000, // 0019 LDBOOL R4 0 0 + 0x80040800, // 001A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _render_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__render_animations, /* 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_AnimationEngine, /* shared constants */ + be_str_weak(_render_animations), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C0C0723, // 0001 GETMET R3 R3 K35 + 0x7C0C0200, // 0002 CALL R3 1 + 0x580C0000, // 0003 LDCONST R3 K0 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C100200, // 0006 CALL R4 1 + 0x14100604, // 0007 LT R4 R3 R4 + 0x78120012, // 0008 JMPF R4 #001C + 0x94100203, // 0009 GETIDX R4 R1 R3 + 0x88140124, // 000A GETMBR R5 R0 K36 + 0x8C140B23, // 000B GETMET R5 R5 K35 + 0x7C140200, // 000C CALL R5 1 + 0x8C140925, // 000D GETMET R5 R4 K37 + 0x881C0124, // 000E GETMBR R7 R0 K36 + 0x5C200400, // 000F MOVE R8 R2 + 0x7C140600, // 0010 CALL R5 3 + 0x78160007, // 0011 JMPF R5 #001A + 0x8C180926, // 0012 GETMET R6 R4 K38 + 0x88200124, // 0013 GETMBR R8 R0 K36 + 0x5C240400, // 0014 MOVE R9 R2 + 0x7C180600, // 0015 CALL R6 3 + 0x88180104, // 0016 GETMBR R6 R0 K4 + 0x8C180D27, // 0017 GETMET R6 R6 K39 + 0x88200124, // 0018 GETMBR R8 R0 K36 + 0x7C180400, // 0019 CALL R6 2 + 0x000C0706, // 001A ADD R3 R3 K6 + 0x7001FFE7, // 001B JMP #0004 + 0x8C100128, // 001C GETMET R4 R0 K40 + 0x7C100200, // 001D CALL R4 1 + 0x80000000, // 001E 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 */ + 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040123, // 0002 GETMET R1 R0 K35 + 0x7C040200, // 0003 CALL R1 1 + 0x4C040000, // 0004 LDNIL R1 + 0x90020801, // 0005 SETMBR R0 K4 R1 + 0x4C040000, // 0006 LDNIL R1 + 0x90024801, // 0007 SETMBR R0 K36 R1 + 0x4C040000, // 0008 LDNIL R1 + 0x90020401, // 0009 SETMBR R0 K2 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: run +********************************************************************/ +be_local_closure(class_AnimationEngine_run, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(on_tick), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x7C000200, // 0002 CALL R0 1 + 0x80040000, // 0003 RET 1 R0 + }) + ), + }), + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(run), + &be_const_str_solidified, + ( &(const binstruction[48]) { /* code */ + 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x7406002B, // 0001 JMPT R1 #002E + 0xB8065200, // 0002 GETNGBL R1 K41 + 0x8C04032A, // 0003 GETMET R1 R1 K42 + 0x7C040200, // 0004 CALL R1 1 + 0x50080200, // 0005 LDBOOL R2 1 0 + 0x90023002, // 0006 SETMBR R0 K24 R2 + 0x540A0009, // 0007 LDINT R2 10 + 0x04080202, // 0008 SUB R2 R1 R2 + 0x90025602, // 0009 SETMBR R0 K43 R2 + 0x8808012C, // 000A GETMBR R2 R0 K44 + 0x4C0C0000, // 000B LDNIL R3 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x780A0001, // 000D JMPF R2 #0010 + 0x84080000, // 000E CLOSURE R2 P0 + 0x90025802, // 000F SETMBR R0 K44 R2 + 0x58080000, // 0010 LDCONST R2 K0 + 0x600C000C, // 0011 GETGBL R3 G12 + 0x88100108, // 0012 GETMBR R4 R0 K8 + 0x7C0C0200, // 0013 CALL R3 1 + 0x140C0403, // 0014 LT R3 R2 R3 + 0x780E0006, // 0015 JMPF R3 #001D + 0x880C0108, // 0016 GETMBR R3 R0 K8 + 0x940C0602, // 0017 GETIDX R3 R3 R2 + 0x8C0C0721, // 0018 GETMET R3 R3 K33 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x00080506, // 001B ADD R2 R2 K6 + 0x7001FFF3, // 001C JMP #0011 + 0x58080000, // 001D LDCONST R2 K0 + 0x600C000C, // 001E GETGBL R3 G12 + 0x8810010C, // 001F GETMBR R4 R0 K12 + 0x7C0C0200, // 0020 CALL R3 1 + 0x140C0403, // 0021 LT R3 R2 R3 + 0x780E0006, // 0022 JMPF R3 #002A + 0x880C010C, // 0023 GETMBR R3 R0 K12 + 0x940C0602, // 0024 GETIDX R3 R3 R2 + 0x8C0C0721, // 0025 GETMET R3 R3 K33 + 0x5C140200, // 0026 MOVE R5 R1 + 0x7C0C0400, // 0027 CALL R3 2 + 0x00080506, // 0028 ADD R2 R2 K6 + 0x7001FFF3, // 0029 JMP #001E + 0xB80E5200, // 002A GETNGBL R3 K41 + 0x8C0C072D, // 002B GETMET R3 R3 K45 + 0x8814012C, // 002C GETMBR R5 R0 K44 + 0x7C0C0400, // 002D CALL R3 2 + 0xA0000000, // 002E CLOSE R0 + 0x80040000, // 002F RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove +********************************************************************/ +be_local_closure(class_AnimationEngine_remove, /* 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(remove), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8121A00, // 0002 GETNGBL R4 K13 + 0x8810090E, // 0003 GETMBR R4 R4 K14 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C08012E, // 0006 GETMET R2 R0 K46 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020011, // 000A JMP #001D + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8121A00, // 000D GETNGBL R4 K13 + 0x8810090D, // 000E GETMBR R4 R4 K13 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C08012F, // 0011 GETMET R2 R0 K47 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x70020006, // 0015 JMP #001D + 0x60080018, // 0016 GETGBL R2 G24 + 0x580C0030, // 0017 LDCONST R3 K48 + 0x60100005, // 0018 GETGBL R4 G5 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C100200, // 001A CALL R4 1 + 0x7C080400, // 001B CALL R2 2 + 0xB0062602, // 001C RAISE 1 K19 R2 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[54]) { /* code */ + 0x88080118, // 0000 GETMBR R2 R0 K24 + 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 + 0xB80A5200, // 0007 GETNGBL R2 K41 + 0x8C08052A, // 0008 GETMET R2 R2 K42 + 0x7C080200, // 0009 CALL R2 1 + 0x5C040400, // 000A MOVE R1 R2 + 0x8C080131, // 000B GETMET R2 R0 K49 + 0x7C080200, // 000C CALL R2 1 + 0x90024401, // 000D SETMBR R0 K34 R1 + 0x8808012B, // 000E GETMBR R2 R0 K43 + 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 + 0x90025601, // 0015 SETMBR R0 K43 R1 + 0x880C0102, // 0016 GETMBR R3 R0 K2 + 0x880C0732, // 0017 GETMBR R3 R3 K50 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E0005, // 001A JMPF R3 #0021 + 0x880C0102, // 001B GETMBR R3 R0 K2 + 0x8C0C0732, // 001C GETMET R3 R3 K50 + 0x7C0C0200, // 001D CALL R3 1 + 0x740E0001, // 001E JMPT R3 #0021 + 0x500C0200, // 001F LDBOOL R3 1 0 + 0x80040600, // 0020 RET 1 R3 + 0x580C0000, // 0021 LDCONST R3 K0 + 0x6010000C, // 0022 GETGBL R4 G12 + 0x8814010C, // 0023 GETMBR R5 R0 K12 + 0x7C100200, // 0024 CALL R4 1 + 0x14100604, // 0025 LT R4 R3 R4 + 0x78120006, // 0026 JMPF R4 #002E + 0x8810010C, // 0027 GETMBR R4 R0 K12 + 0x94100803, // 0028 GETIDX R4 R4 R3 + 0x8C100917, // 0029 GETMET R4 R4 K23 + 0x5C180200, // 002A MOVE R6 R1 + 0x7C100400, // 002B CALL R4 2 + 0x000C0706, // 002C ADD R3 R3 K6 + 0x7001FFF3, // 002D JMP #0022 + 0x8C100133, // 002E GETMET R4 R0 K51 + 0x5C180200, // 002F MOVE R6 R1 + 0x7C100400, // 0030 CALL R4 2 + 0x8C100134, // 0031 GETMET R4 R0 K52 + 0x5C180200, // 0032 MOVE R6 R1 + 0x7C100400, // 0033 CALL R4 2 + 0x50100200, // 0034 LDBOOL R4 1 0 + 0x80040800, // 0035 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 */ + 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x78060009, // 0001 JMPF R1 #000C + 0x50040000, // 0002 LDBOOL R1 0 0 + 0x90023001, // 0003 SETMBR R0 K24 R1 + 0x8804012C, // 0004 GETMBR R1 R0 K44 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060003, // 0007 JMPF R1 #000C + 0xB8065200, // 0008 GETNGBL R1 K41 + 0x8C040335, // 0009 GETMET R1 R1 K53 + 0x880C012C, // 000A GETMBR R3 R0 K44 + 0x7C040400, // 000B CALL R1 2 + 0x80040000, // 000C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x18080306, // 0003 LE R2 R1 K6 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x58080006, // 0006 LDCONST R2 K6 + 0x140C0401, // 0007 LT R3 R2 R1 + 0x780E0016, // 0008 JMPF R3 #0020 + 0x880C0108, // 0009 GETMBR R3 R0 K8 + 0x940C0602, // 000A GETIDX R3 R3 R2 + 0x5C100400, // 000B MOVE R4 R2 + 0x24140900, // 000C GT R5 R4 K0 + 0x7816000D, // 000D JMPF R5 #001C + 0x04140906, // 000E SUB R5 R4 K6 + 0x88180108, // 000F GETMBR R6 R0 K8 + 0x94140C05, // 0010 GETIDX R5 R6 R5 + 0x88140B36, // 0011 GETMBR R5 R5 K54 + 0x88180736, // 0012 GETMBR R6 R3 K54 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160006, // 0014 JMPF R5 #001C + 0x88140108, // 0015 GETMBR R5 R0 K8 + 0x04180906, // 0016 SUB R6 R4 K6 + 0x881C0108, // 0017 GETMBR R7 R0 K8 + 0x94180E06, // 0018 GETIDX R6 R7 R6 + 0x98140806, // 0019 SETIDX R5 R4 R6 + 0x04100906, // 001A SUB R4 R4 K6 + 0x7001FFEF, // 001B JMP #000C + 0x88140108, // 001C GETMBR R5 R0 K8 + 0x98140803, // 001D SETIDX R5 R4 R3 + 0x00080506, // 001E ADD R2 R2 K6 + 0x7001FFE6, // 001F JMP #0007 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C08051F, // 0001 GETMET R2 R2 K31 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _clear_strip +********************************************************************/ +be_local_closure(class_AnimationEngine__clear_strip, /* 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(_clear_strip), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040323, // 0001 GETMET R1 R1 K35 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040307, // 0004 GETMET R1 R1 K7 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0xA8020006, // 0003 EXBLK 0 #000B + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x880C0518, // 0006 GETMBR R3 R2 K24 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C050A, // 0008 GETMET R3 R2 K10 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7001FFF8, // 000A JMP #0004 + 0x58040037, // 000B LDCONST R1 K55 + 0xAC040200, // 000C CATCH R1 1 0 + 0xB0080000, // 000D RAISE 2 R0 R0 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resume +********************************************************************/ +be_local_closure(class_AnimationEngine_resume, /* 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(resume), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x74060001, // 0001 JMPT R1 #0004 + 0x8C040121, // 0002 GETMET R1 R0 K33 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 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 + 0x90021001, // 0002 SETMBR R0 K8 R1 + 0x58040000, // 0003 LDCONST R1 K0 + 0x6008000C, // 0004 GETGBL R2 G12 + 0x880C010C, // 0005 GETMBR R3 R0 K12 + 0x7C080200, // 0006 CALL R2 1 + 0x14080202, // 0007 LT R2 R1 R2 + 0x780A0005, // 0008 JMPF R2 #000F + 0x8808010C, // 0009 GETMBR R2 R0 K12 + 0x94080401, // 000A GETIDX R2 R2 R1 + 0x8C08050A, // 000B GETMET R2 R2 K10 + 0x7C080200, // 000C CALL R2 1 + 0x00040306, // 000D ADD R1 R1 K6 + 0x7001FFF4, // 000E JMP #0004 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90021802, // 0011 SETMBR R0 K12 R2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90023202, // 0013 SETMBR R0 K25 R2 + 0x80040000, // 0014 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8C040123, // 0000 GETMET R1 R0 K35 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0x58080038, // 0001 LDCONST R2 K56 + 0x880C0118, // 0002 GETMBR R3 R0 K24 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x88140108, // 0004 GETMBR R5 R0 K8 + 0x7C100200, // 0005 CALL R4 1 + 0x88140101, // 0006 GETMBR R5 R0 K1 + 0x7C040800, // 0007 CALL R1 4 + 0x80040200, // 0008 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 */ + 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(_handle_strip_length_change), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x90020201, // 0003 SETMBR R0 K1 R1 + 0x88080104, // 0004 GETMBR R2 R0 K4 + 0x8C080539, // 0005 GETMET R2 R2 K57 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080124, // 0008 GETMBR R2 R0 K36 + 0x8C080539, // 0009 GETMET R2 R2 K57 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x90023202, // 000D SETMBR R0 K25 R2 + 0x80000000, // 000E 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 + 0xB006753B, // 0003 RAISE 1 K58 K59 + 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x8C08031C, // 0005 GETMET R2 R1 K28 + 0x7C080200, // 0006 CALL R2 1 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90021002, // 000A SETMBR R0 K8 R2 + 0x60080012, // 000B GETGBL R2 G18 + 0x7C080000, // 000C CALL R2 0 + 0x90021802, // 000D SETMBR R0 K12 R2 + 0xB80A1A00, // 000E GETNGBL R2 K13 + 0x8C080504, // 000F GETMET R2 R2 K4 + 0x88100101, // 0010 GETMBR R4 R0 K1 + 0x7C080400, // 0011 CALL R2 2 + 0x90020802, // 0012 SETMBR R0 K4 R2 + 0xB80A1A00, // 0013 GETNGBL R2 K13 + 0x8C080504, // 0014 GETMET R2 R2 K4 + 0x88100101, // 0015 GETMBR R4 R0 K1 + 0x7C080400, // 0016 CALL R2 2 + 0x90024802, // 0017 SETMBR R0 K36 R2 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x90023002, // 0019 SETMBR R0 K24 R2 + 0x90025700, // 001A SETMBR R0 K43 K0 + 0x90024500, // 001B SETMBR R0 K34 K0 + 0x4C080000, // 001C LDNIL R2 + 0x90025802, // 001D SETMBR R0 K44 R2 + 0x50080000, // 001E LDBOOL R2 0 0 + 0x90023202, // 001F SETMBR R0 K25 R2 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8C040131, // 0000 GETMET R1 R0 K49 + 0x7C040200, // 0001 CALL R1 1 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x88040118, // 0000 GETMBR R1 R0 K24 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: AnimationEngine +********************************************************************/ +be_local_class(AnimationEngine, + 11, + NULL, + be_nested_map(42, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_output_to_strip, 34), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, + { be_const_key_weak(interrupt_animation, -1), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, + { be_const_key_weak(check_strip_length, -1), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, + { be_const_key_weak(remove_sequence_manager, 32), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, + { be_const_key_weak(add, 9), be_const_closure(class_AnimationEngine_add_closure) }, + { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, + { be_const_key_weak(size, -1), be_const_closure(class_AnimationEngine_size_closure) }, + { be_const_key_weak(resume_after, 2), be_const_closure(class_AnimationEngine_resume_after_closure) }, + { be_const_key_weak(_add_animation, -1), 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(_update_and_render, 22), be_const_closure(class_AnimationEngine__update_and_render_closure) }, + { be_const_key_weak(is_active, -1), be_const_closure(class_AnimationEngine_is_active_closure) }, + { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, + { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, + { be_const_key_weak(run, 24), be_const_closure(class_AnimationEngine_run_closure) }, + { be_const_key_weak(remove, -1), be_const_closure(class_AnimationEngine_remove_closure) }, + { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, + { be_const_key_weak(is_running, -1), be_const_var(6) }, + { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, + { be_const_key_weak(get_strip_length, 30), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, + { be_const_key_weak(time_ms, -1), be_const_var(8) }, + { be_const_key_weak(interrupt_current, 8), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, + { be_const_key_weak(sequence_managers, -1), be_const_var(3) }, + { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, + { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_AnimationEngine__add_sequence_manager_closure) }, + { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, + { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, + { be_const_key_weak(_sort_animations, 27), be_const_closure(class_AnimationEngine__sort_animations_closure) }, + { be_const_key_weak(width, -1), be_const_var(1) }, + { be_const_key_weak(last_update, 23), be_const_var(7) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_AnimationEngine_tostring_closure) }, + { be_const_key_weak(strip, 25), be_const_var(0) }, + { be_const_key_weak(init, 21), be_const_closure(class_AnimationEngine_init_closure) }, + { be_const_key_weak(animations, -1), be_const_var(2) }, + { be_const_key_weak(frame_buffer, 20), be_const_var(4) }, + { be_const_key_weak(get_strip, 19), be_const_closure(class_AnimationEngine_get_strip_closure) }, + { be_const_key_weak(_handle_strip_length_change, 18), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, + { be_const_key_weak(_clear_strip, 11), be_const_closure(class_AnimationEngine__clear_strip_closure) }, + { be_const_key_weak(render_needed, -1), be_const_var(10) }, + { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, + { be_const_key_weak(get_animations, -1), be_const_closure(class_AnimationEngine_get_animations_closure) }, + })), + be_str_weak(AnimationEngine) +); +// compact class 'TwinkleAnimation' ktab size: 39, total: 67 (saved 224 bytes) +static const bvalue be_ktab_class_TwinkleAnimation[39] = { + /* K0 */ be_nested_str_weak(on_param_changed), + /* K1 */ be_nested_str_weak(twinkle_speed), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(set_param), + /* K4 */ be_nested_str_weak(fade_speed), + /* K5 */ be_nested_str_weak(density), + /* K6 */ be_nested_str_weak(min_brightness), + /* K7 */ be_nested_str_weak(max_brightness), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_nested_str_weak(engine), + /* K10 */ be_nested_str_weak(get_strip_length), + /* K11 */ be_nested_str_weak(twinkle_states), + /* K12 */ be_nested_str_weak(_initialize_arrays), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(current_colors), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(scale_uint), + /* K17 */ be_const_int(16777215), + /* K18 */ be_nested_str_weak(_random_range), + /* K19 */ be_nested_str_weak(get_param), + /* K20 */ be_nested_str_weak(animation), + /* K21 */ be_nested_str_weak(is_value_provider), + /* K22 */ be_nested_str_weak(0x_X2508x), + /* K23 */ 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), + /* K24 */ be_nested_str_weak(priority), + /* K25 */ be_nested_str_weak(is_running), + /* K26 */ be_nested_str_weak(init), + /* K27 */ be_nested_str_weak(last_update), + /* K28 */ be_nested_str_weak(random_seed), + /* K29 */ be_nested_str_weak(time_ms), + /* K30 */ be_nested_str_weak(_fix_time_ms), + /* K31 */ be_nested_str_weak(width), + /* K32 */ be_nested_str_weak(set_pixel_color), + /* K33 */ be_nested_str_weak(update), + /* K34 */ be_nested_str_weak(_update_twinkle_simulation), + /* K35 */ be_nested_str_weak(resize), + /* K36 */ be_const_int(1103515245), + /* K37 */ be_const_int(2147483647), + /* K38 */ 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[27]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x780E0010, // 0008 JMPF R3 #001A + 0x540E0031, // 0009 LDINT R3 50 + 0x280C0403, // 000A GE R3 R2 R3 + 0x780E000D, // 000B JMPF R3 #001A + 0x540E03E7, // 000C LDINT R3 1000 + 0x0C0C0602, // 000D DIV R3 R3 R2 + 0x14100702, // 000E LT R4 R3 K2 + 0x78120001, // 000F JMPF R4 #0012 + 0x580C0002, // 0010 LDCONST R3 K2 + 0x70020003, // 0011 JMP #0016 + 0x54120013, // 0012 LDINT R4 20 + 0x24100604, // 0013 GT R4 R3 R4 + 0x78120000, // 0014 JMPF R4 #0016 + 0x540E0013, // 0015 LDINT R3 20 + 0x8C100103, // 0016 GETMET R4 R0 K3 + 0x58180001, // 0017 LDCONST R6 K1 + 0x5C1C0600, // 0018 MOVE R7 R3 + 0x7C100600, // 0019 CALL R4 3 + 0x80000000, // 001A 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 */ + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x880C0105, // 0001 GETMBR R3 R0 K5 + 0x88100106, // 0002 GETMBR R4 R0 K6 + 0x88140107, // 0003 GETMBR R5 R0 K7 + 0x88180108, // 0004 GETMBR R6 R0 K8 + 0x881C0109, // 0005 GETMBR R7 R0 K9 + 0x8C1C0F0A, // 0006 GETMET R7 R7 K10 + 0x7C1C0200, // 0007 CALL R7 1 + 0x6020000C, // 0008 GETGBL R8 G12 + 0x8824010B, // 0009 GETMBR R9 R0 K11 + 0x7C200200, // 000A CALL R8 1 + 0x20201007, // 000B NE R8 R8 R7 + 0x78220001, // 000C JMPF R8 #000F + 0x8C20010C, // 000D GETMET R8 R0 K12 + 0x7C200200, // 000E CALL R8 1 + 0x5820000D, // 000F LDCONST R8 K13 + 0x14241007, // 0010 LT R9 R8 R7 + 0x7826001F, // 0011 JMPF R9 #0032 + 0x8824010E, // 0012 GETMBR R9 R0 K14 + 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 + 0x242C150D, // 0018 GT R11 R10 K13 + 0x782E0015, // 0019 JMPF R11 #0030 + 0xB82E1E00, // 001A GETNGBL R11 K15 + 0x8C2C1710, // 001B GETMET R11 R11 K16 + 0x5C340400, // 001C MOVE R13 R2 + 0x5838000D, // 001D LDCONST R14 K13 + 0x543E00FE, // 001E LDINT R15 255 + 0x58400002, // 001F LDCONST R16 K2 + 0x54460013, // 0020 LDINT R17 20 + 0x7C2C0C00, // 0021 CALL R11 6 + 0x1830140B, // 0022 LE R12 R10 R11 + 0x78320004, // 0023 JMPF R12 #0029 + 0x8830010B, // 0024 GETMBR R12 R0 K11 + 0x9830110D, // 0025 SETIDX R12 R8 K13 + 0x8830010E, // 0026 GETMBR R12 R0 K14 + 0x9830110D, // 0027 SETIDX R12 R8 K13 + 0x70020006, // 0028 JMP #0030 + 0x0430140B, // 0029 SUB R12 R10 R11 + 0x2C341311, // 002A AND R13 R9 K17 + 0x8838010E, // 002B GETMBR R14 R0 K14 + 0x543E0017, // 002C LDINT R15 24 + 0x383C180F, // 002D SHL R15 R12 R15 + 0x303C1E0D, // 002E OR R15 R15 R13 + 0x9838100F, // 002F SETIDX R14 R8 R15 + 0x00201102, // 0030 ADD R8 R8 K2 + 0x7001FFDD, // 0031 JMP #0010 + 0x5824000D, // 0032 LDCONST R9 K13 + 0x14281207, // 0033 LT R10 R9 R7 + 0x782A0027, // 0034 JMPF R10 #005D + 0x8828010B, // 0035 GETMBR R10 R0 K11 + 0x94281409, // 0036 GETIDX R10 R10 R9 + 0x1C28150D, // 0037 EQ R10 R10 K13 + 0x782A0021, // 0038 JMPF R10 #005B + 0x8C280112, // 0039 GETMET R10 R0 K18 + 0x543200FE, // 003A LDINT R12 255 + 0x7C280400, // 003B CALL R10 2 + 0x14281403, // 003C LT R10 R10 R3 + 0x782A001C, // 003D JMPF R10 #005B + 0x8C280112, // 003E GETMET R10 R0 K18 + 0x04300A04, // 003F SUB R12 R5 R4 + 0x00301902, // 0040 ADD R12 R12 K2 + 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 + 0x883C010B, // 004E GETMBR R15 R0 K11 + 0x983C1302, // 004F SETIDX R15 R9 K2 + 0x883C010E, // 0050 GETMBR R15 R0 K14 + 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 + 0x00241302, // 005B ADD R9 R9 K2 + 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 + 0x8C080113, // 0001 GETMET R2 R0 K19 + 0x58100008, // 0002 LDCONST R4 K8 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E2800, // 0004 GETNGBL R3 K20 + 0x8C0C0715, // 0005 GETMET R3 R3 K21 + 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 + 0x58100016, // 000F LDCONST R4 K22 + 0x88140108, // 0010 GETMBR R5 R0 K8 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x58100017, // 0014 LDCONST R4 K23 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180105, // 0016 GETMBR R6 R0 K5 + 0x881C0101, // 0017 GETMBR R7 R0 K1 + 0x88200118, // 0018 GETMBR R8 R0 K24 + 0x88240119, // 0019 GETMBR R9 R0 K25 + 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 + 0x8C08051A, // 0003 GETMET R2 R2 K26 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080012, // 0006 GETGBL R2 G18 + 0x7C080000, // 0007 CALL R2 0 + 0x90021602, // 0008 SETMBR R0 K11 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90021C02, // 000B SETMBR R0 K14 R2 + 0x9002370D, // 000C SETMBR R0 K27 K13 + 0x88080109, // 000D GETMBR R2 R0 K9 + 0x8808051D, // 000E GETMBR R2 R2 K29 + 0x540EFFFF, // 000F LDINT R3 65536 + 0x10080403, // 0010 MOD R2 R2 R3 + 0x90023802, // 0011 SETMBR R0 K28 R2 + 0x8C08010C, // 0012 GETMET R2 R0 K12 + 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[44]) { /* code */ + 0x880C0119, // 0000 GETMBR R3 R0 K25 + 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 + 0x8C0C011E, // 0007 GETMET R3 R0 K30 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0109, // 000B GETMBR R3 R0 K9 + 0x8C0C070A, // 000C GETMET R3 R3 K10 + 0x7C0C0200, // 000D CALL R3 1 + 0x6010000C, // 000E GETGBL R4 G12 + 0x8814010B, // 000F GETMBR R5 R0 K11 + 0x7C100200, // 0010 CALL R4 1 + 0x20100803, // 0011 NE R4 R4 R3 + 0x78120001, // 0012 JMPF R4 #0015 + 0x8C10010C, // 0013 GETMET R4 R0 K12 + 0x7C100200, // 0014 CALL R4 1 + 0x50100000, // 0015 LDBOOL R4 0 0 + 0x5814000D, // 0016 LDCONST R5 K13 + 0x14180A03, // 0017 LT R6 R5 R3 + 0x781A0011, // 0018 JMPF R6 #002B + 0x8818031F, // 0019 GETMBR R6 R1 K31 + 0x14180A06, // 001A LT R6 R5 R6 + 0x781A000C, // 001B JMPF R6 #0029 + 0x8818010E, // 001C GETMBR R6 R0 K14 + 0x94180C05, // 001D GETIDX R6 R6 R5 + 0x541E0017, // 001E LDINT R7 24 + 0x3C1C0C07, // 001F SHR R7 R6 R7 + 0x542200FE, // 0020 LDINT R8 255 + 0x2C1C0E08, // 0021 AND R7 R7 R8 + 0x241C0F0D, // 0022 GT R7 R7 K13 + 0x781E0004, // 0023 JMPF R7 #0029 + 0x8C1C0320, // 0024 GETMET R7 R1 K32 + 0x5C240A00, // 0025 MOVE R9 R5 + 0x5C280C00, // 0026 MOVE R10 R6 + 0x7C1C0600, // 0027 CALL R7 3 + 0x50100200, // 0028 LDBOOL R4 1 0 + 0x00140B02, // 0029 ADD R5 R5 K2 + 0x7001FFEB, // 002A JMP #0017 + 0x80040800, // 002B 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[26]) { /* 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 + 0x740A0001, // 0006 JMPT R2 #0009 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0x8C08011E, // 0009 GETMET R2 R0 K30 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x5C040400, // 000C MOVE R1 R2 + 0x88080101, // 000D GETMBR R2 R0 K1 + 0x540E03E7, // 000E LDINT R3 1000 + 0x0C0C0602, // 000F DIV R3 R3 R2 + 0x8810011B, // 0010 GETMBR R4 R0 K27 + 0x04100204, // 0011 SUB R4 R1 R4 + 0x28100803, // 0012 GE R4 R4 R3 + 0x78120003, // 0013 JMPF R4 #0018 + 0x90023601, // 0014 SETMBR R0 K27 R1 + 0x8C100122, // 0015 GETMET R4 R0 K34 + 0x5C180200, // 0016 MOVE R6 R1 + 0x7C100400, // 0017 CALL R4 2 + 0x50100200, // 0018 LDBOOL R4 1 0 + 0x80040800, // 0019 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 */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C04030A, // 0001 GETMET R1 R1 K10 + 0x7C040200, // 0002 CALL R1 1 + 0x8808010B, // 0003 GETMBR R2 R0 K11 + 0x8C080523, // 0004 GETMET R2 R2 K35 + 0x5C100200, // 0005 MOVE R4 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x8808010E, // 0007 GETMBR R2 R0 K14 + 0x8C080523, // 0008 GETMET R2 R2 K35 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x5808000D, // 000B LDCONST R2 K13 + 0x140C0401, // 000C LT R3 R2 R1 + 0x780E0005, // 000D JMPF R3 #0014 + 0x880C010B, // 000E GETMBR R3 R0 K11 + 0x980C050D, // 000F SETIDX R3 R2 K13 + 0x880C010E, // 0010 GETMBR R3 R0 K14 + 0x980C050D, // 0011 SETIDX R3 R2 K13 + 0x00080502, // 0012 ADD R2 R2 K2 + 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 */ + 0x8804011C, // 0000 GETMBR R1 R0 K28 + 0x08040324, // 0001 MUL R1 R1 K36 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040325, // 0004 AND R1 R1 K37 + 0x90023801, // 0005 SETMBR R0 K28 R1 + 0x8804011C, // 0006 GETMBR R1 R0 K28 + 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 */ + 0x1808030D, // 0000 LE R2 R1 K13 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80061A00, // 0002 RET 1 K13 + 0x8C080126, // 0003 GETMET R2 R0 K38 + 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) +); /******************************************************************** ** Solidified function: cosine_osc @@ -15786,8 +17392,8 @@ be_local_closure(get_event_handlers, /* name */ ); /*******************************************************************/ -// compact class 'WaveAnimation' ktab size: 41, total: 69 (saved 224 bytes) -static const bvalue be_ktab_class_WaveAnimation[41] = { +// compact class 'WaveAnimation' ktab size: 43, total: 71 (saved 224 bytes) +static const bvalue be_ktab_class_WaveAnimation[43] = { /* K0 */ be_nested_str_weak(wave_table), /* K1 */ be_nested_str_weak(resize), /* K2 */ be_nested_str_weak(wave_type), @@ -15810,25 +17416,27 @@ static const bvalue be_ktab_class_WaveAnimation[41] = { /* 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), + /* K22 */ be_nested_str_weak(_fix_time_ms), + /* K23 */ be_nested_str_weak(engine), + /* K24 */ be_nested_str_weak(get_strip_length), + /* K25 */ be_nested_str_weak(width), + /* K26 */ be_nested_str_weak(current_colors), + /* K27 */ be_nested_str_weak(size), + /* K28 */ be_nested_str_weak(set_pixel_color), + /* K29 */ be_nested_str_weak(on_param_changed), + /* K30 */ be_nested_str_weak(_init_wave_table), + /* K31 */ be_nested_str_weak(update), + /* K32 */ be_nested_str_weak(start_time), + /* K33 */ be_nested_str_weak(time_offset), + /* K34 */ be_nested_str_weak(_calculate_wave), + /* K35 */ be_nested_str_weak(init), + /* K36 */ be_nested_str_weak(phase), + /* K37 */ be_nested_str_weak(amplitude), + /* K38 */ be_nested_str_weak(center_level), + /* K39 */ be_nested_str_weak(back_color), + /* K40 */ be_nested_str_weak(is_color_provider), + /* K41 */ be_nested_str_weak(get_color_for_value), + /* K42 */ be_nested_str_weak(resolve_value), }; @@ -16045,7 +17653,7 @@ be_local_closure(class_WaveAnimation_render, /* name */ &be_ktab_class_WaveAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[34]) { /* code */ 0x880C0115, // 0000 GETMBR R3 R0 K21 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -16053,29 +17661,33 @@ be_local_closure(class_WaveAnimation_render, /* name */ 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 + 0x8C0C0116, // 0007 GETMET R3 R0 K22 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0117, // 000B GETMBR R3 R0 K23 + 0x8C0C0718, // 000C GETMET R3 R3 K24 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100003, // 000E LDCONST R4 K3 + 0x14140803, // 000F LT R5 R4 R3 + 0x7816000E, // 0010 JMPF R5 #0020 + 0x88140319, // 0011 GETMBR R5 R1 K25 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160009, // 0013 JMPF R5 #001E + 0x8814011A, // 0014 GETMBR R5 R0 K26 + 0x8C140B1B, // 0015 GETMET R5 R5 K27 + 0x7C140200, // 0016 CALL R5 1 + 0x14140805, // 0017 LT R5 R4 R5 + 0x78160004, // 0018 JMPF R5 #001E + 0x8C14031C, // 0019 GETMET R5 R1 K28 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x8820011A, // 001B GETMBR R8 R0 K26 + 0x94201004, // 001C GETIDX R8 R8 R4 + 0x7C140600, // 001D CALL R5 3 + 0x00100906, // 001E ADD R4 R4 K6 + 0x7001FFEE, // 001F JMP #000F + 0x50140200, // 0020 LDBOOL R5 1 0 + 0x80040A00, // 0021 RET 1 R5 }) ) ); @@ -16087,7 +17699,7 @@ be_local_closure(class_WaveAnimation_render, /* name */ ********************************************************************/ be_local_closure(class_WaveAnimation_on_param_changed, /* name */ be_nested_proto( - 5, /* nstack */ + 7, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16098,12 +17710,19 @@ be_local_closure(class_WaveAnimation_on_param_changed, /* name */ &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 + ( &(const binstruction[12]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C071D, // 0003 GETMET R3 R3 K29 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x780E0001, // 0008 JMPF R3 #000B + 0x8C0C011E, // 0009 GETMET R3 R0 K30 + 0x7C0C0200, // 000A CALL R3 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -16130,7 +17749,7 @@ be_local_closure(class_WaveAnimation_update, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08051D, // 0003 GETMET R2 R2 K29 + 0x8C08051F, // 0003 GETMET R2 R2 K31 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x740A0001, // 0006 JMPT R2 #0009 @@ -16139,7 +17758,7 @@ be_local_closure(class_WaveAnimation_update, /* name */ 0x88080113, // 0009 GETMBR R2 R0 K19 0x240C0503, // 000A GT R3 R2 K3 0x780E0011, // 000B JMPF R3 #001E - 0x880C011E, // 000C GETMBR R3 R0 K30 + 0x880C0120, // 000C GETMBR R3 R0 K32 0x040C0203, // 000D SUB R3 R1 R3 0xB8120800, // 000E GETNGBL R4 K4 0x8C100905, // 000F GETMET R4 R4 K5 @@ -16156,8 +17775,8 @@ be_local_closure(class_WaveAnimation_update, /* name */ 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 + 0x90024205, // 001D SETMBR R0 K33 R5 + 0x8C0C0122, // 001E GETMET R3 R0 K34 0x5C140200, // 001F MOVE R5 R1 0x7C0C0400, // 0020 CALL R3 2 0x500C0200, // 0021 LDBOOL R3 1 0 @@ -16188,17 +17807,17 @@ be_local_closure(class_WaveAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080521, // 0003 GETMET R2 R2 K33 + 0x8C080523, // 0003 GETMET R2 R2 K35 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 + 0x90023402, // 0008 SETMBR R0 K26 R2 + 0x90024303, // 0009 SETMBR R0 K33 K3 0x60080012, // 000A GETGBL R2 G18 0x7C080000, // 000B CALL R2 0 0x90020002, // 000C SETMBR R0 K0 R2 - 0x8C08011C, // 000D GETMET R2 R0 K28 + 0x8C08011E, // 000D GETMET R2 R0 K30 0x7C080200, // 000E CALL R2 1 0x80000000, // 000F RET 0 }) @@ -16224,21 +17843,21 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 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 + 0x88080117, // 0000 GETMBR R2 R0 K23 + 0x8C080518, // 0001 GETMET R2 R2 K24 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 + 0x88100124, // 0004 GETMBR R4 R0 K36 + 0x88140125, // 0005 GETMBR R5 R0 K37 + 0x88180126, // 0006 GETMBR R6 R0 K38 + 0x881C0127, // 0007 GETMBR R7 R0 K39 0x8820010D, // 0008 GETMBR R8 R0 K13 - 0x88240119, // 0009 GETMBR R9 R0 K25 - 0x8C24131A, // 000A GETMET R9 R9 K26 + 0x8824011A, // 0009 GETMBR R9 R0 K26 + 0x8C24131B, // 000A GETMET R9 R9 K27 0x7C240200, // 000B CALL R9 1 0x20241202, // 000C NE R9 R9 R2 0x78260003, // 000D JMPF R9 #0012 - 0x88240119, // 000E GETMBR R9 R0 K25 + 0x8824011A, // 000E GETMBR R9 R0 K26 0x8C241301, // 000F GETMET R9 R9 K1 0x5C2C0400, // 0010 MOVE R11 R2 0x7C240400, // 0011 CALL R9 2 @@ -16257,7 +17876,7 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x5432001F, // 001E LDINT R12 32 0x0C2C160C, // 001F DIV R11 R11 R12 0x002C1604, // 0020 ADD R11 R11 R4 - 0x8830011F, // 0021 GETMBR R12 R0 K31 + 0x88300121, // 0021 GETMBR R12 R0 K33 0x002C160C, // 0022 ADD R11 R11 R12 0x543200FE, // 0023 LDINT R12 255 0x2C2C160C, // 0024 AND R11 R11 R12 @@ -16315,21 +17934,21 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x24401C10, // 0058 GT R16 R14 R16 0x78420049, // 0059 JMPF R16 #00A4 0xB8421C00, // 005A GETNGBL R16 K14 - 0x8C402126, // 005B GETMET R16 R16 K38 + 0x8C402128, // 005B GETMET R16 R16 K40 0x5C481000, // 005C MOVE R18 R8 0x7C400400, // 005D CALL R16 2 0x78420009, // 005E JMPF R16 #0069 - 0x88401127, // 005F GETMBR R16 R8 K39 + 0x88401129, // 005F GETMBR R16 R8 K41 0x4C440000, // 0060 LDNIL R17 0x20402011, // 0061 NE R16 R16 R17 0x78420005, // 0062 JMPF R16 #0069 - 0x8C401127, // 0063 GETMET R16 R8 K39 + 0x8C401129, // 0063 GETMET R16 R8 K41 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 + 0x8C40012A, // 0069 GETMET R16 R0 K42 0x5C481000, // 006A MOVE R18 R8 0x584C000D, // 006B LDCONST R19 K13 0x54520009, // 006C LDINT R20 10 @@ -16388,7 +18007,7 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x30502815, // 00A1 OR R20 R20 R21 0x30502813, // 00A2 OR R20 R20 R19 0x5C3C2800, // 00A3 MOVE R15 R20 - 0x88400119, // 00A4 GETMBR R16 R0 K25 + 0x8840011A, // 00A4 GETMBR R16 R0 K26 0x9840120F, // 00A5 SETIDX R16 R9 R15 0x00241306, // 00A6 ADD R9 R9 K6 0x7001FF6A, // 00A7 JMP #0013 @@ -16477,295 +18096,40 @@ be_local_class(WaveAnimation, })), be_str_weak(WaveAnimation) ); -// 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 +** Solidified function: get_user_function ********************************************************************/ -be_local_closure(class_BreatheColorProvider_tostring, /* name */ +be_local_closure(get_user_function, /* name */ be_nested_proto( - 8, /* nstack */ + 4, /* nstack */ 1, /* argc */ - 10, /* varg */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_BreatheColorProvider, /* shared constants */ - be_str_weak(tostring), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), + /* K2 */ be_nested_str_weak(find), + }), + be_str_weak(get_user_function), &be_const_str_solidified, - ( &(const binstruction[ 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 + ( &(const binstruction[ 6]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040302, // 0002 GETMET R1 R1 K2 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 }) ) ); /*******************************************************************/ -/******************************************************************** -** Solidified function: 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) -); - /******************************************************************** ** Solidified function: noise_rainbow ********************************************************************/ @@ -17022,40 +18386,35 @@ be_local_class(EventHandler, })), be_str_weak(EventHandler) ); -// compact class 'Animation' ktab size: 32, total: 60 (saved 224 bytes) -static const bvalue be_ktab_class_Animation[32] = { +// compact class 'Animation' ktab size: 27, total: 38 (saved 88 bytes) +static const bvalue be_ktab_class_Animation[27] = { /* K0 */ be_nested_str_weak(get_param_value), /* K1 */ be_nested_str_weak(color), - /* K2 */ be_nested_str_weak(get_color_at), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(is_running), - /* K5 */ be_nested_str_weak(current_time), - /* K6 */ be_nested_str_weak(start_time), - /* K7 */ be_nested_str_weak(duration), - /* K8 */ be_nested_str_weak(loop), - /* K9 */ be_nested_str_weak(values), - /* K10 */ be_nested_str_weak(engine), - /* K11 */ be_nested_str_weak(time_ms), - /* K12 */ be_nested_str_weak(update), - /* K13 */ be_nested_str_weak(fill_pixels), - /* K14 */ be_nested_str_weak(_start_value_providers), - /* K15 */ be_nested_str_weak(opacity), - /* K16 */ be_nested_str_weak(_apply_opacity), - /* K17 */ be_nested_str_weak(animation), - /* K18 */ be_nested_str_weak(is_value_provider), - /* K19 */ be_nested_str_weak(start), - /* K20 */ be_nested_str_weak(stop_iteration), - /* K21 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K22 */ be_nested_str_weak(name), - /* K23 */ be_nested_str_weak(priority), - /* K24 */ be_nested_str_weak(opacity_frame), - /* K25 */ be_nested_str_weak(width), - /* K26 */ be_nested_str_weak(frame_buffer), - /* K27 */ be_nested_str_weak(clear), - /* K28 */ be_nested_str_weak(render), - /* K29 */ be_nested_str_weak(apply_opacity), - /* K30 */ be_nested_str_weak(int), - /* K31 */ be_nested_str_weak(init), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(opacity_frame), + /* K4 */ be_nested_str_weak(width), + /* K5 */ be_nested_str_weak(frame_buffer), + /* K6 */ be_nested_str_weak(clear), + /* K7 */ be_nested_str_weak(is_running), + /* K8 */ be_nested_str_weak(start), + /* K9 */ be_nested_str_weak(start_time), + /* K10 */ be_nested_str_weak(update), + /* K11 */ be_nested_str_weak(render), + /* K12 */ be_nested_str_weak(apply_opacity), + /* K13 */ be_nested_str_weak(int), + /* K14 */ be_nested_str_weak(_fix_time_ms), + /* K15 */ be_nested_str_weak(duration), + /* K16 */ be_nested_str_weak(loop), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(values), + /* K19 */ be_nested_str_weak(init), + /* K20 */ be_nested_str_weak(get_color_at), + /* K21 */ be_nested_str_weak(fill_pixels), + /* K22 */ be_nested_str_weak(opacity), + /* K23 */ be_nested_str_weak(_apply_opacity), + /* K24 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K25 */ be_nested_str_weak(name), + /* K26 */ be_nested_str_weak(priority), }; @@ -17090,12 +18449,12 @@ be_local_closure(class_Animation_get_color_at, /* name */ /******************************************************************** -** Solidified function: get_color +** Solidified function: _apply_opacity ********************************************************************/ -be_local_closure(class_Animation_get_color, /* name */ +be_local_closure(class_Animation__apply_opacity, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -17103,14 +18462,61 @@ be_local_closure(class_Animation_get_color, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(get_color), + be_str_weak(_apply_opacity), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080102, // 0000 GETMET R2 R0 K2 - 0x58100003, // 0001 LDCONST R4 K3 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[52]) { /* code */ + 0x6010000F, // 0000 GETGBL R4 G15 + 0x5C140400, // 0001 MOVE R5 R2 + 0xB81A0400, // 0002 GETNGBL R6 K2 + 0x88180D02, // 0003 GETMBR R6 R6 K2 + 0x7C100400, // 0004 CALL R4 2 + 0x78120021, // 0005 JMPF R4 #0028 + 0x5C100400, // 0006 MOVE R4 R2 + 0x88140103, // 0007 GETMBR R5 R0 K3 + 0x4C180000, // 0008 LDNIL R6 + 0x1C140A06, // 0009 EQ R5 R5 R6 + 0x74160004, // 000A JMPT R5 #0010 + 0x88140103, // 000B GETMBR R5 R0 K3 + 0x88140B04, // 000C GETMBR R5 R5 K4 + 0x88180304, // 000D GETMBR R6 R1 K4 + 0x20140A06, // 000E NE R5 R5 R6 + 0x78160004, // 000F JMPF R5 #0015 + 0xB8160400, // 0010 GETNGBL R5 K2 + 0x8C140B05, // 0011 GETMET R5 R5 K5 + 0x881C0304, // 0012 GETMBR R7 R1 K4 + 0x7C140400, // 0013 CALL R5 2 + 0x90020605, // 0014 SETMBR R0 K3 R5 + 0x88140103, // 0015 GETMBR R5 R0 K3 + 0x8C140B06, // 0016 GETMET R5 R5 K6 + 0x7C140200, // 0017 CALL R5 1 + 0x88140907, // 0018 GETMBR R5 R4 K7 + 0x74160002, // 0019 JMPT R5 #001D + 0x8C140908, // 001A GETMET R5 R4 K8 + 0x881C0109, // 001B GETMBR R7 R0 K9 + 0x7C140400, // 001C CALL R5 2 + 0x8C14090A, // 001D GETMET R5 R4 K10 + 0x5C1C0600, // 001E MOVE R7 R3 + 0x7C140400, // 001F CALL R5 2 + 0x8C14090B, // 0020 GETMET R5 R4 K11 + 0x881C0103, // 0021 GETMBR R7 R0 K3 + 0x5C200600, // 0022 MOVE R8 R3 + 0x7C140600, // 0023 CALL R5 3 + 0x8C14030C, // 0024 GETMET R5 R1 K12 + 0x881C0103, // 0025 GETMBR R7 R0 K3 + 0x7C140400, // 0026 CALL R5 2 + 0x7002000A, // 0027 JMP #0033 + 0x60100004, // 0028 GETGBL R4 G4 + 0x5C140400, // 0029 MOVE R5 R2 + 0x7C100200, // 002A CALL R4 1 + 0x1C10090D, // 002B EQ R4 R4 K13 + 0x78120005, // 002C JMPF R4 #0033 + 0x541200FE, // 002D LDINT R4 255 + 0x14100404, // 002E LT R4 R2 R4 + 0x78120002, // 002F JMPF R4 #0033 + 0x8C10030C, // 0030 GETMET R4 R1 K12 + 0x5C180400, // 0031 MOVE R6 R2 + 0x7C100400, // 0032 CALL R4 2 + 0x80000000, // 0033 RET 0 }) ) ); @@ -17133,36 +18539,96 @@ be_local_closure(class_Animation_update, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x88080104, // 0000 GETMBR R2 R0 K4 - 0x5C0C0400, // 0001 MOVE R3 R2 - 0x740E0001, // 0002 JMPT R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x90020A01, // 0005 SETMBR R0 K5 R1 - 0x880C0105, // 0006 GETMBR R3 R0 K5 - 0x88100106, // 0007 GETMBR R4 R0 K6 - 0x040C0604, // 0008 SUB R3 R3 R4 - 0x88100107, // 0009 GETMBR R4 R0 K7 - 0x88140108, // 000A GETMBR R5 R0 K8 - 0x24180903, // 000B GT R6 R4 K3 - 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 - 0x881C0106, // 0011 GETMBR R7 R0 K6 - 0x08200C04, // 0012 MUL R8 R6 R4 - 0x001C0E08, // 0013 ADD R7 R7 R8 - 0x90020C07, // 0014 SETMBR R0 K6 R7 - 0x70020004, // 0015 JMP #001B - 0x88180109, // 0016 GETMBR R6 R0 K9 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x981A0807, // 0018 SETIDX R6 K4 R7 - 0x50180000, // 0019 LDBOOL R6 0 0 - 0x80040C00, // 001A RET 1 R6 - 0x50180200, // 001B LDBOOL R6 1 0 + ( &(const binstruction[31]) { /* code */ + 0x8C08010E, // 0000 GETMET R2 R0 K14 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x5C040400, // 0003 MOVE R1 R2 + 0x88080107, // 0004 GETMBR R2 R0 K7 + 0x5C0C0400, // 0005 MOVE R3 R2 + 0x740E0001, // 0006 JMPT R3 #0009 + 0x500C0000, // 0007 LDBOOL R3 0 0 + 0x80040600, // 0008 RET 1 R3 + 0x880C0109, // 0009 GETMBR R3 R0 K9 + 0x040C0203, // 000A SUB R3 R1 R3 + 0x8810010F, // 000B GETMBR R4 R0 K15 + 0x88140110, // 000C GETMBR R5 R0 K16 + 0x24180911, // 000D GT R6 R4 K17 + 0x781A000D, // 000E JMPF R6 #001D + 0x28180604, // 000F GE R6 R3 R4 + 0x781A000B, // 0010 JMPF R6 #001D + 0x78160005, // 0011 JMPF R5 #0018 + 0x0C180604, // 0012 DIV R6 R3 R4 + 0x881C0109, // 0013 GETMBR R7 R0 K9 + 0x08200C04, // 0014 MUL R8 R6 R4 + 0x001C0E08, // 0015 ADD R7 R7 R8 + 0x90021207, // 0016 SETMBR R0 K9 R7 + 0x70020004, // 0017 JMP #001D + 0x88180112, // 0018 GETMBR R6 R0 K18 + 0x501C0000, // 0019 LDBOOL R7 0 0 + 0x981A0E07, // 001A SETIDX R6 K7 R7 + 0x50180000, // 001B LDBOOL R6 0 0 0x80040C00, // 001C RET 1 R6 + 0x50180200, // 001D LDBOOL R6 1 0 + 0x80040C00, // 001E RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_Animation_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_Animation, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080513, // 0003 GETMET R2 R2 K19 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ + 0x8C080114, // 0000 GETMET R2 R0 K20 + 0x58100011, // 0001 LDCONST R4 K17 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -17185,71 +18651,30 @@ be_local_closure(class_Animation_render, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 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 - 0x4C100000, // 0008 LDNIL R4 - 0x20100404, // 0009 NE R4 R2 R4 - 0x78120001, // 000A JMPF R4 #000D - 0x5C100400, // 000B MOVE R4 R2 - 0x70020001, // 000C JMP #000F - 0x8810010A, // 000D GETMBR R4 R0 K10 - 0x8810090B, // 000E GETMBR R4 R4 K11 - 0x5C080800, // 000F MOVE R2 R4 - 0x8C10010C, // 0010 GETMET R4 R0 K12 - 0x5C180400, // 0011 MOVE R6 R2 - 0x7C100400, // 0012 CALL R4 2 - 0x88100101, // 0013 GETMBR R4 R0 K1 - 0x20140903, // 0014 NE R5 R4 K3 - 0x78160002, // 0015 JMPF R5 #0019 - 0x8C14030D, // 0016 GETMET R5 R1 K13 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x50140200, // 0019 LDBOOL R5 1 0 - 0x80040A00, // 001A 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[14]) { /* code */ - 0x1C0C0304, // 0000 EQ R3 R1 K4 - 0x780E000A, // 0001 JMPF R3 #000D - 0x500C0200, // 0002 LDBOOL R3 1 0 - 0x1C0C0403, // 0003 EQ R3 R2 R3 - 0x780E0007, // 0004 JMPF R3 #000D - 0x880C010A, // 0005 GETMBR R3 R0 K10 - 0x880C070B, // 0006 GETMBR R3 R3 K11 - 0x90020C03, // 0007 SETMBR R0 K6 R3 - 0x88100106, // 0008 GETMBR R4 R0 K6 - 0x90020A04, // 0009 SETMBR R0 K5 R4 - 0x8C10010E, // 000A GETMET R4 R0 K14 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0x80000000, // 000D RET 0 + ( &(const binstruction[23]) { /* code */ + 0x8C0C010E, // 0000 GETMET R3 R0 K14 + 0x5C140400, // 0001 MOVE R5 R2 + 0x7C0C0400, // 0002 CALL R3 2 + 0x5C080600, // 0003 MOVE R2 R3 + 0x880C0107, // 0004 GETMBR R3 R0 K7 + 0x5C100600, // 0005 MOVE R4 R3 + 0x78120002, // 0006 JMPF R4 #000A + 0x4C100000, // 0007 LDNIL R4 + 0x1C100204, // 0008 EQ R4 R1 R4 + 0x78120001, // 0009 JMPF R4 #000C + 0x50100000, // 000A LDBOOL R4 0 0 + 0x80040800, // 000B RET 1 R4 + 0x8C10010A, // 000C GETMET R4 R0 K10 + 0x5C180400, // 000D MOVE R6 R2 + 0x7C100400, // 000E CALL R4 2 + 0x88100101, // 000F GETMBR R4 R0 K1 + 0x20140911, // 0010 NE R5 R4 K17 + 0x78160002, // 0011 JMPF R5 #0015 + 0x8C140315, // 0012 GETMET R5 R1 K21 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x7C140400, // 0014 CALL R5 2 + 0x50140200, // 0015 LDBOOL R5 1 0 + 0x80040A00, // 0016 RET 1 R5 }) ) ); @@ -17273,8 +18698,8 @@ be_local_closure(class_Animation_post_render, /* name */ be_str_weak(post_render), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x880C010F, // 0000 GETMBR R3 R0 K15 - 0x8C100110, // 0001 GETMET R4 R0 K16 + 0x880C0116, // 0000 GETMBR R3 R0 K22 + 0x8C100117, // 0001 GETMET R4 R0 K23 0x5C180200, // 0002 MOVE R6 R1 0x5C1C0600, // 0003 MOVE R7 R3 0x5C200400, // 0004 MOVE R8 R2 @@ -17286,48 +18711,6 @@ be_local_closure(class_Animation_post_render, /* name */ /*******************************************************************/ -/******************************************************************** -** 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[19]) { /* code */ - 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0109, // 0001 GETMBR R3 R0 K9 - 0x7C080200, // 0002 CALL R2 1 - 0xA802000A, // 0003 EXBLK 0 #000F - 0x5C0C0400, // 0004 MOVE R3 R2 - 0x7C0C0000, // 0005 CALL R3 0 - 0xB8122200, // 0006 GETNGBL R4 K17 - 0x8C100912, // 0007 GETMET R4 R4 K18 - 0x5C180600, // 0008 MOVE R6 R3 - 0x7C100400, // 0009 CALL R4 2 - 0x78120002, // 000A JMPF R4 #000E - 0x8C100713, // 000B GETMET R4 R3 K19 - 0x5C180200, // 000C MOVE R6 R1 - 0x7C100400, // 000D CALL R4 2 - 0x7001FFF4, // 000E JMP #0004 - 0x58080014, // 000F LDCONST R2 K20 - 0xAC080200, // 0010 CATCH R2 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: tostring ********************************************************************/ @@ -17346,12 +18729,12 @@ be_local_closure(class_Animation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080015, // 0001 LDCONST R2 K21 - 0x880C0116, // 0002 GETMBR R3 R0 K22 - 0x88100117, // 0003 GETMBR R4 R0 K23 - 0x88140107, // 0004 GETMBR R5 R0 K7 - 0x88180108, // 0005 GETMBR R6 R0 K8 - 0x881C0104, // 0006 GETMBR R7 R0 K4 + 0x58080018, // 0001 LDCONST R2 K24 + 0x880C0119, // 0002 GETMBR R3 R0 K25 + 0x8810011A, // 0003 GETMBR R4 R0 K26 + 0x8814010F, // 0004 GETMBR R5 R0 K15 + 0x88180110, // 0005 GETMBR R6 R0 K16 + 0x881C0107, // 0006 GETMBR R7 R0 K7 0x7C040C00, // 0007 CALL R1 6 0x80040200, // 0008 RET 1 R1 }) @@ -17360,202 +18743,49 @@ be_local_closure(class_Animation_tostring, /* name */ /*******************************************************************/ -/******************************************************************** -** 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 */ - 0x88080109, // 0000 GETMBR R2 R0 K9 - 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x980A0803, // 0002 SETIDX R2 K4 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 - 0x8808010A, // 0008 GETMBR R2 R0 K10 - 0x8808050B, // 0009 GETMBR R2 R2 K11 - 0x90020C02, // 000A SETMBR R0 K6 R2 - 0x880C0106, // 000B GETMBR R3 R0 K6 - 0x90020A03, // 000C SETMBR R0 K5 R3 - 0x8C0C010E, // 000D GETMET R3 R0 K14 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x80040000, // 0010 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _apply_opacity -********************************************************************/ -be_local_closure(class_Animation__apply_opacity, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_Animation, /* shared constants */ - be_str_weak(_apply_opacity), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x6010000F, // 0000 GETGBL R4 G15 - 0x5C140400, // 0001 MOVE R5 R2 - 0xB81A2200, // 0002 GETNGBL R6 K17 - 0x88180D11, // 0003 GETMBR R6 R6 K17 - 0x7C100400, // 0004 CALL R4 2 - 0x78120021, // 0005 JMPF R4 #0028 - 0x5C100400, // 0006 MOVE R4 R2 - 0x88140118, // 0007 GETMBR R5 R0 K24 - 0x4C180000, // 0008 LDNIL R6 - 0x1C140A06, // 0009 EQ R5 R5 R6 - 0x74160004, // 000A JMPT R5 #0010 - 0x88140118, // 000B GETMBR R5 R0 K24 - 0x88140B19, // 000C GETMBR R5 R5 K25 - 0x88180319, // 000D GETMBR R6 R1 K25 - 0x20140A06, // 000E NE R5 R5 R6 - 0x78160004, // 000F JMPF R5 #0015 - 0xB8162200, // 0010 GETNGBL R5 K17 - 0x8C140B1A, // 0011 GETMET R5 R5 K26 - 0x881C0319, // 0012 GETMBR R7 R1 K25 - 0x7C140400, // 0013 CALL R5 2 - 0x90023005, // 0014 SETMBR R0 K24 R5 - 0x88140118, // 0015 GETMBR R5 R0 K24 - 0x8C140B1B, // 0016 GETMET R5 R5 K27 - 0x7C140200, // 0017 CALL R5 1 - 0x88140904, // 0018 GETMBR R5 R4 K4 - 0x74160002, // 0019 JMPT R5 #001D - 0x8C140913, // 001A GETMET R5 R4 K19 - 0x881C0106, // 001B GETMBR R7 R0 K6 - 0x7C140400, // 001C CALL R5 2 - 0x8C14090C, // 001D GETMET R5 R4 K12 - 0x5C1C0600, // 001E MOVE R7 R3 - 0x7C140400, // 001F CALL R5 2 - 0x8C14091C, // 0020 GETMET R5 R4 K28 - 0x881C0118, // 0021 GETMBR R7 R0 K24 - 0x5C200600, // 0022 MOVE R8 R3 - 0x7C140600, // 0023 CALL R5 3 - 0x8C14031D, // 0024 GETMET R5 R1 K29 - 0x881C0118, // 0025 GETMBR R7 R0 K24 - 0x7C140400, // 0026 CALL R5 2 - 0x7002000A, // 0027 JMP #0033 - 0x60100004, // 0028 GETGBL R4 G4 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C100200, // 002A CALL R4 1 - 0x1C10091E, // 002B EQ R4 R4 K30 - 0x78120005, // 002C JMPF R4 #0033 - 0x541200FE, // 002D LDINT R4 255 - 0x14100404, // 002E LT R4 R2 R4 - 0x78120002, // 002F JMPF R4 #0033 - 0x8C10031D, // 0030 GETMET R4 R1 K29 - 0x5C180400, // 0031 MOVE R6 R2 - 0x7C100400, // 0032 CALL R4 2 - 0x80000000, // 0033 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 - 0x8C08051F, // 0003 GETMET R2 R2 K31 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90020D03, // 0006 SETMBR R0 K6 K3 - 0x90020B03, // 0007 SETMBR R0 K5 K3 - 0x80000000, // 0008 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Animation ********************************************************************/ extern const bclass be_class_ParameterizedObject; be_local_class(Animation, - 3, + 1, &be_class_ParameterizedObject, - be_nested_map(15, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(opacity_frame, 2), be_const_var(2) }, - { be_const_key_weak(get_color_at, -1), be_const_closure(class_Animation_get_color_at_closure) }, - { be_const_key_weak(init, 13), be_const_closure(class_Animation_init_closure) }, + { be_const_key_weak(opacity_frame, -1), be_const_var(0) }, + { be_const_key_weak(get_color_at, 9), be_const_closure(class_Animation_get_color_at_closure) }, + { be_const_key_weak(_apply_opacity, -1), be_const_closure(class_Animation__apply_opacity_closure) }, { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(7, + be_const_map( * be_nested_map(6, ( (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(2, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(default, -1), be_const_int(255) }, { be_const_key_weak(type, -1), be_nested_str_weak(any) }, + })) ) } )) }, + { be_const_key_weak(name, -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_nested_str_weak(animation) }, + { be_const_key_weak(type, -1), be_nested_str_weak(string) }, })) ) } )) }, { 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(0) }, { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, + })) ) } )) }, + { 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(duration, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, @@ -17565,16 +18795,11 @@ be_local_class(Animation, })) ) } )) }, })) ) } )) }, { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, - { be_const_key_weak(_apply_opacity, 14), be_const_closure(class_Animation__apply_opacity_closure) }, + { be_const_key_weak(init, 6), be_const_closure(class_Animation_init_closure) }, { be_const_key_weak(tostring, -1), be_const_closure(class_Animation_tostring_closure) }, - { be_const_key_weak(render, 5), be_const_closure(class_Animation_render_closure) }, + { be_const_key_weak(render, -1), be_const_closure(class_Animation_render_closure) }, { be_const_key_weak(post_render, -1), be_const_closure(class_Animation_post_render_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_Animation_start_closure) }, - { be_const_key_weak(current_time, 6), be_const_var(1) }, - { be_const_key_weak(get_color, 9), be_const_closure(class_Animation_get_color_closure) }, - { be_const_key_weak(start_time, -1), be_const_var(0) }, - { be_const_key_weak(_start_value_providers, -1), be_const_closure(class_Animation__start_value_providers_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_Animation_on_param_changed_closure) }, + { be_const_key_weak(get_color, -1), be_const_closure(class_Animation_get_color_closure) }, })), be_str_weak(Animation) ); @@ -17641,47 +18866,234 @@ be_local_closure(register_user_function, /* name */ ); /*******************************************************************/ +// compact class 'BeaconAnimation' ktab size: 16, total: 20 (saved 32 bytes) +static const bvalue be_ktab_class_BeaconAnimation[16] = { + /* K0 */ be_nested_str_weak(_fix_time_ms), + /* K1 */ be_nested_str_weak(width), + /* K2 */ be_nested_str_weak(back_color), + /* K3 */ be_nested_str_weak(pos), + /* K4 */ be_nested_str_weak(slew_size), + /* K5 */ be_nested_str_weak(beacon_size), + /* K6 */ be_nested_str_weak(color), + /* K7 */ be_const_int(-16777216), + /* K8 */ be_nested_str_weak(fill_pixels), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(set_pixel_color), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(scale_int), + /* K14 */ be_nested_str_weak(blend_linear), + /* K15 */ 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: shift_scroll_right +** Solidified function: render ********************************************************************/ -be_local_closure(shift_scroll_right, /* name */ +be_local_closure(class_BeaconAnimation_render, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ + 23, /* nstack */ + 3, /* argc */ + 10, /* 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_scroll_right), + &be_ktab_class_BeaconAnimation, /* shared constants */ + be_str_weak(render), &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 - 0x540A007F, // 0005 LDINT R2 128 - 0x90060802, // 0006 SETMBR R1 K4 R2 - 0x50080200, // 0007 LDBOOL R2 1 0 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x80040200, // 0009 RET 1 R1 + ( &(const binstruction[105]) { /* 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 + 0x8C0C0100, // 0005 GETMET R3 R0 K0 + 0x5C140400, // 0006 MOVE R5 R2 + 0x7C0C0400, // 0007 CALL R3 2 + 0x5C080600, // 0008 MOVE R2 R3 + 0x880C0301, // 0009 GETMBR R3 R1 K1 + 0x88100102, // 000A GETMBR R4 R0 K2 + 0x88140103, // 000B GETMBR R5 R0 K3 + 0x88180104, // 000C GETMBR R6 R0 K4 + 0x881C0105, // 000D GETMBR R7 R0 K5 + 0x88200106, // 000E GETMBR R8 R0 K6 + 0x20240907, // 000F NE R9 R4 K7 + 0x78260002, // 0010 JMPF R9 #0014 + 0x8C240308, // 0011 GETMET R9 R1 K8 + 0x5C2C0800, // 0012 MOVE R11 R4 + 0x7C240400, // 0013 CALL R9 2 + 0x5C240A00, // 0014 MOVE R9 R5 + 0x00280A07, // 0015 ADD R10 R5 R7 + 0x142C1309, // 0016 LT R11 R9 K9 + 0x782E0000, // 0017 JMPF R11 #0019 + 0x58240009, // 0018 LDCONST R9 K9 + 0x282C1403, // 0019 GE R11 R10 R3 + 0x782E0000, // 001A JMPF R11 #001C + 0x5C280600, // 001B MOVE R10 R3 + 0x5C2C1200, // 001C MOVE R11 R9 + 0x1430160A, // 001D LT R12 R11 R10 + 0x78320005, // 001E JMPF R12 #0025 + 0x8C30030A, // 001F GETMET R12 R1 K10 + 0x5C381600, // 0020 MOVE R14 R11 + 0x5C3C1000, // 0021 MOVE R15 R8 + 0x7C300600, // 0022 CALL R12 3 + 0x002C170B, // 0023 ADD R11 R11 K11 + 0x7001FFF7, // 0024 JMP #001D + 0x24300D09, // 0025 GT R12 R6 K9 + 0x7832003F, // 0026 JMPF R12 #0067 + 0x04300A06, // 0027 SUB R12 R5 R6 + 0x5C340A00, // 0028 MOVE R13 R5 + 0x14381909, // 0029 LT R14 R12 K9 + 0x783A0000, // 002A JMPF R14 #002C + 0x58300009, // 002B LDCONST R12 K9 + 0x28381A03, // 002C GE R14 R13 R3 + 0x783A0000, // 002D JMPF R14 #002F + 0x5C340600, // 002E MOVE R13 R3 + 0x5C2C1800, // 002F MOVE R11 R12 + 0x1438160D, // 0030 LT R14 R11 R13 + 0x783A0013, // 0031 JMPF R14 #0046 + 0xB83A1800, // 0032 GETNGBL R14 K12 + 0x8C381D0D, // 0033 GETMET R14 R14 K13 + 0x5C401600, // 0034 MOVE R16 R11 + 0x04440A06, // 0035 SUB R17 R5 R6 + 0x0444230B, // 0036 SUB R17 R17 K11 + 0x5C480A00, // 0037 MOVE R18 R5 + 0x544E00FE, // 0038 LDINT R19 255 + 0x58500009, // 0039 LDCONST R20 K9 + 0x7C380C00, // 003A CALL R14 6 + 0x8C3C030E, // 003B GETMET R15 R1 K14 + 0x5C440800, // 003C MOVE R17 R4 + 0x5C481000, // 003D MOVE R18 R8 + 0x5C4C1C00, // 003E MOVE R19 R14 + 0x7C3C0800, // 003F CALL R15 4 + 0x8C40030A, // 0040 GETMET R16 R1 K10 + 0x5C481600, // 0041 MOVE R18 R11 + 0x5C4C1E00, // 0042 MOVE R19 R15 + 0x7C400600, // 0043 CALL R16 3 + 0x002C170B, // 0044 ADD R11 R11 K11 + 0x7001FFE9, // 0045 JMP #0030 + 0x00380A07, // 0046 ADD R14 R5 R7 + 0x003C0A07, // 0047 ADD R15 R5 R7 + 0x003C1E06, // 0048 ADD R15 R15 R6 + 0x14401D09, // 0049 LT R16 R14 K9 + 0x78420000, // 004A JMPF R16 #004C + 0x58380009, // 004B LDCONST R14 K9 + 0x28401E03, // 004C GE R16 R15 R3 + 0x78420000, // 004D JMPF R16 #004F + 0x5C3C0600, // 004E MOVE R15 R3 + 0x5C2C1C00, // 004F MOVE R11 R14 + 0x1440160F, // 0050 LT R16 R11 R15 + 0x78420014, // 0051 JMPF R16 #0067 + 0xB8421800, // 0052 GETNGBL R16 K12 + 0x8C40210D, // 0053 GETMET R16 R16 K13 + 0x5C481600, // 0054 MOVE R18 R11 + 0x004C0A07, // 0055 ADD R19 R5 R7 + 0x044C270B, // 0056 SUB R19 R19 K11 + 0x00500A07, // 0057 ADD R20 R5 R7 + 0x00502806, // 0058 ADD R20 R20 R6 + 0x58540009, // 0059 LDCONST R21 K9 + 0x545A00FE, // 005A LDINT R22 255 + 0x7C400C00, // 005B CALL R16 6 + 0x8C44030E, // 005C GETMET R17 R1 K14 + 0x5C4C0800, // 005D MOVE R19 R4 + 0x5C501000, // 005E MOVE R20 R8 + 0x5C542000, // 005F MOVE R21 R16 + 0x7C440800, // 0060 CALL R17 4 + 0x8C48030A, // 0061 GETMET R18 R1 K10 + 0x5C501600, // 0062 MOVE R20 R11 + 0x5C542200, // 0063 MOVE R21 R17 + 0x7C480600, // 0064 CALL R18 3 + 0x002C170B, // 0065 ADD R11 R11 K11 + 0x7001FFE8, // 0066 JMP #0050 + 0x50300200, // 0067 LDBOOL R12 1 0 + 0x80041800, // 0068 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 + 0x5808000F, // 0001 LDCONST R2 K15 + 0x880C0106, // 0002 GETMBR R3 R0 K6 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x88140105, // 0004 GETMBR R5 R0 K5 + 0x88180104, // 0005 GETMBR R6 R0 K4 + 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 ********************************************************************/ @@ -17732,33 +19144,1097 @@ be_local_closure(animation_version_string, /* name */ ); /*******************************************************************/ +// compact class 'ParameterizedObject' ktab size: 49, total: 99 (saved 400 bytes) +static const bvalue be_ktab_class_ParameterizedObject[49] = { + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(PARAMS), + /* K3 */ be_nested_str_weak(keys), + /* K4 */ be_nested_str_weak(values), + /* K5 */ be_nested_str_weak(default), + /* K6 */ be_nested_str_weak(stop_iteration), + /* K7 */ be_nested_str_weak(_get_param_def), + /* K8 */ be_nested_str_weak(engine), + /* K9 */ be_nested_str_weak(time_ms), + /* K10 */ be_nested_str_weak(value_error), + /* K11 */ be_nested_str_weak(engine_X2Etime_ms_X20should_X20not_X20be_X20_X27nil_X27), + /* K12 */ be_nested_str_weak(start_time), + /* K13 */ be_nested_str_weak(is_running), + /* K14 */ be_nested_str_weak(toptr), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(is_value_provider), + /* K17 */ be_nested_str_weak(_validate_param), + /* K18 */ be_nested_str_weak(on_param_changed), + /* K19 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20is_X20not_X20defined_X20for_X20class_X20_X27_X25s_X27), + /* K20 */ be_nested_str_weak(nillable), + /* K21 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20does_X20not_X20accept_X20nil_X20values), + /* K22 */ be_nested_str_weak(int), + /* K23 */ be_nested_str_weak(type), + /* K24 */ be_nested_str_weak(any), + /* K25 */ be_nested_str_weak(real), + /* K26 */ be_nested_str_weak(math), + /* K27 */ be_nested_str_weak(round), + /* K28 */ be_nested_str_weak(bytes), + /* K29 */ be_nested_str_weak(instance), + /* K30 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20expects_X20type_X20_X27_X25s_X27_X20but_X20got_X20_X27_X25s_X27_X20_X28value_X3A_X20_X25s_X29), + /* K31 */ be_nested_str_weak(min), + /* K32 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20below_X20minimum_X20_X25s), + /* K33 */ be_nested_str_weak(max), + /* K34 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20above_X20maximum_X20_X25s), + /* K35 */ be_nested_str_weak(enum), + /* K36 */ be_nested_str_weak(size), + /* K37 */ be_const_int(0), + /* K38 */ be_const_int(1), + /* K39 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20not_X20in_X20allowed_X20values_X20_X25s), + /* K40 */ be_nested_str_weak(_has_param), + /* K41 */ be_nested_str_weak(_set_parameter_value), + /* K42 */ be_nested_str_weak(_X27_X25s_X27_X20object_X20has_X20no_X20attribute_X20_X27_X25s_X27), + /* K43 */ be_nested_str_weak(attribute_error), + /* K44 */ be_nested_str_weak(_resolve_parameter_value), + /* K45 */ be_nested_str_weak(ParameterizedObject_X20requires_X20an_X20engine_X20parameter), + /* K46 */ be_nested_str_weak(_init_parameter_values), + /* K47 */ be_nested_str_weak(produce_value), + /* K48 */ be_nested_str_weak(start), +}; + + +extern const bclass be_class_ParameterizedObject; /******************************************************************** -** Solidified function: is_value_provider +** Solidified function: _init_parameter_values ********************************************************************/ -be_local_closure(is_value_provider, /* name */ +be_local_closure(class_ParameterizedObject__init_parameter_values, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(_init_parameter_values), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x60080006, // 0001 GETGBL R2 G6 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0022, // 0006 JMPF R3 #002A + 0x8C0C0301, // 0007 GETMET R3 R1 K1 + 0x5C140400, // 0008 MOVE R5 R2 + 0x58180002, // 0009 LDCONST R6 K2 + 0x7C0C0600, // 000A CALL R3 3 + 0x780E0018, // 000B JMPF R3 #0025 + 0x880C0502, // 000C GETMBR R3 R2 K2 + 0x60100010, // 000D GETGBL R4 G16 + 0x8C140703, // 000E GETMET R5 R3 K3 + 0x7C140200, // 000F CALL R5 1 + 0x7C100200, // 0010 CALL R4 1 + 0xA802000F, // 0011 EXBLK 0 #0022 + 0x5C140800, // 0012 MOVE R5 R4 + 0x7C140000, // 0013 CALL R5 0 + 0x88180104, // 0014 GETMBR R6 R0 K4 + 0x8C180D01, // 0015 GETMET R6 R6 K1 + 0x5C200A00, // 0016 MOVE R8 R5 + 0x7C180400, // 0017 CALL R6 2 + 0x741A0007, // 0018 JMPT R6 #0021 + 0x94180605, // 0019 GETIDX R6 R3 R5 + 0x8C1C0D01, // 001A GETMET R7 R6 K1 + 0x58240005, // 001B LDCONST R9 K5 + 0x7C1C0400, // 001C CALL R7 2 + 0x781E0002, // 001D JMPF R7 #0021 + 0x881C0104, // 001E GETMBR R7 R0 K4 + 0x94200D05, // 001F GETIDX R8 R6 K5 + 0x981C0A08, // 0020 SETIDX R7 R5 R8 + 0x7001FFEF, // 0021 JMP #0012 + 0x58100006, // 0022 LDCONST R4 K6 + 0xAC100200, // 0023 CATCH R4 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x600C0003, // 0025 GETGBL R3 G3 + 0x5C100400, // 0026 MOVE R4 R2 + 0x7C0C0200, // 0027 CALL R3 1 + 0x5C080600, // 0028 MOVE R2 R3 + 0x7001FFD9, // 0029 JMP #0004 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param +********************************************************************/ +be_local_closure(class_ParameterizedObject_get_param, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(get_param), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0002, // 0004 JMPF R3 #0008 + 0x880C0104, // 0005 GETMBR R3 R0 K4 + 0x940C0601, // 0006 GETIDX R3 R3 R1 + 0x80040600, // 0007 RET 1 R3 + 0x8C0C0107, // 0008 GETMET R3 R0 K7 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C0C0400, // 000A CALL R3 2 + 0x4C100000, // 000B LDNIL R4 + 0x20100604, // 000C NE R4 R3 R4 + 0x78120005, // 000D JMPF R4 #0014 + 0x8C100701, // 000E GETMET R4 R3 K1 + 0x58180005, // 000F LDCONST R6 K5 + 0x7C100400, // 0010 CALL R4 2 + 0x78120001, // 0011 JMPF R4 #0014 + 0x94100705, // 0012 GETIDX R4 R3 K5 + 0x80040800, // 0013 RET 1 R4 + 0x80040400, // 0014 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_ParameterizedObject_start, /* name */ be_nested_proto( 4, /* nstack */ - 1, /* argc */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x88080108, // 0003 GETMBR R2 R0 K8 + 0x88040509, // 0004 GETMBR R1 R2 K9 + 0x4C080000, // 0005 LDNIL R2 + 0x1C080202, // 0006 EQ R2 R1 R2 + 0x780A0000, // 0007 JMPF R2 #0009 + 0xB006150B, // 0008 RAISE 1 K10 K11 + 0x8808010C, // 0009 GETMBR R2 R0 K12 + 0x4C0C0000, // 000A LDNIL R3 + 0x20080403, // 000B NE R2 R2 R3 + 0x780A0000, // 000C JMPF R2 #000E + 0x90021801, // 000D SETMBR R0 K12 R1 + 0x88080104, // 000E GETMBR R2 R0 K4 + 0x500C0200, // 000F LDBOOL R3 1 0 + 0x980A1A03, // 0010 SETIDX R2 K13 R3 + 0x80040000, // 0011 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _has_param +********************************************************************/ +be_local_closure(class_ParameterizedObject__has_param, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(_has_param), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0006, // 0001 GETGBL R3 G6 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x78120010, // 0006 JMPF R4 #0018 + 0x8C100501, // 0007 GETMET R4 R2 K1 + 0x5C180600, // 0008 MOVE R6 R3 + 0x581C0002, // 0009 LDCONST R7 K2 + 0x7C100600, // 000A CALL R4 3 + 0x78120006, // 000B JMPF R4 #0013 + 0x88100702, // 000C GETMBR R4 R3 K2 + 0x8C140901, // 000D GETMET R5 R4 K1 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x7C140400, // 000F CALL R5 2 + 0x78160001, // 0010 JMPF R5 #0013 + 0x50140200, // 0011 LDBOOL R5 1 0 + 0x80040A00, // 0012 RET 1 R5 + 0x60100003, // 0013 GETGBL R4 G3 + 0x5C140600, // 0014 MOVE R5 R3 + 0x7C100200, // 0015 CALL R4 1 + 0x5C0C0800, // 0016 MOVE R3 R4 + 0x7001FFEB, // 0017 JMP #0004 + 0x50100000, // 0018 LDBOOL R4 0 0 + 0x80040800, // 0019 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: == +********************************************************************/ +be_local_closure(class_ParameterizedObject__X3D_X3D, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_X3D_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C050E, // 0001 GETMET R3 R2 K14 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C10050E, // 0004 GETMET R4 R2 K14 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C100400, // 0006 CALL R4 2 + 0x1C0C0604, // 0007 EQ R3 R3 R4 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param_metadata +********************************************************************/ +be_local_closure(class_ParameterizedObject_get_param_metadata, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(get_param_metadata), + &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: _set_parameter_value +********************************************************************/ +be_local_closure(class_ParameterizedObject__set_parameter_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_set_parameter_value), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xB80E1E00, // 0000 GETNGBL R3 K15 + 0x8C0C0710, // 0001 GETMET R3 R3 K16 + 0x5C140400, // 0002 MOVE R5 R2 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0004, // 0004 JMPT R3 #000A + 0x8C0C0111, // 0005 GETMET R3 R0 K17 + 0x5C140200, // 0006 MOVE R5 R1 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C0C0600, // 0008 CALL R3 3 + 0x5C080600, // 0009 MOVE R2 R3 + 0x880C0104, // 000A GETMBR R3 R0 K4 + 0x980C0202, // 000B SETIDX R3 R1 R2 + 0x8C0C0112, // 000C GETMET R3 R0 K18 + 0x5C140200, // 000D MOVE R5 R1 + 0x5C180400, // 000E MOVE R6 R2 + 0x7C0C0600, // 000F CALL R3 3 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_param +********************************************************************/ +be_local_closure(class_ParameterizedObject__validate_param, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(_validate_param), + &be_const_str_solidified, + ( &(const binstruction[162]) { /* code */ + 0x8C0C0107, // 0000 GETMET R3 R0 K7 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100604, // 0004 EQ R4 R3 R4 + 0x78120007, // 0005 JMPF R4 #000E + 0x60100018, // 0006 GETGBL R4 G24 + 0x58140013, // 0007 LDCONST R5 K19 + 0x5C180200, // 0008 MOVE R6 R1 + 0x601C0005, // 0009 GETGBL R7 G5 + 0x5C200000, // 000A MOVE R8 R0 + 0x7C1C0200, // 000B CALL R7 1 + 0x7C100600, // 000C CALL R4 3 + 0xB0061404, // 000D RAISE 1 K10 R4 + 0xB8121E00, // 000E GETNGBL R4 K15 + 0x8C100910, // 000F GETMET R4 R4 K16 + 0x5C180400, // 0010 MOVE R6 R2 + 0x7C100400, // 0011 CALL R4 2 + 0x78120000, // 0012 JMPF R4 #0014 + 0x80040400, // 0013 RET 1 R2 + 0x4C100000, // 0014 LDNIL R4 + 0x1C100404, // 0015 EQ R4 R2 R4 + 0x78120012, // 0016 JMPF R4 #002A + 0x8C100701, // 0017 GETMET R4 R3 K1 + 0x58180014, // 0018 LDCONST R6 K20 + 0x7C100400, // 0019 CALL R4 2 + 0x78120004, // 001A JMPF R4 #0020 + 0x94100714, // 001B GETIDX R4 R3 K20 + 0x50140200, // 001C LDBOOL R5 1 0 + 0x1C100805, // 001D EQ R4 R4 R5 + 0x78120000, // 001E JMPF R4 #0020 + 0x80040400, // 001F RET 1 R2 + 0x8C100701, // 0020 GETMET R4 R3 K1 + 0x58180005, // 0021 LDCONST R6 K5 + 0x7C100400, // 0022 CALL R4 2 + 0x78120000, // 0023 JMPF R4 #0025 + 0x80040400, // 0024 RET 1 R2 + 0x60100018, // 0025 GETGBL R4 G24 + 0x58140015, // 0026 LDCONST R5 K21 + 0x5C180200, // 0027 MOVE R6 R1 + 0x7C100400, // 0028 CALL R4 2 + 0xB0061404, // 0029 RAISE 1 K10 R4 + 0x58100016, // 002A LDCONST R4 K22 + 0x8C140701, // 002B GETMET R5 R3 K1 + 0x581C0017, // 002C LDCONST R7 K23 + 0x7C140400, // 002D CALL R5 2 + 0x78160000, // 002E JMPF R5 #0030 + 0x94100717, // 002F GETIDX R4 R3 K23 + 0x60140004, // 0030 GETGBL R5 G4 + 0x5C180400, // 0031 MOVE R6 R2 + 0x7C140200, // 0032 CALL R5 1 + 0x20180918, // 0033 NE R6 R4 K24 + 0x781A0031, // 0034 JMPF R6 #0067 + 0x1C180916, // 0035 EQ R6 R4 K22 + 0x781A000A, // 0036 JMPF R6 #0042 + 0x1C180B19, // 0037 EQ R6 R5 K25 + 0x781A0008, // 0038 JMPF R6 #0042 + 0xA41A3400, // 0039 IMPORT R6 K26 + 0x601C0009, // 003A GETGBL R7 G9 + 0x8C200D1B, // 003B GETMET R8 R6 K27 + 0x5C280400, // 003C MOVE R10 R2 + 0x7C200400, // 003D CALL R8 2 + 0x7C1C0200, // 003E CALL R7 1 + 0x5C080E00, // 003F MOVE R2 R7 + 0x58140016, // 0040 LDCONST R5 K22 + 0x70020024, // 0041 JMP #0067 + 0x1C18091C, // 0042 EQ R6 R4 K28 + 0x781A0018, // 0043 JMPF R6 #005D + 0x1C180B1D, // 0044 EQ R6 R5 K29 + 0x781A0006, // 0045 JMPF R6 #004D + 0x6018000F, // 0046 GETGBL R6 G15 + 0x5C1C0400, // 0047 MOVE R7 R2 + 0x60200015, // 0048 GETGBL R8 G21 + 0x7C180400, // 0049 CALL R6 2 + 0x781A0001, // 004A JMPF R6 #004D + 0x5814001C, // 004B LDCONST R5 K28 + 0x7002000E, // 004C JMP #005C + 0x20180B1D, // 004D NE R6 R5 K29 + 0x741A0004, // 004E JMPT R6 #0054 + 0x6018000F, // 004F GETGBL R6 G15 + 0x5C1C0400, // 0050 MOVE R7 R2 + 0x60200015, // 0051 GETGBL R8 G21 + 0x7C180400, // 0052 CALL R6 2 + 0x741A0007, // 0053 JMPT R6 #005C + 0x60180018, // 0054 GETGBL R6 G24 + 0x581C001E, // 0055 LDCONST R7 K30 + 0x5C200200, // 0056 MOVE R8 R1 + 0x5C240800, // 0057 MOVE R9 R4 + 0x5C280A00, // 0058 MOVE R10 R5 + 0x5C2C0400, // 0059 MOVE R11 R2 + 0x7C180A00, // 005A CALL R6 5 + 0xB0061406, // 005B RAISE 1 K10 R6 + 0x70020009, // 005C JMP #0067 + 0x20180805, // 005D NE R6 R4 R5 + 0x781A0007, // 005E JMPF R6 #0067 + 0x60180018, // 005F GETGBL R6 G24 + 0x581C001E, // 0060 LDCONST R7 K30 + 0x5C200200, // 0061 MOVE R8 R1 + 0x5C240800, // 0062 MOVE R9 R4 + 0x5C280A00, // 0063 MOVE R10 R5 + 0x5C2C0400, // 0064 MOVE R11 R2 + 0x7C180A00, // 0065 CALL R6 5 + 0xB0061406, // 0066 RAISE 1 K10 R6 + 0x1C180B16, // 0067 EQ R6 R5 K22 + 0x781A001B, // 0068 JMPF R6 #0085 + 0x8C180701, // 0069 GETMET R6 R3 K1 + 0x5820001F, // 006A LDCONST R8 K31 + 0x7C180400, // 006B CALL R6 2 + 0x781A0009, // 006C JMPF R6 #0077 + 0x9418071F, // 006D GETIDX R6 R3 K31 + 0x14180406, // 006E LT R6 R2 R6 + 0x781A0006, // 006F JMPF R6 #0077 + 0x60180018, // 0070 GETGBL R6 G24 + 0x581C0020, // 0071 LDCONST R7 K32 + 0x5C200200, // 0072 MOVE R8 R1 + 0x5C240400, // 0073 MOVE R9 R2 + 0x9428071F, // 0074 GETIDX R10 R3 K31 + 0x7C180800, // 0075 CALL R6 4 + 0xB0061406, // 0076 RAISE 1 K10 R6 + 0x8C180701, // 0077 GETMET R6 R3 K1 + 0x58200021, // 0078 LDCONST R8 K33 + 0x7C180400, // 0079 CALL R6 2 + 0x781A0009, // 007A JMPF R6 #0085 + 0x94180721, // 007B GETIDX R6 R3 K33 + 0x24180406, // 007C GT R6 R2 R6 + 0x781A0006, // 007D JMPF R6 #0085 + 0x60180018, // 007E GETGBL R6 G24 + 0x581C0022, // 007F LDCONST R7 K34 + 0x5C200200, // 0080 MOVE R8 R1 + 0x5C240400, // 0081 MOVE R9 R2 + 0x94280721, // 0082 GETIDX R10 R3 K33 + 0x7C180800, // 0083 CALL R6 4 + 0xB0061406, // 0084 RAISE 1 K10 R6 + 0x8C180701, // 0085 GETMET R6 R3 K1 + 0x58200023, // 0086 LDCONST R8 K35 + 0x7C180400, // 0087 CALL R6 2 + 0x781A0017, // 0088 JMPF R6 #00A1 + 0x50180000, // 0089 LDBOOL R6 0 0 + 0xA41E0000, // 008A IMPORT R7 K0 + 0x94200723, // 008B GETIDX R8 R3 K35 + 0x8C241124, // 008C GETMET R9 R8 K36 + 0x7C240200, // 008D CALL R9 1 + 0x58280025, // 008E LDCONST R10 K37 + 0x142C1409, // 008F LT R11 R10 R9 + 0x782E0006, // 0090 JMPF R11 #0098 + 0x942C100A, // 0091 GETIDX R11 R8 R10 + 0x1C30040B, // 0092 EQ R12 R2 R11 + 0x78320001, // 0093 JMPF R12 #0096 + 0x50180200, // 0094 LDBOOL R6 1 0 + 0x70020001, // 0095 JMP #0098 + 0x00281526, // 0096 ADD R10 R10 K38 + 0x7001FFF6, // 0097 JMP #008F + 0x5C2C0C00, // 0098 MOVE R11 R6 + 0x742E0006, // 0099 JMPT R11 #00A1 + 0x602C0018, // 009A GETGBL R11 G24 + 0x58300027, // 009B LDCONST R12 K39 + 0x5C340200, // 009C MOVE R13 R1 + 0x5C380400, // 009D MOVE R14 R2 + 0x5C3C1000, // 009E MOVE R15 R8 + 0x7C2C0800, // 009F CALL R11 4 + 0xB006140B, // 00A0 RAISE 1 K10 R11 + 0x80040400, // 00A1 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setmember +********************************************************************/ +be_local_closure(class_ParameterizedObject_setmember, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(setmember), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C0C0128, // 0000 GETMET R3 R0 K40 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x780E0004, // 0003 JMPF R3 #0009 + 0x8C0C0129, // 0004 GETMET R3 R0 K41 + 0x5C140200, // 0005 MOVE R5 R1 + 0x5C180400, // 0006 MOVE R6 R2 + 0x7C0C0600, // 0007 CALL R3 3 + 0x70020007, // 0008 JMP #0011 + 0x600C0018, // 0009 GETGBL R3 G24 + 0x5810002A, // 000A LDCONST R4 K42 + 0x60140005, // 000B GETGBL R5 G5 + 0x5C180000, // 000C MOVE R6 R0 + 0x7C140200, // 000D CALL R5 1 + 0x5C180200, // 000E MOVE R6 R1 + 0x7C0C0600, // 000F CALL R3 3 + 0xB0065603, // 0010 RAISE 1 K43 R3 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_param_value +********************************************************************/ +be_local_closure(class_ParameterizedObject_get_param_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(get_param_value), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C012C, // 0000 GETMET R3 R0 K44 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _fix_time_ms +********************************************************************/ +be_local_closure(class_ParameterizedObject__fix_time_ms, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_fix_time_ms), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x88080108, // 0003 GETMBR R2 R0 K8 + 0x88040509, // 0004 GETMBR R1 R2 K9 + 0x4C080000, // 0005 LDNIL R2 + 0x1C080202, // 0006 EQ R2 R1 R2 + 0x780A0000, // 0007 JMPF R2 #0009 + 0xB006150B, // 0008 RAISE 1 K10 K11 + 0x8808010C, // 0009 GETMBR R2 R0 K12 + 0x4C0C0000, // 000A LDNIL R3 + 0x1C080403, // 000B EQ R2 R2 R3 + 0x780A0000, // 000C JMPF R2 #000E + 0x90021801, // 000D SETMBR R0 K12 R1 + 0x80040200, // 000E RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_ParameterizedObject_init, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x740A0004, // 0002 JMPT R2 #0008 + 0x60080004, // 0003 GETGBL R2 G4 + 0x5C0C0200, // 0004 MOVE R3 R1 + 0x7C080200, // 0005 CALL R2 1 + 0x2008051D, // 0006 NE R2 R2 K29 + 0x780A0000, // 0007 JMPF R2 #0009 + 0xB006152D, // 0008 RAISE 1 K10 K45 + 0x90021001, // 0009 SETMBR R0 K8 R1 + 0x60080013, // 000A GETGBL R2 G19 + 0x7C080000, // 000B CALL R2 0 + 0x90020802, // 000C SETMBR R0 K4 R2 + 0x8C08012E, // 000D GETMET R2 R0 K46 + 0x7C080200, // 000E CALL R2 1 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _resolve_parameter_value +********************************************************************/ +be_local_closure(class_ParameterizedObject__resolve_parameter_value, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_resolve_parameter_value), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E000D, // 0004 JMPT R3 #0013 + 0x8C0C0107, // 0005 GETMET R3 R0 K7 + 0x5C140200, // 0006 MOVE R5 R1 + 0x7C0C0400, // 0007 CALL R3 2 + 0x4C100000, // 0008 LDNIL R4 + 0x20100604, // 0009 NE R4 R3 R4 + 0x78120005, // 000A JMPF R4 #0011 + 0x8C100701, // 000B GETMET R4 R3 K1 + 0x58180005, // 000C LDCONST R6 K5 + 0x7C100400, // 000D CALL R4 2 + 0x78120001, // 000E JMPF R4 #0011 + 0x94100705, // 000F GETIDX R4 R3 K5 + 0x80040800, // 0010 RET 1 R4 + 0x4C100000, // 0011 LDNIL R4 + 0x80040800, // 0012 RET 1 R4 + 0x880C0104, // 0013 GETMBR R3 R0 K4 + 0x940C0601, // 0014 GETIDX R3 R3 R1 + 0xB8121E00, // 0015 GETNGBL R4 K15 + 0x8C100910, // 0016 GETMET R4 R4 K16 + 0x5C180600, // 0017 MOVE R6 R3 + 0x7C100400, // 0018 CALL R4 2 + 0x78120005, // 0019 JMPF R4 #0020 + 0x8C10072F, // 001A GETMET R4 R3 K47 + 0x5C180200, // 001B MOVE R6 R1 + 0x5C1C0400, // 001C MOVE R7 R2 + 0x7C100600, // 001D CALL R4 3 + 0x80040800, // 001E RET 1 R4 + 0x70020000, // 001F JMP #0021 + 0x80040600, // 0020 RET 1 R3 + 0x80000000, // 0021 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_ParameterizedObject_on_param_changed, /* name */ + be_nested_proto( + 6, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x1C0C030D, // 0000 EQ R3 R1 K13 + 0x780E0009, // 0001 JMPF R3 #000C + 0x500C0200, // 0002 LDBOOL R3 1 0 + 0x1C0C0403, // 0003 EQ R3 R2 R3 + 0x780E0003, // 0004 JMPF R3 #0009 + 0x8C0C0130, // 0005 GETMET R3 R0 K48 + 0x4C140000, // 0006 LDNIL R5 + 0x7C0C0400, // 0007 CALL R3 2 + 0x70020002, // 0008 JMP #000C + 0x500C0000, // 0009 LDBOOL R3 0 0 + 0x1C0C0403, // 000A EQ R3 R2 R3 + 0x780DFFFF, // 000B JMPF R3 #000C + 0x80000000, // 000C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: member +********************************************************************/ +be_local_closure(class_ParameterizedObject_member, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(member), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x740A0003, // 0004 JMPT R2 #0009 + 0x8C080128, // 0005 GETMET R2 R0 K40 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x780A0005, // 0008 JMPF R2 #000F + 0x8C08012C, // 0009 GETMET R2 R0 K44 + 0x5C100200, // 000A MOVE R4 R1 + 0x88140108, // 000B GETMBR R5 R0 K8 + 0x88140B09, // 000C GETMBR R5 R5 K9 + 0x7C080600, // 000D CALL R2 3 + 0x80040400, // 000E RET 1 R2 + 0x60080018, // 000F GETGBL R2 G24 + 0x580C002A, // 0010 LDCONST R3 K42 + 0x60100005, // 0011 GETGBL R4 G5 + 0x5C140000, // 0012 MOVE R5 R0 + 0x7C100200, // 0013 CALL R4 1 + 0x5C140200, // 0014 MOVE R5 R1 + 0x7C080600, // 0015 CALL R2 3 + 0xB0065602, // 0016 RAISE 1 K43 R2 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resolve_value +********************************************************************/ +be_local_closure(class_ParameterizedObject_resolve_value, /* name */ + be_nested_proto( + 8, /* 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_ParameterizedObject, /* shared constants */ + be_str_weak(resolve_value), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x1C100204, // 0001 EQ R4 R1 R4 + 0x78120001, // 0002 JMPF R4 #0005 + 0x4C100000, // 0003 LDNIL R4 + 0x80040800, // 0004 RET 1 R4 + 0xB8121E00, // 0005 GETNGBL R4 K15 + 0x8C100910, // 0006 GETMET R4 R4 K16 + 0x5C180200, // 0007 MOVE R6 R1 + 0x7C100400, // 0008 CALL R4 2 + 0x78120005, // 0009 JMPF R4 #0010 + 0x8C10032F, // 000A GETMET R4 R1 K47 + 0x5C180400, // 000B MOVE R6 R2 + 0x5C1C0600, // 000C MOVE R7 R3 + 0x7C100600, // 000D CALL R4 3 + 0x80040800, // 000E RET 1 R4 + 0x70020000, // 000F JMP #0011 + 0x80040200, // 0010 RET 1 R1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: != +********************************************************************/ +be_local_closure(class_ParameterizedObject__X21_X3D, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_X21_X3D), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x1C080001, // 0000 EQ R2 R0 R1 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x50080001, // 0002 LDBOOL R2 0 1 + 0x50080200, // 0003 LDBOOL R2 1 0 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_param +********************************************************************/ +be_local_closure(class_ParameterizedObject_set_param, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(set_param), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x8C0C0128, // 0000 GETMET R3 R0 K40 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x740E0001, // 0003 JMPT R3 #0006 + 0x500C0000, // 0004 LDBOOL R3 0 0 + 0x80040600, // 0005 RET 1 R3 + 0xA8020008, // 0006 EXBLK 0 #0010 + 0x8C0C0129, // 0007 GETMET R3 R0 K41 + 0x5C140200, // 0008 MOVE R5 R1 + 0x5C180400, // 0009 MOVE R6 R2 + 0x7C0C0600, // 000A CALL R3 3 + 0x500C0200, // 000B LDBOOL R3 1 0 + 0xA8040001, // 000C EXBLK 1 1 + 0x80040600, // 000D RET 1 R3 + 0xA8040001, // 000E EXBLK 1 1 + 0x70020006, // 000F JMP #0017 + 0x580C000A, // 0010 LDCONST R3 K10 + 0xAC0C0201, // 0011 CATCH R3 1 1 + 0x70020002, // 0012 JMP #0016 + 0x50100000, // 0013 LDBOOL R4 0 0 + 0x80040800, // 0014 RET 1 R4 + 0x70020000, // 0015 JMP #0017 + 0xB0080000, // 0016 RAISE 2 R0 R0 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _get_param_def +********************************************************************/ +be_local_closure(class_ParameterizedObject__get_param_def, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ParameterizedObject, /* shared constants */ + be_str_weak(_get_param_def), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C0006, // 0001 GETGBL R3 G6 + 0x5C100000, // 0002 MOVE R4 R0 + 0x7C0C0200, // 0003 CALL R3 1 + 0x4C100000, // 0004 LDNIL R4 + 0x20100604, // 0005 NE R4 R3 R4 + 0x78120010, // 0006 JMPF R4 #0018 + 0x8C100501, // 0007 GETMET R4 R2 K1 + 0x5C180600, // 0008 MOVE R6 R3 + 0x581C0002, // 0009 LDCONST R7 K2 + 0x7C100600, // 000A CALL R4 3 + 0x78120006, // 000B JMPF R4 #0013 + 0x88100702, // 000C GETMBR R4 R3 K2 + 0x8C140901, // 000D GETMET R5 R4 K1 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x7C140400, // 000F CALL R5 2 + 0x78160001, // 0010 JMPF R5 #0013 + 0x94140801, // 0011 GETIDX R5 R4 R1 + 0x80040A00, // 0012 RET 1 R5 + 0x60100003, // 0013 GETGBL R4 G3 + 0x5C140600, // 0014 MOVE R5 R3 + 0x7C100200, // 0015 CALL R4 1 + 0x5C0C0800, // 0016 MOVE R3 R4 + 0x7001FFEB, // 0017 JMP #0004 + 0x4C100000, // 0018 LDNIL R4 + 0x80040800, // 0019 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ParameterizedObject +********************************************************************/ +be_local_class(ParameterizedObject, + 3, + NULL, + be_nested_map(23, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(_init_parameter_values, -1), be_const_closure(class_ParameterizedObject__init_parameter_values_closure) }, + { be_const_key_weak(get_param, 3), be_const_closure(class_ParameterizedObject_get_param_closure) }, + { be_const_key_weak(engine, -1), be_const_var(1) }, + { be_const_key_weak(get_param_metadata, -1), be_const_closure(class_ParameterizedObject_get_param_metadata_closure) }, + { be_const_key_weak(_has_param, 8), be_const_closure(class_ParameterizedObject__has_param_closure) }, + { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_ParameterizedObject__X3D_X3D_closure) }, + { be_const_key_weak(start_time, 13), be_const_var(2) }, + { be_const_key_weak(values, -1), be_const_var(0) }, + { be_const_key_weak(set_param, -1), be_const_closure(class_ParameterizedObject_set_param_closure) }, + { be_const_key_weak(PARAMS, 21), 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(is_running, -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_bool(0) }, + { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, + })) ) } )) }, + })) ) } )) }, + { be_const_key_weak(_validate_param, -1), be_const_closure(class_ParameterizedObject__validate_param_closure) }, + { be_const_key_weak(setmember, -1), be_const_closure(class_ParameterizedObject_setmember_closure) }, + { be_const_key_weak(_X21_X3D, -1), be_const_closure(class_ParameterizedObject__X21_X3D_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ParameterizedObject_on_param_changed_closure) }, + { be_const_key_weak(start, 20), be_const_closure(class_ParameterizedObject_start_closure) }, + { be_const_key_weak(_resolve_parameter_value, -1), be_const_closure(class_ParameterizedObject__resolve_parameter_value_closure) }, + { be_const_key_weak(_fix_time_ms, 6), be_const_closure(class_ParameterizedObject__fix_time_ms_closure) }, + { be_const_key_weak(member, -1), be_const_closure(class_ParameterizedObject_member_closure) }, + { be_const_key_weak(resolve_value, -1), be_const_closure(class_ParameterizedObject_resolve_value_closure) }, + { be_const_key_weak(get_param_value, 12), be_const_closure(class_ParameterizedObject_get_param_value_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_ParameterizedObject_init_closure) }, + { be_const_key_weak(_set_parameter_value, -1), be_const_closure(class_ParameterizedObject__set_parameter_value_closure) }, + { be_const_key_weak(_get_param_def, -1), be_const_closure(class_ParameterizedObject__get_param_def_closure) }, + })), + be_str_weak(ParameterizedObject) +); + +/******************************************************************** +** Solidified function: animation_resolve +********************************************************************/ +be_local_closure(animation_resolve, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ + ( &(const bvalue[ 7]) { /* constants */ /* K0 */ be_nested_str_weak(animation), - /* K1 */ be_nested_str_weak(value_provider), + /* K1 */ be_nested_str_weak(is_value_provider), + /* K2 */ be_nested_str_weak(produce_value), + /* K3 */ be_nested_str_weak(parameterized_object), + /* K4 */ be_nested_str_weak(value_error), + /* K5 */ be_nested_str_weak(Parameter_X20name_X20cannot_X20be_X20nil_X20when_X20resolving_X20object_X20parameter), + /* K6 */ be_nested_str_weak(get_param_value), }), - be_str_weak(is_value_provider), + be_str_weak(animation_resolve), &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 + ( &(const binstruction[31]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0005, // 0004 JMPF R3 #000B + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x5C140200, // 0006 MOVE R5 R1 + 0x5C180400, // 0007 MOVE R6 R2 + 0x7C0C0600, // 0008 CALL R3 3 + 0x80040600, // 0009 RET 1 R3 + 0x70020012, // 000A JMP #001E + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0003, // 000C NE R3 R0 R3 + 0x780E000E, // 000D JMPF R3 #001D + 0x600C000F, // 000E GETGBL R3 G15 + 0x5C100000, // 000F MOVE R4 R0 + 0xB8160000, // 0010 GETNGBL R5 K0 + 0x88140B03, // 0011 GETMBR R5 R5 K3 + 0x7C0C0400, // 0012 CALL R3 2 + 0x780E0008, // 0013 JMPF R3 #001D + 0x4C0C0000, // 0014 LDNIL R3 + 0x1C0C0203, // 0015 EQ R3 R1 R3 + 0x780E0000, // 0016 JMPF R3 #0018 + 0xB0060905, // 0017 RAISE 1 K4 K5 + 0x8C0C0106, // 0018 GETMET R3 R0 K6 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C0C0400, // 001A CALL R3 2 + 0x80040600, // 001B RET 1 R3 + 0x70020000, // 001C JMP #001E + 0x80040000, // 001D RET 1 R0 + 0x80000000, // 001E RET 0 }) ) ); @@ -17981,43 +20457,6 @@ be_local_class(PaletteMeterAnimation, be_str_weak(PaletteMeterAnimation) ); -/******************************************************************** -** 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: ramp ********************************************************************/ @@ -18096,486 +20535,65 @@ be_local_closure(wave_custom, /* name */ ); /*******************************************************************/ - -/******************************************************************** -** 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 - }) - ) -); -/*******************************************************************/ - -// compact class 'AnimationEngine' ktab size: 60, total: 159 (saved 792 bytes) -static const bvalue be_ktab_class_AnimationEngine[60] = { - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(width), - /* K2 */ be_nested_str_weak(strip), - /* K3 */ be_nested_str_weak(set_pixel_color), - /* K4 */ be_nested_str_weak(frame_buffer), - /* K5 */ be_nested_str_weak(get_pixel_color), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(show), - /* K8 */ be_nested_str_weak(animations), - /* K9 */ be_nested_str_weak(name), - /* K10 */ be_nested_str_weak(stop), - /* K11 */ be_nested_str_weak(remove), - /* K12 */ be_nested_str_weak(sequence_managers), - /* K13 */ be_nested_str_weak(render_needed), - /* K14 */ be_nested_str_weak(animation), - /* K15 */ be_nested_str_weak(event_manager), - /* K16 */ be_nested_str_weak(_process_queued_events), - /* K17 */ be_nested_str_weak(length), - /* K18 */ be_nested_str_weak(_handle_strip_length_change), - /* K19 */ be_nested_str_weak(update), - /* K20 */ be_nested_str_weak(is_running), - /* K21 */ be_nested_str_weak(_clear_strip), - /* K22 */ be_nested_str_weak(_render_animations), - /* K23 */ be_nested_str_weak(find), - /* K24 */ be_nested_str_weak(push), - /* K25 */ be_nested_str_weak(_sort_animations), - /* K26 */ be_nested_str_weak(start), - /* K27 */ be_nested_str_weak(time_ms), - /* K28 */ be_nested_str_weak(resume), - /* K29 */ be_nested_str_weak(clear), - /* K30 */ be_nested_str_weak(temp_buffer), - /* K31 */ be_nested_str_weak(render), - /* K32 */ be_nested_str_weak(post_render), - /* K33 */ be_nested_str_weak(blend_pixels), - /* K34 */ be_nested_str_weak(_output_to_strip), - /* K35 */ be_nested_str_weak(SequenceManager), - /* K36 */ be_nested_str_weak(remove_sequence_manager), - /* K37 */ be_nested_str_weak(remove_animation), - /* K38 */ be_nested_str_weak(Cannot_X20remove_X20object_X20of_X20type_X20_X27_X25s_X27_X20from_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), - /* K39 */ be_nested_str_weak(type_error), - /* K40 */ be_nested_str_weak(tasmota), - /* K41 */ be_nested_str_weak(millis), - /* K42 */ be_nested_str_weak(check_strip_length), - /* K43 */ be_nested_str_weak(last_update), - /* 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(fast_loop_closure), - /* K48 */ be_nested_str_weak(remove_fast_loop), - /* K49 */ be_nested_str_weak(priority), - /* K50 */ be_nested_str_weak(stop_iteration), - /* K51 */ be_nested_str_weak(_add_sequence_manager), - /* K52 */ be_nested_str_weak(_add_animation), - /* K53 */ be_nested_str_weak(introspect), - /* K54 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), - /* K55 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), - /* K56 */ be_nested_str_weak(value_error), - /* K57 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), - /* K58 */ be_nested_str_weak(resize), - /* K59 */ be_nested_str_weak(add_fast_loop), +// compact class 'PlasmaAnimation' ktab size: 48, total: 95 (saved 376 bytes) +static const bvalue be_ktab_class_PlasmaAnimation[48] = { + /* 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(on_param_changed), + /* K35 */ be_nested_str_weak(set_param), + /* K36 */ be_nested_str_weak(phase_x), + /* K37 */ be_nested_str_weak(phase_y), + /* K38 */ be_nested_str_weak(blend_mode), + /* K39 */ be_nested_str_weak(_sine), + /* K40 */ be_const_int(2), + /* K41 */ be_nested_str_weak(is_color_provider), + /* K42 */ be_nested_str_weak(get_color_for_value), + /* K43 */ be_nested_str_weak(resolve_value), + /* K44 */ be_nested_str_weak(_fix_time_ms), + /* K45 */ be_nested_str_weak(width), + /* K46 */ be_nested_str_weak(set_pixel_color), + /* K47 */ be_nested_str_weak(sine_int), }; -extern const bclass be_class_AnimationEngine; +extern const bclass be_class_PlasmaAnimation; /******************************************************************** -** Solidified function: _output_to_strip +** Solidified function: start ********************************************************************/ -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 */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x14080202, // 0002 LT R2 R1 R2 - 0x780A0009, // 0003 JMPF R2 #000E - 0x88080102, // 0004 GETMBR R2 R0 K2 - 0x8C080503, // 0005 GETMET R2 R2 K3 - 0x5C100200, // 0006 MOVE R4 R1 - 0x88140104, // 0007 GETMBR R5 R0 K4 - 0x8C140B05, // 0008 GETMET R5 R5 K5 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x7C140400, // 000A CALL R5 2 - 0x7C080600, // 000B CALL R2 3 - 0x00040306, // 000C ADD R1 R1 K6 - 0x7001FFF2, // 000D JMP #0001 - 0x88080102, // 000E GETMBR R2 R0 K2 - 0x8C080507, // 000F GETMET R2 R2 K7 - 0x7C080200, // 0010 CALL R2 1 - 0x80000000, // 0011 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 */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100108, // 0002 GETMBR R4 R0 K8 - 0x7C0C0200, // 0003 CALL R3 1 - 0x140C0403, // 0004 LT R3 R2 R3 - 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C0108, // 0006 GETMBR R3 R0 K8 - 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x88100709, // 0008 GETMBR R4 R3 K9 - 0x4C140000, // 0009 LDNIL R5 - 0x20100805, // 000A NE R4 R4 R5 - 0x7812000A, // 000B JMPF R4 #0017 - 0x88100709, // 000C GETMBR R4 R3 K9 - 0x1C100801, // 000D EQ R4 R4 R1 - 0x78120007, // 000E JMPF R4 #0017 - 0x8C10070A, // 000F GETMET R4 R3 K10 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C100400, // 0011 CALL R4 2 - 0x88100108, // 0012 GETMBR R4 R0 K8 - 0x8C10090B, // 0013 GETMET R4 R4 K11 - 0x5C180400, // 0014 MOVE R6 R2 - 0x7C100400, // 0015 CALL R4 2 - 0x80000800, // 0016 RET 0 - 0x00080506, // 0017 ADD R2 R2 K6 - 0x7001FFE7, // 0018 JMP #0001 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 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 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x8814010C, // 0003 GETMBR R5 R0 K12 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x8810010C, // 0007 GETMBR R4 R0 K12 - 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 - 0x000C0706, // 000D ADD R3 R3 K6 - 0x7001FFF2, // 000E JMP #0002 - 0x28100500, // 000F GE R4 R2 K0 - 0x78120005, // 0010 JMPF R4 #0017 - 0x8810010C, // 0011 GETMBR R4 R0 K12 - 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: remove_animation -********************************************************************/ -be_local_closure(class_AnimationEngine_remove_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(remove_animation), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140108, // 0003 GETMBR R5 R0 K8 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x88100108, // 0007 GETMBR R4 R0 K8 - 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 - 0x000C0706, // 000D ADD R3 R3 K6 - 0x7001FFF2, // 000E JMP #0002 - 0x28100500, // 000F GE R4 R2 K0 - 0x78120007, // 0010 JMPF R4 #0019 - 0x88100108, // 0011 GETMBR R4 R0 K8 - 0x8C10090B, // 0012 GETMET R4 R4 K11 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x90021A04, // 0016 SETMBR R0 K13 R4 - 0x50100200, // 0017 LDBOOL R4 1 0 - 0x80040800, // 0018 RET 1 R4 - 0x50100000, // 0019 LDBOOL R4 0 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0xB80A1C00, // 0000 GETNGBL R2 K14 - 0x8808050F, // 0001 GETMBR R2 R2 K15 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0xB80A1C00, // 0005 GETNGBL R2 K14 - 0x8808050F, // 0006 GETMBR R2 R2 K15 - 0x8C080510, // 0007 GETMET R2 R2 K16 - 0x7C080200, // 0008 CALL R2 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: size -********************************************************************/ -be_local_closure(class_AnimationEngine_size, /* 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(size), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_strip_length -********************************************************************/ -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 */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x8C040311, // 0001 GETMET R1 R1 K17 - 0x7C040200, // 0002 CALL R1 1 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x20080202, // 0004 NE R2 R1 R2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080112, // 0006 GETMET R2 R0 K18 - 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: _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 */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140108, // 0003 GETMBR R5 R0 K8 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120011, // 0006 JMPF R4 #0019 - 0x88100108, // 0007 GETMBR R4 R0 K8 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x8C140913, // 0009 GETMET R5 R4 K19 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x7C140400, // 000B CALL R5 2 - 0x78160004, // 000C JMPF R5 #0012 - 0x88180914, // 000D GETMBR R6 R4 K20 - 0x781A0002, // 000E JMPF R6 #0012 - 0x00080506, // 000F ADD R2 R2 K6 - 0x000C0706, // 0010 ADD R3 R3 K6 - 0x70020005, // 0011 JMP #0018 - 0x88180108, // 0012 GETMBR R6 R0 K8 - 0x8C180D0B, // 0013 GETMET R6 R6 K11 - 0x5C200600, // 0014 MOVE R8 R3 - 0x7C180400, // 0015 CALL R6 2 - 0x50180200, // 0016 LDBOOL R6 1 0 - 0x90021A06, // 0017 SETMBR R0 K13 R6 - 0x7001FFE8, // 0018 JMP #0002 - 0x1C100500, // 0019 EQ R4 R2 K0 - 0x78120006, // 001A JMPF R4 #0022 - 0x8810010D, // 001B GETMBR R4 R0 K13 - 0x78120003, // 001C JMPF R4 #0021 - 0x8C100115, // 001D GETMET R4 R0 K21 - 0x7C100200, // 001E CALL R4 1 - 0x50100000, // 001F LDBOOL R4 0 0 - 0x90021A04, // 0020 SETMBR R0 K13 R4 - 0x80000800, // 0021 RET 0 - 0x8C100116, // 0022 GETMET R4 R0 K22 - 0x88180108, // 0023 GETMBR R6 R0 K8 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C100600, // 0025 CALL R4 3 - 0x50100000, // 0026 LDBOOL R4 0 0 - 0x90021A04, // 0027 SETMBR R0 K13 R4 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_animation -********************************************************************/ -be_local_closure(class_AnimationEngine__add_animation, /* name */ +be_local_closure(class_PlasmaAnimation_start, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -18585,646 +20603,38 @@ be_local_closure(class_AnimationEngine__add_animation, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_add_animation), + &be_ktab_class_PlasmaAnimation, /* shared constants */ + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x8C080517, // 0001 GETMET R2 R2 K23 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A000F, // 0006 JMPF R2 #0017 - 0x88080108, // 0007 GETMBR R2 R0 K8 - 0x8C080518, // 0008 GETMET R2 R2 K24 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x8C080119, // 000B GETMET R2 R0 K25 - 0x7C080200, // 000C CALL R2 1 - 0x88080114, // 000D GETMBR R2 R0 K20 - 0x780A0002, // 000E JMPF R2 #0012 - 0x8C08031A, // 000F GETMET R2 R1 K26 - 0x8810011B, // 0010 GETMBR R4 R0 K27 - 0x7C080400, // 0011 CALL R2 2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90021A02, // 0013 SETMBR R0 K13 R2 - 0x50080200, // 0014 LDBOOL R2 1 0 - 0x80040400, // 0015 RET 1 R2 - 0x70020001, // 0016 JMP #0019 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x80040400, // 0018 RET 1 R2 - 0x80000000, // 0019 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 */ - 0x8C08011C, // 0000 GETMET R2 R0 K28 - 0x7C080200, // 0001 CALL R2 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _render_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__render_animations, /* 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_AnimationEngine, /* shared constants */ - be_str_weak(_render_animations), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x880C0104, // 0000 GETMBR R3 R0 K4 - 0x8C0C071D, // 0001 GETMET R3 R3 K29 - 0x7C0C0200, // 0002 CALL R3 1 - 0x580C0000, // 0003 LDCONST R3 K0 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C100200, // 0006 CALL R4 1 - 0x14100604, // 0007 LT R4 R3 R4 - 0x78120012, // 0008 JMPF R4 #001C - 0x94100203, // 0009 GETIDX R4 R1 R3 - 0x8814011E, // 000A GETMBR R5 R0 K30 - 0x8C140B1D, // 000B GETMET R5 R5 K29 - 0x7C140200, // 000C CALL R5 1 - 0x8C14091F, // 000D GETMET R5 R4 K31 - 0x881C011E, // 000E GETMBR R7 R0 K30 - 0x5C200400, // 000F MOVE R8 R2 - 0x7C140600, // 0010 CALL R5 3 - 0x78160007, // 0011 JMPF R5 #001A - 0x8C180920, // 0012 GETMET R6 R4 K32 - 0x8820011E, // 0013 GETMBR R8 R0 K30 - 0x5C240400, // 0014 MOVE R9 R2 - 0x7C180600, // 0015 CALL R6 3 - 0x88180104, // 0016 GETMBR R6 R0 K4 - 0x8C180D21, // 0017 GETMET R6 R6 K33 - 0x8820011E, // 0018 GETMBR R8 R0 K30 - 0x7C180400, // 0019 CALL R6 2 - 0x000C0706, // 001A ADD R3 R3 K6 - 0x7001FFE7, // 001B JMP #0004 - 0x8C100122, // 001C GETMET R4 R0 K34 - 0x7C100200, // 001D CALL R4 1 - 0x80000000, // 001E 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 */ - 0x8C04010A, // 0000 GETMET R1 R0 K10 - 0x7C040200, // 0001 CALL R1 1 - 0x8C04011D, // 0002 GETMET R1 R0 K29 - 0x7C040200, // 0003 CALL R1 1 - 0x4C040000, // 0004 LDNIL R1 - 0x90020801, // 0005 SETMBR R0 K4 R1 - 0x4C040000, // 0006 LDNIL R1 - 0x90023C01, // 0007 SETMBR R0 K30 R1 - 0x4C040000, // 0008 LDNIL R1 - 0x90020401, // 0009 SETMBR R0 K2 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resume -********************************************************************/ -be_local_closure(class_AnimationEngine_resume, /* 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(resume), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x74060001, // 0001 JMPT R1 #0004 - 0x8C04011A, // 0002 GETMET R1 R0 K26 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove -********************************************************************/ -be_local_closure(class_AnimationEngine_remove, /* 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(remove), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8121C00, // 0002 GETNGBL R4 K14 - 0x88100923, // 0003 GETMBR R4 R4 K35 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080124, // 0006 GETMET R2 R0 K36 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020011, // 000A JMP #001D - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8121C00, // 000D GETNGBL R4 K14 - 0x8810090E, // 000E GETMBR R4 R4 K14 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C080125, // 0011 GETMET R2 R0 K37 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x70020006, // 0015 JMP #001D - 0x60080018, // 0016 GETGBL R2 G24 - 0x580C0026, // 0017 LDCONST R3 K38 - 0x60100005, // 0018 GETGBL R4 G5 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C100200, // 001A CALL R4 1 - 0x7C080400, // 001B CALL R2 2 - 0xB0064E02, // 001C RAISE 1 K39 R2 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[54]) { /* code */ - 0x88080114, // 0000 GETMBR R2 R0 K20 - 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 - 0xB80A5000, // 0007 GETNGBL R2 K40 - 0x8C080529, // 0008 GETMET R2 R2 K41 - 0x7C080200, // 0009 CALL R2 1 - 0x5C040400, // 000A MOVE R1 R2 - 0x8C08012A, // 000B GETMET R2 R0 K42 - 0x7C080200, // 000C CALL R2 1 - 0x90023601, // 000D SETMBR R0 K27 R1 - 0x8808012B, // 000E GETMBR R2 R0 K43 - 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 - 0x90025601, // 0015 SETMBR R0 K43 R1 - 0x880C0102, // 0016 GETMBR R3 R0 K2 - 0x880C072C, // 0017 GETMBR R3 R3 K44 - 0x4C100000, // 0018 LDNIL R4 - 0x200C0604, // 0019 NE R3 R3 R4 - 0x780E0005, // 001A JMPF R3 #0021 - 0x880C0102, // 001B GETMBR R3 R0 K2 - 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 - 0x580C0000, // 0021 LDCONST R3 K0 - 0x6010000C, // 0022 GETGBL R4 G12 - 0x8814010C, // 0023 GETMBR R5 R0 K12 - 0x7C100200, // 0024 CALL R4 1 - 0x14100604, // 0025 LT R4 R3 R4 - 0x78120006, // 0026 JMPF R4 #002E - 0x8810010C, // 0027 GETMBR R4 R0 K12 - 0x94100803, // 0028 GETIDX R4 R4 R3 - 0x8C100913, // 0029 GETMET R4 R4 K19 - 0x5C180200, // 002A MOVE R6 R1 - 0x7C100400, // 002B CALL R4 2 - 0x000C0706, // 002C ADD R3 R3 K6 - 0x7001FFF3, // 002D JMP #0022 - 0x8C10012D, // 002E GETMET R4 R0 K45 - 0x5C180200, // 002F MOVE R6 R1 - 0x7C100400, // 0030 CALL R4 2 - 0x8C10012E, // 0031 GETMET R4 R0 K46 - 0x5C180200, // 0032 MOVE R6 R1 - 0x7C100400, // 0033 CALL R4 2 - 0x50100200, // 0034 LDBOOL R4 1 0 - 0x80040800, // 0035 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 */ - 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x78060009, // 0001 JMPF R1 #000C - 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90022801, // 0003 SETMBR R0 K20 R1 - 0x8804012F, // 0004 GETMBR R1 R0 K47 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060003, // 0007 JMPF R1 #000C - 0xB8065000, // 0008 GETNGBL R1 K40 - 0x8C040330, // 0009 GETMET R1 R1 K48 - 0x880C012F, // 000A GETMBR R3 R0 K47 - 0x7C040400, // 000B CALL R1 2 - 0x80040000, // 000C RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0x18080306, // 0003 LE R2 R1 K6 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80000400, // 0005 RET 0 - 0x58080006, // 0006 LDCONST R2 K6 - 0x140C0401, // 0007 LT R3 R2 R1 - 0x780E0016, // 0008 JMPF R3 #0020 - 0x880C0108, // 0009 GETMBR R3 R0 K8 - 0x940C0602, // 000A GETIDX R3 R3 R2 - 0x5C100400, // 000B MOVE R4 R2 - 0x24140900, // 000C GT R5 R4 K0 - 0x7816000D, // 000D JMPF R5 #001C - 0x04140906, // 000E SUB R5 R4 K6 - 0x88180108, // 000F GETMBR R6 R0 K8 - 0x94140C05, // 0010 GETIDX R5 R6 R5 - 0x88140B31, // 0011 GETMBR R5 R5 K49 - 0x88180731, // 0012 GETMBR R6 R3 K49 - 0x14140A06, // 0013 LT R5 R5 R6 - 0x78160006, // 0014 JMPF R5 #001C - 0x88140108, // 0015 GETMBR R5 R0 K8 - 0x04180906, // 0016 SUB R6 R4 K6 - 0x881C0108, // 0017 GETMBR R7 R0 K8 - 0x94180E06, // 0018 GETIDX R6 R7 R6 - 0x98140806, // 0019 SETIDX R5 R4 R6 - 0x04100906, // 001A SUB R4 R4 K6 - 0x7001FFEF, // 001B JMP #000C - 0x88140108, // 001C GETMBR R5 R0 K8 - 0x98140803, // 001D SETIDX R5 R4 R3 - 0x00080506, // 001E ADD R2 R2 K6 - 0x7001FFE6, // 001F JMP #0007 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x8808010C, // 0000 GETMBR R2 R0 K12 - 0x8C080518, // 0001 GETMET R2 R2 K24 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040000, // 0004 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _clear_strip -********************************************************************/ -be_local_closure(class_AnimationEngine__clear_strip, /* 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(_clear_strip), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x8C04031D, // 0001 GETMET R1 R1 K29 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040307, // 0004 GETMET R1 R1 K7 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 - 0x88080108, // 0001 GETMBR R2 R0 K8 - 0x7C040200, // 0002 CALL R1 1 - 0xA8020006, // 0003 EXBLK 0 #000B - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x880C0514, // 0006 GETMBR R3 R2 K20 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C050A, // 0008 GETMET R3 R2 K10 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7001FFF8, // 000A JMP #0004 - 0x58040032, // 000B LDCONST R1 K50 - 0xAC040200, // 000C CATCH R1 1 0 - 0xB0080000, // 000D RAISE 2 R0 R0 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_AnimationEngine_add, /* 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(add), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8121C00, // 0002 GETNGBL R4 K14 - 0x88100923, // 0003 GETMBR R4 R4 K35 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080133, // 0006 GETMET R2 R0 K51 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020013, // 000A JMP #001F - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8121C00, // 000D GETNGBL R4 K14 - 0x8810090E, // 000E GETMBR R4 R4 K14 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C080134, // 0011 GETMET R2 R0 K52 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x70020008, // 0015 JMP #001F - 0xA40A6A00, // 0016 IMPORT R2 K53 - 0x8C0C0509, // 0017 GETMET R3 R2 K9 - 0x5C140200, // 0018 MOVE R5 R1 - 0x7C0C0400, // 0019 CALL R3 2 - 0x60100018, // 001A GETGBL R4 G24 - 0x58140036, // 001B LDCONST R5 K54 - 0x5C180600, // 001C MOVE R6 R3 - 0x7C100400, // 001D CALL R4 2 - 0xB0064E04, // 001E RAISE 1 K39 R4 - 0x80000000, // 001F 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 - 0x90021001, // 0002 SETMBR R0 K8 R1 - 0x58040000, // 0003 LDCONST R1 K0 - 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C010C, // 0005 GETMBR R3 R0 K12 - 0x7C080200, // 0006 CALL R2 1 - 0x14080202, // 0007 LT R2 R1 R2 - 0x780A0005, // 0008 JMPF R2 #000F - 0x8808010C, // 0009 GETMBR R2 R0 K12 - 0x94080401, // 000A GETIDX R2 R2 R1 - 0x8C08050A, // 000B GETMET R2 R2 K10 - 0x7C080200, // 000C CALL R2 1 - 0x00040306, // 000D ADD R1 R1 K6 - 0x7001FFF4, // 000E JMP #0004 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90021802, // 0011 SETMBR R0 K12 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90021A02, // 0013 SETMBR R0 K13 R2 - 0x80040000, // 0014 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x88040102, // 0000 GETMBR R1 R0 K2 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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 */ - 0x8C04011D, // 0000 GETMET R1 R0 K29 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 + ( &(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 }) ) ); @@ -19234,9 +20644,9 @@ be_local_closure(class_AnimationEngine_interrupt_all, /* name */ /******************************************************************** ** Solidified function: tostring ********************************************************************/ -be_local_closure(class_AnimationEngine_tostring, /* name */ +be_local_closure(class_PlasmaAnimation_tostring, /* name */ be_nested_proto( - 6, /* nstack */ + 11, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -19244,19 +20654,37 @@ be_local_closure(class_AnimationEngine_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ + &be_ktab_class_PlasmaAnimation, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080037, // 0001 LDCONST R2 K55 - 0x880C0114, // 0002 GETMBR R3 R0 K20 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140108, // 0004 GETMBR R5 R0 K8 - 0x7C100200, // 0005 CALL R4 1 - 0x88140101, // 0006 GETMBR R5 R0 K1 - 0x7C040800, // 0007 CALL R1 4 - 0x80040200, // 0008 RET 1 R1 + ( &(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 }) ) ); @@ -19266,7 +20694,7 @@ be_local_closure(class_AnimationEngine_tostring, /* name */ /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_AnimationEngine_init, /* name */ +be_local_closure(class_PlasmaAnimation_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -19276,43 +20704,23 @@ be_local_closure(class_AnimationEngine_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ + &be_ktab_class_PlasmaAnimation, /* 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 - 0xB0067139, // 0003 RAISE 1 K56 K57 - 0x90020401, // 0004 SETMBR R0 K2 R1 - 0x8C080311, // 0005 GETMET R2 R1 K17 - 0x7C080200, // 0006 CALL R2 1 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90021002, // 000A SETMBR R0 K8 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021802, // 000D SETMBR R0 K12 R2 - 0xB80A1C00, // 000E GETNGBL R2 K14 - 0x8C080504, // 000F GETMET R2 R2 K4 - 0x88100101, // 0010 GETMBR R4 R0 K1 - 0x7C080400, // 0011 CALL R2 2 - 0x90020802, // 0012 SETMBR R0 K4 R2 - 0xB80A1C00, // 0013 GETNGBL R2 K14 - 0x8C080504, // 0014 GETMET R2 R2 K4 - 0x88100101, // 0015 GETMBR R4 R0 K1 - 0x7C080400, // 0016 CALL R2 2 - 0x90023C02, // 0017 SETMBR R0 K30 R2 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90022802, // 0019 SETMBR R0 K20 R2 - 0x90025700, // 001A SETMBR R0 K43 K0 - 0x90023700, // 001B SETMBR R0 K27 K0 - 0x4C080000, // 001C LDNIL R2 - 0x90025E02, // 001D SETMBR R0 K47 R2 - 0x50080000, // 001E LDBOOL R2 0 0 - 0x90021A02, // 001F SETMBR R0 K13 R2 - 0x80000000, // 0020 RET 0 + ( &(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 }) ) ); @@ -19320,11 +20728,69 @@ be_local_closure(class_AnimationEngine_init, /* name */ /******************************************************************** -** Solidified function: get_strip_length +** Solidified function: update ********************************************************************/ -be_local_closure(class_AnimationEngine_get_strip_length, /* name */ +be_local_closure(class_PlasmaAnimation_update, /* name */ be_nested_proto( - 3, /* nstack */ + 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 */ @@ -19332,51 +20798,24 @@ be_local_closure(class_AnimationEngine_get_strip_length, /* name */ 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 */ - 0x8C04012A, // 0000 GETMET R1 R0 K42 - 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 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 */ - 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(_handle_strip_length_change), + &be_ktab_class_PlasmaAnimation, /* shared constants */ + be_str_weak(_initialize_colors), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 - 0x88080104, // 0004 GETMBR R2 R0 K4 - 0x8C08053A, // 0005 GETMET R2 R2 K58 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x8808011E, // 0008 GETMBR R2 R0 K30 - 0x8C08053A, // 0009 GETMET R2 R2 K58 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x90021A02, // 000D SETMBR R0 K13 R2 + 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 }) ) @@ -19385,24 +20824,54 @@ be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ /******************************************************************** -** Solidified function: is_active +** Solidified function: on_param_changed ********************************************************************/ -be_local_closure(class_AnimationEngine_is_active, /* name */ +be_local_closure(class_PlasmaAnimation_on_param_changed, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 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_AnimationEngine, /* shared constants */ - be_str_weak(is_active), + &be_ktab_class_PlasmaAnimation, /* shared constants */ + be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[32]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0722, // 0003 GETMET R3 R3 K34 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x780E0015, // 0008 JMPF R3 #001F + 0x4C0C0000, // 0009 LDNIL R3 + 0x1C0C0403, // 000A EQ R3 R2 R3 + 0x780E0012, // 000B JMPF R3 #001F + 0xB80E0400, // 000C GETNGBL R3 K2 + 0x8C0C0703, // 000D GETMET R3 R3 K3 + 0x88140104, // 000E GETMBR R5 R0 K4 + 0x7C0C0400, // 000F CALL R3 2 + 0xB8120400, // 0010 GETNGBL R4 K2 + 0x88100906, // 0011 GETMBR R4 R4 K6 + 0x900E0A04, // 0012 SETMBR R3 K5 R4 + 0x54121387, // 0013 LDINT R4 5000 + 0x900E0E04, // 0014 SETMBR R3 K7 R4 + 0x900E1109, // 0015 SETMBR R3 K8 K9 + 0x541200FE, // 0016 LDINT R4 255 + 0x900E1404, // 0017 SETMBR R3 K10 R4 + 0x900E170C, // 0018 SETMBR R3 K11 K12 + 0x541200FE, // 0019 LDINT R4 255 + 0x900E1A04, // 001A SETMBR R3 K13 R4 + 0x8C100123, // 001B GETMET R4 R0 K35 + 0x58180001, // 001C LDCONST R6 K1 + 0x5C1C0600, // 001D MOVE R7 R3 + 0x7C100600, // 001E CALL R4 3 + 0x80000000, // 001F RET 0 }) ) ); @@ -19410,94 +20879,125 @@ be_local_closure(class_AnimationEngine_is_active, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: _calculate_plasma ********************************************************************/ -be_local_closure(class_AnimationEngine_start, /* name */ +be_local_closure(class_PlasmaAnimation__calculate_plasma, /* name */ be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 21, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 2, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(on_tick), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x7C000200, // 0002 CALL R0 1 - 0x80040000, // 0003 RET 1 R0 - }) - ), - }), + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(start), + &be_ktab_class_PlasmaAnimation, /* shared constants */ + be_str_weak(_calculate_plasma), &be_const_str_solidified, - ( &(const binstruction[48]) { /* code */ - 0x88040114, // 0000 GETMBR R1 R0 K20 - 0x7406002B, // 0001 JMPT R1 #002E - 0xB8065000, // 0002 GETNGBL R1 K40 - 0x8C040329, // 0003 GETMET R1 R1 K41 - 0x7C040200, // 0004 CALL R1 1 - 0x50080200, // 0005 LDBOOL R2 1 0 - 0x90022802, // 0006 SETMBR R0 K20 R2 - 0x540A0009, // 0007 LDINT R2 10 - 0x04080202, // 0008 SUB R2 R1 R2 - 0x90025602, // 0009 SETMBR R0 K43 R2 - 0x8808012F, // 000A GETMBR R2 R0 K47 - 0x4C0C0000, // 000B LDNIL R3 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x780A0001, // 000D JMPF R2 #0010 - 0x84080000, // 000E CLOSURE R2 P0 - 0x90025E02, // 000F SETMBR R0 K47 R2 - 0x58080000, // 0010 LDCONST R2 K0 - 0x600C000C, // 0011 GETGBL R3 G12 - 0x88100108, // 0012 GETMBR R4 R0 K8 - 0x7C0C0200, // 0013 CALL R3 1 - 0x140C0403, // 0014 LT R3 R2 R3 - 0x780E0006, // 0015 JMPF R3 #001D - 0x880C0108, // 0016 GETMBR R3 R0 K8 - 0x940C0602, // 0017 GETIDX R3 R3 R2 - 0x8C0C071A, // 0018 GETMET R3 R3 K26 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x00080506, // 001B ADD R2 R2 K6 - 0x7001FFF3, // 001C JMP #0011 - 0x58080000, // 001D LDCONST R2 K0 - 0x600C000C, // 001E GETGBL R3 G12 - 0x8810010C, // 001F GETMBR R4 R0 K12 - 0x7C0C0200, // 0020 CALL R3 1 - 0x140C0403, // 0021 LT R3 R2 R3 - 0x780E0006, // 0022 JMPF R3 #002A - 0x880C010C, // 0023 GETMBR R3 R0 K12 - 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C071A, // 0025 GETMET R3 R3 K26 - 0x5C140200, // 0026 MOVE R5 R1 - 0x7C0C0400, // 0027 CALL R3 2 - 0x00080506, // 0028 ADD R2 R2 K6 - 0x7001FFF3, // 0029 JMP #001E - 0xB80E5000, // 002A GETNGBL R3 K40 - 0x8C0C073B, // 002B GETMET R3 R3 K59 - 0x8814012F, // 002C GETMBR R5 R0 K47 - 0x7C0C0400, // 002D CALL R3 2 - 0xA0000000, // 002E CLOSE R0 - 0x80040000, // 002F RET 1 R0 + ( &(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 + 0x88140124, // 000C GETMBR R5 R0 K36 + 0x88180125, // 000D GETMBR R6 R0 K37 + 0x881C0126, // 000E GETMBR R7 R0 K38 + 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 + 0x8C2C0127, // 001B GETMET R11 R0 K39 + 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 + 0x8C300127, // 0023 GETMET R12 R0 K39 + 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 + 0x083C1F28, // 0029 MUL R15 R15 K40 + 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 + 0x0C381D28, // 0030 DIV R14 R14 K40 + 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 + 0x0C381D28, // 0040 DIV R14 R14 K40 + 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 + 0x8C3C1F29, // 004C GETMET R15 R15 K41 + 0x5C441000, // 004D MOVE R17 R8 + 0x7C3C0400, // 004E CALL R15 2 + 0x783E0009, // 004F JMPF R15 #005A + 0x883C112A, // 0050 GETMBR R15 R8 K42 + 0x4C400000, // 0051 LDNIL R16 + 0x203C1E10, // 0052 NE R15 R15 R16 + 0x783E0005, // 0053 JMPF R15 #005A + 0x8C3C112A, // 0054 GETMET R15 R8 K42 + 0x5C441A00, // 0055 MOVE R17 R13 + 0x5848000C, // 0056 LDCONST R18 K12 + 0x7C3C0600, // 0057 CALL R15 3 + 0x5C381E00, // 0058 MOVE R14 R15 + 0x70020007, // 0059 JMP #0062 + 0x8C3C012B, // 005A GETMET R15 R0 K43 + 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 }) ) ); @@ -19505,65 +21005,182 @@ be_local_closure(class_AnimationEngine_start, /* name */ /******************************************************************** -** Solidified class: AnimationEngine +** Solidified function: render ********************************************************************/ -be_local_class(AnimationEngine, - 11, - NULL, - be_nested_map(42, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_output_to_strip, 8), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, - { be_const_key_weak(interrupt_animation, -1), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_AnimationEngine_start_closure) }, - { be_const_key_weak(remove_sequence_manager, 24), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, - { be_const_key_weak(remove_animation, 32), be_const_closure(class_AnimationEngine_remove_animation_closure) }, - { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, - { be_const_key_weak(size, -1), be_const_closure(class_AnimationEngine_size_closure) }, - { be_const_key_weak(check_strip_length, 30), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, - { be_const_key_weak(animations, -1), be_const_var(2) }, - { be_const_key_weak(_add_animation, -1), be_const_closure(class_AnimationEngine__add_animation_closure) }, - { be_const_key_weak(_update_and_render, 34), be_const_closure(class_AnimationEngine__update_and_render_closure) }, - { be_const_key_weak(is_active, -1), be_const_closure(class_AnimationEngine_is_active_closure) }, - { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, - { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, - { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, - { be_const_key_weak(remove, -1), be_const_closure(class_AnimationEngine_remove_closure) }, - { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, - { be_const_key_weak(_handle_strip_length_change, -1), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, - { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, - { be_const_key_weak(get_strip_length, 21), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, - { be_const_key_weak(sequence_managers, 25), be_const_var(3) }, - { be_const_key_weak(init, -1), be_const_closure(class_AnimationEngine_init_closure) }, - { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_AnimationEngine__add_sequence_manager_closure) }, - { be_const_key_weak(strip, 23), be_const_var(0) }, - { be_const_key_weak(last_update, -1), be_const_var(7) }, - { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, - { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, - { be_const_key_weak(_sort_animations, 27), be_const_closure(class_AnimationEngine__sort_animations_closure) }, - { be_const_key_weak(width, -1), be_const_var(1) }, - { be_const_key_weak(resume_after, -1), be_const_closure(class_AnimationEngine_resume_after_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_AnimationEngine_tostring_closure) }, - { be_const_key_weak(add, -1), be_const_closure(class_AnimationEngine_add_closure) }, - { be_const_key_weak(time_ms, 22), be_const_var(8) }, - { be_const_key_weak(interrupt_current, 9), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, - { be_const_key_weak(frame_buffer, 20), be_const_var(4) }, - { be_const_key_weak(get_strip, 19), be_const_closure(class_AnimationEngine_get_strip_closure) }, - { be_const_key_weak(is_running, 18), be_const_var(6) }, - { be_const_key_weak(_clear_strip, 11), be_const_closure(class_AnimationEngine__clear_strip_closure) }, - { be_const_key_weak(render_needed, -1), be_const_var(10) }, - { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, - { be_const_key_weak(get_animations, 2), be_const_closure(class_AnimationEngine_get_animations_closure) }, - })), - be_str_weak(AnimationEngine) +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[29]) { /* 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 + 0x8C0C012C, // 0007 GETMET R3 R0 K44 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0104, // 000B GETMBR R3 R0 K4 + 0x8C0C071F, // 000C GETMET R3 R3 K31 + 0x7C0C0200, // 000D CALL R3 1 + 0x5810000C, // 000E LDCONST R4 K12 + 0x14140803, // 000F LT R5 R4 R3 + 0x78160009, // 0010 JMPF R5 #001B + 0x8814032D, // 0011 GETMBR R5 R1 K45 + 0x14140805, // 0012 LT R5 R4 R5 + 0x78160004, // 0013 JMPF R5 #0019 + 0x8C14032E, // 0014 GETMET R5 R1 K46 + 0x5C1C0800, // 0015 MOVE R7 R4 + 0x88200118, // 0016 GETMBR R8 R0 K24 + 0x94201004, // 0017 GETIDX R8 R8 R4 + 0x7C140600, // 0018 CALL R5 3 + 0x00100909, // 0019 ADD R4 R4 K9 + 0x7001FFF3, // 001A JMP #000F + 0x50140200, // 001B LDBOOL R5 1 0 + 0x80040A00, // 001C RET 1 R5 + }) + ) ); -// compact class 'StripLengthProvider' ktab size: 5, total: 8 (saved 24 bytes) +/*******************************************************************/ + + +/******************************************************************** +** 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 + 0x8C0C072F, // 0009 GETMET R3 R3 K47 + 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) +); +// compact class 'StripLengthProvider' ktab size: 5, total: 7 (saved 16 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), + /* K1 */ be_nested_str_weak(width), + /* K2 */ be_const_int(0), /* K3 */ be_nested_str_weak(StripLengthProvider_X28length_X3D_X25s_X29), - /* K4 */ be_nested_str_weak(StripLengthProvider_X28length_X3Dunknown_X29), + /* K4 */ be_nested_str_weak(unknown), }; @@ -19574,7 +21191,7 @@ extern const bclass be_class_StripLengthProvider; ********************************************************************/ be_local_closure(class_StripLengthProvider_produce_value, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -19585,15 +21202,14 @@ be_local_closure(class_StripLengthProvider_produce_value, /* name */ &be_ktab_class_StripLengthProvider, /* shared constants */ be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[ 7]) { /* 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 + 0x780E0002, // 0001 JMPF R3 #0005 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x880C0701, // 0003 GETMBR R3 R3 K1 + 0x70020000, // 0004 JMP #0006 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x80040600, // 0006 RET 1 R3 }) ) ); @@ -19605,7 +21221,7 @@ be_local_closure(class_StripLengthProvider_produce_value, /* name */ ********************************************************************/ be_local_closure(class_StripLengthProvider_tostring, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -19616,30 +21232,17 @@ be_local_closure(class_StripLengthProvider_tostring, /* name */ &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 + ( &(const binstruction[10]) { /* code */ + 0x60040018, // 0000 GETGBL R1 G24 + 0x58080003, // 0001 LDCONST R2 K3 + 0x880C0100, // 0002 GETMBR R3 R0 K0 + 0x780E0002, // 0003 JMPF R3 #0007 + 0x880C0100, // 0004 GETMBR R3 R0 K0 + 0x880C0701, // 0005 GETMBR R3 R3 K1 + 0x70020000, // 0006 JMP #0008 + 0x580C0004, // 0007 LDCONST R3 K4 + 0x7C040400, // 0008 CALL R1 2 + 0x80040200, // 0009 RET 1 R1 }) ) ); @@ -19752,29 +21355,28 @@ be_local_closure(sparkle_rainbow, /* name */ ); /*******************************************************************/ -// compact class 'CrenelPositionAnimation' ktab size: 21, total: 27 (saved 48 bytes) -static const bvalue be_ktab_class_CrenelPositionAnimation[21] = { +// compact class 'CrenelPositionAnimation' ktab size: 20, total: 26 (saved 48 bytes) +static const bvalue be_ktab_class_CrenelPositionAnimation[20] = { /* 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), + /* K1 */ be_nested_str_weak(_fix_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(pulse_size), + /* K6 */ be_nested_str_weak(low_size), + /* K7 */ be_nested_str_weak(nb_pulse), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_const_int(-16777216), + /* K10 */ be_nested_str_weak(fill_pixels), + /* K11 */ be_const_int(0), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(set_pixel_color), + /* K14 */ be_nested_str_weak(get_param), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(is_value_provider), + /* K17 */ be_nested_str_weak(0x_X2508x), + /* K18 */ 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), + /* K19 */ be_nested_str_weak(priority), }; @@ -19796,7 +21398,7 @@ be_local_closure(class_CrenelPositionAnimation_render, /* name */ &be_ktab_class_CrenelPositionAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[76]) { /* code */ + ( &(const binstruction[75]) { /* code */ 0x880C0100, // 0000 GETMBR R3 R0 K0 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -19804,75 +21406,74 @@ be_local_closure(class_CrenelPositionAnimation_render, /* name */ 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 + 0x8C0C0101, // 0007 GETMET R3 R0 K1 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0302, // 000B GETMBR R3 R1 K2 + 0x88100103, // 000C GETMBR R4 R0 K3 + 0x88140104, // 000D GETMBR R5 R0 K4 + 0x88180105, // 000E GETMBR R6 R0 K5 + 0x881C0106, // 000F GETMBR R7 R0 K6 + 0x88200107, // 0010 GETMBR R8 R0 K7 + 0x88240108, // 0011 GETMBR R9 R0 K8 + 0x60280009, // 0012 GETGBL R10 G9 + 0x002C0C07, // 0013 ADD R11 R6 R7 + 0x7C280200, // 0014 CALL R10 1 + 0x202C0909, // 0015 NE R11 R4 K9 + 0x782E0002, // 0016 JMPF R11 #001A + 0x8C2C030A, // 0017 GETMET R11 R1 K10 + 0x5C340800, // 0018 MOVE R13 R4 + 0x7C2C0400, // 0019 CALL R11 2 + 0x182C150B, // 001A LE R11 R10 K11 + 0x782E0000, // 001B JMPF R11 #001D + 0x5828000C, // 001C LDCONST R10 K12 + 0x1C2C110B, // 001D EQ R11 R8 K11 + 0x782E0001, // 001E JMPF R11 #0021 + 0x502C0200, // 001F LDBOOL R11 1 0 + 0x80041600, // 0020 RET 1 R11 + 0x142C110B, // 0021 LT R11 R8 K11 + 0x782E0006, // 0022 JMPF R11 #002A + 0x002C0A06, // 0023 ADD R11 R5 R6 + 0x042C170C, // 0024 SUB R11 R11 K12 + 0x102C160A, // 0025 MOD R11 R11 R10 + 0x042C1606, // 0026 SUB R11 R11 R6 + 0x002C170C, // 0027 ADD R11 R11 K12 + 0x5C141600, // 0028 MOVE R5 R11 + 0x70020007, // 0029 JMP #0032 + 0x442C1400, // 002A NEG R11 R10 + 0x142C0A0B, // 002B LT R11 R5 R11 + 0x782E0004, // 002C JMPF R11 #0032 + 0x202C110B, // 002D NE R11 R8 K11 + 0x782E0002, // 002E JMPF R11 #0032 + 0x00140A0A, // 002F ADD R5 R5 R10 + 0x0420110C, // 0030 SUB R8 R8 K12 + 0x7001FFF7, // 0031 JMP #002A + 0x142C0A03, // 0032 LT R11 R5 R3 + 0x782E0014, // 0033 JMPF R11 #0049 + 0x202C110B, // 0034 NE R11 R8 K11 + 0x782E0012, // 0035 JMPF R11 #0049 + 0x582C000B, // 0036 LDCONST R11 K11 + 0x14300B0B, // 0037 LT R12 R5 K11 + 0x78320001, // 0038 JMPF R12 #003B + 0x44300A00, // 0039 NEG R12 R5 + 0x5C2C1800, // 003A MOVE R11 R12 + 0x14301606, // 003B LT R12 R11 R6 + 0x78320008, // 003C JMPF R12 #0046 + 0x00300A0B, // 003D ADD R12 R5 R11 + 0x14301803, // 003E LT R12 R12 R3 + 0x78320005, // 003F JMPF R12 #0046 + 0x8C30030D, // 0040 GETMET R12 R1 K13 + 0x00380A0B, // 0041 ADD R14 R5 R11 + 0x5C3C1200, // 0042 MOVE R15 R9 + 0x7C300600, // 0043 CALL R12 3 + 0x002C170C, // 0044 ADD R11 R11 K12 + 0x7001FFF4, // 0045 JMP #003B + 0x00140A0A, // 0046 ADD R5 R5 R10 + 0x0420110C, // 0047 SUB R8 R8 K12 + 0x7001FFE8, // 0048 JMP #0032 + 0x502C0200, // 0049 LDBOOL R11 1 0 + 0x80041600, // 004A RET 1 R11 }) ) ); @@ -19897,11 +21498,11 @@ be_local_closure(class_CrenelPositionAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0x8C08010F, // 0001 GETMET R2 R0 K15 - 0x58100009, // 0002 LDCONST R4 K9 + 0x8C08010E, // 0001 GETMET R2 R0 K14 + 0x58100008, // 0002 LDCONST R4 K8 0x7C080400, // 0003 CALL R2 2 - 0xB80E2000, // 0004 GETNGBL R3 K16 - 0x8C0C0711, // 0005 GETMET R3 R3 K17 + 0xB80E1E00, // 0004 GETNGBL R3 K15 + 0x8C0C0710, // 0005 GETMET R3 R3 K16 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E0004, // 0008 JMPF R3 #000E @@ -19911,18 +21512,18 @@ be_local_closure(class_CrenelPositionAnimation_tostring, /* name */ 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 + 0x58100011, // 000F LDCONST R4 K17 + 0x88140108, // 0010 GETMBR R5 R0 K8 0x7C0C0400, // 0011 CALL R3 2 0x5C040600, // 0012 MOVE R1 R3 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100013, // 0014 LDCONST R4 K19 + 0x58100012, // 0014 LDCONST R4 K18 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 + 0x88180104, // 0016 GETMBR R6 R0 K4 + 0x881C0105, // 0017 GETMBR R7 R0 K5 + 0x88200106, // 0018 GETMBR R8 R0 K6 + 0x88240107, // 0019 GETMBR R9 R0 K7 + 0x88280113, // 001A GETMBR R10 R0 K19 0x882C0100, // 001B GETMBR R11 R0 K0 0x7C0C1000, // 001C CALL R3 8 0x80040600, // 001D RET 1 R3 @@ -20103,969 +21704,14 @@ be_local_closure(animation_init, /* name */ ); /*******************************************************************/ -// compact class 'ParameterizedObject' ktab size: 45, total: 85 (saved 320 bytes) -static const bvalue be_ktab_class_ParameterizedObject[45] = { - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(PARAMS), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(is_value_provider), - /* K5 */ be_nested_str_weak(produce_value), - /* K6 */ be_nested_str_weak(values), - /* K7 */ be_nested_str_weak(_get_param_def), - /* K8 */ be_nested_str_weak(default), - /* K9 */ be_nested_str_weak(_validate_param), - /* K10 */ be_nested_str_weak(on_param_changed), - /* K11 */ be_nested_str_weak(_has_param), - /* K12 */ be_nested_str_weak(_resolve_parameter_value), - /* K13 */ be_nested_str_weak(engine), - /* K14 */ be_nested_str_weak(time_ms), - /* K15 */ be_nested_str_weak(_X27_X25s_X27_X20object_X20has_X20no_X20attribute_X20_X27_X25s_X27), - /* K16 */ be_nested_str_weak(attribute_error), - /* K17 */ be_nested_str_weak(_set_parameter_value), - /* K18 */ be_nested_str_weak(value_error), - /* K19 */ be_nested_str_weak(toptr), - /* K20 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20is_X20not_X20defined_X20for_X20class_X20_X27_X25s_X27), - /* K21 */ be_nested_str_weak(nillable), - /* K22 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20does_X20not_X20accept_X20nil_X20values), - /* K23 */ be_nested_str_weak(int), - /* K24 */ be_nested_str_weak(type), - /* K25 */ be_nested_str_weak(any), - /* K26 */ be_nested_str_weak(real), - /* K27 */ be_nested_str_weak(math), - /* K28 */ be_nested_str_weak(round), - /* K29 */ be_nested_str_weak(bytes), - /* K30 */ be_nested_str_weak(instance), - /* K31 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20expects_X20type_X20_X27_X25s_X27_X20but_X20got_X20_X27_X25s_X27_X20_X28value_X3A_X20_X25s_X29), - /* K32 */ be_nested_str_weak(min), - /* K33 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20below_X20minimum_X20_X25s), - /* K34 */ be_nested_str_weak(max), - /* K35 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20above_X20maximum_X20_X25s), - /* K36 */ be_nested_str_weak(enum), - /* K37 */ be_nested_str_weak(size), - /* K38 */ be_const_int(0), - /* K39 */ be_const_int(1), - /* K40 */ be_nested_str_weak(Parameter_X20_X27_X25s_X27_X20value_X20_X25s_X20is_X20not_X20in_X20allowed_X20values_X20_X25s), - /* K41 */ be_nested_str_weak(keys), - /* K42 */ be_nested_str_weak(stop_iteration), - /* K43 */ be_nested_str_weak(ParameterizedObject_X20requires_X20an_X20engine_X20parameter), - /* K44 */ be_nested_str_weak(_init_parameter_values), -}; - - -extern const bclass be_class_ParameterizedObject; /******************************************************************** -** Solidified function: _get_param_def +** Solidified function: solid ********************************************************************/ -be_local_closure(class_ParameterizedObject__get_param_def, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(_get_param_def), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0006, // 0001 GETGBL R3 G6 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x78120010, // 0006 JMPF R4 #0018 - 0x8C100501, // 0007 GETMET R4 R2 K1 - 0x5C180600, // 0008 MOVE R6 R3 - 0x581C0002, // 0009 LDCONST R7 K2 - 0x7C100600, // 000A CALL R4 3 - 0x78120006, // 000B JMPF R4 #0013 - 0x88100702, // 000C GETMBR R4 R3 K2 - 0x8C140901, // 000D GETMET R5 R4 K1 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x7C140400, // 000F CALL R5 2 - 0x78160001, // 0010 JMPF R5 #0013 - 0x94140801, // 0011 GETIDX R5 R4 R1 - 0x80040A00, // 0012 RET 1 R5 - 0x60100003, // 0013 GETGBL R4 G3 - 0x5C140600, // 0014 MOVE R5 R3 - 0x7C100200, // 0015 CALL R4 1 - 0x5C0C0800, // 0016 MOVE R3 R4 - 0x7001FFEB, // 0017 JMP #0004 - 0x4C100000, // 0018 LDNIL R4 - 0x80040800, // 0019 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_ParameterizedObject_start, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80040000, // 0000 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resolve_value -********************************************************************/ -be_local_closure(class_ParameterizedObject_resolve_value, /* name */ - be_nested_proto( - 8, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(resolve_value), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100204, // 0001 EQ R4 R1 R4 - 0x78120001, // 0002 JMPF R4 #0005 - 0x4C100000, // 0003 LDNIL R4 - 0x80040800, // 0004 RET 1 R4 - 0xB8120600, // 0005 GETNGBL R4 K3 - 0x8C100904, // 0006 GETMET R4 R4 K4 - 0x5C180200, // 0007 MOVE R6 R1 - 0x7C100400, // 0008 CALL R4 2 - 0x78120005, // 0009 JMPF R4 #0010 - 0x8C100305, // 000A GETMET R4 R1 K5 - 0x5C180400, // 000B MOVE R6 R2 - 0x5C1C0600, // 000C MOVE R7 R3 - 0x7C100600, // 000D CALL R4 3 - 0x80040800, // 000E RET 1 R4 - 0x70020000, // 000F JMP #0011 - 0x80040200, // 0010 RET 1 R1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _resolve_parameter_value -********************************************************************/ -be_local_closure(class_ParameterizedObject__resolve_parameter_value, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(_resolve_parameter_value), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x880C0106, // 0000 GETMBR R3 R0 K6 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E000D, // 0004 JMPT R3 #0013 - 0x8C0C0107, // 0005 GETMET R3 R0 K7 - 0x5C140200, // 0006 MOVE R5 R1 - 0x7C0C0400, // 0007 CALL R3 2 - 0x4C100000, // 0008 LDNIL R4 - 0x20100604, // 0009 NE R4 R3 R4 - 0x78120005, // 000A JMPF R4 #0011 - 0x8C100701, // 000B GETMET R4 R3 K1 - 0x58180008, // 000C LDCONST R6 K8 - 0x7C100400, // 000D CALL R4 2 - 0x78120001, // 000E JMPF R4 #0011 - 0x94100708, // 000F GETIDX R4 R3 K8 - 0x80040800, // 0010 RET 1 R4 - 0x4C100000, // 0011 LDNIL R4 - 0x80040800, // 0012 RET 1 R4 - 0x880C0106, // 0013 GETMBR R3 R0 K6 - 0x940C0601, // 0014 GETIDX R3 R3 R1 - 0xB8120600, // 0015 GETNGBL R4 K3 - 0x8C100904, // 0016 GETMET R4 R4 K4 - 0x5C180600, // 0017 MOVE R6 R3 - 0x7C100400, // 0018 CALL R4 2 - 0x78120005, // 0019 JMPF R4 #0020 - 0x8C100705, // 001A GETMET R4 R3 K5 - 0x5C180200, // 001B MOVE R6 R1 - 0x5C1C0400, // 001C MOVE R7 R2 - 0x7C100600, // 001D CALL R4 3 - 0x80040800, // 001E RET 1 R4 - 0x70020000, // 001F JMP #0021 - 0x80040600, // 0020 RET 1 R3 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _set_parameter_value -********************************************************************/ -be_local_closure(class_ParameterizedObject__set_parameter_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(_set_parameter_value), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xB80E0600, // 0000 GETNGBL R3 K3 - 0x8C0C0704, // 0001 GETMET R3 R3 K4 - 0x5C140400, // 0002 MOVE R5 R2 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E0004, // 0004 JMPT R3 #000A - 0x8C0C0109, // 0005 GETMET R3 R0 K9 - 0x5C140200, // 0006 MOVE R5 R1 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C0C0600, // 0008 CALL R3 3 - 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0106, // 000A GETMBR R3 R0 K6 - 0x980C0202, // 000B SETIDX R3 R1 R2 - 0x8C0C010A, // 000C GETMET R3 R0 K10 - 0x5C140200, // 000D MOVE R5 R1 - 0x5C180400, // 000E MOVE R6 R2 - 0x7C0C0600, // 000F CALL R3 3 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_param_metadata -********************************************************************/ -be_local_closure(class_ParameterizedObject_get_param_metadata, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(get_param_metadata), - &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: member -********************************************************************/ -be_local_closure(class_ParameterizedObject_member, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(member), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x88080106, // 0000 GETMBR R2 R0 K6 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x740A0003, // 0004 JMPT R2 #0009 - 0x8C08010B, // 0005 GETMET R2 R0 K11 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x780A0005, // 0008 JMPF R2 #000F - 0x8C08010C, // 0009 GETMET R2 R0 K12 - 0x5C100200, // 000A MOVE R4 R1 - 0x8814010D, // 000B GETMBR R5 R0 K13 - 0x88140B0E, // 000C GETMBR R5 R5 K14 - 0x7C080600, // 000D CALL R2 3 - 0x80040400, // 000E RET 1 R2 - 0x60080018, // 000F GETGBL R2 G24 - 0x580C000F, // 0010 LDCONST R3 K15 - 0x60100005, // 0011 GETGBL R4 G5 - 0x5C140000, // 0012 MOVE R5 R0 - 0x7C100200, // 0013 CALL R4 1 - 0x5C140200, // 0014 MOVE R5 R1 - 0x7C080600, // 0015 CALL R2 3 - 0xB0062002, // 0016 RAISE 1 K16 R2 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_param_changed -********************************************************************/ -be_local_closure(class_ParameterizedObject_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_ParameterizedObject, /* shared constants */ - be_str_weak(on_param_changed), - &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_param_value -********************************************************************/ -be_local_closure(class_ParameterizedObject_get_param_value, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(get_param_value), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C010C, // 0000 GETMET R3 R0 K12 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80040600, // 0004 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_param -********************************************************************/ -be_local_closure(class_ParameterizedObject_set_param, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(set_param), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C0C010B, // 0000 GETMET R3 R0 K11 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x740E0001, // 0003 JMPT R3 #0006 - 0x500C0000, // 0004 LDBOOL R3 0 0 - 0x80040600, // 0005 RET 1 R3 - 0xA8020008, // 0006 EXBLK 0 #0010 - 0x8C0C0111, // 0007 GETMET R3 R0 K17 - 0x5C140200, // 0008 MOVE R5 R1 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C0C0600, // 000A CALL R3 3 - 0x500C0200, // 000B LDBOOL R3 1 0 - 0xA8040001, // 000C EXBLK 1 1 - 0x80040600, // 000D RET 1 R3 - 0xA8040001, // 000E EXBLK 1 1 - 0x70020006, // 000F JMP #0017 - 0x580C0012, // 0010 LDCONST R3 K18 - 0xAC0C0201, // 0011 CATCH R3 1 1 - 0x70020002, // 0012 JMP #0016 - 0x50100000, // 0013 LDBOOL R4 0 0 - 0x80040800, // 0014 RET 1 R4 - 0x70020000, // 0015 JMP #0017 - 0xB0080000, // 0016 RAISE 2 R0 R0 - 0x80000000, // 0017 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: == -********************************************************************/ -be_local_closure(class_ParameterizedObject__X3D_X3D, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(_X3D_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0513, // 0001 GETMET R3 R2 K19 - 0x5C140000, // 0002 MOVE R5 R0 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100513, // 0004 GETMET R4 R2 K19 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C100400, // 0006 CALL R4 2 - 0x1C0C0604, // 0007 EQ R3 R3 R4 - 0x80040600, // 0008 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_param -********************************************************************/ -be_local_closure(class_ParameterizedObject__validate_param, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(_validate_param), - &be_const_str_solidified, - ( &(const binstruction[162]) { /* code */ - 0x8C0C0107, // 0000 GETMET R3 R0 K7 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x4C100000, // 0003 LDNIL R4 - 0x1C100604, // 0004 EQ R4 R3 R4 - 0x78120007, // 0005 JMPF R4 #000E - 0x60100018, // 0006 GETGBL R4 G24 - 0x58140014, // 0007 LDCONST R5 K20 - 0x5C180200, // 0008 MOVE R6 R1 - 0x601C0005, // 0009 GETGBL R7 G5 - 0x5C200000, // 000A MOVE R8 R0 - 0x7C1C0200, // 000B CALL R7 1 - 0x7C100600, // 000C CALL R4 3 - 0xB0062404, // 000D RAISE 1 K18 R4 - 0xB8120600, // 000E GETNGBL R4 K3 - 0x8C100904, // 000F GETMET R4 R4 K4 - 0x5C180400, // 0010 MOVE R6 R2 - 0x7C100400, // 0011 CALL R4 2 - 0x78120000, // 0012 JMPF R4 #0014 - 0x80040400, // 0013 RET 1 R2 - 0x4C100000, // 0014 LDNIL R4 - 0x1C100404, // 0015 EQ R4 R2 R4 - 0x78120012, // 0016 JMPF R4 #002A - 0x8C100701, // 0017 GETMET R4 R3 K1 - 0x58180015, // 0018 LDCONST R6 K21 - 0x7C100400, // 0019 CALL R4 2 - 0x78120004, // 001A JMPF R4 #0020 - 0x94100715, // 001B GETIDX R4 R3 K21 - 0x50140200, // 001C LDBOOL R5 1 0 - 0x1C100805, // 001D EQ R4 R4 R5 - 0x78120000, // 001E JMPF R4 #0020 - 0x80040400, // 001F RET 1 R2 - 0x8C100701, // 0020 GETMET R4 R3 K1 - 0x58180008, // 0021 LDCONST R6 K8 - 0x7C100400, // 0022 CALL R4 2 - 0x78120000, // 0023 JMPF R4 #0025 - 0x80040400, // 0024 RET 1 R2 - 0x60100018, // 0025 GETGBL R4 G24 - 0x58140016, // 0026 LDCONST R5 K22 - 0x5C180200, // 0027 MOVE R6 R1 - 0x7C100400, // 0028 CALL R4 2 - 0xB0062404, // 0029 RAISE 1 K18 R4 - 0x58100017, // 002A LDCONST R4 K23 - 0x8C140701, // 002B GETMET R5 R3 K1 - 0x581C0018, // 002C LDCONST R7 K24 - 0x7C140400, // 002D CALL R5 2 - 0x78160000, // 002E JMPF R5 #0030 - 0x94100718, // 002F GETIDX R4 R3 K24 - 0x60140004, // 0030 GETGBL R5 G4 - 0x5C180400, // 0031 MOVE R6 R2 - 0x7C140200, // 0032 CALL R5 1 - 0x20180919, // 0033 NE R6 R4 K25 - 0x781A0031, // 0034 JMPF R6 #0067 - 0x1C180917, // 0035 EQ R6 R4 K23 - 0x781A000A, // 0036 JMPF R6 #0042 - 0x1C180B1A, // 0037 EQ R6 R5 K26 - 0x781A0008, // 0038 JMPF R6 #0042 - 0xA41A3600, // 0039 IMPORT R6 K27 - 0x601C0009, // 003A GETGBL R7 G9 - 0x8C200D1C, // 003B GETMET R8 R6 K28 - 0x5C280400, // 003C MOVE R10 R2 - 0x7C200400, // 003D CALL R8 2 - 0x7C1C0200, // 003E CALL R7 1 - 0x5C080E00, // 003F MOVE R2 R7 - 0x58140017, // 0040 LDCONST R5 K23 - 0x70020024, // 0041 JMP #0067 - 0x1C18091D, // 0042 EQ R6 R4 K29 - 0x781A0018, // 0043 JMPF R6 #005D - 0x1C180B1E, // 0044 EQ R6 R5 K30 - 0x781A0006, // 0045 JMPF R6 #004D - 0x6018000F, // 0046 GETGBL R6 G15 - 0x5C1C0400, // 0047 MOVE R7 R2 - 0x60200015, // 0048 GETGBL R8 G21 - 0x7C180400, // 0049 CALL R6 2 - 0x781A0001, // 004A JMPF R6 #004D - 0x5814001D, // 004B LDCONST R5 K29 - 0x7002000E, // 004C JMP #005C - 0x20180B1E, // 004D NE R6 R5 K30 - 0x741A0004, // 004E JMPT R6 #0054 - 0x6018000F, // 004F GETGBL R6 G15 - 0x5C1C0400, // 0050 MOVE R7 R2 - 0x60200015, // 0051 GETGBL R8 G21 - 0x7C180400, // 0052 CALL R6 2 - 0x741A0007, // 0053 JMPT R6 #005C - 0x60180018, // 0054 GETGBL R6 G24 - 0x581C001F, // 0055 LDCONST R7 K31 - 0x5C200200, // 0056 MOVE R8 R1 - 0x5C240800, // 0057 MOVE R9 R4 - 0x5C280A00, // 0058 MOVE R10 R5 - 0x5C2C0400, // 0059 MOVE R11 R2 - 0x7C180A00, // 005A CALL R6 5 - 0xB0062406, // 005B RAISE 1 K18 R6 - 0x70020009, // 005C JMP #0067 - 0x20180805, // 005D NE R6 R4 R5 - 0x781A0007, // 005E JMPF R6 #0067 - 0x60180018, // 005F GETGBL R6 G24 - 0x581C001F, // 0060 LDCONST R7 K31 - 0x5C200200, // 0061 MOVE R8 R1 - 0x5C240800, // 0062 MOVE R9 R4 - 0x5C280A00, // 0063 MOVE R10 R5 - 0x5C2C0400, // 0064 MOVE R11 R2 - 0x7C180A00, // 0065 CALL R6 5 - 0xB0062406, // 0066 RAISE 1 K18 R6 - 0x1C180B17, // 0067 EQ R6 R5 K23 - 0x781A001B, // 0068 JMPF R6 #0085 - 0x8C180701, // 0069 GETMET R6 R3 K1 - 0x58200020, // 006A LDCONST R8 K32 - 0x7C180400, // 006B CALL R6 2 - 0x781A0009, // 006C JMPF R6 #0077 - 0x94180720, // 006D GETIDX R6 R3 K32 - 0x14180406, // 006E LT R6 R2 R6 - 0x781A0006, // 006F JMPF R6 #0077 - 0x60180018, // 0070 GETGBL R6 G24 - 0x581C0021, // 0071 LDCONST R7 K33 - 0x5C200200, // 0072 MOVE R8 R1 - 0x5C240400, // 0073 MOVE R9 R2 - 0x94280720, // 0074 GETIDX R10 R3 K32 - 0x7C180800, // 0075 CALL R6 4 - 0xB0062406, // 0076 RAISE 1 K18 R6 - 0x8C180701, // 0077 GETMET R6 R3 K1 - 0x58200022, // 0078 LDCONST R8 K34 - 0x7C180400, // 0079 CALL R6 2 - 0x781A0009, // 007A JMPF R6 #0085 - 0x94180722, // 007B GETIDX R6 R3 K34 - 0x24180406, // 007C GT R6 R2 R6 - 0x781A0006, // 007D JMPF R6 #0085 - 0x60180018, // 007E GETGBL R6 G24 - 0x581C0023, // 007F LDCONST R7 K35 - 0x5C200200, // 0080 MOVE R8 R1 - 0x5C240400, // 0081 MOVE R9 R2 - 0x94280722, // 0082 GETIDX R10 R3 K34 - 0x7C180800, // 0083 CALL R6 4 - 0xB0062406, // 0084 RAISE 1 K18 R6 - 0x8C180701, // 0085 GETMET R6 R3 K1 - 0x58200024, // 0086 LDCONST R8 K36 - 0x7C180400, // 0087 CALL R6 2 - 0x781A0017, // 0088 JMPF R6 #00A1 - 0x50180000, // 0089 LDBOOL R6 0 0 - 0xA41E0000, // 008A IMPORT R7 K0 - 0x94200724, // 008B GETIDX R8 R3 K36 - 0x8C241125, // 008C GETMET R9 R8 K37 - 0x7C240200, // 008D CALL R9 1 - 0x58280026, // 008E LDCONST R10 K38 - 0x142C1409, // 008F LT R11 R10 R9 - 0x782E0006, // 0090 JMPF R11 #0098 - 0x942C100A, // 0091 GETIDX R11 R8 R10 - 0x1C30040B, // 0092 EQ R12 R2 R11 - 0x78320001, // 0093 JMPF R12 #0096 - 0x50180200, // 0094 LDBOOL R6 1 0 - 0x70020001, // 0095 JMP #0098 - 0x00281527, // 0096 ADD R10 R10 K39 - 0x7001FFF6, // 0097 JMP #008F - 0x5C2C0C00, // 0098 MOVE R11 R6 - 0x742E0006, // 0099 JMPT R11 #00A1 - 0x602C0018, // 009A GETGBL R11 G24 - 0x58300028, // 009B LDCONST R12 K40 - 0x5C340200, // 009C MOVE R13 R1 - 0x5C380400, // 009D MOVE R14 R2 - 0x5C3C1000, // 009E MOVE R15 R8 - 0x7C2C0800, // 009F CALL R11 4 - 0xB006240B, // 00A0 RAISE 1 K18 R11 - 0x80040400, // 00A1 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _init_parameter_values -********************************************************************/ -be_local_closure(class_ParameterizedObject__init_parameter_values, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(_init_parameter_values), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x60080006, // 0001 GETGBL R2 G6 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0022, // 0006 JMPF R3 #002A - 0x8C0C0301, // 0007 GETMET R3 R1 K1 - 0x5C140400, // 0008 MOVE R5 R2 - 0x58180002, // 0009 LDCONST R6 K2 - 0x7C0C0600, // 000A CALL R3 3 - 0x780E0018, // 000B JMPF R3 #0025 - 0x880C0502, // 000C GETMBR R3 R2 K2 - 0x60100010, // 000D GETGBL R4 G16 - 0x8C140729, // 000E GETMET R5 R3 K41 - 0x7C140200, // 000F CALL R5 1 - 0x7C100200, // 0010 CALL R4 1 - 0xA802000F, // 0011 EXBLK 0 #0022 - 0x5C140800, // 0012 MOVE R5 R4 - 0x7C140000, // 0013 CALL R5 0 - 0x88180106, // 0014 GETMBR R6 R0 K6 - 0x8C180D01, // 0015 GETMET R6 R6 K1 - 0x5C200A00, // 0016 MOVE R8 R5 - 0x7C180400, // 0017 CALL R6 2 - 0x741A0007, // 0018 JMPT R6 #0021 - 0x94180605, // 0019 GETIDX R6 R3 R5 - 0x8C1C0D01, // 001A GETMET R7 R6 K1 - 0x58240008, // 001B LDCONST R9 K8 - 0x7C1C0400, // 001C CALL R7 2 - 0x781E0002, // 001D JMPF R7 #0021 - 0x881C0106, // 001E GETMBR R7 R0 K6 - 0x94200D08, // 001F GETIDX R8 R6 K8 - 0x981C0A08, // 0020 SETIDX R7 R5 R8 - 0x7001FFEF, // 0021 JMP #0012 - 0x5810002A, // 0022 LDCONST R4 K42 - 0xAC100200, // 0023 CATCH R4 1 0 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x600C0003, // 0025 GETGBL R3 G3 - 0x5C100400, // 0026 MOVE R4 R2 - 0x7C0C0200, // 0027 CALL R3 1 - 0x5C080600, // 0028 MOVE R2 R3 - 0x7001FFD9, // 0029 JMP #0004 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ParameterizedObject_init, /* name */ +be_local_closure(solid, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x740A0004, // 0002 JMPT R2 #0008 - 0x60080004, // 0003 GETGBL R2 G4 - 0x5C0C0200, // 0004 MOVE R3 R1 - 0x7C080200, // 0005 CALL R2 1 - 0x2008051E, // 0006 NE R2 R2 K30 - 0x780A0000, // 0007 JMPF R2 #0009 - 0xB006252B, // 0008 RAISE 1 K18 K43 - 0x90021A01, // 0009 SETMBR R0 K13 R1 - 0x60080013, // 000A GETGBL R2 G19 - 0x7C080000, // 000B CALL R2 0 - 0x90020C02, // 000C SETMBR R0 K6 R2 - 0x8C08012C, // 000D GETMET R2 R0 K44 - 0x7C080200, // 000E CALL R2 1 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: != -********************************************************************/ -be_local_closure(class_ParameterizedObject__X21_X3D, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(_X21_X3D), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x1C080001, // 0000 EQ R2 R0 R1 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x50080001, // 0002 LDBOOL R2 0 1 - 0x50080200, // 0003 LDBOOL R2 1 0 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _has_param -********************************************************************/ -be_local_closure(class_ParameterizedObject__has_param, /* 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_ParameterizedObject, /* shared constants */ - be_str_weak(_has_param), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C0006, // 0001 GETGBL R3 G6 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C0C0200, // 0003 CALL R3 1 - 0x4C100000, // 0004 LDNIL R4 - 0x20100604, // 0005 NE R4 R3 R4 - 0x78120010, // 0006 JMPF R4 #0018 - 0x8C100501, // 0007 GETMET R4 R2 K1 - 0x5C180600, // 0008 MOVE R6 R3 - 0x581C0002, // 0009 LDCONST R7 K2 - 0x7C100600, // 000A CALL R4 3 - 0x78120006, // 000B JMPF R4 #0013 - 0x88100702, // 000C GETMBR R4 R3 K2 - 0x8C140901, // 000D GETMET R5 R4 K1 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x7C140400, // 000F CALL R5 2 - 0x78160001, // 0010 JMPF R5 #0013 - 0x50140200, // 0011 LDBOOL R5 1 0 - 0x80040A00, // 0012 RET 1 R5 - 0x60100003, // 0013 GETGBL R4 G3 - 0x5C140600, // 0014 MOVE R5 R3 - 0x7C100200, // 0015 CALL R4 1 - 0x5C0C0800, // 0016 MOVE R3 R4 - 0x7001FFEB, // 0017 JMP #0004 - 0x50100000, // 0018 LDBOOL R4 0 0 - 0x80040800, // 0019 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setmember -********************************************************************/ -be_local_closure(class_ParameterizedObject_setmember, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(setmember), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C0C010B, // 0000 GETMET R3 R0 K11 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x780E0004, // 0003 JMPF R3 #0009 - 0x8C0C0111, // 0004 GETMET R3 R0 K17 - 0x5C140200, // 0005 MOVE R5 R1 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C0C0600, // 0007 CALL R3 3 - 0x70020007, // 0008 JMP #0011 - 0x600C0018, // 0009 GETGBL R3 G24 - 0x5810000F, // 000A LDCONST R4 K15 - 0x60140005, // 000B GETGBL R5 G5 - 0x5C180000, // 000C MOVE R6 R0 - 0x7C140200, // 000D CALL R5 1 - 0x5C180200, // 000E MOVE R6 R1 - 0x7C0C0600, // 000F CALL R3 3 - 0xB0062003, // 0010 RAISE 1 K16 R3 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_param -********************************************************************/ -be_local_closure(class_ParameterizedObject_get_param, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ParameterizedObject, /* shared constants */ - be_str_weak(get_param), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x880C0106, // 0000 GETMBR R3 R0 K6 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x780E0002, // 0004 JMPF R3 #0008 - 0x880C0106, // 0005 GETMBR R3 R0 K6 - 0x940C0601, // 0006 GETIDX R3 R3 R1 - 0x80040600, // 0007 RET 1 R3 - 0x8C0C0107, // 0008 GETMET R3 R0 K7 - 0x5C140200, // 0009 MOVE R5 R1 - 0x7C0C0400, // 000A CALL R3 2 - 0x4C100000, // 000B LDNIL R4 - 0x20100604, // 000C NE R4 R3 R4 - 0x78120005, // 000D JMPF R4 #0014 - 0x8C100701, // 000E GETMET R4 R3 K1 - 0x58180008, // 000F LDCONST R6 K8 - 0x7C100400, // 0010 CALL R4 2 - 0x78120001, // 0011 JMPF R4 #0014 - 0x94100708, // 0012 GETIDX R4 R3 K8 - 0x80040800, // 0013 RET 1 R4 - 0x80040400, // 0014 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified class: ParameterizedObject -********************************************************************/ -be_local_class(ParameterizedObject, - 2, - NULL, - be_nested_map(21, - ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_param, -1), be_const_closure(class_ParameterizedObject_get_param_closure) }, - { be_const_key_weak(engine, -1), be_const_var(1) }, - { be_const_key_weak(resolve_value, 1), be_const_closure(class_ParameterizedObject_resolve_value_closure) }, - { be_const_key_weak(_resolve_parameter_value, -1), be_const_closure(class_ParameterizedObject__resolve_parameter_value_closure) }, - { be_const_key_weak(_set_parameter_value, -1), be_const_closure(class_ParameterizedObject__set_parameter_value_closure) }, - { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ParameterizedObject_on_param_changed_closure) }, - { be_const_key_weak(set_param, -1), be_const_closure(class_ParameterizedObject_set_param_closure) }, - { be_const_key_weak(_validate_param, 5), be_const_closure(class_ParameterizedObject__validate_param_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_ParameterizedObject_init_closure) }, - { be_const_key_weak(get_param_value, -1), be_const_closure(class_ParameterizedObject_get_param_value_closure) }, - { be_const_key_weak(_get_param_def, 6), be_const_closure(class_ParameterizedObject__get_param_def_closure) }, - { be_const_key_weak(_X3D_X3D, -1), be_const_closure(class_ParameterizedObject__X3D_X3D_closure) }, - { be_const_key_weak(PARAMS, 8), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(0, - ( (struct bmapnode*) &(const bmapnode[]) { - })) ) } )) }, - { be_const_key_weak(member, 7), be_const_closure(class_ParameterizedObject_member_closure) }, - { be_const_key_weak(get_param_metadata, 15), be_const_closure(class_ParameterizedObject_get_param_metadata_closure) }, - { be_const_key_weak(_init_parameter_values, -1), be_const_closure(class_ParameterizedObject__init_parameter_values_closure) }, - { be_const_key_weak(_X21_X3D, -1), be_const_closure(class_ParameterizedObject__X21_X3D_closure) }, - { be_const_key_weak(_has_param, -1), be_const_closure(class_ParameterizedObject__has_param_closure) }, - { be_const_key_weak(values, -1), be_const_var(0) }, - { be_const_key_weak(setmember, -1), be_const_closure(class_ParameterizedObject_setmember_closure) }, - { be_const_key_weak(start, 0), be_const_closure(class_ParameterizedObject_start_closure) }, - })), - be_str_weak(ParameterizedObject) -); - -/******************************************************************** -** Solidified function: create_closure_value -********************************************************************/ -be_local_closure(create_closure_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 1, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -21074,810 +21720,18 @@ be_local_closure(create_closure_value, /* name */ 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), + /* K1 */ be_nested_str_weak(name), + /* K2 */ be_nested_str_weak(solid), }), - be_str_weak(create_closure_value), + be_str_weak(solid), &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 - }) - ) -); -/*******************************************************************/ - -// 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) -); - -/******************************************************************** -** Solidified function: twinkle_classic -********************************************************************/ -be_local_closure(twinkle_classic, /* 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_classic), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x8C040300, // 0001 GETMET R1 R1 K0 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 - }) - ) -); -/*******************************************************************/ - -// 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 + 0x90060302, // 0004 SETMBR R1 K1 K2 + 0x80040200, // 0005 RET 1 R1 }) ) ); @@ -21885,89 +21739,12 @@ be_local_closure(class_BeaconAnimation_render, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: list_user_functions ********************************************************************/ -be_local_closure(class_BeaconAnimation_tostring, /* name */ +be_local_closure(list_user_functions, /* 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(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: pulsating_color_provider -********************************************************************/ -be_local_closure(pulsating_color_provider, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 0, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -21976,22 +21753,33 @@ be_local_closure(pulsating_color_provider, /* name */ 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), + /* K1 */ be_nested_str_weak(user_functions), + /* K2 */ be_nested_str_weak(keys), + /* K3 */ be_nested_str_weak(push), + /* K4 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(pulsating_color_provider), + be_str_weak(list_user_functions), &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 + ( &(const binstruction[19]) { /* code */ + 0x60000012, // 0000 GETGBL R0 G18 + 0x7C000000, // 0001 CALL R0 0 + 0x60040010, // 0002 GETGBL R1 G16 + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x88080501, // 0004 GETMBR R2 R2 K1 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x7C040200, // 0007 CALL R1 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C080200, // 0009 MOVE R2 R1 + 0x7C080000, // 000A CALL R2 0 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 + 0x7001FFF9, // 000E JMP #0009 + 0x58040004, // 000F LDCONST R1 K4 + 0xAC040200, // 0010 CATCH R1 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040000, // 0012 RET 1 R0 }) ) ); @@ -21999,11 +21787,11 @@ be_local_closure(pulsating_color_provider, /* name */ /******************************************************************** -** Solidified function: noise_fractal +** Solidified function: twinkle_gentle ********************************************************************/ -be_local_closure(noise_fractal, /* name */ +be_local_closure(twinkle_gentle, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -22011,64 +21799,43 @@ be_local_closure(noise_fractal, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ + ( &(const bvalue[ 9]) { /* 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), + /* 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_const_int(3), + /* K6 */ be_nested_str_weak(fade_speed), + /* K7 */ be_nested_str_weak(min_brightness), + /* K8 */ be_nested_str_weak(max_brightness), }), - be_str_weak(noise_fractal), + be_str_weak(twinkle_gentle), &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ + ( &(const binstruction[16]) { /* 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 + 0x5409D6FF, // 0004 LDINT R2 -10496 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x540A003F, // 0006 LDINT R2 64 + 0x90060602, // 0007 SETMBR R1 K3 R2 + 0x90060905, // 0008 SETMBR R1 K4 K5 + 0x540A0077, // 0009 LDINT R2 120 + 0x90060C02, // 000A SETMBR R1 K6 R2 + 0x540A000F, // 000B LDINT R2 16 + 0x90060E02, // 000C SETMBR R1 K7 R2 + 0x540A00B3, // 000D LDINT R2 180 + 0x90061002, // 000E SETMBR R1 K8 R2 + 0x80040200, // 000F RET 1 R1 }) ) ); /*******************************************************************/ -// compact class 'GradientAnimation' ktab size: 43, total: 82 (saved 312 bytes) -static const bvalue be_ktab_class_GradientAnimation[43] = { +// compact class 'GradientAnimation' ktab size: 45, total: 84 (saved 312 bytes) +static const bvalue be_ktab_class_GradientAnimation[45] = { /* K0 */ be_nested_str_weak(update), /* K1 */ be_nested_str_weak(movement_speed), /* K2 */ be_const_int(0), @@ -22091,27 +21858,29 @@ static const bvalue be_ktab_class_GradientAnimation[43] = { /* 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), + /* K22 */ be_nested_str_weak(_fix_time_ms), + /* K23 */ be_nested_str_weak(engine), + /* K24 */ be_nested_str_weak(get_strip_length), + /* K25 */ be_nested_str_weak(width), + /* K26 */ be_nested_str_weak(current_colors), + /* K27 */ be_nested_str_weak(set_pixel_color), + /* K28 */ be_nested_str_weak(on_param_changed), + /* K29 */ be_nested_str_weak(resize), + /* K30 */ be_const_int(-16777216), + /* K31 */ be_nested_str_weak(_calculate_linear_position), + /* K32 */ be_nested_str_weak(_calculate_radial_position), + /* K33 */ be_nested_str_weak(light_state), + /* K34 */ be_const_int(3), + /* K35 */ be_nested_str_weak(HsToRgb), + /* K36 */ be_nested_str_weak(r), + /* K37 */ be_nested_str_weak(g), + /* K38 */ be_nested_str_weak(b), + /* K39 */ be_nested_str_weak(is_color_provider), + /* K40 */ be_nested_str_weak(get_color_for_value), + /* K41 */ be_nested_str_weak(resolve_value), + /* K42 */ be_nested_str_weak(int), + /* K43 */ be_nested_str_weak(init), + /* K44 */ be_nested_str_weak(center_pos), }; @@ -22326,7 +22095,7 @@ be_local_closure(class_GradientAnimation_render, /* name */ &be_ktab_class_GradientAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[34]) { /* code */ 0x880C0115, // 0000 GETMBR R3 R0 K21 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 @@ -22334,29 +22103,33 @@ be_local_closure(class_GradientAnimation_render, /* name */ 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 + 0x8C0C0116, // 0007 GETMET R3 R0 K22 + 0x5C140400, // 0008 MOVE R5 R2 + 0x7C0C0400, // 0009 CALL R3 2 + 0x5C080600, // 000A MOVE R2 R3 + 0x880C0117, // 000B GETMBR R3 R0 K23 + 0x8C0C0718, // 000C GETMET R3 R3 K24 + 0x7C0C0200, // 000D CALL R3 1 + 0x58100002, // 000E LDCONST R4 K2 + 0x14140803, // 000F LT R5 R4 R3 + 0x7816000E, // 0010 JMPF R5 #0020 + 0x88140319, // 0011 GETMBR R5 R1 K25 + 0x14140805, // 0012 LT R5 R4 R5 + 0x7816000B, // 0013 JMPF R5 #0020 + 0x6014000C, // 0014 GETGBL R5 G12 + 0x8818011A, // 0015 GETMBR R6 R0 K26 + 0x7C140200, // 0016 CALL R5 1 + 0x14140805, // 0017 LT R5 R4 R5 + 0x78160004, // 0018 JMPF R5 #001E + 0x8C14031B, // 0019 GETMET R5 R1 K27 + 0x5C1C0800, // 001A MOVE R7 R4 + 0x8820011A, // 001B GETMBR R8 R0 K26 + 0x94201004, // 001C GETIDX R8 R8 R4 + 0x7C140600, // 001D CALL R5 3 + 0x00100908, // 001E ADD R4 R4 K8 + 0x7001FFEE, // 001F JMP #000F + 0x50140200, // 0020 LDBOOL R5 1 0 + 0x80040A00, // 0021 RET 1 R5 }) ) ); @@ -22379,44 +22152,51 @@ be_local_closure(class_GradientAnimation_on_param_changed, /* name */ &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 + ( &(const binstruction[44]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 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 + 0x8C0C071C, // 0003 GETMET R3 R3 K28 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x880C0117, // 0007 GETMBR R3 R0 K23 + 0x8C0C0718, // 0008 GETMET R3 R3 K24 + 0x7C0C0200, // 0009 CALL R3 1 + 0x6010000C, // 000A GETGBL R4 G12 + 0x8814011A, // 000B GETMBR R5 R0 K26 + 0x7C100200, // 000C CALL R4 1 + 0x20100803, // 000D NE R4 R4 R3 + 0x7812001B, // 000E JMPF R4 #002B + 0x8810011A, // 000F GETMBR R4 R0 K26 + 0x8C10091D, // 0010 GETMET R4 R4 K29 + 0x5C180600, // 0011 MOVE R6 R3 + 0x7C100400, // 0012 CALL R4 2 + 0x6010000C, // 0013 GETGBL R4 G12 + 0x8814011A, // 0014 GETMBR R5 R0 K26 + 0x7C100200, // 0015 CALL R4 1 + 0x14140803, // 0016 LT R5 R4 R3 + 0x78160012, // 0017 JMPF R5 #002B + 0x6014000C, // 0018 GETGBL R5 G12 + 0x8818011A, // 0019 GETMBR R6 R0 K26 + 0x7C140200, // 001A CALL R5 1 + 0x28140805, // 001B GE R5 R4 R5 + 0x74160004, // 001C JMPT R5 #0022 + 0x8814011A, // 001D GETMBR R5 R0 K26 + 0x94140A04, // 001E GETIDX R5 R5 R4 + 0x4C180000, // 001F LDNIL R6 + 0x1C140A06, // 0020 EQ R5 R5 R6 + 0x78160006, // 0021 JMPF R5 #0029 + 0x6014000C, // 0022 GETGBL R5 G12 + 0x8818011A, // 0023 GETMBR R6 R0 K26 + 0x7C140200, // 0024 CALL R5 1 + 0x14140805, // 0025 LT R5 R4 R5 + 0x78160001, // 0026 JMPF R5 #0029 + 0x8814011A, // 0027 GETMBR R5 R0 K26 + 0x9814091E, // 0028 SETIDX R5 R4 K30 + 0x00100908, // 0029 ADD R4 R4 K8 + 0x7001FFEA, // 002A JMP #0016 + 0x80000000, // 002B RET 0 }) ) ); @@ -22442,16 +22222,16 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ ( &(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 + 0x88100117, // 0002 GETMBR R4 R0 K23 + 0x8C100918, // 0003 GETMET R4 R4 K24 0x7C100200, // 0004 CALL R4 1 0x6014000C, // 0005 GETGBL R5 G12 - 0x88180119, // 0006 GETMBR R6 R0 K25 + 0x8818011A, // 0006 GETMBR R6 R0 K26 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 + 0x8814011A, // 000A GETMBR R5 R0 K26 + 0x8C140B1D, // 000B GETMET R5 R5 K29 0x5C1C0800, // 000C MOVE R7 R4 0x7C140400, // 000D CALL R5 2 0x58140002, // 000E LDCONST R5 K2 @@ -22460,13 +22240,13 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x58180002, // 0011 LDCONST R6 K2 0x1C1C0502, // 0012 EQ R7 R2 K2 0x781E0005, // 0013 JMPF R7 #001A - 0x8C1C011D, // 0014 GETMET R7 R0 K29 + 0x8C1C011F, // 0014 GETMET R7 R0 K31 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 + 0x8C1C0120, // 001A GETMET R7 R0 K32 0x5C240A00, // 001B MOVE R9 R5 0x5C280800, // 001C MOVE R10 R4 0x7C1C0600, // 001D CALL R7 3 @@ -22476,7 +22256,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x542200FF, // 0021 LDINT R8 256 0x101C0E08, // 0022 MOD R7 R7 R8 0x5C180E00, // 0023 MOVE R6 R7 - 0x581C001C, // 0024 LDCONST R7 K28 + 0x581C001E, // 0024 LDCONST R7 K30 0x4C200000, // 0025 LDNIL R8 0x1C200608, // 0026 EQ R8 R3 R8 0x7822001B, // 0027 JMPF R8 #0044 @@ -22488,36 +22268,36 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x58340002, // 002D LDCONST R13 K2 0x543A0166, // 002E LDINT R14 359 0x7C200C00, // 002F CALL R8 6 - 0xA4263E00, // 0030 IMPORT R9 K31 + 0xA4264200, // 0030 IMPORT R9 K33 0x5C281200, // 0031 MOVE R10 R9 - 0x582C0020, // 0032 LDCONST R11 K32 + 0x582C0022, // 0032 LDCONST R11 K34 0x7C280200, // 0033 CALL R10 1 - 0x8C2C1521, // 0034 GETMET R11 R10 K33 + 0x8C2C1523, // 0034 GETMET R11 R10 K35 0x5C341000, // 0035 MOVE R13 R8 0x543A00FE, // 0036 LDINT R14 255 0x7C2C0600, // 0037 CALL R11 3 - 0x882C1522, // 0038 GETMBR R11 R10 K34 + 0x882C1524, // 0038 GETMBR R11 R10 K36 0x5432000F, // 0039 LDINT R12 16 0x382C160C, // 003A SHL R11 R11 R12 - 0x302E380B, // 003B OR R11 K28 R11 - 0x88301523, // 003C GETMBR R12 R10 K35 + 0x302E3C0B, // 003B OR R11 K30 R11 + 0x88301525, // 003C GETMBR R12 R10 K37 0x54360007, // 003D LDINT R13 8 0x3830180D, // 003E SHL R12 R12 R13 0x302C160C, // 003F OR R11 R11 R12 - 0x88301524, // 0040 GETMBR R12 R10 K36 + 0x88301526, // 0040 GETMBR R12 R10 K38 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 + 0x8C201127, // 0045 GETMET R8 R8 K39 0x5C280600, // 0046 MOVE R10 R3 0x7C200400, // 0047 CALL R8 2 0x78220009, // 0048 JMPF R8 #0053 - 0x88200726, // 0049 GETMBR R8 R3 K38 + 0x88200728, // 0049 GETMBR R8 R3 K40 0x4C240000, // 004A LDNIL R9 0x20201009, // 004B NE R8 R8 R9 0x78220005, // 004C JMPF R8 #0053 - 0x8C200726, // 004D GETMET R8 R3 K38 + 0x8C200728, // 004D GETMET R8 R3 K40 0x5C280C00, // 004E MOVE R10 R6 0x582C0002, // 004F LDCONST R11 K2 0x7C200600, // 0050 CALL R8 3 @@ -22528,7 +22308,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x5C280600, // 0055 MOVE R10 R3 0x7C200400, // 0056 CALL R8 2 0x78220008, // 0057 JMPF R8 #0061 - 0x8C200127, // 0058 GETMET R8 R0 K39 + 0x8C200129, // 0058 GETMET R8 R0 K41 0x5C280600, // 0059 MOVE R10 R3 0x582C000C, // 005A LDCONST R11 K12 0x54320009, // 005B LDINT R12 10 @@ -22540,7 +22320,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x60200004, // 0061 GETGBL R8 G4 0x5C240600, // 0062 MOVE R9 R3 0x7C200200, // 0063 CALL R8 1 - 0x1C201128, // 0064 EQ R8 R8 K40 + 0x1C20112A, // 0064 EQ R8 R8 K42 0x78220028, // 0065 JMPF R8 #008F 0x5C200C00, // 0066 MOVE R8 R6 0xB8260800, // 0067 GETNGBL R9 K4 @@ -22576,7 +22356,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x7C2C0C00, // 0085 CALL R11 6 0x5432000F, // 0086 LDINT R12 16 0x3830120C, // 0087 SHL R12 R9 R12 - 0x3032380C, // 0088 OR R12 K28 R12 + 0x30323C0C, // 0088 OR R12 K30 R12 0x54360007, // 0089 LDINT R13 8 0x3834140D, // 008A SHL R13 R10 R13 0x3030180D, // 008B OR R12 R12 R13 @@ -22584,7 +22364,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x5C1C1800, // 008D MOVE R7 R12 0x70020000, // 008E JMP #0090 0x5C1C0600, // 008F MOVE R7 R3 - 0x88200119, // 0090 GETMBR R8 R0 K25 + 0x8820011A, // 0090 GETMBR R8 R0 K26 0x98200A07, // 0091 SETIDX R8 R5 R7 0x00140B08, // 0092 ADD R5 R5 K8 0x7001FF7A, // 0093 JMP #000F @@ -22615,25 +22395,25 @@ be_local_closure(class_GradientAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080529, // 0003 GETMET R2 R2 K41 + 0x8C08052B, // 0003 GETMET R2 R2 K43 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 + 0x90023402, // 0008 SETMBR R0 K26 R2 0x90020D02, // 0009 SETMBR R0 K6 K2 - 0x88080116, // 000A GETMBR R2 R0 K22 - 0x8C080517, // 000B GETMET R2 R2 K23 + 0x88080117, // 000A GETMBR R2 R0 K23 + 0x8C080518, // 000B GETMET R2 R2 K24 0x7C080200, // 000C CALL R2 1 - 0x880C0119, // 000D GETMBR R3 R0 K25 - 0x8C0C071B, // 000E GETMET R3 R3 K27 + 0x880C011A, // 000D GETMBR R3 R0 K26 + 0x8C0C071D, // 000E GETMET R3 R3 K29 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 + 0x8810011A, // 0014 GETMBR R4 R0 K26 + 0x9810071E, // 0015 SETIDX R4 R3 K30 0x000C0708, // 0016 ADD R3 R3 K8 0x7001FFF9, // 0017 JMP #0012 0x80000000, // 0018 RET 0 @@ -22668,7 +22448,7 @@ be_local_closure(class_GradientAnimation__calculate_radial_position, /* name * 0x58200002, // 0005 LDCONST R8 K2 0x542600FE, // 0006 LDINT R9 255 0x7C0C0C00, // 0007 CALL R3 6 - 0x8810012A, // 0008 GETMBR R4 R0 K42 + 0x8810012C, // 0008 GETMBR R4 R0 K44 0x8814010A, // 0009 GETMBR R5 R0 K10 0x58180002, // 000A LDCONST R6 K2 0x281C0604, // 000B GE R7 R3 R4 @@ -22766,6 +22546,294 @@ be_local_class(GradientAnimation, be_str_weak(GradientAnimation) ); +/******************************************************************** +** 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: 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 + }) + ) +); +/*******************************************************************/ + +// compact class 'ClosureValueProvider' ktab size: 7, total: 9 (saved 16 bytes) +static const bvalue be_ktab_class_ClosureValueProvider[7] = { + /* K0 */ be_nested_str_weak(ClosureValueProvider_X28_X25s_X29), + /* K1 */ be_nested_str_weak(_closure), + /* K2 */ be_nested_str_weak(closure_X20set), + /* K3 */ be_nested_str_weak(no_X20closure), + /* K4 */ be_nested_str_weak(on_param_changed), + /* K5 */ be_nested_str_weak(closure), + /* K6 */ be_nested_str_weak(engine), +}; + + +extern const bclass be_class_ClosureValueProvider; + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ClosureValueProvider_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_ClosureValueProvider, /* 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 + 0x780E0001, // 0003 JMPF R3 #0006 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x70020000, // 0005 JMP #0007 + 0x580C0003, // 0006 LDCONST R3 K3 + 0x7C040400, // 0007 CALL R1 2 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_param_changed +********************************************************************/ +be_local_closure(class_ClosureValueProvider_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_ClosureValueProvider, /* shared constants */ + be_str_weak(on_param_changed), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x600C0003, // 0000 GETGBL R3 G3 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0704, // 0003 GETMET R3 R3 K4 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x1C0C0305, // 0007 EQ R3 R1 K5 + 0x780E0000, // 0008 JMPF R3 #000A + 0x90020202, // 0009 SETMBR R0 K1 R2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_ClosureValueProvider_produce_value, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ClosureValueProvider, /* shared constants */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x880C0101, // 0000 GETMBR R3 R0 K1 + 0x4C100000, // 0001 LDNIL R4 + 0x1C100604, // 0002 EQ R4 R3 R4 + 0x78120001, // 0003 JMPF R4 #0006 + 0x4C100000, // 0004 LDNIL R4 + 0x80040800, // 0005 RET 1 R4 + 0x5C100600, // 0006 MOVE R4 R3 + 0x88140106, // 0007 GETMBR R5 R0 K6 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ClosureValueProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(ClosureValueProvider, + 1, + &be_class_ValueProvider, + be_nested_map(5, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, -1), be_const_closure(class_ClosureValueProvider_tostring_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(closure, -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(_closure, 4), be_const_var(0) }, + { be_const_key_weak(produce_value, 1), be_const_closure(class_ClosureValueProvider_produce_value_closure) }, + { be_const_key_weak(on_param_changed, -1), be_const_closure(class_ClosureValueProvider_on_param_changed_closure) }, + })), + be_str_weak(ClosureValueProvider) +); + +extern const bclass be_class_ColorProvider; + +/******************************************************************** +** Solidified function: produce_value +********************************************************************/ +be_local_closure(class_ColorProvider_produce_value, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(produce_value), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x540DFFFE, // 0000 LDINT R3 -1 + 0x80040600, // 0001 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_color_for_value +********************************************************************/ +be_local_closure(class_ColorProvider_get_color_for_value, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(produce_value), + /* K1 */ be_nested_str_weak(color), + }), + be_str_weak(get_color_for_value), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: ColorProvider +********************************************************************/ +extern const bclass be_class_ValueProvider; +be_local_class(ColorProvider, + 0, + &be_class_ValueProvider, + be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(get_color_for_value, -1), be_const_closure(class_ColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(produce_value, 0), be_const_closure(class_ColorProvider_produce_value_closure) }, + })), + be_str_weak(ColorProvider) +); + extern const bclass be_class_ValueProvider; /******************************************************************** @@ -22848,133 +22916,171 @@ be_local_class(ValueProvider, be_str_weak(ValueProvider) ); +/******************************************************************** +** 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 module: animation ********************************************************************/ be_local_module(animation, "animation", - be_nested_map(120, + be_nested_map(122, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(SINE, 5), be_const_int(5) }, - { be_const_key_weak(PALETTE_OCEAN, 109), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, - { be_const_key_weak(PALETTE_SUNSET_TICKS, 23), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, - { be_const_key_weak(sparkle_white, -1), be_const_closure(sparkle_white_closure) }, - { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, - { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, - { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, - { be_const_key_weak(jitter_position, 82), be_const_closure(jitter_position_closure) }, - { be_const_key_weak(noise_animation, 18), be_const_class(be_class_NoiseAnimation) }, - { be_const_key_weak(PALETTE_FOREST, 105), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, - { be_const_key_weak(gradient_animation, 25), be_const_class(be_class_GradientAnimation) }, - { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, - { be_const_key_weak(trigger_event, 95), be_const_closure(trigger_event_closure) }, - { be_const_key_weak(bounce, 11), be_const_closure(bounce_closure) }, - { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, - { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, - { be_const_key_weak(fire_animation, 9), be_const_class(be_class_FireAnimation) }, - { be_const_key_weak(color_cycle, 32), be_const_class(be_class_ColorCycleColorProvider) }, - { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, - { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_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(twinkle_classic, 83), be_const_closure(twinkle_classic_closure) }, - { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, - { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, - { be_const_key_weak(parameterized_object, -1), be_const_class(be_class_ParameterizedObject) }, - { be_const_key_weak(rich_palette_rainbow, 14), be_const_closure(rich_palette_rainbow_closure) }, - { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, - { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, - { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, - { be_const_key_weak(gradient_rainbow_radial, 58), be_const_closure(gradient_rainbow_radial_closure) }, + { be_const_key_weak(ease_in, 53), be_const_closure(ease_in_closure) }, { be_const_key_weak(VERSION, -1), be_const_int(65536) }, - { be_const_key_weak(crenel_position_animation, 90), be_const_class(be_class_CrenelPositionAnimation) }, - { be_const_key_weak(PALETTE_RAINBOW, 106), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, - { be_const_key_weak(bounce_gravity, -1), be_const_closure(bounce_gravity_closure) }, - { be_const_key_weak(set_event_active, 118), be_const_closure(set_event_active_closure) }, - { be_const_key_weak(bounce_basic, 41), be_const_closure(bounce_basic_closure) }, - { be_const_key_weak(shift_scroll_left, -1), be_const_closure(shift_scroll_left_closure) }, - { be_const_key_weak(EventManager, -1), be_const_class(be_class_EventManager) }, - { be_const_key_weak(strip_length, 6), be_const_class(be_class_StripLengthProvider) }, - { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, - { be_const_key_weak(SAWTOOTH, 70), be_const_int(1) }, - { be_const_key_weak(init_strip, 45), be_const_closure(animation_init_strip_closure) }, - { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, - { be_const_key_weak(sawtooth, 10), be_const_closure(sawtooth_closure) }, - { be_const_key_weak(wave_custom, 119), be_const_closure(wave_custom_closure) }, - { be_const_key_weak(comet_animation, -1), be_const_class(be_class_CometAnimation) }, - { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, - { be_const_key_weak(scale_static, -1), be_const_closure(scale_static_closure) }, - { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, - { be_const_key_weak(shift_fast_scroll, -1), be_const_closure(shift_fast_scroll_closure) }, - { be_const_key_weak(noise_single_color, -1), be_const_closure(noise_single_color_closure) }, - { be_const_key_weak(color_provider, 22), be_const_class(be_class_ColorProvider) }, - { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, - { be_const_key_weak(rich_palette_animation, -1), be_const_class(be_class_RichPaletteAnimation) }, - { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_PaletteMeterAnimation) }, - { be_const_key_weak(shift_scroll_right, -1), be_const_closure(shift_scroll_right_closure) }, - { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, - { be_const_key_weak(square, -1), be_const_closure(square_closure) }, - { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, - { be_const_key_weak(ease_out, 101), be_const_closure(ease_out_closure) }, - { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, - { be_const_key_weak(is_user_function, 51), be_const_closure(is_user_function_closure) }, - { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, - { be_const_key_weak(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, - { be_const_key_weak(frame_buffer, 68), be_const_class(be_class_FrameBuffer) }, - { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, - { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, - { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, - { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, - { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, - { be_const_key_weak(is_color_provider, -1), be_const_closure(is_color_provider_closure) }, - { be_const_key_weak(LINEAR, 80), be_const_int(1) }, - { be_const_key_weak(PALETTE_FIRE, 24), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, - { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, - { be_const_key_weak(breathe_animation, 27), be_const_class(be_class_BreatheAnimation) }, - { be_const_key_weak(PALETTE_RGB, 74), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(comet_animation, 51), be_const_class(be_class_CometAnimation) }, + { be_const_key_weak(PALETTE_RAINBOW, 7), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(rich_palette_animation, 83), be_const_class(be_class_RichPaletteAnimation) }, + { be_const_key_weak(value_provider, 71), be_const_class(be_class_ValueProvider) }, + { be_const_key_weak(SINE, 14), be_const_int(5) }, + { be_const_key_weak(register_user_function, 30), be_const_closure(register_user_function_closure) }, { be_const_key_weak(breathe_color, -1), be_const_class(be_class_BreatheColorProvider) }, - { be_const_key_weak(shift_animation, 97), be_const_class(be_class_ShiftAnimation) }, - { be_const_key_weak(scale_animation, -1), be_const_class(be_class_ScaleAnimation) }, - { be_const_key_weak(get_event_handlers, 79), be_const_closure(get_event_handlers_closure) }, - { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, - { be_const_key_weak(jitter_all, -1), be_const_closure(jitter_all_closure) }, - { be_const_key_weak(create_engine, 89), be_const_closure(create_engine_closure) }, - { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, - { be_const_key_weak(triangle, 69), be_const_closure(triangle_closure) }, - { be_const_key_weak(SQUARE, 39), be_const_int(3) }, - { be_const_key_weak(rich_palette, 96), be_const_class(be_class_RichPaletteColorProvider) }, - { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, - { be_const_key_weak(solid, -1), be_const_closure(solid_closure) }, - { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, - { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, - { be_const_key_weak(get_user_function, 40), be_const_closure(get_user_function_closure) }, - { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, - { be_const_key_weak(value_provider, -1), be_const_class(be_class_ValueProvider) }, + { be_const_key_weak(color_provider, -1), be_const_class(be_class_ColorProvider) }, { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, - { be_const_key_weak(clear_all_event_handlers, 81), be_const_closure(clear_all_event_handlers_closure) }, - { be_const_key_weak(twinkle_rainbow, -1), be_const_closure(twinkle_rainbow_closure) }, - { be_const_key_weak(jitter_animation, 77), be_const_class(be_class_JitterAnimation) }, - { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, - { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, - { be_const_key_weak(scale_oscillate, 117), be_const_closure(scale_oscillate_closure) }, - { be_const_key_weak(plasma_fast, -1), be_const_closure(plasma_fast_closure) }, - { be_const_key_weak(smooth, 37), be_const_closure(smooth_closure) }, - { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, - { be_const_key_weak(palette_pattern_animation, -1), be_const_class(be_class_PalettePatternAnimation) }, - { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_OscillatorValueProvider) }, - { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, - { be_const_key_weak(sine_osc, 57), be_const_closure(sine_osc_closure) }, - { be_const_key_weak(palette_wave_animation, -1), be_const_class(be_class_PaletteWaveAnimation) }, + { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, - { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, - { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, - { be_const_key_weak(wave_animation, 49), be_const_class(be_class_WaveAnimation) }, - { be_const_key_weak(COSINE, 29), be_const_int(4) }, - { be_const_key_weak(twinkle_solid, -1), be_const_closure(twinkle_solid_closure) }, - { be_const_key_weak(sparkle_animation, 34), be_const_class(be_class_SparkleAnimation) }, - { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, + { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, + { be_const_key_weak(PALETTE_FOREST, -1), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, + { be_const_key_weak(gradient_animation, 95), be_const_class(be_class_GradientAnimation) }, + { be_const_key_weak(PALETTE_RGB, 54), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(triangle, 96), be_const_closure(triangle_closure) }, + { be_const_key_weak(get_user_function, -1), be_const_closure(get_user_function_closure) }, { 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(plasma_fast, 9), be_const_closure(plasma_fast_closure) }, + { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, + { be_const_key_weak(solid, 109), be_const_closure(solid_closure) }, + { be_const_key_weak(breathe_animation, 114), be_const_class(be_class_BreatheAnimation) }, + { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, + { be_const_key_weak(sparkle_white, 106), be_const_closure(sparkle_white_closure) }, + { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, + { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, + { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, + { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, + { be_const_key_weak(wave_animation, 112), be_const_class(be_class_WaveAnimation) }, + { be_const_key_weak(clear_all_event_handlers, -1), be_const_closure(clear_all_event_handlers_closure) }, + { be_const_key_weak(shift_scroll_left, 40), be_const_closure(shift_scroll_left_closure) }, + { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, + { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, + { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, + { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, + { be_const_key_weak(jitter_position, 31), be_const_closure(jitter_position_closure) }, + { be_const_key_weak(scale_static, 12), be_const_closure(scale_static_closure) }, + { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, + { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, + { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, + { be_const_key_weak(PALETTE_SUNSET_TICKS, 15), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, + { be_const_key_weak(wave_custom, 76), be_const_closure(wave_custom_closure) }, + { be_const_key_weak(gradient_rainbow_linear, 43), be_const_closure(gradient_rainbow_linear_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(scale_animation, -1), be_const_class(be_class_ScaleAnimation) }, + { be_const_key_weak(noise_single_color, 52), be_const_closure(noise_single_color_closure) }, + { be_const_key_weak(oscillator_value, 32), be_const_class(be_class_OscillatorValueProvider) }, + { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, + { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, + { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, + { be_const_key_weak(resolve, 57), be_const_closure(animation_resolve_closure) }, + { be_const_key_weak(parameterized_object, 11), be_const_class(be_class_ParameterizedObject) }, + { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, + { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, + { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, + { be_const_key_weak(twinkle_intense, 103), be_const_closure(twinkle_intense_closure) }, + { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, + { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, + { be_const_key_weak(is_color_provider, 67), be_const_closure(is_color_provider_closure) }, + { be_const_key_weak(twinkle_classic, 85), be_const_closure(twinkle_classic_closure) }, + { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, + { be_const_key_weak(bounce_basic, 24), be_const_closure(bounce_basic_closure) }, + { 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(animation, -1), be_const_class(be_class_Animation) }, + { be_const_key_weak(SQUARE, 22), be_const_int(3) }, + { be_const_key_weak(color_cycle, -1), be_const_class(be_class_ColorCycleColorProvider) }, + { be_const_key_weak(rich_palette_rainbow, -1), be_const_closure(rich_palette_rainbow_closure) }, + { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, + { be_const_key_weak(fire_animation, 104), be_const_class(be_class_FireAnimation) }, + { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, + { be_const_key_weak(palette_pattern_animation, 35), be_const_class(be_class_PalettePatternAnimation) }, + { be_const_key_weak(crenel_position_animation, -1), be_const_class(be_class_CrenelPositionAnimation) }, + { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, + { be_const_key_weak(PALETTE_FIRE, 19), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, + { be_const_key_weak(sawtooth, 34), be_const_closure(sawtooth_closure) }, + { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_FrameBuffer) }, + { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, + { be_const_key_weak(square, -1), be_const_closure(square_closure) }, + { be_const_key_weak(shift_scroll_right, 89), be_const_closure(shift_scroll_right_closure) }, + { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, + { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, + { be_const_key_weak(create_engine, 105), be_const_closure(create_engine_closure) }, + { be_const_key_weak(init_strip, 59), be_const_closure(animation_init_strip_closure) }, + { be_const_key_weak(smooth, -1), be_const_closure(smooth_closure) }, + { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, + { be_const_key_weak(twinkle_rainbow, 81), be_const_closure(twinkle_rainbow_closure) }, + { be_const_key_weak(scale_oscillate, -1), be_const_closure(scale_oscillate_closure) }, + { be_const_key_weak(bounce, -1), be_const_closure(bounce_closure) }, + { be_const_key_weak(sparkle_animation, 107), be_const_class(be_class_SparkleAnimation) }, + { be_const_key_weak(jitter_all, 45), be_const_closure(jitter_all_closure) }, + { be_const_key_weak(_math, 5), be_const_class(be_class_AnimationMath) }, + { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, + { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, + { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, + { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, + { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, + { be_const_key_weak(COSINE, -1), be_const_int(4) }, + { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, + { be_const_key_weak(LINEAR, 101), be_const_int(1) }, + { be_const_key_weak(shift_fast_scroll, -1), be_const_closure(shift_fast_scroll_closure) }, + { be_const_key_weak(gradient_rainbow_radial, -1), be_const_closure(gradient_rainbow_radial_closure) }, + { be_const_key_weak(shift_animation, 116), be_const_class(be_class_ShiftAnimation) }, + { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, + { be_const_key_weak(bounce_animation, 33), be_const_class(be_class_BounceAnimation) }, + { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, + { be_const_key_weak(bounce_gravity, 47), be_const_closure(bounce_gravity_closure) }, + { be_const_key_weak(strip_length, 10), be_const_class(be_class_StripLengthProvider) }, + { be_const_key_weak(palette_wave_animation, 0), be_const_class(be_class_PaletteWaveAnimation) }, + { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, + { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, + { be_const_key_weak(PALETTE_OCEAN, -1), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, + { be_const_key_weak(palette_meter_animation, 21), be_const_class(be_class_PaletteMeterAnimation) }, + { be_const_key_weak(jitter_animation, -1), be_const_class(be_class_JitterAnimation) }, + { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, + { be_const_key_weak(EventManager, -1), be_const_class(be_class_EventManager) }, + { be_const_key_weak(twinkle_solid, 46), be_const_closure(twinkle_solid_closure) }, + { be_const_key_weak(trigger_event, 48), be_const_closure(trigger_event_closure) }, + { be_const_key_weak(rich_palette, -1), be_const_class(be_class_RichPaletteColorProvider) }, })) ); 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 3fc78220b..1f2e28f6a 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -2362,85 +2362,56 @@ be_local_closure(create_eof_token, /* name */ extern const bclass be_class_SimpleDSLTranspiler; /******************************************************************** -** Solidified function: convert_to_vrgb +** Solidified function: expect_keyword ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ be_nested_proto( - 12, /* nstack */ - 3, /* argc */ + 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[ 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), + ( &(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(convert_to_vrgb), + be_str_weak(expect_keyword), &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 + ( &(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 }) ) ); @@ -2577,9 +2548,9 @@ be_local_closure(class_SimpleDSLTranspiler_symbol_exists, /* name */ /******************************************************************** -** Solidified function: _process_parameters_core +** Solidified function: process_additive_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ be_nested_proto( 13, /* nstack */ 4, /* argc */ @@ -2589,168 +2560,114 @@ be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name * 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(variable), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(temp_), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(split), - /* K6 */ be_nested_str_weak(_), - /* K7 */ be_const_int(2), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(), - /* K10 */ be_nested_str_weak(_create_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(current), - /* K21 */ be_nested_str_weak(type), - /* K22 */ be_nested_str_weak(animation_dsl), - /* K23 */ be_nested_str_weak(Token), - /* K24 */ be_nested_str_weak(COMMENT), - /* K25 */ be_nested_str_weak(next), - /* K26 */ be_nested_str_weak(COMMA), - /* K27 */ be_nested_str_weak(NEWLINE), - /* K28 */ be_nested_str_weak(error), - /* K29 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + ( &(const bvalue[20]) { /* 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_anonymous_function), + /* K12 */ be_nested_str_weak(repeat_count), + /* K13 */ be_nested_str_weak(string), + /* K14 */ be_nested_str_weak(is_computed_expression_string), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(_X2E), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(create_simple_function_from_string), + /* K19 */ be_nested_str_weak(create_computation_closure_from_string), }), - be_str_weak(_process_parameters_core), + be_str_weak(process_additive_expression), &be_const_str_solidified, - ( &(const binstruction[127]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x5C140200, // 0001 MOVE R5 R1 - 0x1C180500, // 0002 EQ R6 R2 K0 - 0x781A0010, // 0003 JMPF R6 #0015 - 0xA41A0200, // 0004 IMPORT R6 K1 - 0x8C1C0D02, // 0005 GETMET R7 R6 K2 - 0x5C240200, // 0006 MOVE R9 R1 - 0x58280003, // 0007 LDCONST R10 K3 - 0x7C1C0600, // 0008 CALL R7 3 - 0x1C1C0F04, // 0009 EQ R7 R7 K4 - 0x781E0009, // 000A JMPF R7 #0015 - 0x8C1C0D05, // 000B GETMET R7 R6 K5 - 0x5C240200, // 000C MOVE R9 R1 - 0x58280006, // 000D LDCONST R10 K6 - 0x7C1C0600, // 000E CALL R7 3 - 0x6020000C, // 000F GETGBL R8 G12 - 0x5C240E00, // 0010 MOVE R9 R7 - 0x7C200200, // 0011 CALL R8 1 - 0x28201107, // 0012 GE R8 R8 K7 - 0x78220000, // 0013 JMPF R8 #0015 - 0x94140F08, // 0014 GETIDX R5 R7 K8 - 0x20180B09, // 0015 NE R6 R5 K9 - 0x781A0003, // 0016 JMPF R6 #001B - 0x8C18010A, // 0017 GETMET R6 R0 K10 - 0x5C200A00, // 0018 MOVE R8 R5 - 0x7C180400, // 0019 CALL R6 2 - 0x5C100C00, // 001A MOVE R4 R6 - 0x8C18010B, // 001B GETMET R6 R0 K11 - 0x7C180200, // 001C CALL R6 1 - 0x741A005F, // 001D JMPT R6 #007E - 0x8C18010C, // 001E GETMET R6 R0 K12 - 0x7C180200, // 001F CALL R6 1 - 0x741A005C, // 0020 JMPT R6 #007E - 0x8C18010D, // 0021 GETMET R6 R0 K13 - 0x7C180200, // 0022 CALL R6 1 - 0x8C18010C, // 0023 GETMET R6 R0 K12 - 0x7C180200, // 0024 CALL R6 1 - 0x781A0000, // 0025 JMPF R6 #0027 - 0x70020056, // 0026 JMP #007E - 0x8C18010E, // 0027 GETMET R6 R0 K14 - 0x7C180200, // 0028 CALL R6 1 - 0x4C1C0000, // 0029 LDNIL R7 - 0x201C0807, // 002A NE R7 R4 R7 - 0x781E0006, // 002B JMPF R7 #0033 - 0x201C0B09, // 002C NE R7 R5 K9 - 0x781E0004, // 002D JMPF R7 #0033 - 0x8C1C010F, // 002E GETMET R7 R0 K15 - 0x5C240A00, // 002F MOVE R9 R5 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x5C2C0800, // 0031 MOVE R11 R4 - 0x7C1C0800, // 0032 CALL R7 4 - 0x8C1C0110, // 0033 GETMET R7 R0 K16 - 0x7C1C0200, // 0034 CALL R7 1 - 0x8C1C0111, // 0035 GETMET R7 R0 K17 - 0x58240012, // 0036 LDCONST R9 K18 - 0x7C1C0400, // 0037 CALL R7 2 - 0x8C200113, // 0038 GETMET R8 R0 K19 - 0x7C200200, // 0039 CALL R8 1 - 0x5C240600, // 003A MOVE R9 R3 - 0x5C280C00, // 003B MOVE R10 R6 - 0x5C2C0E00, // 003C MOVE R11 R7 - 0x5C301000, // 003D MOVE R12 R8 - 0x7C240600, // 003E CALL R9 3 - 0x8C24010B, // 003F GETMET R9 R0 K11 - 0x7C240200, // 0040 CALL R9 1 - 0x7426000F, // 0041 JMPT R9 #0052 - 0x8C240114, // 0042 GETMET R9 R0 K20 - 0x7C240200, // 0043 CALL R9 1 - 0x4C280000, // 0044 LDNIL R10 - 0x2028120A, // 0045 NE R10 R9 R10 - 0x782A0008, // 0046 JMPF R10 #0050 - 0x88281315, // 0047 GETMBR R10 R9 K21 - 0xB82E2C00, // 0048 GETNGBL R11 K22 - 0x882C1717, // 0049 GETMBR R11 R11 K23 - 0x882C1718, // 004A GETMBR R11 R11 K24 - 0x1C28140B, // 004B EQ R10 R10 R11 - 0x782A0002, // 004C JMPF R10 #0050 - 0x8C280119, // 004D GETMET R10 R0 K25 - 0x7C280200, // 004E CALL R10 1 - 0x70020000, // 004F JMP #0051 + ( &(const binstruction[83]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x74160022, // 0007 JMPT R5 #002B + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A001B, // 000C JMPF R6 #0029 + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0xB81E0800, // 000E GETNGBL R7 K4 + 0x881C0F05, // 000F GETMBR R7 R7 K5 + 0x881C0F06, // 0010 GETMBR R7 R7 K6 + 0x1C180C07, // 0011 EQ R6 R6 R7 + 0x741A0005, // 0012 JMPT R6 #0019 + 0x88180B03, // 0013 GETMBR R6 R5 K3 + 0xB81E0800, // 0014 GETNGBL R7 K4 + 0x881C0F05, // 0015 GETMBR R7 R7 K5 + 0x881C0F07, // 0016 GETMBR R7 R7 K7 + 0x1C180C07, // 0017 EQ R6 R6 R7 + 0x781A000F, // 0018 JMPF R6 #0029 + 0x88180B08, // 0019 GETMBR R6 R5 K8 + 0x8C1C0109, // 001A GETMET R7 R0 K9 + 0x7C1C0200, // 001B CALL R7 1 + 0x8C1C0100, // 001C GETMET R7 R0 K0 + 0x5C240200, // 001D MOVE R9 R1 + 0x50280000, // 001E LDBOOL R10 0 0 + 0x5C2C0600, // 001F MOVE R11 R3 + 0x7C1C0800, // 0020 CALL R7 4 + 0x60200018, // 0021 GETGBL R8 G24 + 0x5824000A, // 0022 LDCONST R9 K10 + 0x5C280800, // 0023 MOVE R10 R4 + 0x5C2C0C00, // 0024 MOVE R11 R6 + 0x5C300E00, // 0025 MOVE R12 R7 + 0x7C200800, // 0026 CALL R8 4 + 0x5C101000, // 0027 MOVE R4 R8 + 0x70020000, // 0028 JMP #002A + 0x70020000, // 0029 JMP #002B + 0x7001FFD9, // 002A JMP #0005 + 0x780E0000, // 002B JMPF R3 #002D + 0x80040800, // 002C RET 1 R4 + 0x780A0022, // 002D JMPF R2 #0051 + 0x8C14010B, // 002E GETMET R5 R0 K11 + 0x5C1C0800, // 002F MOVE R7 R4 + 0x7C140400, // 0030 CALL R5 2 + 0x7416001E, // 0031 JMPT R5 #0051 + 0x1C14030C, // 0032 EQ R5 R1 K12 + 0x78160011, // 0033 JMPF R5 #0046 + 0xA4161A00, // 0034 IMPORT R5 K13 + 0x8C18010E, // 0035 GETMET R6 R0 K14 + 0x5C200800, // 0036 MOVE R8 R4 + 0x7C180400, // 0037 CALL R6 2 + 0x741A0005, // 0038 JMPT R6 #003F + 0x8C180B0F, // 0039 GETMET R6 R5 K15 + 0x5C200800, // 003A MOVE R8 R4 + 0x58240010, // 003B LDCONST R9 K16 + 0x7C180600, // 003C CALL R6 3 + 0x28180D11, // 003D GE R6 R6 K17 + 0x781A0004, // 003E JMPF R6 #0044 + 0x8C180112, // 003F GETMET R6 R0 K18 + 0x5C200800, // 0040 MOVE R8 R4 + 0x7C180400, // 0041 CALL R6 2 + 0x80040C00, // 0042 RET 1 R6 + 0x70020000, // 0043 JMP #0045 + 0x80040800, // 0044 RET 1 R4 + 0x70020009, // 0045 JMP #0050 + 0x8C14010E, // 0046 GETMET R5 R0 K14 + 0x5C1C0800, // 0047 MOVE R7 R4 + 0x7C140400, // 0048 CALL R5 2 + 0x78160004, // 0049 JMPF R5 #004F + 0x8C140113, // 004A GETMET R5 R0 K19 + 0x5C1C0800, // 004B MOVE R7 R4 + 0x7C140400, // 004C CALL R5 2 + 0x80040A00, // 004D RET 1 R5 + 0x70020000, // 004E JMP #0050 + 0x80040800, // 004F RET 1 R4 0x70020000, // 0050 JMP #0052 - 0x7001FFEC, // 0051 JMP #003F - 0x8C240114, // 0052 GETMET R9 R0 K20 - 0x7C240200, // 0053 CALL R9 1 - 0x4C280000, // 0054 LDNIL R10 - 0x2024120A, // 0055 NE R9 R9 R10 - 0x7826000C, // 0056 JMPF R9 #0064 - 0x8C240114, // 0057 GETMET R9 R0 K20 - 0x7C240200, // 0058 CALL R9 1 - 0x88241315, // 0059 GETMBR R9 R9 K21 - 0xB82A2C00, // 005A GETNGBL R10 K22 - 0x88281517, // 005B GETMBR R10 R10 K23 - 0x8828151A, // 005C GETMBR R10 R10 K26 - 0x1C24120A, // 005D EQ R9 R9 R10 - 0x78260004, // 005E JMPF R9 #0064 - 0x8C240119, // 005F GETMET R9 R0 K25 - 0x7C240200, // 0060 CALL R9 1 - 0x8C24010D, // 0061 GETMET R9 R0 K13 - 0x7C240200, // 0062 CALL R9 1 - 0x70020018, // 0063 JMP #007D - 0x8C240114, // 0064 GETMET R9 R0 K20 - 0x7C240200, // 0065 CALL R9 1 - 0x4C280000, // 0066 LDNIL R10 - 0x2024120A, // 0067 NE R9 R9 R10 - 0x7826000C, // 0068 JMPF R9 #0076 - 0x8C240114, // 0069 GETMET R9 R0 K20 - 0x7C240200, // 006A CALL R9 1 - 0x88241315, // 006B GETMBR R9 R9 K21 - 0xB82A2C00, // 006C GETNGBL R10 K22 - 0x88281517, // 006D GETMBR R10 R10 K23 - 0x8828151B, // 006E GETMBR R10 R10 K27 - 0x1C24120A, // 006F EQ R9 R9 R10 - 0x78260004, // 0070 JMPF R9 #0076 - 0x8C240119, // 0071 GETMET R9 R0 K25 - 0x7C240200, // 0072 CALL R9 1 - 0x8C24010D, // 0073 GETMET R9 R0 K13 - 0x7C240200, // 0074 CALL R9 1 - 0x70020006, // 0075 JMP #007D - 0x8C24010C, // 0076 GETMET R9 R0 K12 - 0x7C240200, // 0077 CALL R9 1 - 0x74260003, // 0078 JMPT R9 #007D - 0x8C24011C, // 0079 GETMET R9 R0 K28 - 0x582C001D, // 007A LDCONST R11 K29 - 0x7C240400, // 007B CALL R9 2 - 0x70020000, // 007C JMP #007E - 0x7001FF9C, // 007D JMP #001B - 0x80000000, // 007E RET 0 + 0x80040800, // 0051 RET 1 R4 + 0x80000000, // 0052 RET 0 }) ) ); @@ -3558,11 +3475,11 @@ be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /******************************************************************** -** Solidified function: process_percentage_value +** Solidified function: process_import ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ be_nested_proto( - 7, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3570,74 +3487,30 @@ be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name * 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(PERCENTAGE), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), + ( &(const bvalue[ 5]) { /* 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(add), + /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), }), - be_str_weak(process_percentage_value), + be_str_weak(process_import), &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ + ( &(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 - 0x780A0015, // 0004 JMPF R2 #001B - 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 - 0x780A000F, // 000A JMPF R2 #001B - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x600C000A, // 000E GETGBL R3 G10 - 0x5411FFFD, // 000F LDINT R4 -2 - 0x40120E04, // 0010 CONNECT R4 K7 R4 - 0x94100404, // 0011 GETIDX R4 R2 R4 - 0x7C0C0200, // 0012 CALL R3 1 - 0x60100009, // 0013 GETGBL R4 G9 - 0x541600FE, // 0014 LDINT R5 255 - 0x08140605, // 0015 MUL R5 R3 R5 - 0x541A0063, // 0016 LDINT R6 100 - 0x0C140A06, // 0017 DIV R5 R5 R6 - 0x7C100200, // 0018 CALL R4 1 - 0x80040800, // 0019 RET 1 R4 - 0x70020017, // 001A JMP #0033 - 0x4C080000, // 001B LDNIL R2 - 0x20080202, // 001C NE R2 R1 R2 - 0x780A000F, // 001D JMPF R2 #002E - 0x88080301, // 001E GETMBR R2 R1 K1 - 0xB80E0400, // 001F GETNGBL R3 K2 - 0x880C0703, // 0020 GETMBR R3 R3 K3 - 0x880C0708, // 0021 GETMBR R3 R3 K8 - 0x1C080403, // 0022 EQ R2 R2 R3 - 0x780A0009, // 0023 JMPF R2 #002E - 0x88080305, // 0024 GETMBR R2 R1 K5 - 0x8C0C0106, // 0025 GETMET R3 R0 K6 - 0x7C0C0200, // 0026 CALL R3 1 - 0x600C0009, // 0027 GETGBL R3 G9 - 0x6010000A, // 0028 GETGBL R4 G10 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C100200, // 002A CALL R4 1 - 0x7C0C0200, // 002B CALL R3 1 - 0x80040600, // 002C RET 1 R3 - 0x70020004, // 002D JMP #0033 - 0x8C080109, // 002E GETMET R2 R0 K9 - 0x5810000A, // 002F LDCONST R4 K10 - 0x7C080400, // 0030 CALL R2 2 - 0x540A00FE, // 0031 LDINT R2 255 - 0x80040400, // 0032 RET 1 R2 - 0x80000000, // 0033 RET 0 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x7C140600, // 000B CALL R5 3 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -3774,11 +3647,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name /******************************************************************** -** Solidified function: process_reset_restart_statement_fluent +** Solidified function: process_percentage_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name */ be_nested_proto( - 12, /* nstack */ + 7, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3788,51 +3661,72 @@ be_local_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluen 1, /* has constants */ ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(value), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(expect_identifier), - /* K4 */ be_nested_str_weak(_validate_value_provider_reference), - /* K5 */ be_nested_str_weak(skip_statement), - /* K6 */ be_nested_str_weak(collect_inline_comment), - /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K10 */ be_nested_str_weak(get_indent), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(PERCENTAGE), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), }), - be_str_weak(process_reset_restart_statement_fluent), + be_str_weak(process_percentage_value), &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ + ( &(const binstruction[52]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x88040301, // 0002 GETMBR R1 R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x8C080103, // 0005 GETMET R2 R0 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x8C0C0104, // 0007 GETMET R3 R0 K4 - 0x5C140400, // 0008 MOVE R5 R2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C0C0600, // 000A CALL R3 3 - 0x740E0002, // 000B JMPT R3 #000F - 0x8C0C0105, // 000C GETMET R3 R0 K5 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0015, // 0004 JMPF R2 #001B + 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 + 0x780A000F, // 000A JMPF R2 #001B + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 0x7C0C0200, // 000D CALL R3 1 - 0x80000600, // 000E RET 0 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x7C0C0200, // 0010 CALL R3 1 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x8C140108, // 0015 GETMET R5 R0 K8 - 0x601C0018, // 0016 GETGBL R7 G24 - 0x58200009, // 0017 LDCONST R8 K9 - 0x8C24010A, // 0018 GETMET R9 R0 K10 - 0x7C240200, // 0019 CALL R9 1 - 0x5C280800, // 001A MOVE R10 R4 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C1C0800, // 001C CALL R7 4 - 0x7C140400, // 001D CALL R5 2 - 0x80000000, // 001E RET 0 + 0x600C000A, // 000E GETGBL R3 G10 + 0x5411FFFD, // 000F LDINT R4 -2 + 0x40120E04, // 0010 CONNECT R4 K7 R4 + 0x94100404, // 0011 GETIDX R4 R2 R4 + 0x7C0C0200, // 0012 CALL R3 1 + 0x60100009, // 0013 GETGBL R4 G9 + 0x541600FE, // 0014 LDINT R5 255 + 0x08140605, // 0015 MUL R5 R3 R5 + 0x541A0063, // 0016 LDINT R6 100 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x7C100200, // 0018 CALL R4 1 + 0x80040800, // 0019 RET 1 R4 + 0x70020017, // 001A JMP #0033 + 0x4C080000, // 001B LDNIL R2 + 0x20080202, // 001C NE R2 R1 R2 + 0x780A000F, // 001D JMPF R2 #002E + 0x88080301, // 001E GETMBR R2 R1 K1 + 0xB80E0400, // 001F GETNGBL R3 K2 + 0x880C0703, // 0020 GETMBR R3 R3 K3 + 0x880C0708, // 0021 GETMBR R3 R3 K8 + 0x1C080403, // 0022 EQ R2 R2 R3 + 0x780A0009, // 0023 JMPF R2 #002E + 0x88080305, // 0024 GETMBR R2 R1 K5 + 0x8C0C0106, // 0025 GETMET R3 R0 K6 + 0x7C0C0200, // 0026 CALL R3 1 + 0x600C0009, // 0027 GETGBL R3 G9 + 0x6010000A, // 0028 GETGBL R4 G10 + 0x5C140400, // 0029 MOVE R5 R2 + 0x7C100200, // 002A CALL R4 1 + 0x7C0C0200, // 002B CALL R3 1 + 0x80040600, // 002C RET 1 R3 + 0x70020004, // 002D JMP #0033 + 0x8C080109, // 002E GETMET R2 R0 K9 + 0x5810000A, // 002F LDCONST R4 K10 + 0x7C080400, // 0030 CALL R2 2 + 0x540A00FE, // 0031 LDINT R2 255 + 0x80040400, // 0032 RET 1 R2 + 0x80000000, // 0033 RET 0 }) ) ); @@ -3840,397 +3734,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluen /******************************************************************** -** Solidified function: transform_expression_for_closure +** Solidified function: expect_left_brace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* 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[14]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X28), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(is_identifier_char), - /* K6 */ be_nested_str_weak(is_math_method), - /* K7 */ be_nested_str_weak(self_X2E), - /* K8 */ be_nested_str_weak(), - /* K9 */ be_const_int(2147483647), - /* K10 */ be_nested_str_weak(_), - /* K11 */ be_nested_str_weak(self_X2Eresolve_X28), - /* K12 */ be_nested_str_weak(animation_X2E), - /* K13 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X29), - }), - be_str_weak(transform_expression_for_closure), - &be_const_str_solidified, - ( &(const binstruction[223]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140001, // 0003 LDCONST R5 K1 - 0x50180200, // 0004 LDBOOL R6 1 0 - 0x781A0047, // 0005 JMPF R6 #004E - 0x8C180502, // 0006 GETMET R6 R2 K2 - 0x5C200600, // 0007 MOVE R8 R3 - 0x58240003, // 0008 LDCONST R9 K3 - 0x5C280A00, // 0009 MOVE R10 R5 - 0x7C180800, // 000A CALL R6 4 - 0x141C0D01, // 000B LT R7 R6 K1 - 0x781E0000, // 000C JMPF R7 #000E - 0x7002003F, // 000D JMP #004E - 0x041C0D04, // 000E SUB R7 R6 K4 - 0x28200F01, // 000F GE R8 R7 K1 - 0x78220005, // 0010 JMPF R8 #0017 - 0x8C200105, // 0011 GETMET R8 R0 K5 - 0x94280607, // 0012 GETIDX R10 R3 R7 - 0x7C200400, // 0013 CALL R8 2 - 0x78220001, // 0014 JMPF R8 #0017 - 0x041C0F04, // 0015 SUB R7 R7 K4 - 0x7001FFF7, // 0016 JMP #000F - 0x001C0F04, // 0017 ADD R7 R7 K4 - 0x14200E06, // 0018 LT R8 R7 R6 - 0x78220030, // 0019 JMPF R8 #004B - 0x04200D04, // 001A SUB R8 R6 K4 - 0x40200E08, // 001B CONNECT R8 R7 R8 - 0x94200608, // 001C GETIDX R8 R3 R8 - 0x8C240106, // 001D GETMET R9 R0 K6 - 0x5C2C1000, // 001E MOVE R11 R8 - 0x7C240400, // 001F CALL R9 2 - 0x78260026, // 0020 JMPF R9 #0048 - 0x54260004, // 0021 LDINT R9 5 - 0x28240E09, // 0022 GE R9 R7 R9 - 0x78260002, // 0023 JMPF R9 #0027 - 0x54260004, // 0024 LDINT R9 5 - 0x04240E09, // 0025 SUB R9 R7 R9 - 0x70020000, // 0026 JMP #0028 - 0x58240001, // 0027 LDCONST R9 K1 - 0x04280F04, // 0028 SUB R10 R7 K4 - 0x4028120A, // 0029 CONNECT R10 R9 R10 - 0x9428060A, // 002A GETIDX R10 R3 R10 - 0x8C2C0502, // 002B GETMET R11 R2 K2 - 0x5C341400, // 002C MOVE R13 R10 - 0x58380007, // 002D LDCONST R14 K7 - 0x7C2C0600, // 002E CALL R11 3 - 0x142C1701, // 002F LT R11 R11 K1 - 0x782E0013, // 0030 JMPF R11 #0045 - 0x242C0F01, // 0031 GT R11 R7 K1 - 0x782E0003, // 0032 JMPF R11 #0037 - 0x042C0F04, // 0033 SUB R11 R7 K4 - 0x402E020B, // 0034 CONNECT R11 K1 R11 - 0x942C060B, // 0035 GETIDX R11 R3 R11 - 0x70020000, // 0036 JMP #0038 - 0x582C0008, // 0037 LDCONST R11 K8 - 0x40300F09, // 0038 CONNECT R12 R7 K9 - 0x9430060C, // 0039 GETIDX R12 R3 R12 - 0x00341707, // 003A ADD R13 R11 K7 - 0x00341A0C, // 003B ADD R13 R13 R12 - 0x5C0C1A00, // 003C MOVE R3 R13 - 0x54360004, // 003D LDINT R13 5 - 0x00340E0D, // 003E ADD R13 R7 R13 - 0x6038000C, // 003F GETGBL R14 G12 - 0x5C3C1000, // 0040 MOVE R15 R8 - 0x7C380200, // 0041 CALL R14 1 - 0x00341A0E, // 0042 ADD R13 R13 R14 - 0x5C141A00, // 0043 MOVE R5 R13 - 0x70020001, // 0044 JMP #0047 - 0x002C0D04, // 0045 ADD R11 R6 K4 - 0x5C141600, // 0046 MOVE R5 R11 - 0x70020001, // 0047 JMP #004A - 0x00240D04, // 0048 ADD R9 R6 K4 - 0x5C141200, // 0049 MOVE R5 R9 - 0x70020001, // 004A JMP #004D - 0x00200D04, // 004B ADD R8 R6 K4 - 0x5C141000, // 004C MOVE R5 R8 - 0x7001FFB5, // 004D JMP #0004 - 0x58100001, // 004E LDCONST R4 K1 - 0x6018000C, // 004F GETGBL R6 G12 - 0x5C1C0600, // 0050 MOVE R7 R3 - 0x7C180200, // 0051 CALL R6 1 - 0x14180806, // 0052 LT R6 R4 R6 - 0x781A0089, // 0053 JMPF R6 #00DE - 0x8C180502, // 0054 GETMET R6 R2 K2 - 0x5C200600, // 0055 MOVE R8 R3 - 0x5824000A, // 0056 LDCONST R9 K10 - 0x5C280800, // 0057 MOVE R10 R4 - 0x7C180800, // 0058 CALL R6 4 - 0x141C0D01, // 0059 LT R7 R6 K1 - 0x781E0000, // 005A JMPF R7 #005C - 0x70020081, // 005B JMP #00DE - 0x5C1C0C00, // 005C MOVE R7 R6 - 0x24200F01, // 005D GT R8 R7 K1 - 0x78220006, // 005E JMPF R8 #0066 - 0x8C200105, // 005F GETMET R8 R0 K5 - 0x04280F04, // 0060 SUB R10 R7 K4 - 0x9428060A, // 0061 GETIDX R10 R3 R10 - 0x7C200400, // 0062 CALL R8 2 - 0x78220001, // 0063 JMPF R8 #0066 - 0x041C0F04, // 0064 SUB R7 R7 K4 - 0x7001FFF6, // 0065 JMP #005D - 0x50200200, // 0066 LDBOOL R8 1 0 - 0x5426000C, // 0067 LDINT R9 13 - 0x28240E09, // 0068 GE R9 R7 R9 - 0x78260010, // 0069 JMPF R9 #007B - 0x5426000C, // 006A LDINT R9 13 - 0x28240E09, // 006B GE R9 R7 R9 - 0x78260002, // 006C JMPF R9 #0070 - 0x5426000C, // 006D LDINT R9 13 - 0x04240E09, // 006E SUB R9 R7 R9 - 0x70020000, // 006F JMP #0071 - 0x58240001, // 0070 LDCONST R9 K1 - 0x04280F04, // 0071 SUB R10 R7 K4 - 0x4028120A, // 0072 CONNECT R10 R9 R10 - 0x9428060A, // 0073 GETIDX R10 R3 R10 - 0x8C2C0502, // 0074 GETMET R11 R2 K2 - 0x5C341400, // 0075 MOVE R13 R10 - 0x5838000B, // 0076 LDCONST R14 K11 - 0x7C2C0600, // 0077 CALL R11 3 - 0x282C1701, // 0078 GE R11 R11 K1 - 0x782E0000, // 0079 JMPF R11 #007B - 0x50200000, // 007A LDBOOL R8 0 0 - 0x7822001A, // 007B JMPF R8 #0097 - 0x54260009, // 007C LDINT R9 10 - 0x28240E09, // 007D GE R9 R7 R9 - 0x78260017, // 007E JMPF R9 #0097 - 0x54260009, // 007F LDINT R9 10 - 0x28240E09, // 0080 GE R9 R7 R9 - 0x78260002, // 0081 JMPF R9 #0085 - 0x54260009, // 0082 LDINT R9 10 - 0x04240E09, // 0083 SUB R9 R7 R9 - 0x70020000, // 0084 JMP #0086 - 0x58240001, // 0085 LDCONST R9 K1 - 0x04280F04, // 0086 SUB R10 R7 K4 - 0x4028120A, // 0087 CONNECT R10 R9 R10 - 0x9428060A, // 0088 GETIDX R10 R3 R10 - 0x8C2C0502, // 0089 GETMET R11 R2 K2 - 0x5C341400, // 008A MOVE R13 R10 - 0x5838000C, // 008B LDCONST R14 K12 - 0x7C2C0600, // 008C CALL R11 3 - 0x282C1701, // 008D GE R11 R11 K1 - 0x742E0005, // 008E JMPT R11 #0095 - 0x8C2C0502, // 008F GETMET R11 R2 K2 - 0x5C341400, // 0090 MOVE R13 R10 - 0x58380007, // 0091 LDCONST R14 K7 - 0x7C2C0600, // 0092 CALL R11 3 - 0x282C1701, // 0093 GE R11 R11 K1 - 0x782E0000, // 0094 JMPF R11 #0096 - 0x50200000, // 0095 LDBOOL R8 0 0 - 0x70020014, // 0096 JMP #00AC - 0x78220013, // 0097 JMPF R8 #00AC - 0x54260004, // 0098 LDINT R9 5 - 0x28240E09, // 0099 GE R9 R7 R9 - 0x78260010, // 009A JMPF R9 #00AC - 0x54260004, // 009B LDINT R9 5 - 0x28240E09, // 009C GE R9 R7 R9 - 0x78260002, // 009D JMPF R9 #00A1 - 0x54260004, // 009E LDINT R9 5 - 0x04240E09, // 009F SUB R9 R7 R9 - 0x70020000, // 00A0 JMP #00A2 - 0x58240001, // 00A1 LDCONST R9 K1 - 0x04280F04, // 00A2 SUB R10 R7 K4 - 0x4028120A, // 00A3 CONNECT R10 R9 R10 - 0x9428060A, // 00A4 GETIDX R10 R3 R10 - 0x8C2C0502, // 00A5 GETMET R11 R2 K2 - 0x5C341400, // 00A6 MOVE R13 R10 - 0x58380007, // 00A7 LDCONST R14 K7 - 0x7C2C0600, // 00A8 CALL R11 3 - 0x282C1701, // 00A9 GE R11 R11 K1 - 0x782E0000, // 00AA JMPF R11 #00AC - 0x50200000, // 00AB LDBOOL R8 0 0 - 0x7822002D, // 00AC JMPF R8 #00DB - 0x14240E06, // 00AD LT R9 R7 R6 - 0x7826002B, // 00AE JMPF R9 #00DB - 0x40240E06, // 00AF CONNECT R9 R7 R6 - 0x94240609, // 00B0 GETIDX R9 R3 R9 - 0x00280D04, // 00B1 ADD R10 R6 K4 - 0x602C000C, // 00B2 GETGBL R11 G12 - 0x5C300600, // 00B3 MOVE R12 R3 - 0x7C2C0200, // 00B4 CALL R11 1 - 0x282C140B, // 00B5 GE R11 R10 R11 - 0x742E0003, // 00B6 JMPT R11 #00BB - 0x8C2C0105, // 00B7 GETMET R11 R0 K5 - 0x9434060A, // 00B8 GETIDX R13 R3 R10 - 0x7C2C0400, // 00B9 CALL R11 2 - 0x742E001C, // 00BA JMPT R11 #00D8 - 0x602C0018, // 00BB GETGBL R11 G24 - 0x5830000D, // 00BC LDCONST R12 K13 - 0x5C341200, // 00BD MOVE R13 R9 - 0x7C2C0400, // 00BE CALL R11 2 - 0x24300F01, // 00BF GT R12 R7 K1 - 0x78320003, // 00C0 JMPF R12 #00C5 - 0x04300F04, // 00C1 SUB R12 R7 K4 - 0x4032020C, // 00C2 CONNECT R12 K1 R12 - 0x9430060C, // 00C3 GETIDX R12 R3 R12 - 0x70020000, // 00C4 JMP #00C6 - 0x58300008, // 00C5 LDCONST R12 K8 - 0x6034000C, // 00C6 GETGBL R13 G12 - 0x5C380600, // 00C7 MOVE R14 R3 - 0x7C340200, // 00C8 CALL R13 1 - 0x1434140D, // 00C9 LT R13 R10 R13 - 0x78360002, // 00CA JMPF R13 #00CE - 0x40341509, // 00CB CONNECT R13 R10 K9 - 0x9434060D, // 00CC GETIDX R13 R3 R13 - 0x70020000, // 00CD JMP #00CF - 0x58340008, // 00CE LDCONST R13 K8 - 0x0038180B, // 00CF ADD R14 R12 R11 - 0x00381C0D, // 00D0 ADD R14 R14 R13 - 0x5C0C1C00, // 00D1 MOVE R3 R14 - 0x6038000C, // 00D2 GETGBL R14 G12 - 0x5C3C1600, // 00D3 MOVE R15 R11 - 0x7C380200, // 00D4 CALL R14 1 - 0x00380E0E, // 00D5 ADD R14 R7 R14 - 0x5C101C00, // 00D6 MOVE R4 R14 - 0x70020001, // 00D7 JMP #00DA - 0x002C0D04, // 00D8 ADD R11 R6 K4 - 0x5C101600, // 00D9 MOVE R4 R11 - 0x70020001, // 00DA JMP #00DD - 0x00240D04, // 00DB ADD R9 R6 K4 - 0x5C101200, // 00DC MOVE R4 R9 - 0x7001FF70, // 00DD JMP #004F - 0x80040600, // 00DE RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ - be_nested_proto( - 13, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* 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_anonymous_function), - /* K12 */ be_nested_str_weak(repeat_count), - /* K13 */ be_nested_str_weak(string), - /* K14 */ be_nested_str_weak(is_computed_expression_string), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(_X2E), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(create_simple_function_from_string), - /* K19 */ be_nested_str_weak(create_computation_closure_from_string), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[83]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x5C180200, // 0001 MOVE R6 R1 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x5C200600, // 0003 MOVE R8 R3 - 0x7C100800, // 0004 CALL R4 4 - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x7C140200, // 0006 CALL R5 1 - 0x74160022, // 0007 JMPT R5 #002B - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x20180A06, // 000B NE R6 R5 R6 - 0x781A001B, // 000C JMPF R6 #0029 - 0x88180B03, // 000D GETMBR R6 R5 K3 - 0xB81E0800, // 000E GETNGBL R7 K4 - 0x881C0F05, // 000F GETMBR R7 R7 K5 - 0x881C0F06, // 0010 GETMBR R7 R7 K6 - 0x1C180C07, // 0011 EQ R6 R6 R7 - 0x741A0005, // 0012 JMPT R6 #0019 - 0x88180B03, // 0013 GETMBR R6 R5 K3 - 0xB81E0800, // 0014 GETNGBL R7 K4 - 0x881C0F05, // 0015 GETMBR R7 R7 K5 - 0x881C0F07, // 0016 GETMBR R7 R7 K7 - 0x1C180C07, // 0017 EQ R6 R6 R7 - 0x781A000F, // 0018 JMPF R6 #0029 - 0x88180B08, // 0019 GETMBR R6 R5 K8 - 0x8C1C0109, // 001A GETMET R7 R0 K9 - 0x7C1C0200, // 001B CALL R7 1 - 0x8C1C0100, // 001C GETMET R7 R0 K0 - 0x5C240200, // 001D MOVE R9 R1 - 0x50280000, // 001E LDBOOL R10 0 0 - 0x5C2C0600, // 001F MOVE R11 R3 - 0x7C1C0800, // 0020 CALL R7 4 - 0x60200018, // 0021 GETGBL R8 G24 - 0x5824000A, // 0022 LDCONST R9 K10 - 0x5C280800, // 0023 MOVE R10 R4 - 0x5C2C0C00, // 0024 MOVE R11 R6 - 0x5C300E00, // 0025 MOVE R12 R7 - 0x7C200800, // 0026 CALL R8 4 - 0x5C101000, // 0027 MOVE R4 R8 - 0x70020000, // 0028 JMP #002A - 0x70020000, // 0029 JMP #002B - 0x7001FFD9, // 002A JMP #0005 - 0x780E0000, // 002B JMPF R3 #002D - 0x80040800, // 002C RET 1 R4 - 0x780A0022, // 002D JMPF R2 #0051 - 0x8C14010B, // 002E GETMET R5 R0 K11 - 0x5C1C0800, // 002F MOVE R7 R4 - 0x7C140400, // 0030 CALL R5 2 - 0x7416001E, // 0031 JMPT R5 #0051 - 0x1C14030C, // 0032 EQ R5 R1 K12 - 0x78160011, // 0033 JMPF R5 #0046 - 0xA4161A00, // 0034 IMPORT R5 K13 - 0x8C18010E, // 0035 GETMET R6 R0 K14 - 0x5C200800, // 0036 MOVE R8 R4 - 0x7C180400, // 0037 CALL R6 2 - 0x741A0005, // 0038 JMPT R6 #003F - 0x8C180B0F, // 0039 GETMET R6 R5 K15 - 0x5C200800, // 003A MOVE R8 R4 - 0x58240010, // 003B LDCONST R9 K16 - 0x7C180600, // 003C CALL R6 3 - 0x28180D11, // 003D GE R6 R6 K17 - 0x781A0004, // 003E JMPF R6 #0044 - 0x8C180112, // 003F GETMET R6 R0 K18 - 0x5C200800, // 0040 MOVE R8 R4 - 0x7C180400, // 0041 CALL R6 2 - 0x80040C00, // 0042 RET 1 R6 - 0x70020000, // 0043 JMP #0045 - 0x80040800, // 0044 RET 1 R4 - 0x70020009, // 0045 JMP #0050 - 0x8C14010E, // 0046 GETMET R5 R0 K14 - 0x5C1C0800, // 0047 MOVE R7 R4 - 0x7C140400, // 0048 CALL R5 2 - 0x78160004, // 0049 JMPF R5 #004F - 0x8C140113, // 004A GETMET R5 R0 K19 - 0x5C1C0800, // 004B MOVE R7 R4 - 0x7C140400, // 004C CALL R5 2 - 0x80040A00, // 004D RET 1 R5 - 0x70020000, // 004E JMP #0050 - 0x80040800, // 004F RET 1 R4 - 0x70020000, // 0050 JMP #0052 - 0x80040800, // 0051 RET 1 R4 - 0x80000000, // 0052 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_number -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -4240,42 +3746,361 @@ be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* 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(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), + /* 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_number), + be_str_weak(expect_left_brace), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ + ( &(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 - 0x780A000A, // 0004 JMPF R2 #0010 + 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 - 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 + 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_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* 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_BRACE), + }), + be_str_weak(check_right_brace), + &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_sequence_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* 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[47]) { /* 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(get_indent), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(NEWLINE), + /* K11 */ be_nested_str_weak(KEYWORD), + /* K12 */ be_nested_str_weak(play), + /* K13 */ be_nested_str_weak(process_play_statement_fluent), + /* K14 */ be_nested_str_weak(wait), + /* K15 */ be_nested_str_weak(process_wait_statement_fluent), + /* K16 */ be_nested_str_weak(IDENTIFIER), + /* K17 */ be_nested_str_weak(log), + /* K18 */ be_nested_str_weak(process_log_statement_fluent), + /* K19 */ be_nested_str_weak(restart), + /* K20 */ be_nested_str_weak(process_restart_statement_fluent), + /* K21 */ be_nested_str_weak(reset), + /* K22 */ be_nested_str_weak(error), + /* K23 */ be_nested_str_weak(_X27reset_X27_X20command_X20is_X20no_X20longer_X20supported_X2E_X20Use_X20_X27restart_X27_X20instead_X2E), + /* K24 */ be_nested_str_weak(skip_statement), + /* K25 */ be_nested_str_weak(repeat), + /* K26 */ be_nested_str_weak(1), + /* K27 */ be_nested_str_weak(forever), + /* K28 */ be_nested_str_weak(_X2D1), + /* K29 */ be_nested_str_weak(process_value), + /* K30 */ be_nested_str_weak(repeat_count), + /* K31 */ be_nested_str_weak(expect_keyword), + /* K32 */ be_nested_str_weak(times), + /* K33 */ be_nested_str_weak(expect_left_brace), + /* K34 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), + /* K35 */ be_nested_str_weak(indent_level), + /* K36 */ be_const_int(1), + /* K37 */ be_nested_str_weak(at_end), + /* K38 */ be_nested_str_weak(check_right_brace), + /* K39 */ be_nested_str_weak(process_sequence_statement), + /* K40 */ be_nested_str_weak(expect_right_brace), + /* K41 */ be_nested_str_weak(_X25s_X29), + /* K42 */ be_nested_str_weak(peek), + /* K43 */ be_nested_str_weak(DOT), + /* K44 */ be_nested_str_weak(process_sequence_assignment_fluent), + /* K45 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), + /* K46 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), + }), + be_str_weak(process_sequence_statement), + &be_const_str_solidified, + ( &(const binstruction[210]) { /* 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 + 0x780A0008, // 0011 JMPF R2 #001B + 0x8C080106, // 0012 GETMET R2 R0 K6 + 0x8C100107, // 0013 GETMET R4 R0 K7 + 0x7C100200, // 0014 CALL R4 1 + 0x88140308, // 0015 GETMBR R5 R1 K8 + 0x00100805, // 0016 ADD R4 R4 R5 + 0x7C080400, // 0017 CALL R2 2 + 0x8C080109, // 0018 GETMET R2 R0 K9 + 0x7C080200, // 0019 CALL R2 1 + 0x80000400, // 001A RET 0 + 0x88080301, // 001B GETMBR R2 R1 K1 + 0xB80E0400, // 001C GETNGBL R3 K2 + 0x880C0703, // 001D GETMBR R3 R3 K3 + 0x880C070A, // 001E GETMBR R3 R3 K10 + 0x1C080403, // 001F EQ R2 R2 R3 + 0x780A0002, // 0020 JMPF R2 #0024 + 0x8C080109, // 0021 GETMET R2 R0 K9 + 0x7C080200, // 0022 CALL R2 1 + 0x80000400, // 0023 RET 0 + 0x88080301, // 0024 GETMBR R2 R1 K1 + 0xB80E0400, // 0025 GETNGBL R3 K2 + 0x880C0703, // 0026 GETMBR R3 R3 K3 + 0x880C070B, // 0027 GETMBR R3 R3 K11 + 0x1C080403, // 0028 EQ R2 R2 R3 + 0x780A0005, // 0029 JMPF R2 #0030 + 0x88080308, // 002A GETMBR R2 R1 K8 + 0x1C08050C, // 002B EQ R2 R2 K12 + 0x780A0002, // 002C JMPF R2 #0030 + 0x8C08010D, // 002D GETMET R2 R0 K13 + 0x7C080200, // 002E CALL R2 1 + 0x700200A0, // 002F JMP #00D1 + 0x88080301, // 0030 GETMBR R2 R1 K1 + 0xB80E0400, // 0031 GETNGBL R3 K2 + 0x880C0703, // 0032 GETMBR R3 R3 K3 + 0x880C070B, // 0033 GETMBR R3 R3 K11 + 0x1C080403, // 0034 EQ R2 R2 R3 + 0x780A0005, // 0035 JMPF R2 #003C + 0x88080308, // 0036 GETMBR R2 R1 K8 + 0x1C08050E, // 0037 EQ R2 R2 K14 + 0x780A0002, // 0038 JMPF R2 #003C + 0x8C08010F, // 0039 GETMET R2 R0 K15 + 0x7C080200, // 003A CALL R2 1 + 0x70020094, // 003B JMP #00D1 + 0x88080301, // 003C GETMBR R2 R1 K1 + 0xB80E0400, // 003D GETNGBL R3 K2 + 0x880C0703, // 003E GETMBR R3 R3 K3 + 0x880C0710, // 003F GETMBR R3 R3 K16 + 0x1C080403, // 0040 EQ R2 R2 R3 + 0x780A0005, // 0041 JMPF R2 #0048 + 0x88080308, // 0042 GETMBR R2 R1 K8 + 0x1C080511, // 0043 EQ R2 R2 K17 + 0x780A0002, // 0044 JMPF R2 #0048 + 0x8C080112, // 0045 GETMET R2 R0 K18 + 0x7C080200, // 0046 CALL R2 1 + 0x70020088, // 0047 JMP #00D1 + 0x88080301, // 0048 GETMBR R2 R1 K1 + 0xB80E0400, // 0049 GETNGBL R3 K2 + 0x880C0703, // 004A GETMBR R3 R3 K3 + 0x880C070B, // 004B GETMBR R3 R3 K11 + 0x1C080403, // 004C EQ R2 R2 R3 + 0x780A0005, // 004D JMPF R2 #0054 + 0x88080308, // 004E GETMBR R2 R1 K8 + 0x1C080513, // 004F EQ R2 R2 K19 + 0x780A0002, // 0050 JMPF R2 #0054 + 0x8C080114, // 0051 GETMET R2 R0 K20 + 0x7C080200, // 0052 CALL R2 1 + 0x7002007C, // 0053 JMP #00D1 + 0x88080301, // 0054 GETMBR R2 R1 K1 + 0xB80E0400, // 0055 GETNGBL R3 K2 + 0x880C0703, // 0056 GETMBR R3 R3 K3 + 0x880C070B, // 0057 GETMBR R3 R3 K11 + 0x1C080403, // 0058 EQ R2 R2 R3 + 0x780A0008, // 0059 JMPF R2 #0063 + 0x88080308, // 005A GETMBR R2 R1 K8 + 0x1C080515, // 005B EQ R2 R2 K21 + 0x780A0005, // 005C JMPF R2 #0063 + 0x8C080116, // 005D GETMET R2 R0 K22 + 0x58100017, // 005E LDCONST R4 K23 + 0x7C080400, // 005F CALL R2 2 + 0x8C080118, // 0060 GETMET R2 R0 K24 + 0x7C080200, // 0061 CALL R2 1 + 0x7002006D, // 0062 JMP #00D1 + 0x88080301, // 0063 GETMBR R2 R1 K1 + 0xB80E0400, // 0064 GETNGBL R3 K2 + 0x880C0703, // 0065 GETMBR R3 R3 K3 + 0x880C070B, // 0066 GETMBR R3 R3 K11 + 0x1C080403, // 0067 EQ R2 R2 R3 + 0x780A0041, // 0068 JMPF R2 #00AB + 0x88080308, // 0069 GETMBR R2 R1 K8 + 0x1C080519, // 006A EQ R2 R2 K25 + 0x780A003E, // 006B JMPF R2 #00AB + 0x8C080109, // 006C GETMET R2 R0 K9 + 0x7C080200, // 006D CALL R2 1 + 0x5808001A, // 006E LDCONST R2 K26 + 0x8C0C0100, // 006F GETMET R3 R0 K0 + 0x7C0C0200, // 0070 CALL R3 1 + 0x4C100000, // 0071 LDNIL R4 + 0x20100604, // 0072 NE R4 R3 R4 + 0x7812000C, // 0073 JMPF R4 #0081 + 0x88100701, // 0074 GETMBR R4 R3 K1 + 0xB8160400, // 0075 GETNGBL R5 K2 + 0x88140B03, // 0076 GETMBR R5 R5 K3 + 0x88140B0B, // 0077 GETMBR R5 R5 K11 + 0x1C100805, // 0078 EQ R4 R4 R5 + 0x78120006, // 0079 JMPF R4 #0081 + 0x88100708, // 007A GETMBR R4 R3 K8 + 0x1C10091B, // 007B EQ R4 R4 K27 + 0x78120003, // 007C JMPF R4 #0081 + 0x8C100109, // 007D GETMET R4 R0 K9 + 0x7C100200, // 007E CALL R4 1 + 0x5808001C, // 007F LDCONST R2 K28 + 0x70020006, // 0080 JMP #0088 + 0x8C10011D, // 0081 GETMET R4 R0 K29 + 0x5818001E, // 0082 LDCONST R6 K30 + 0x7C100400, // 0083 CALL R4 2 + 0x8C14011F, // 0084 GETMET R5 R0 K31 + 0x581C0020, // 0085 LDCONST R7 K32 + 0x7C140400, // 0086 CALL R5 2 + 0x5C080800, // 0087 MOVE R2 R4 + 0x8C100121, // 0088 GETMET R4 R0 K33 + 0x7C100200, // 0089 CALL R4 1 + 0x8C100106, // 008A GETMET R4 R0 K6 + 0x60180018, // 008B GETGBL R6 G24 + 0x581C0022, // 008C LDCONST R7 K34 + 0x8C200107, // 008D GETMET R8 R0 K7 + 0x7C200200, // 008E CALL R8 1 + 0x5C240400, // 008F MOVE R9 R2 + 0x7C180600, // 0090 CALL R6 3 + 0x7C100400, // 0091 CALL R4 2 + 0x88100123, // 0092 GETMBR R4 R0 K35 + 0x00100924, // 0093 ADD R4 R4 K36 + 0x90024604, // 0094 SETMBR R0 K35 R4 + 0x8C100125, // 0095 GETMET R4 R0 K37 + 0x7C100200, // 0096 CALL R4 1 + 0x74120005, // 0097 JMPT R4 #009E + 0x8C100126, // 0098 GETMET R4 R0 K38 + 0x7C100200, // 0099 CALL R4 1 + 0x74120002, // 009A JMPT R4 #009E + 0x8C100127, // 009B GETMET R4 R0 K39 + 0x7C100200, // 009C CALL R4 1 + 0x7001FFF6, // 009D JMP #0095 + 0x8C100128, // 009E GETMET R4 R0 K40 + 0x7C100200, // 009F CALL R4 1 + 0x8C100106, // 00A0 GETMET R4 R0 K6 + 0x60180018, // 00A1 GETGBL R6 G24 + 0x581C0029, // 00A2 LDCONST R7 K41 + 0x8C200107, // 00A3 GETMET R8 R0 K7 + 0x7C200200, // 00A4 CALL R8 1 + 0x7C180400, // 00A5 CALL R6 2 + 0x7C100400, // 00A6 CALL R4 2 + 0x88100123, // 00A7 GETMBR R4 R0 K35 + 0x04100924, // 00A8 SUB R4 R4 K36 + 0x90024604, // 00A9 SETMBR R0 K35 R4 + 0x70020025, // 00AA JMP #00D1 + 0x88080301, // 00AB GETMBR R2 R1 K1 + 0xB80E0400, // 00AC GETNGBL R3 K2 + 0x880C0703, // 00AD GETMBR R3 R3 K3 + 0x880C0710, // 00AE GETMBR R3 R3 K16 + 0x1C080403, // 00AF EQ R2 R2 R3 + 0x780A0018, // 00B0 JMPF R2 #00CA + 0x8C08012A, // 00B1 GETMET R2 R0 K42 + 0x7C080200, // 00B2 CALL R2 1 + 0x4C0C0000, // 00B3 LDNIL R3 + 0x20080403, // 00B4 NE R2 R2 R3 + 0x780A000A, // 00B5 JMPF R2 #00C1 + 0x8C08012A, // 00B6 GETMET R2 R0 K42 + 0x7C080200, // 00B7 CALL R2 1 + 0x88080501, // 00B8 GETMBR R2 R2 K1 + 0xB80E0400, // 00B9 GETNGBL R3 K2 + 0x880C0703, // 00BA GETMBR R3 R3 K3 + 0x880C072B, // 00BB GETMBR R3 R3 K43 + 0x1C080403, // 00BC EQ R2 R2 R3 + 0x780A0002, // 00BD JMPF R2 #00C1 + 0x8C08012C, // 00BE GETMET R2 R0 K44 + 0x7C080200, // 00BF CALL R2 1 + 0x70020007, // 00C0 JMP #00C9 + 0x8C080116, // 00C1 GETMET R2 R0 K22 + 0x60100018, // 00C2 GETGBL R4 G24 + 0x5814002D, // 00C3 LDCONST R5 K45 + 0x88180308, // 00C4 GETMBR R6 R1 K8 + 0x7C100400, // 00C5 CALL R4 2 + 0x7C080400, // 00C6 CALL R2 2 + 0x8C080118, // 00C7 GETMET R2 R0 K24 + 0x7C080200, // 00C8 CALL R2 1 + 0x70020006, // 00C9 JMP #00D1 + 0x8C080116, // 00CA GETMET R2 R0 K22 + 0x60100018, // 00CB GETGBL R4 G24 + 0x5814002E, // 00CC LDCONST R5 K46 + 0x7C100200, // 00CD CALL R4 1 + 0x7C080400, // 00CE CALL R2 2 + 0x8C080118, // 00CF GETMET R2 R0 K24 + 0x7C080200, // 00D0 CALL R2 1 + 0x80000000, // 00D1 RET 0 }) ) ); @@ -4316,11 +4141,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /******************************************************************** -** Solidified function: process_value +** Solidified function: add ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ +be_local_closure(class_SimpleDSLTranspiler_add, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4328,18 +4153,18 @@ be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(process_additive_expression), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(push), }), - be_str_weak(process_value), + be_str_weak(add), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140200, // 0002 LDBOOL R5 1 0 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x7C080800, // 0004 CALL R2 4 - 0x80040400, // 0005 RET 1 R2 + ( &(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 }) ) ); @@ -4401,14 +4226,14 @@ be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* na /* 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(self_X2E_X25s_X28_X25s_X29), + /* K14 */ be_nested_str_weak(animation_X2E_math_X2E_X25s_X28_X25s_X29), /* K15 */ be_nested_str_weak(log), /* K16 */ be_nested_str_weak(process_log_call), /* K17 */ be_nested_str_weak(expression), /* K18 */ be_nested_str_weak(template_definitions), /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(self_X2Eengine), + /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K21 */ be_nested_str_weak(engine), /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), /* K23 */ be_nested_str_weak(_is_simple_function_call), /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), @@ -4634,7 +4459,7 @@ be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* K5 */ be_nested_str_weak(string), /* K6 */ be_nested_str_weak(value_provider), /* K7 */ be_nested_str_weak(animation), - /* K8 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X2E_X20Only_X20value_X20providers_X20_X28like_X20oscillators_X29_X20and_X20animations_X20can_X20be_X20reset_X2Frestarted_X2E), + /* K8 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X2E_X20Only_X20value_X20providers_X20_X28like_X20oscillators_X29_X20and_X20animations_X20can_X20be_X20restarted_X2E), /* K9 */ be_nested_str_weak(Could_X20not_X20validate_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X3A_X20_X25s), }), be_str_weak(_validate_value_provider_reference), @@ -4942,30 +4767,49 @@ be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ /******************************************************************** -** Solidified function: add +** Solidified function: expect_right_brace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_add, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ be_nested_proto( 5, /* nstack */ - 2, /* argc */ + 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(output), - /* K1 */ be_nested_str_weak(push), + ( &(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(add), + be_str_weak(expect_right_brace), &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[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 }) ) ); @@ -5152,11 +4996,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ /******************************************************************** -** Solidified function: expect_right_brace +** Solidified function: transpile_template_body ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ be_nested_proto( - 5, /* nstack */ + 11, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -5164,37 +5008,81 @@ 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), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(process_statement), + /* K2 */ be_nested_str_weak(run_statements), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(name), + /* K5 */ be_nested_str_weak(comment), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(errors), + /* K10 */ be_nested_str_weak(join_output), + /* K11 */ be_nested_str_weak(error), + /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), }), - be_str_weak(expect_right_brace), + be_str_weak(transpile_template_body), &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 + ( &(const binstruction[57]) { /* code */ + 0xA802002A, // 0000 EXBLK 0 #002C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x74060002, // 0003 JMPT R1 #0007 + 0x8C040101, // 0004 GETMET R1 R0 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x7001FFF9, // 0006 JMP #0001 + 0x6004000C, // 0007 GETGBL R1 G12 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x7C040200, // 0009 CALL R1 1 + 0x24040303, // 000A GT R1 R1 K3 + 0x78060012, // 000B JMPF R1 #001F + 0x60040010, // 000C GETGBL R1 G16 + 0x88080102, // 000D GETMBR R2 R0 K2 + 0x7C040200, // 000E CALL R1 1 + 0xA802000B, // 000F EXBLK 0 #001C + 0x5C080200, // 0010 MOVE R2 R1 + 0x7C080000, // 0011 CALL R2 0 + 0x940C0504, // 0012 GETIDX R3 R2 K4 + 0x94100505, // 0013 GETIDX R4 R2 K5 + 0x8C140106, // 0014 GETMET R5 R0 K6 + 0x601C0018, // 0015 GETGBL R7 G24 + 0x58200007, // 0016 LDCONST R8 K7 + 0x5C240600, // 0017 MOVE R9 R3 + 0x5C280800, // 0018 MOVE R10 R4 + 0x7C1C0600, // 0019 CALL R7 3 + 0x7C140400, // 001A CALL R5 2 + 0x7001FFF3, // 001B JMP #0010 + 0x58040008, // 001C LDCONST R1 K8 + 0xAC040200, // 001D CATCH R1 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x6004000C, // 001F GETGBL R1 G12 + 0x88080109, // 0020 GETMBR R2 R0 K9 + 0x7C040200, // 0021 CALL R1 1 + 0x1C040303, // 0022 EQ R1 R1 K3 + 0x78060002, // 0023 JMPF R1 #0027 + 0x8C04010A, // 0024 GETMET R1 R0 K10 + 0x7C040200, // 0025 CALL R1 1 + 0x70020000, // 0026 JMP #0028 + 0x4C040000, // 0027 LDNIL R1 + 0xA8040001, // 0028 EXBLK 1 1 + 0x80040200, // 0029 RET 1 R1 + 0xA8040001, // 002A EXBLK 1 1 + 0x7002000B, // 002B JMP #0038 + 0xAC040002, // 002C CATCH R1 0 2 + 0x70020008, // 002D JMP #0037 + 0x8C0C010B, // 002E GETMET R3 R0 K11 + 0x60140018, // 002F GETGBL R5 G24 + 0x5818000C, // 0030 LDCONST R6 K12 + 0x5C1C0400, // 0031 MOVE R7 R2 + 0x7C140400, // 0032 CALL R5 2 + 0x7C0C0400, // 0033 CALL R3 2 + 0x4C0C0000, // 0034 LDNIL R3 + 0x80040600, // 0035 RET 1 R3 + 0x70020000, // 0036 JMP #0038 + 0xB0080000, // 0037 RAISE 2 R0 R0 + 0x80000000, // 0038 RET 0 }) ) ); @@ -5202,106 +5090,31 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ /******************************************************************** -** Solidified function: process_time_value +** Solidified function: _validate_animation_factory_creates_animation ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 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[16]) { /* 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(IDENTIFIER), - /* K10 */ be_nested_str_weak(_validate_object_reference), - /* K11 */ be_nested_str_weak(duration), - /* K12 */ be_nested_str_weak(process_primary_expression), - /* K13 */ be_nested_str_weak(time), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(Expected_X20time_X20value), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), }), - be_str_weak(process_time_value), + be_str_weak(_validate_animation_factory_creates_animation), &be_const_str_solidified, - ( &(const binstruction[67]) { /* 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 - 0x7002002E, // 0012 JMP #0042 - 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 - 0x70020019, // 0027 JMP #0042 - 0x4C080000, // 0028 LDNIL R2 - 0x20080202, // 0029 NE R2 R1 R2 - 0x780A0011, // 002A JMPF R2 #003D - 0x88080301, // 002B GETMBR R2 R1 K1 - 0xB80E0400, // 002C GETNGBL R3 K2 - 0x880C0703, // 002D GETMBR R3 R3 K3 - 0x880C0709, // 002E GETMBR R3 R3 K9 - 0x1C080403, // 002F EQ R2 R2 R3 - 0x780A000B, // 0030 JMPF R2 #003D - 0x88080305, // 0031 GETMBR R2 R1 K5 - 0x8C0C010A, // 0032 GETMET R3 R0 K10 - 0x5C140400, // 0033 MOVE R5 R2 - 0x5818000B, // 0034 LDCONST R6 K11 - 0x7C0C0600, // 0035 CALL R3 3 - 0x8C0C010C, // 0036 GETMET R3 R0 K12 - 0x5814000D, // 0037 LDCONST R5 K13 - 0x50180200, // 0038 LDBOOL R6 1 0 - 0x501C0000, // 0039 LDBOOL R7 0 0 - 0x7C0C0800, // 003A CALL R3 4 - 0x80040600, // 003B RET 1 R3 - 0x70020004, // 003C JMP #0042 - 0x8C08010E, // 003D GETMET R2 R0 K14 - 0x5810000F, // 003E LDCONST R4 K15 - 0x7C080400, // 003F CALL R2 2 - 0x540A03E7, // 0040 LDINT R2 1000 - 0x80040400, // 0041 RET 1 R2 - 0x80000000, // 0042 RET 0 + ( &(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 }) ) ); @@ -5329,8 +5142,8 @@ be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* nam /* K4 */ be_nested_str_weak(LEFT_PAREN), /* K5 */ be_nested_str_weak(process_function_arguments), /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K8 */ be_nested_str_weak(self_X2Eengine), + /* K7 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K8 */ be_nested_str_weak(engine), /* K9 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), /* K10 */ be_nested_str_weak(error), /* K11 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), @@ -5382,31 +5195,49 @@ be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* nam /******************************************************************** -** Solidified function: _validate_animation_factory_creates_animation +** Solidified function: expect_right_bracket ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), + ( &(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_BRACKET), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), }), - be_str_weak(_validate_animation_factory_creates_animation), + be_str_weak(expect_right_bracket), &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[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 }) ) ); @@ -5602,9 +5433,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ /******************************************************************** -** Solidified function: expect_right_bracket +** Solidified function: expect_number ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -5614,37 +5445,42 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* 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(RIGHT_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), + /* 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_right_bracket), + be_str_weak(expect_number), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(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 - 0x780A0008, // 0004 JMPF R2 #000E + 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 - 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 + 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 }) ) ); @@ -5694,12 +5530,12 @@ be_local_closure(class_SimpleDSLTranspiler_validate_symbol_reference, /* name /******************************************************************** -** Solidified function: expect_keyword +** Solidified function: generate_engine_run ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ +be_local_closure(class_SimpleDSLTranspiler_generate_engine_run, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ + 11, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -5707,43 +5543,50 @@ be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ 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), + /* K0 */ be_nested_str_weak(run_statements), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(has_template_calls), + /* K3 */ be_nested_str_weak(name), + /* K4 */ be_nested_str_weak(comment), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(engine_X2Erun_X28_X29), }), - be_str_weak(expect_keyword), + be_str_weak(generate_engine_run), &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 + ( &(const binstruction[31]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060002, // 0004 JMPF R1 #0008 + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x74060000, // 0006 JMPT R1 #0008 + 0x80000200, // 0007 RET 0 + 0x60040010, // 0008 GETGBL R1 G16 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x7C040200, // 000A CALL R1 1 + 0xA802000B, // 000B EXBLK 0 #0018 + 0x5C080200, // 000C MOVE R2 R1 + 0x7C080000, // 000D CALL R2 0 + 0x940C0503, // 000E GETIDX R3 R2 K3 + 0x94100504, // 000F GETIDX R4 R2 K4 + 0x8C140105, // 0010 GETMET R5 R0 K5 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240600, // 0013 MOVE R9 R3 + 0x5C280800, // 0014 MOVE R10 R4 + 0x7C1C0600, // 0015 CALL R7 3 + 0x7C140400, // 0016 CALL R5 2 + 0x7001FFF3, // 0017 JMP #000C + 0x58040007, // 0018 LDCONST R1 K7 + 0xAC040200, // 0019 CATCH R1 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x8C040105, // 001B GETMET R1 R0 K5 + 0x580C0008, // 001C LDCONST R3 K8 + 0x7C040400, // 001D CALL R1 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -6125,12 +5968,12 @@ be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ /******************************************************************** -** Solidified function: check_right_brace +** Solidified function: is_anonymous_function ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -6138,29 +5981,31 @@ be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ 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_BRACE), + /* 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(check_right_brace), + be_str_weak(is_anonymous_function), &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 + ( &(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 }) ) ); @@ -6258,11 +6103,11 @@ be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name /******************************************************************** -** Solidified function: expect_left_brace +** Solidified function: process_restart_statement_fluent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent, /* name */ be_nested_proto( - 5, /* nstack */ + 12, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -6270,37 +6115,53 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* 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(LEFT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), + /* K1 */ be_nested_str_weak(value), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(expect_identifier), + /* K4 */ be_nested_str_weak(_validate_value_provider_reference), + /* K5 */ be_nested_str_weak(skip_statement), + /* K6 */ be_nested_str_weak(collect_inline_comment), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K10 */ be_nested_str_weak(get_indent), }), - be_str_weak(expect_left_brace), + be_str_weak(process_restart_statement_fluent), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[31]) { /* 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 + 0x88040301, // 0002 GETMBR R1 R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080103, // 0005 GETMET R2 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x8C0C0104, // 0007 GETMET R3 R0 K4 + 0x5C140400, // 0008 MOVE R5 R2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C0C0600, // 000A CALL R3 3 + 0x740E0002, // 000B JMPT R3 #000F + 0x8C0C0105, // 000C GETMET R3 R0 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x80000600, // 000E RET 0 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x7C0C0200, // 0010 CALL R3 1 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x8C140108, // 0015 GETMET R5 R0 K8 + 0x601C0018, // 0016 GETGBL R7 G24 + 0x58200009, // 0017 LDCONST R8 K9 + 0x8C24010A, // 0018 GETMET R9 R0 K10 + 0x7C240200, // 0019 CALL R9 1 + 0x5C280800, // 001A MOVE R10 R4 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C1C0800, // 001C CALL R7 4 + 0x7C140400, // 001D CALL R5 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -7401,86 +7262,6 @@ be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: process_event_parameters -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* 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[16]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_X7B), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(current), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(animation_dsl), - /* K7 */ be_nested_str_weak(Token), - /* K8 */ be_nested_str_weak(TIME), - /* K9 */ be_nested_str_weak(process_time_value), - /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), - /* K11 */ be_nested_str_weak(process_value), - /* K12 */ be_nested_str_weak(event_param), - /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(_X7D), - }), - be_str_weak(process_event_parameters), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x740A001D, // 0005 JMPT R2 #0024 - 0x8C080103, // 0006 GETMET R2 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0x740A001A, // 0008 JMPT R2 #0024 - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x4C0C0000, // 000B LDNIL R3 - 0x200C0403, // 000C NE R3 R2 R3 - 0x780E000D, // 000D JMPF R3 #001C - 0x880C0505, // 000E GETMBR R3 R2 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x88100907, // 0010 GETMBR R4 R4 K7 - 0x88100908, // 0011 GETMBR R4 R4 K8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0007, // 0013 JMPF R3 #001C - 0x8C0C0109, // 0014 GETMET R3 R0 K9 - 0x7C0C0200, // 0015 CALL R3 1 - 0x60100018, // 0016 GETGBL R4 G24 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x5C180600, // 0018 MOVE R6 R3 - 0x7C100400, // 0019 CALL R4 2 - 0x00040204, // 001A ADD R1 R1 R4 - 0x70020007, // 001B JMP #0024 - 0x8C0C010B, // 001C GETMET R3 R0 K11 - 0x5814000C, // 001D LDCONST R5 K12 - 0x7C0C0400, // 001E CALL R3 2 - 0x60100018, // 001F GETGBL R4 G24 - 0x5814000D, // 0020 LDCONST R5 K13 - 0x5C180600, // 0021 MOVE R6 R3 - 0x7C100400, // 0022 CALL R4 2 - 0x00040204, // 0023 ADD R1 R1 R4 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x0004030F, // 0026 ADD R1 R1 K15 - 0x80040200, // 0027 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: join_output ********************************************************************/ @@ -7840,7 +7621,7 @@ be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_strin /* 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_X29_X20return_X20_X25s_X20end), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), }), be_str_weak(create_computation_closure_from_string), @@ -7994,15 +7775,15 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /* K15 */ be_nested_str_weak(value), /* K16 */ be_nested_str_weak(is_math_method), /* K17 */ be_nested_str_weak(process_function_arguments), - /* K18 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), + /* K18 */ be_nested_str_weak(animation_X2E_math_X2E_X25s_X28_X25s_X29), /* K19 */ be_nested_str_weak(log), /* K20 */ be_nested_str_weak(process_log_call), /* K21 */ be_nested_str_weak(expression), /* K22 */ be_nested_str_weak(), /* K23 */ be_nested_str_weak(template_definitions), /* K24 */ be_nested_str_weak(contains), - /* K25 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K26 */ be_nested_str_weak(self_X2Eengine), + /* K25 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K26 */ be_nested_str_weak(engine), /* K27 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), /* K28 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), /* K29 */ be_nested_str_weak(_is_simple_function_call), @@ -8033,7 +7814,7 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /* K54 */ be_nested_str_weak(resolve_symbol_reference), /* K55 */ be_nested_str_weak(repeat_count), /* K56 */ be_nested_str_weak(_X25s_X2E_X25s), - /* K57 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), + /* K57 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), /* K58 */ be_nested_str_weak(true), /* K59 */ be_nested_str_weak(false), /* K60 */ be_nested_str_weak(animation_X2E_X25s), @@ -8376,100 +8157,6 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /*******************************************************************/ -/******************************************************************** -** Solidified function: transpile_template_body -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* 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[13]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(process_statement), - /* K2 */ be_nested_str_weak(run_statements), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(name), - /* K5 */ be_nested_str_weak(comment), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(errors), - /* K10 */ be_nested_str_weak(join_output), - /* K11 */ be_nested_str_weak(error), - /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile_template_body), - &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ - 0xA802002A, // 0000 EXBLK 0 #002C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x74060002, // 0003 JMPT R1 #0007 - 0x8C040101, // 0004 GETMET R1 R0 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x7001FFF9, // 0006 JMP #0001 - 0x6004000C, // 0007 GETGBL R1 G12 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x7C040200, // 0009 CALL R1 1 - 0x24040303, // 000A GT R1 R1 K3 - 0x78060012, // 000B JMPF R1 #001F - 0x60040010, // 000C GETGBL R1 G16 - 0x88080102, // 000D GETMBR R2 R0 K2 - 0x7C040200, // 000E CALL R1 1 - 0xA802000B, // 000F EXBLK 0 #001C - 0x5C080200, // 0010 MOVE R2 R1 - 0x7C080000, // 0011 CALL R2 0 - 0x940C0504, // 0012 GETIDX R3 R2 K4 - 0x94100505, // 0013 GETIDX R4 R2 K5 - 0x8C140106, // 0014 GETMET R5 R0 K6 - 0x601C0018, // 0015 GETGBL R7 G24 - 0x58200007, // 0016 LDCONST R8 K7 - 0x5C240600, // 0017 MOVE R9 R3 - 0x5C280800, // 0018 MOVE R10 R4 - 0x7C1C0600, // 0019 CALL R7 3 - 0x7C140400, // 001A CALL R5 2 - 0x7001FFF3, // 001B JMP #0010 - 0x58040008, // 001C LDCONST R1 K8 - 0xAC040200, // 001D CATCH R1 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x6004000C, // 001F GETGBL R1 G12 - 0x88080109, // 0020 GETMBR R2 R0 K9 - 0x7C040200, // 0021 CALL R1 1 - 0x1C040303, // 0022 EQ R1 R1 K3 - 0x78060002, // 0023 JMPF R1 #0027 - 0x8C04010A, // 0024 GETMET R1 R0 K10 - 0x7C040200, // 0025 CALL R1 1 - 0x70020000, // 0026 JMP #0028 - 0x4C040000, // 0027 LDNIL R1 - 0xA8040001, // 0028 EXBLK 1 1 - 0x80040200, // 0029 RET 1 R1 - 0xA8040001, // 002A EXBLK 1 1 - 0x7002000B, // 002B JMP #0038 - 0xAC040002, // 002C CATCH R1 0 2 - 0x70020008, // 002D JMP #0037 - 0x8C0C010B, // 002E GETMET R3 R0 K11 - 0x60140018, // 002F GETGBL R5 G24 - 0x5818000C, // 0030 LDCONST R6 K12 - 0x5C1C0400, // 0031 MOVE R7 R2 - 0x7C140400, // 0032 CALL R5 2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x4C0C0000, // 0034 LDNIL R3 - 0x80040600, // 0035 RET 1 R3 - 0x70020000, // 0036 JMP #0038 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80000000, // 0038 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: expect_dot ********************************************************************/ @@ -8520,6 +8207,455 @@ be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ /*******************************************************************/ +/******************************************************************** +** 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: generate_template_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(add), + /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), + /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K9 */ be_nested_str_weak(symbol_table), + /* K10 */ be_nested_str_weak(strip_initialized), + /* K11 */ be_nested_str_weak(parameter), + /* K12 */ be_nested_str_weak(transpile_template_body), + /* K13 */ be_nested_str_weak(split), + /* K14 */ be_nested_str_weak(_X0A), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(_X20_X20_X25s), + /* K17 */ be_nested_str_weak(errors), + /* K18 */ be_nested_str_weak(error), + /* K19 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), + /* K20 */ be_nested_str_weak(end), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), + }), + be_str_weak(generate_template_function), + &be_const_str_solidified, + ( &(const binstruction[116]) { /* code */ + 0xA4160000, // 0000 IMPORT R5 K0 + 0x58180001, // 0001 LDCONST R6 K1 + 0x601C0010, // 0002 GETGBL R7 G16 + 0x5C200400, // 0003 MOVE R8 R2 + 0x7C1C0200, // 0004 CALL R7 1 + 0xA8020007, // 0005 EXBLK 0 #000E + 0x5C200E00, // 0006 MOVE R8 R7 + 0x7C200000, // 0007 CALL R8 0 + 0x60240018, // 0008 GETGBL R9 G24 + 0x58280002, // 0009 LDCONST R10 K2 + 0x5C2C1000, // 000A MOVE R11 R8 + 0x7C240400, // 000B CALL R9 2 + 0x00180C09, // 000C ADD R6 R6 R9 + 0x7001FFF7, // 000D JMP #0006 + 0x581C0003, // 000E LDCONST R7 K3 + 0xAC1C0200, // 000F CATCH R7 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x8C1C0104, // 0011 GETMET R7 R0 K4 + 0x60240018, // 0012 GETGBL R9 G24 + 0x58280005, // 0013 LDCONST R10 K5 + 0x5C2C0200, // 0014 MOVE R11 R1 + 0x7C240400, // 0015 CALL R9 2 + 0x7C1C0400, // 0016 CALL R7 2 + 0x8C1C0104, // 0017 GETMET R7 R0 K4 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280006, // 0019 LDCONST R10 K6 + 0x5C2C0200, // 001A MOVE R11 R1 + 0x5C300C00, // 001B MOVE R12 R6 + 0x7C240600, // 001C CALL R9 3 + 0x7C1C0400, // 001D CALL R7 2 + 0xB81E0E00, // 001E GETNGBL R7 K7 + 0x8C1C0F08, // 001F GETMET R7 R7 K8 + 0x5C240800, // 0020 MOVE R9 R4 + 0x7C1C0400, // 0021 CALL R7 2 + 0x60200013, // 0022 GETGBL R8 G19 + 0x7C200000, // 0023 CALL R8 0 + 0x901E1208, // 0024 SETMBR R7 K9 R8 + 0x50200200, // 0025 LDBOOL R8 1 0 + 0x901E1408, // 0026 SETMBR R7 K10 R8 + 0x60200010, // 0027 GETGBL R8 G16 + 0x5C240400, // 0028 MOVE R9 R2 + 0x7C200200, // 0029 CALL R8 1 + 0xA8020004, // 002A EXBLK 0 #0030 + 0x5C241000, // 002B MOVE R9 R8 + 0x7C240000, // 002C CALL R9 0 + 0x88280F09, // 002D GETMBR R10 R7 K9 + 0x9828130B, // 002E SETIDX R10 R9 K11 + 0x7001FFFA, // 002F JMP #002B + 0x58200003, // 0030 LDCONST R8 K3 + 0xAC200200, // 0031 CATCH R8 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x8C200F0C, // 0033 GETMET R8 R7 K12 + 0x7C200200, // 0034 CALL R8 1 + 0x4C240000, // 0035 LDNIL R9 + 0x20241009, // 0036 NE R9 R8 R9 + 0x78260019, // 0037 JMPF R9 #0052 + 0x8C240B0D, // 0038 GETMET R9 R5 K13 + 0x5C2C1000, // 0039 MOVE R11 R8 + 0x5830000E, // 003A LDCONST R12 K14 + 0x7C240600, // 003B CALL R9 3 + 0x60280010, // 003C GETGBL R10 G16 + 0x5C2C1200, // 003D MOVE R11 R9 + 0x7C280200, // 003E CALL R10 1 + 0xA802000D, // 003F EXBLK 0 #004E + 0x5C2C1400, // 0040 MOVE R11 R10 + 0x7C2C0000, // 0041 CALL R11 0 + 0x6030000C, // 0042 GETGBL R12 G12 + 0x5C341600, // 0043 MOVE R13 R11 + 0x7C300200, // 0044 CALL R12 1 + 0x2430190F, // 0045 GT R12 R12 K15 + 0x78320005, // 0046 JMPF R12 #004D + 0x8C300104, // 0047 GETMET R12 R0 K4 + 0x60380018, // 0048 GETGBL R14 G24 + 0x583C0010, // 0049 LDCONST R15 K16 + 0x5C401600, // 004A MOVE R16 R11 + 0x7C380400, // 004B CALL R14 2 + 0x7C300400, // 004C CALL R12 2 + 0x7001FFF1, // 004D JMP #0040 + 0x58280003, // 004E LDCONST R10 K3 + 0xAC280200, // 004F CATCH R10 1 0 + 0xB0080000, // 0050 RAISE 2 R0 R0 + 0x70020010, // 0051 JMP #0063 + 0x60240010, // 0052 GETGBL R9 G16 + 0x88280F11, // 0053 GETMBR R10 R7 K17 + 0x7C240200, // 0054 CALL R9 1 + 0xA8020009, // 0055 EXBLK 0 #0060 + 0x5C281200, // 0056 MOVE R10 R9 + 0x7C280000, // 0057 CALL R10 0 + 0x8C2C0112, // 0058 GETMET R11 R0 K18 + 0x60340018, // 0059 GETGBL R13 G24 + 0x58380013, // 005A LDCONST R14 K19 + 0x5C3C0200, // 005B MOVE R15 R1 + 0x5C401400, // 005C MOVE R16 R10 + 0x7C340600, // 005D CALL R13 3 + 0x7C2C0400, // 005E CALL R11 2 + 0x7001FFF5, // 005F JMP #0056 + 0x58240003, // 0060 LDCONST R9 K3 + 0xAC240200, // 0061 CATCH R9 1 0 + 0xB0080000, // 0062 RAISE 2 R0 R0 + 0x8C240104, // 0063 GETMET R9 R0 K4 + 0x582C0014, // 0064 LDCONST R11 K20 + 0x7C240400, // 0065 CALL R9 2 + 0x8C240104, // 0066 GETMET R9 R0 K4 + 0x582C0015, // 0067 LDCONST R11 K21 + 0x7C240400, // 0068 CALL R9 2 + 0x8C240104, // 0069 GETMET R9 R0 K4 + 0x602C0018, // 006A GETGBL R11 G24 + 0x58300016, // 006B LDCONST R12 K22 + 0x5C340200, // 006C MOVE R13 R1 + 0x5C380200, // 006D MOVE R14 R1 + 0x7C2C0600, // 006E CALL R11 3 + 0x7C240400, // 006F CALL R9 2 + 0x8C240104, // 0070 GETMET R9 R0 K4 + 0x582C0015, // 0071 LDCONST R11 K21 + 0x7C240400, // 0072 CALL R9 2 + 0x80000000, // 0073 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_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: 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_run), + /* 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: _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: 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: skip_function_arguments ********************************************************************/ @@ -8596,462 +8732,6 @@ be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ /*******************************************************************/ -/******************************************************************** -** 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: 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: _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: get_indent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_indent, /* 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[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_X20_X20), - /* K1 */ be_nested_str_weak(indent_level), - /* K2 */ be_const_int(1), - }), - be_str_weak(get_indent), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x00040302, // 0001 ADD R1 R1 K2 - 0x08060001, // 0002 MUL R1 K0 R1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* 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[46]) { /* 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(get_indent), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(NEWLINE), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(play), - /* K13 */ be_nested_str_weak(process_play_statement_fluent), - /* K14 */ be_nested_str_weak(wait), - /* K15 */ be_nested_str_weak(process_wait_statement_fluent), - /* K16 */ be_nested_str_weak(IDENTIFIER), - /* K17 */ be_nested_str_weak(log), - /* K18 */ be_nested_str_weak(process_log_statement_fluent), - /* K19 */ be_nested_str_weak(reset), - /* K20 */ be_nested_str_weak(restart), - /* K21 */ be_nested_str_weak(process_reset_restart_statement_fluent), - /* K22 */ be_nested_str_weak(repeat), - /* K23 */ be_nested_str_weak(1), - /* K24 */ be_nested_str_weak(forever), - /* K25 */ be_nested_str_weak(_X2D1), - /* K26 */ be_nested_str_weak(process_value), - /* K27 */ be_nested_str_weak(repeat_count), - /* K28 */ be_nested_str_weak(expect_keyword), - /* K29 */ be_nested_str_weak(times), - /* K30 */ be_nested_str_weak(expect_left_brace), - /* K31 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), - /* K32 */ be_nested_str_weak(indent_level), - /* K33 */ be_const_int(1), - /* K34 */ be_nested_str_weak(at_end), - /* K35 */ be_nested_str_weak(check_right_brace), - /* K36 */ be_nested_str_weak(process_sequence_statement), - /* K37 */ be_nested_str_weak(expect_right_brace), - /* K38 */ be_nested_str_weak(_X25s_X29), - /* K39 */ be_nested_str_weak(peek), - /* K40 */ be_nested_str_weak(DOT), - /* K41 */ be_nested_str_weak(process_sequence_assignment_fluent), - /* K42 */ be_nested_str_weak(error), - /* K43 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20reset_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), - /* K44 */ be_nested_str_weak(skip_statement), - /* K45 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20reset_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), - }), - be_str_weak(process_sequence_statement), - &be_const_str_solidified, - ( &(const binstruction[198]) { /* 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 - 0x780A0008, // 0011 JMPF R2 #001B - 0x8C080106, // 0012 GETMET R2 R0 K6 - 0x8C100107, // 0013 GETMET R4 R0 K7 - 0x7C100200, // 0014 CALL R4 1 - 0x88140308, // 0015 GETMBR R5 R1 K8 - 0x00100805, // 0016 ADD R4 R4 R5 - 0x7C080400, // 0017 CALL R2 2 - 0x8C080109, // 0018 GETMET R2 R0 K9 - 0x7C080200, // 0019 CALL R2 1 - 0x80000400, // 001A RET 0 - 0x88080301, // 001B GETMBR R2 R1 K1 - 0xB80E0400, // 001C GETNGBL R3 K2 - 0x880C0703, // 001D GETMBR R3 R3 K3 - 0x880C070A, // 001E GETMBR R3 R3 K10 - 0x1C080403, // 001F EQ R2 R2 R3 - 0x780A0002, // 0020 JMPF R2 #0024 - 0x8C080109, // 0021 GETMET R2 R0 K9 - 0x7C080200, // 0022 CALL R2 1 - 0x80000400, // 0023 RET 0 - 0x88080301, // 0024 GETMBR R2 R1 K1 - 0xB80E0400, // 0025 GETNGBL R3 K2 - 0x880C0703, // 0026 GETMBR R3 R3 K3 - 0x880C070B, // 0027 GETMBR R3 R3 K11 - 0x1C080403, // 0028 EQ R2 R2 R3 - 0x780A0005, // 0029 JMPF R2 #0030 - 0x88080308, // 002A GETMBR R2 R1 K8 - 0x1C08050C, // 002B EQ R2 R2 K12 - 0x780A0002, // 002C JMPF R2 #0030 - 0x8C08010D, // 002D GETMET R2 R0 K13 - 0x7C080200, // 002E CALL R2 1 - 0x70020094, // 002F JMP #00C5 - 0x88080301, // 0030 GETMBR R2 R1 K1 - 0xB80E0400, // 0031 GETNGBL R3 K2 - 0x880C0703, // 0032 GETMBR R3 R3 K3 - 0x880C070B, // 0033 GETMBR R3 R3 K11 - 0x1C080403, // 0034 EQ R2 R2 R3 - 0x780A0005, // 0035 JMPF R2 #003C - 0x88080308, // 0036 GETMBR R2 R1 K8 - 0x1C08050E, // 0037 EQ R2 R2 K14 - 0x780A0002, // 0038 JMPF R2 #003C - 0x8C08010F, // 0039 GETMET R2 R0 K15 - 0x7C080200, // 003A CALL R2 1 - 0x70020088, // 003B JMP #00C5 - 0x88080301, // 003C GETMBR R2 R1 K1 - 0xB80E0400, // 003D GETNGBL R3 K2 - 0x880C0703, // 003E GETMBR R3 R3 K3 - 0x880C0710, // 003F GETMBR R3 R3 K16 - 0x1C080403, // 0040 EQ R2 R2 R3 - 0x780A0005, // 0041 JMPF R2 #0048 - 0x88080308, // 0042 GETMBR R2 R1 K8 - 0x1C080511, // 0043 EQ R2 R2 K17 - 0x780A0002, // 0044 JMPF R2 #0048 - 0x8C080112, // 0045 GETMET R2 R0 K18 - 0x7C080200, // 0046 CALL R2 1 - 0x7002007C, // 0047 JMP #00C5 - 0x88080301, // 0048 GETMBR R2 R1 K1 - 0xB80E0400, // 0049 GETNGBL R3 K2 - 0x880C0703, // 004A GETMBR R3 R3 K3 - 0x880C070B, // 004B GETMBR R3 R3 K11 - 0x1C080403, // 004C EQ R2 R2 R3 - 0x780A0008, // 004D JMPF R2 #0057 - 0x88080308, // 004E GETMBR R2 R1 K8 - 0x1C080513, // 004F EQ R2 R2 K19 - 0x740A0002, // 0050 JMPT R2 #0054 - 0x88080308, // 0051 GETMBR R2 R1 K8 - 0x1C080514, // 0052 EQ R2 R2 K20 - 0x780A0002, // 0053 JMPF R2 #0057 - 0x8C080115, // 0054 GETMET R2 R0 K21 - 0x7C080200, // 0055 CALL R2 1 - 0x7002006D, // 0056 JMP #00C5 - 0x88080301, // 0057 GETMBR R2 R1 K1 - 0xB80E0400, // 0058 GETNGBL R3 K2 - 0x880C0703, // 0059 GETMBR R3 R3 K3 - 0x880C070B, // 005A GETMBR R3 R3 K11 - 0x1C080403, // 005B EQ R2 R2 R3 - 0x780A0041, // 005C JMPF R2 #009F - 0x88080308, // 005D GETMBR R2 R1 K8 - 0x1C080516, // 005E EQ R2 R2 K22 - 0x780A003E, // 005F JMPF R2 #009F - 0x8C080109, // 0060 GETMET R2 R0 K9 - 0x7C080200, // 0061 CALL R2 1 - 0x58080017, // 0062 LDCONST R2 K23 - 0x8C0C0100, // 0063 GETMET R3 R0 K0 - 0x7C0C0200, // 0064 CALL R3 1 - 0x4C100000, // 0065 LDNIL R4 - 0x20100604, // 0066 NE R4 R3 R4 - 0x7812000C, // 0067 JMPF R4 #0075 - 0x88100701, // 0068 GETMBR R4 R3 K1 - 0xB8160400, // 0069 GETNGBL R5 K2 - 0x88140B03, // 006A GETMBR R5 R5 K3 - 0x88140B0B, // 006B GETMBR R5 R5 K11 - 0x1C100805, // 006C EQ R4 R4 R5 - 0x78120006, // 006D JMPF R4 #0075 - 0x88100708, // 006E GETMBR R4 R3 K8 - 0x1C100918, // 006F EQ R4 R4 K24 - 0x78120003, // 0070 JMPF R4 #0075 - 0x8C100109, // 0071 GETMET R4 R0 K9 - 0x7C100200, // 0072 CALL R4 1 - 0x58080019, // 0073 LDCONST R2 K25 - 0x70020006, // 0074 JMP #007C - 0x8C10011A, // 0075 GETMET R4 R0 K26 - 0x5818001B, // 0076 LDCONST R6 K27 - 0x7C100400, // 0077 CALL R4 2 - 0x8C14011C, // 0078 GETMET R5 R0 K28 - 0x581C001D, // 0079 LDCONST R7 K29 - 0x7C140400, // 007A CALL R5 2 - 0x5C080800, // 007B MOVE R2 R4 - 0x8C10011E, // 007C GETMET R4 R0 K30 - 0x7C100200, // 007D CALL R4 1 - 0x8C100106, // 007E GETMET R4 R0 K6 - 0x60180018, // 007F GETGBL R6 G24 - 0x581C001F, // 0080 LDCONST R7 K31 - 0x8C200107, // 0081 GETMET R8 R0 K7 - 0x7C200200, // 0082 CALL R8 1 - 0x5C240400, // 0083 MOVE R9 R2 - 0x7C180600, // 0084 CALL R6 3 - 0x7C100400, // 0085 CALL R4 2 - 0x88100120, // 0086 GETMBR R4 R0 K32 - 0x00100921, // 0087 ADD R4 R4 K33 - 0x90024004, // 0088 SETMBR R0 K32 R4 - 0x8C100122, // 0089 GETMET R4 R0 K34 - 0x7C100200, // 008A CALL R4 1 - 0x74120005, // 008B JMPT R4 #0092 - 0x8C100123, // 008C GETMET R4 R0 K35 - 0x7C100200, // 008D CALL R4 1 - 0x74120002, // 008E JMPT R4 #0092 - 0x8C100124, // 008F GETMET R4 R0 K36 - 0x7C100200, // 0090 CALL R4 1 - 0x7001FFF6, // 0091 JMP #0089 - 0x8C100125, // 0092 GETMET R4 R0 K37 - 0x7C100200, // 0093 CALL R4 1 - 0x8C100106, // 0094 GETMET R4 R0 K6 - 0x60180018, // 0095 GETGBL R6 G24 - 0x581C0026, // 0096 LDCONST R7 K38 - 0x8C200107, // 0097 GETMET R8 R0 K7 - 0x7C200200, // 0098 CALL R8 1 - 0x7C180400, // 0099 CALL R6 2 - 0x7C100400, // 009A CALL R4 2 - 0x88100120, // 009B GETMBR R4 R0 K32 - 0x04100921, // 009C SUB R4 R4 K33 - 0x90024004, // 009D SETMBR R0 K32 R4 - 0x70020025, // 009E JMP #00C5 - 0x88080301, // 009F GETMBR R2 R1 K1 - 0xB80E0400, // 00A0 GETNGBL R3 K2 - 0x880C0703, // 00A1 GETMBR R3 R3 K3 - 0x880C0710, // 00A2 GETMBR R3 R3 K16 - 0x1C080403, // 00A3 EQ R2 R2 R3 - 0x780A0018, // 00A4 JMPF R2 #00BE - 0x8C080127, // 00A5 GETMET R2 R0 K39 - 0x7C080200, // 00A6 CALL R2 1 - 0x4C0C0000, // 00A7 LDNIL R3 - 0x20080403, // 00A8 NE R2 R2 R3 - 0x780A000A, // 00A9 JMPF R2 #00B5 - 0x8C080127, // 00AA GETMET R2 R0 K39 - 0x7C080200, // 00AB CALL R2 1 - 0x88080501, // 00AC GETMBR R2 R2 K1 - 0xB80E0400, // 00AD GETNGBL R3 K2 - 0x880C0703, // 00AE GETMBR R3 R3 K3 - 0x880C0728, // 00AF GETMBR R3 R3 K40 - 0x1C080403, // 00B0 EQ R2 R2 R3 - 0x780A0002, // 00B1 JMPF R2 #00B5 - 0x8C080129, // 00B2 GETMET R2 R0 K41 - 0x7C080200, // 00B3 CALL R2 1 - 0x70020007, // 00B4 JMP #00BD - 0x8C08012A, // 00B5 GETMET R2 R0 K42 - 0x60100018, // 00B6 GETGBL R4 G24 - 0x5814002B, // 00B7 LDCONST R5 K43 - 0x88180308, // 00B8 GETMBR R6 R1 K8 - 0x7C100400, // 00B9 CALL R4 2 - 0x7C080400, // 00BA CALL R2 2 - 0x8C08012C, // 00BB GETMET R2 R0 K44 - 0x7C080200, // 00BC CALL R2 1 - 0x70020006, // 00BD JMP #00C5 - 0x8C08012A, // 00BE GETMET R2 R0 K42 - 0x60100018, // 00BF GETGBL R4 G24 - 0x5814002D, // 00C0 LDCONST R5 K45 - 0x7C100200, // 00C1 CALL R4 1 - 0x7C080400, // 00C2 CALL R2 2 - 0x8C08012C, // 00C3 GETMET R2 R0 K44 - 0x7C080200, // 00C4 CALL R2 1 - 0x80000000, // 00C5 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _process_named_arguments_generic ********************************************************************/ @@ -9085,63 +8765,180 @@ be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, / /******************************************************************** -** Solidified function: generate_engine_start +** Solidified function: _process_parameters_core ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_engine_start, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ be_nested_proto( - 11, /* nstack */ - 1, /* argc */ + 13, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(run_statements), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(has_template_calls), - /* K3 */ be_nested_str_weak(name), - /* K4 */ be_nested_str_weak(comment), - /* K5 */ be_nested_str_weak(add), - /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K7 */ be_nested_str_weak(stop_iteration), - /* K8 */ be_nested_str_weak(engine_X2Estart_X28_X29), + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(variable), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(temp_), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(split), + /* K6 */ be_nested_str_weak(_), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_nested_str_weak(_create_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(current), + /* K21 */ be_nested_str_weak(type), + /* K22 */ be_nested_str_weak(animation_dsl), + /* K23 */ be_nested_str_weak(Token), + /* K24 */ be_nested_str_weak(COMMENT), + /* K25 */ be_nested_str_weak(next), + /* K26 */ be_nested_str_weak(COMMA), + /* K27 */ be_nested_str_weak(NEWLINE), + /* K28 */ be_nested_str_weak(error), + /* K29 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), }), - be_str_weak(generate_engine_start), + be_str_weak(_process_parameters_core), &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060002, // 0004 JMPF R1 #0008 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x74060000, // 0006 JMPT R1 #0008 - 0x80000200, // 0007 RET 0 - 0x60040010, // 0008 GETGBL R1 G16 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x7C040200, // 000A CALL R1 1 - 0xA802000B, // 000B EXBLK 0 #0018 - 0x5C080200, // 000C MOVE R2 R1 - 0x7C080000, // 000D CALL R2 0 - 0x940C0503, // 000E GETIDX R3 R2 K3 - 0x94100504, // 000F GETIDX R4 R2 K4 - 0x8C140105, // 0010 GETMET R5 R0 K5 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280800, // 0014 MOVE R10 R4 - 0x7C1C0600, // 0015 CALL R7 3 - 0x7C140400, // 0016 CALL R5 2 - 0x7001FFF3, // 0017 JMP #000C - 0x58040007, // 0018 LDCONST R1 K7 - 0xAC040200, // 0019 CATCH R1 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x8C040105, // 001B GETMET R1 R0 K5 - 0x580C0008, // 001C LDCONST R3 K8 - 0x7C040400, // 001D CALL R1 2 - 0x80000000, // 001E RET 0 + ( &(const binstruction[127]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x5C140200, // 0001 MOVE R5 R1 + 0x1C180500, // 0002 EQ R6 R2 K0 + 0x781A0010, // 0003 JMPF R6 #0015 + 0xA41A0200, // 0004 IMPORT R6 K1 + 0x8C1C0D02, // 0005 GETMET R7 R6 K2 + 0x5C240200, // 0006 MOVE R9 R1 + 0x58280003, // 0007 LDCONST R10 K3 + 0x7C1C0600, // 0008 CALL R7 3 + 0x1C1C0F04, // 0009 EQ R7 R7 K4 + 0x781E0009, // 000A JMPF R7 #0015 + 0x8C1C0D05, // 000B GETMET R7 R6 K5 + 0x5C240200, // 000C MOVE R9 R1 + 0x58280006, // 000D LDCONST R10 K6 + 0x7C1C0600, // 000E CALL R7 3 + 0x6020000C, // 000F GETGBL R8 G12 + 0x5C240E00, // 0010 MOVE R9 R7 + 0x7C200200, // 0011 CALL R8 1 + 0x28201107, // 0012 GE R8 R8 K7 + 0x78220000, // 0013 JMPF R8 #0015 + 0x94140F08, // 0014 GETIDX R5 R7 K8 + 0x20180B09, // 0015 NE R6 R5 K9 + 0x781A0003, // 0016 JMPF R6 #001B + 0x8C18010A, // 0017 GETMET R6 R0 K10 + 0x5C200A00, // 0018 MOVE R8 R5 + 0x7C180400, // 0019 CALL R6 2 + 0x5C100C00, // 001A MOVE R4 R6 + 0x8C18010B, // 001B GETMET R6 R0 K11 + 0x7C180200, // 001C CALL R6 1 + 0x741A005F, // 001D JMPT R6 #007E + 0x8C18010C, // 001E GETMET R6 R0 K12 + 0x7C180200, // 001F CALL R6 1 + 0x741A005C, // 0020 JMPT R6 #007E + 0x8C18010D, // 0021 GETMET R6 R0 K13 + 0x7C180200, // 0022 CALL R6 1 + 0x8C18010C, // 0023 GETMET R6 R0 K12 + 0x7C180200, // 0024 CALL R6 1 + 0x781A0000, // 0025 JMPF R6 #0027 + 0x70020056, // 0026 JMP #007E + 0x8C18010E, // 0027 GETMET R6 R0 K14 + 0x7C180200, // 0028 CALL R6 1 + 0x4C1C0000, // 0029 LDNIL R7 + 0x201C0807, // 002A NE R7 R4 R7 + 0x781E0006, // 002B JMPF R7 #0033 + 0x201C0B09, // 002C NE R7 R5 K9 + 0x781E0004, // 002D JMPF R7 #0033 + 0x8C1C010F, // 002E GETMET R7 R0 K15 + 0x5C240A00, // 002F MOVE R9 R5 + 0x5C280C00, // 0030 MOVE R10 R6 + 0x5C2C0800, // 0031 MOVE R11 R4 + 0x7C1C0800, // 0032 CALL R7 4 + 0x8C1C0110, // 0033 GETMET R7 R0 K16 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0111, // 0035 GETMET R7 R0 K17 + 0x58240012, // 0036 LDCONST R9 K18 + 0x7C1C0400, // 0037 CALL R7 2 + 0x8C200113, // 0038 GETMET R8 R0 K19 + 0x7C200200, // 0039 CALL R8 1 + 0x5C240600, // 003A MOVE R9 R3 + 0x5C280C00, // 003B MOVE R10 R6 + 0x5C2C0E00, // 003C MOVE R11 R7 + 0x5C301000, // 003D MOVE R12 R8 + 0x7C240600, // 003E CALL R9 3 + 0x8C24010B, // 003F GETMET R9 R0 K11 + 0x7C240200, // 0040 CALL R9 1 + 0x7426000F, // 0041 JMPT R9 #0052 + 0x8C240114, // 0042 GETMET R9 R0 K20 + 0x7C240200, // 0043 CALL R9 1 + 0x4C280000, // 0044 LDNIL R10 + 0x2028120A, // 0045 NE R10 R9 R10 + 0x782A0008, // 0046 JMPF R10 #0050 + 0x88281315, // 0047 GETMBR R10 R9 K21 + 0xB82E2C00, // 0048 GETNGBL R11 K22 + 0x882C1717, // 0049 GETMBR R11 R11 K23 + 0x882C1718, // 004A GETMBR R11 R11 K24 + 0x1C28140B, // 004B EQ R10 R10 R11 + 0x782A0002, // 004C JMPF R10 #0050 + 0x8C280119, // 004D GETMET R10 R0 K25 + 0x7C280200, // 004E CALL R10 1 + 0x70020000, // 004F JMP #0051 + 0x70020000, // 0050 JMP #0052 + 0x7001FFEC, // 0051 JMP #003F + 0x8C240114, // 0052 GETMET R9 R0 K20 + 0x7C240200, // 0053 CALL R9 1 + 0x4C280000, // 0054 LDNIL R10 + 0x2024120A, // 0055 NE R9 R9 R10 + 0x7826000C, // 0056 JMPF R9 #0064 + 0x8C240114, // 0057 GETMET R9 R0 K20 + 0x7C240200, // 0058 CALL R9 1 + 0x88241315, // 0059 GETMBR R9 R9 K21 + 0xB82A2C00, // 005A GETNGBL R10 K22 + 0x88281517, // 005B GETMBR R10 R10 K23 + 0x8828151A, // 005C GETMBR R10 R10 K26 + 0x1C24120A, // 005D EQ R9 R9 R10 + 0x78260004, // 005E JMPF R9 #0064 + 0x8C240119, // 005F GETMET R9 R0 K25 + 0x7C240200, // 0060 CALL R9 1 + 0x8C24010D, // 0061 GETMET R9 R0 K13 + 0x7C240200, // 0062 CALL R9 1 + 0x70020018, // 0063 JMP #007D + 0x8C240114, // 0064 GETMET R9 R0 K20 + 0x7C240200, // 0065 CALL R9 1 + 0x4C280000, // 0066 LDNIL R10 + 0x2024120A, // 0067 NE R9 R9 R10 + 0x7826000C, // 0068 JMPF R9 #0076 + 0x8C240114, // 0069 GETMET R9 R0 K20 + 0x7C240200, // 006A CALL R9 1 + 0x88241315, // 006B GETMBR R9 R9 K21 + 0xB82A2C00, // 006C GETNGBL R10 K22 + 0x88281517, // 006D GETMBR R10 R10 K23 + 0x8828151B, // 006E GETMBR R10 R10 K27 + 0x1C24120A, // 006F EQ R9 R9 R10 + 0x78260004, // 0070 JMPF R9 #0076 + 0x8C240119, // 0071 GETMET R9 R0 K25 + 0x7C240200, // 0072 CALL R9 1 + 0x8C24010D, // 0073 GETMET R9 R0 K13 + 0x7C240200, // 0074 CALL R9 1 + 0x70020006, // 0075 JMP #007D + 0x8C24010C, // 0076 GETMET R9 R0 K12 + 0x7C240200, // 0077 CALL R9 1 + 0x74260003, // 0078 JMPT R9 #007D + 0x8C24011C, // 0079 GETMET R9 R0 K28 + 0x582C001D, // 007A LDCONST R11 K29 + 0x7C240400, // 007B CALL R9 2 + 0x70020000, // 007C JMP #007E + 0x7001FF9C, // 007D JMP #001B + 0x80000000, // 007E RET 0 }) ) ); @@ -9181,85 +8978,30 @@ be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animatio /******************************************************************** -** Solidified function: is_math_method +** Solidified function: get_indent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ +be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ be_nested_proto( - 11, /* 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[ 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), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_X20_X20), + /* K1 */ be_nested_str_weak(indent_level), + /* K2 */ be_const_int(1), }), - be_str_weak(is_math_method), + be_str_weak(get_indent), &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 + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x00040302, // 0001 ADD R1 R1 K2 + 0x08060001, // 0002 MUL R1 K0 R1 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -10027,56 +9769,6 @@ be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exis /*******************************************************************/ -/******************************************************************** -** Solidified function: expect_assign -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* 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(ASSIGN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), - }), - be_str_weak(expect_assign), - &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_log_statement_fluent ********************************************************************/ @@ -10155,11 +9847,42 @@ be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* na /******************************************************************** -** Solidified function: process_import +** Solidified function: process_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ be_nested_proto( - 9, /* 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[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(process_additive_expression), + }), + be_str_weak(process_value), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x50140200, // 0002 LDBOOL R5 1 0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x7C080800, // 0004 CALL R2 4 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_assign +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ + be_nested_proto( + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -10167,30 +9890,37 @@ be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* 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(add), - /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), + ( &(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(ASSIGN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), }), - be_str_weak(process_import), + be_str_weak(expect_assign), &be_const_str_solidified, - ( &(const binstruction[14]) { /* 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 - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x7C140600, // 000B CALL R5 3 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D 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 }) ) ); @@ -10348,11 +10078,11 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ /******************************************************************** -** Solidified function: is_anonymous_function +** Solidified function: transform_expression_for_closure ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ +be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* name */ be_nested_proto( - 7, /* nstack */ + 15, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -10360,32 +10090,142 @@ be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[11]) { /* 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), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_), + /* K4 */ be_nested_str_weak(is_identifier_char), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(animation_X2Eresolve_X28), + /* K7 */ be_nested_str_weak(animation_X2E), + /* K8 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X29), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_const_int(2147483647), }), - be_str_weak(is_anonymous_function), + be_str_weak(transform_expression_for_closure), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[120]) { /* 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 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x58100001, // 0002 LDCONST R4 K1 + 0x58100001, // 0003 LDCONST R4 K1 + 0x6014000C, // 0004 GETGBL R5 G12 + 0x5C180600, // 0005 MOVE R6 R3 + 0x7C140200, // 0006 CALL R5 1 + 0x14140805, // 0007 LT R5 R4 R5 + 0x7816006D, // 0008 JMPF R5 #0077 + 0x8C140502, // 0009 GETMET R5 R2 K2 + 0x5C1C0600, // 000A MOVE R7 R3 + 0x58200003, // 000B LDCONST R8 K3 + 0x5C240800, // 000C MOVE R9 R4 + 0x7C140800, // 000D CALL R5 4 + 0x14180B01, // 000E LT R6 R5 K1 + 0x781A0000, // 000F JMPF R6 #0011 + 0x70020065, // 0010 JMP #0077 + 0x5C180A00, // 0011 MOVE R6 R5 + 0x241C0D01, // 0012 GT R7 R6 K1 + 0x781E0006, // 0013 JMPF R7 #001B + 0x8C1C0104, // 0014 GETMET R7 R0 K4 + 0x04240D05, // 0015 SUB R9 R6 K5 + 0x94240609, // 0016 GETIDX R9 R3 R9 + 0x7C1C0400, // 0017 CALL R7 2 + 0x781E0001, // 0018 JMPF R7 #001B + 0x04180D05, // 0019 SUB R6 R6 K5 + 0x7001FFF6, // 001A JMP #0012 + 0x501C0200, // 001B LDBOOL R7 1 0 + 0x54220011, // 001C LDINT R8 18 + 0x28200C08, // 001D GE R8 R6 R8 + 0x78220010, // 001E JMPF R8 #0030 + 0x54220011, // 001F LDINT R8 18 + 0x28200C08, // 0020 GE R8 R6 R8 + 0x78220002, // 0021 JMPF R8 #0025 + 0x54220011, // 0022 LDINT R8 18 + 0x04200C08, // 0023 SUB R8 R6 R8 + 0x70020000, // 0024 JMP #0026 + 0x58200001, // 0025 LDCONST R8 K1 + 0x04240D05, // 0026 SUB R9 R6 K5 + 0x40241009, // 0027 CONNECT R9 R8 R9 + 0x94240609, // 0028 GETIDX R9 R3 R9 + 0x8C280502, // 0029 GETMET R10 R2 K2 + 0x5C301200, // 002A MOVE R12 R9 + 0x58340006, // 002B LDCONST R13 K6 + 0x7C280600, // 002C CALL R10 3 + 0x28281501, // 002D GE R10 R10 K1 + 0x782A0000, // 002E JMPF R10 #0030 + 0x501C0000, // 002F LDBOOL R7 0 0 + 0x781E0013, // 0030 JMPF R7 #0045 + 0x54220009, // 0031 LDINT R8 10 + 0x28200C08, // 0032 GE R8 R6 R8 + 0x78220010, // 0033 JMPF R8 #0045 + 0x54220009, // 0034 LDINT R8 10 + 0x28200C08, // 0035 GE R8 R6 R8 + 0x78220002, // 0036 JMPF R8 #003A + 0x54220009, // 0037 LDINT R8 10 + 0x04200C08, // 0038 SUB R8 R6 R8 + 0x70020000, // 0039 JMP #003B + 0x58200001, // 003A LDCONST R8 K1 + 0x04240D05, // 003B SUB R9 R6 K5 + 0x40241009, // 003C CONNECT R9 R8 R9 + 0x94240609, // 003D GETIDX R9 R3 R9 + 0x8C280502, // 003E GETMET R10 R2 K2 + 0x5C301200, // 003F MOVE R12 R9 + 0x58340007, // 0040 LDCONST R13 K7 + 0x7C280600, // 0041 CALL R10 3 + 0x28281501, // 0042 GE R10 R10 K1 + 0x782A0000, // 0043 JMPF R10 #0045 + 0x501C0000, // 0044 LDBOOL R7 0 0 + 0x781E002D, // 0045 JMPF R7 #0074 + 0x14200C05, // 0046 LT R8 R6 R5 + 0x7822002B, // 0047 JMPF R8 #0074 + 0x40200C05, // 0048 CONNECT R8 R6 R5 + 0x94200608, // 0049 GETIDX R8 R3 R8 + 0x00240B05, // 004A ADD R9 R5 K5 + 0x6028000C, // 004B GETGBL R10 G12 + 0x5C2C0600, // 004C MOVE R11 R3 + 0x7C280200, // 004D CALL R10 1 + 0x2828120A, // 004E GE R10 R9 R10 + 0x742A0003, // 004F JMPT R10 #0054 + 0x8C280104, // 0050 GETMET R10 R0 K4 + 0x94300609, // 0051 GETIDX R12 R3 R9 + 0x7C280400, // 0052 CALL R10 2 + 0x742A001C, // 0053 JMPT R10 #0071 + 0x60280018, // 0054 GETGBL R10 G24 + 0x582C0008, // 0055 LDCONST R11 K8 + 0x5C301000, // 0056 MOVE R12 R8 + 0x7C280400, // 0057 CALL R10 2 + 0x242C0D01, // 0058 GT R11 R6 K1 + 0x782E0003, // 0059 JMPF R11 #005E + 0x042C0D05, // 005A SUB R11 R6 K5 + 0x402E020B, // 005B CONNECT R11 K1 R11 + 0x942C060B, // 005C GETIDX R11 R3 R11 + 0x70020000, // 005D JMP #005F + 0x582C0009, // 005E LDCONST R11 K9 + 0x6030000C, // 005F GETGBL R12 G12 + 0x5C340600, // 0060 MOVE R13 R3 + 0x7C300200, // 0061 CALL R12 1 + 0x1430120C, // 0062 LT R12 R9 R12 + 0x78320002, // 0063 JMPF R12 #0067 + 0x4030130A, // 0064 CONNECT R12 R9 K10 + 0x9430060C, // 0065 GETIDX R12 R3 R12 + 0x70020000, // 0066 JMP #0068 + 0x58300009, // 0067 LDCONST R12 K9 + 0x0034160A, // 0068 ADD R13 R11 R10 + 0x00341A0C, // 0069 ADD R13 R13 R12 + 0x5C0C1A00, // 006A MOVE R3 R13 + 0x6034000C, // 006B GETGBL R13 G12 + 0x5C381400, // 006C MOVE R14 R10 + 0x7C340200, // 006D CALL R13 1 + 0x00340C0D, // 006E ADD R13 R6 R13 + 0x5C101A00, // 006F MOVE R4 R13 + 0x70020001, // 0070 JMP #0073 + 0x00280B05, // 0071 ADD R10 R5 K5 + 0x5C101400, // 0072 MOVE R4 R10 + 0x70020001, // 0073 JMP #0076 + 0x00200B05, // 0074 ADD R8 R5 K5 + 0x5C101000, // 0075 MOVE R4 R8 + 0x7001FF8C, // 0076 JMP #0004 + 0x80040600, // 0077 RET 1 R3 }) ) ); @@ -10482,6 +10322,113 @@ be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: process_time_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* 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[16]) { /* 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(IDENTIFIER), + /* K10 */ be_nested_str_weak(_validate_object_reference), + /* K11 */ be_nested_str_weak(duration), + /* K12 */ be_nested_str_weak(process_primary_expression), + /* K13 */ be_nested_str_weak(time), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(Expected_X20time_X20value), + }), + be_str_weak(process_time_value), + &be_const_str_solidified, + ( &(const binstruction[67]) { /* 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 + 0x7002002E, // 0012 JMP #0042 + 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 + 0x70020019, // 0027 JMP #0042 + 0x4C080000, // 0028 LDNIL R2 + 0x20080202, // 0029 NE R2 R1 R2 + 0x780A0011, // 002A JMPF R2 #003D + 0x88080301, // 002B GETMBR R2 R1 K1 + 0xB80E0400, // 002C GETNGBL R3 K2 + 0x880C0703, // 002D GETMBR R3 R3 K3 + 0x880C0709, // 002E GETMBR R3 R3 K9 + 0x1C080403, // 002F EQ R2 R2 R3 + 0x780A000B, // 0030 JMPF R2 #003D + 0x88080305, // 0031 GETMBR R2 R1 K5 + 0x8C0C010A, // 0032 GETMET R3 R0 K10 + 0x5C140400, // 0033 MOVE R5 R2 + 0x5818000B, // 0034 LDCONST R6 K11 + 0x7C0C0600, // 0035 CALL R3 3 + 0x8C0C010C, // 0036 GETMET R3 R0 K12 + 0x5814000D, // 0037 LDCONST R5 K13 + 0x50180200, // 0038 LDBOOL R6 1 0 + 0x501C0000, // 0039 LDBOOL R7 0 0 + 0x7C0C0800, // 003A CALL R3 4 + 0x80040600, // 003B RET 1 R3 + 0x70020004, // 003C JMP #0042 + 0x8C08010E, // 003D GETMET R2 R0 K14 + 0x5810000F, // 003E LDCONST R4 K15 + 0x7C080400, // 003F CALL R2 2 + 0x540A03E7, // 0040 LDINT R2 1000 + 0x80040400, // 0041 RET 1 R2 + 0x80000000, // 0042 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: create_simple_function_from_string ********************************************************************/ @@ -10637,7 +10584,7 @@ be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name /* 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_X29_X20return_X20_X25s_X20_X25s_X20_X25s_X20end), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20_X25s_X20_X25s_X20end), /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), }), be_str_weak(create_computation_closure), @@ -10830,6 +10777,86 @@ be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: process_event_parameters +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* 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[16]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_X7B), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(current), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(animation_dsl), + /* K7 */ be_nested_str_weak(Token), + /* K8 */ be_nested_str_weak(TIME), + /* K9 */ be_nested_str_weak(process_time_value), + /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), + /* K11 */ be_nested_str_weak(process_value), + /* K12 */ be_nested_str_weak(event_param), + /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), + /* K14 */ be_nested_str_weak(expect_right_paren), + /* K15 */ be_nested_str_weak(_X7D), + }), + be_str_weak(process_event_parameters), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x740A001D, // 0005 JMPT R2 #0024 + 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0x740A001A, // 0008 JMPT R2 #0024 + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0403, // 000C NE R3 R2 R3 + 0x780E000D, // 000D JMPF R3 #001C + 0x880C0505, // 000E GETMBR R3 R2 K5 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x88100907, // 0010 GETMBR R4 R4 K7 + 0x88100908, // 0011 GETMBR R4 R4 K8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0007, // 0013 JMPF R3 #001C + 0x8C0C0109, // 0014 GETMET R3 R0 K9 + 0x7C0C0200, // 0015 CALL R3 1 + 0x60100018, // 0016 GETGBL R4 G24 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x5C180600, // 0018 MOVE R6 R3 + 0x7C100400, // 0019 CALL R4 2 + 0x00040204, // 001A ADD R1 R1 R4 + 0x70020007, // 001B JMP #0024 + 0x8C0C010B, // 001C GETMET R3 R0 K11 + 0x5814000C, // 001D LDCONST R5 K12 + 0x7C0C0400, // 001E CALL R3 2 + 0x60100018, // 001F GETGBL R4 G24 + 0x5814000D, // 0020 LDCONST R5 K13 + 0x5C180600, // 0021 MOVE R6 R3 + 0x7C100400, // 0022 CALL R4 2 + 0x00040204, // 0023 ADD R1 R1 R4 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x0004030F, // 0026 ADD R1 R1 K15 + 0x80040200, // 0027 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_log_call ********************************************************************/ @@ -10986,7 +11013,7 @@ be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* n /* 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_X29), + /* K11 */ be_nested_str_weak(animation_X2Eresolve_X28_X25s_X29), }), be_str_weak(transform_operand_for_closure), &be_const_str_solidified, @@ -11262,169 +11289,6 @@ be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization /*******************************************************************/ -/******************************************************************** -** Solidified function: generate_template_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ - be_nested_proto( - 17, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(add), - /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), - /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), - /* K7 */ be_nested_str_weak(animation_dsl), - /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K9 */ be_nested_str_weak(symbol_table), - /* K10 */ be_nested_str_weak(strip_initialized), - /* K11 */ be_nested_str_weak(parameter), - /* K12 */ be_nested_str_weak(transpile_template_body), - /* K13 */ be_nested_str_weak(split), - /* K14 */ be_nested_str_weak(_X0A), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(_X20_X20_X25s), - /* K17 */ be_nested_str_weak(errors), - /* K18 */ be_nested_str_weak(error), - /* K19 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), - /* K20 */ be_nested_str_weak(end), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), - }), - be_str_weak(generate_template_function), - &be_const_str_solidified, - ( &(const binstruction[116]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x58180001, // 0001 LDCONST R6 K1 - 0x601C0010, // 0002 GETGBL R7 G16 - 0x5C200400, // 0003 MOVE R8 R2 - 0x7C1C0200, // 0004 CALL R7 1 - 0xA8020007, // 0005 EXBLK 0 #000E - 0x5C200E00, // 0006 MOVE R8 R7 - 0x7C200000, // 0007 CALL R8 0 - 0x60240018, // 0008 GETGBL R9 G24 - 0x58280002, // 0009 LDCONST R10 K2 - 0x5C2C1000, // 000A MOVE R11 R8 - 0x7C240400, // 000B CALL R9 2 - 0x00180C09, // 000C ADD R6 R6 R9 - 0x7001FFF7, // 000D JMP #0006 - 0x581C0003, // 000E LDCONST R7 K3 - 0xAC1C0200, // 000F CATCH R7 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x8C1C0104, // 0011 GETMET R7 R0 K4 - 0x60240018, // 0012 GETGBL R9 G24 - 0x58280005, // 0013 LDCONST R10 K5 - 0x5C2C0200, // 0014 MOVE R11 R1 - 0x7C240400, // 0015 CALL R9 2 - 0x7C1C0400, // 0016 CALL R7 2 - 0x8C1C0104, // 0017 GETMET R7 R0 K4 - 0x60240018, // 0018 GETGBL R9 G24 - 0x58280006, // 0019 LDCONST R10 K6 - 0x5C2C0200, // 001A MOVE R11 R1 - 0x5C300C00, // 001B MOVE R12 R6 - 0x7C240600, // 001C CALL R9 3 - 0x7C1C0400, // 001D CALL R7 2 - 0xB81E0E00, // 001E GETNGBL R7 K7 - 0x8C1C0F08, // 001F GETMET R7 R7 K8 - 0x5C240800, // 0020 MOVE R9 R4 - 0x7C1C0400, // 0021 CALL R7 2 - 0x60200013, // 0022 GETGBL R8 G19 - 0x7C200000, // 0023 CALL R8 0 - 0x901E1208, // 0024 SETMBR R7 K9 R8 - 0x50200200, // 0025 LDBOOL R8 1 0 - 0x901E1408, // 0026 SETMBR R7 K10 R8 - 0x60200010, // 0027 GETGBL R8 G16 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C200200, // 0029 CALL R8 1 - 0xA8020004, // 002A EXBLK 0 #0030 - 0x5C241000, // 002B MOVE R9 R8 - 0x7C240000, // 002C CALL R9 0 - 0x88280F09, // 002D GETMBR R10 R7 K9 - 0x9828130B, // 002E SETIDX R10 R9 K11 - 0x7001FFFA, // 002F JMP #002B - 0x58200003, // 0030 LDCONST R8 K3 - 0xAC200200, // 0031 CATCH R8 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x8C200F0C, // 0033 GETMET R8 R7 K12 - 0x7C200200, // 0034 CALL R8 1 - 0x4C240000, // 0035 LDNIL R9 - 0x20241009, // 0036 NE R9 R8 R9 - 0x78260019, // 0037 JMPF R9 #0052 - 0x8C240B0D, // 0038 GETMET R9 R5 K13 - 0x5C2C1000, // 0039 MOVE R11 R8 - 0x5830000E, // 003A LDCONST R12 K14 - 0x7C240600, // 003B CALL R9 3 - 0x60280010, // 003C GETGBL R10 G16 - 0x5C2C1200, // 003D MOVE R11 R9 - 0x7C280200, // 003E CALL R10 1 - 0xA802000D, // 003F EXBLK 0 #004E - 0x5C2C1400, // 0040 MOVE R11 R10 - 0x7C2C0000, // 0041 CALL R11 0 - 0x6030000C, // 0042 GETGBL R12 G12 - 0x5C341600, // 0043 MOVE R13 R11 - 0x7C300200, // 0044 CALL R12 1 - 0x2430190F, // 0045 GT R12 R12 K15 - 0x78320005, // 0046 JMPF R12 #004D - 0x8C300104, // 0047 GETMET R12 R0 K4 - 0x60380018, // 0048 GETGBL R14 G24 - 0x583C0010, // 0049 LDCONST R15 K16 - 0x5C401600, // 004A MOVE R16 R11 - 0x7C380400, // 004B CALL R14 2 - 0x7C300400, // 004C CALL R12 2 - 0x7001FFF1, // 004D JMP #0040 - 0x58280003, // 004E LDCONST R10 K3 - 0xAC280200, // 004F CATCH R10 1 0 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x70020010, // 0051 JMP #0063 - 0x60240010, // 0052 GETGBL R9 G16 - 0x88280F11, // 0053 GETMBR R10 R7 K17 - 0x7C240200, // 0054 CALL R9 1 - 0xA8020009, // 0055 EXBLK 0 #0060 - 0x5C281200, // 0056 MOVE R10 R9 - 0x7C280000, // 0057 CALL R10 0 - 0x8C2C0112, // 0058 GETMET R11 R0 K18 - 0x60340018, // 0059 GETGBL R13 G24 - 0x58380013, // 005A LDCONST R14 K19 - 0x5C3C0200, // 005B MOVE R15 R1 - 0x5C401400, // 005C MOVE R16 R10 - 0x7C340600, // 005D CALL R13 3 - 0x7C2C0400, // 005E CALL R11 2 - 0x7001FFF5, // 005F JMP #0056 - 0x58240003, // 0060 LDCONST R9 K3 - 0xAC240200, // 0061 CATCH R9 1 0 - 0xB0080000, // 0062 RAISE 2 R0 R0 - 0x8C240104, // 0063 GETMET R9 R0 K4 - 0x582C0014, // 0064 LDCONST R11 K20 - 0x7C240400, // 0065 CALL R9 2 - 0x8C240104, // 0066 GETMET R9 R0 K4 - 0x582C0015, // 0067 LDCONST R11 K21 - 0x7C240400, // 0068 CALL R9 2 - 0x8C240104, // 0069 GETMET R9 R0 K4 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300016, // 006B LDCONST R12 K22 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C380200, // 006D MOVE R14 R1 - 0x7C2C0600, // 006E CALL R11 3 - 0x7C240400, // 006F CALL R9 2 - 0x8C240104, // 0070 GETMET R9 R0 K4 - 0x582C0015, // 0071 LDCONST R11 K21 - 0x7C240400, // 0072 CALL R9 2 - 0x80000000, // 0073 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_array_literal ********************************************************************/ @@ -11700,42 +11564,45 @@ be_local_closure(class_SimpleDSLTranspiler_current, /* name */ /******************************************************************** -** Solidified function: check_right_paren +** Solidified function: is_math_method ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ be_nested_proto( - 4, /* 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[ 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), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(_math), }), - be_str_weak(check_right_paren), + be_str_weak(is_math_method), &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 + ( &(const binstruction[18]) { /* code */ + 0xA8020009, // 0000 EXBLK 0 #000B + 0xA40A0000, // 0001 IMPORT R2 K0 + 0x8C0C0501, // 0002 GETMET R3 R2 K1 + 0xB8160400, // 0003 GETNGBL R5 K2 + 0x88140B03, // 0004 GETMBR R5 R5 K3 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C0C0600, // 0006 CALL R3 3 + 0xA8040001, // 0007 EXBLK 1 1 + 0x80040600, // 0008 RET 1 R3 + 0xA8040001, // 0009 EXBLK 1 1 + 0x70020005, // 000A JMP #0011 + 0xAC080002, // 000B CATCH R2 0 2 + 0x70020002, // 000C JMP #0010 + 0x50100000, // 000D LDBOOL R4 0 0 + 0x80040800, // 000E RET 1 R4 + 0x70020000, // 000F JMP #0011 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x80000000, // 0011 RET 0 }) ) ); @@ -11851,18 +11718,18 @@ be_local_class(SimpleDSLTranspiler, be_nested_map(122, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(process_reset_restart_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent_closure) }, + { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, { be_const_key_weak(symbol_exists, -1), be_const_closure(class_SimpleDSLTranspiler_symbol_exists_closure) }, - { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(at_end, 84), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(is_math_method, 81), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, + { be_const_key_weak(at_end, 85), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, - { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, + { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, { be_const_key_weak(expect_identifier, 121), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_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_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, { be_const_key_weak(process_standalone_log, -1), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, - { be_const_key_weak(resolve_symbol_reference, 97), be_const_closure(class_SimpleDSLTranspiler_resolve_symbol_reference_closure) }, + { be_const_key_weak(resolve_symbol_reference, 57), be_const_closure(class_SimpleDSLTranspiler_resolve_symbol_reference_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[]) { @@ -11905,111 +11772,111 @@ be_local_class(SimpleDSLTranspiler, { be_const_key_weak(maroon, -1), be_nested_str_weak(0xFF800000) }, })) ) } )) }, { be_const_key_weak(output, -1), be_const_var(2) }, - { be_const_key_weak(_validate_factory_function, -1), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, + { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, { be_const_key_weak(process_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(process_percentage_value, 1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, + { be_const_key_weak(next, -1), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, { be_const_key_weak(pos, -1), be_const_var(1) }, - { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, + { be_const_key_weak(generate_default_strip_initialization, 62), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, { be_const_key_weak(sequence_names, 13), be_const_var(7) }, - { be_const_key_weak(process_named_arguments_for_variable, 20), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, - { be_const_key_weak(generate_default_strip_initialization, 119), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, + { be_const_key_weak(process_named_arguments_for_variable, 60), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, + { be_const_key_weak(first_statement, 7), be_const_var(5) }, { be_const_key_weak(indent_level, -1), be_const_var(9) }, - { be_const_key_weak(get_errors, 3), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, + { be_const_key_weak(get_errors, 73), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(_validate_value_provider_reference, 75), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, + { be_const_key_weak(process_import, 119), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(convert_to_vrgb, 23), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, + { be_const_key_weak(has_template_calls, 20), be_const_var(11) }, { be_const_key_weak(_create_instance_for_validation, 89), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(process_sequence, 60), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(process_sequence, 95), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, { be_const_key_weak(errors, -1), be_const_var(3) }, { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(_process_user_function_call, 51), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, + { be_const_key_weak(transpile_template_body, 23), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, { be_const_key_weak(process_sequence_assignment_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, { be_const_key_weak(_validate_animation_factory_exists, 0), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(process_additive_expression, 92), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(strip_initialized, 116), be_const_var(6) }, + { be_const_key_weak(process_additive_expression, 93), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(strip_initialized, 80), be_const_var(6) }, { be_const_key_weak(validate_symbol_reference, -1), be_const_closure(class_SimpleDSLTranspiler_validate_symbol_reference_closure) }, - { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(generate_engine_run, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_run_closure) }, { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, { be_const_key_weak(template_definitions, -1), be_const_var(10) }, { be_const_key_weak(process_template, -1), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(process_log_call, 95), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, - { be_const_key_weak(check_right_brace, 78), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, - { be_const_key_weak(first_statement, 52), be_const_var(5) }, - { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(check_right_brace, 3), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(process_log_call, 91), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, + { be_const_key_weak(process_event_parameters, 35), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, - { be_const_key_weak(process_unary_expression, 112), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(process_sequence_assignment, 93), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, - { be_const_key_weak(expect_right_brace, 111), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(is_identifier_char, 1), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, + { be_const_key_weak(process_sequence_assignment, 111), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, + { be_const_key_weak(expect_right_brace, 112), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, { be_const_key_weak(get_error_report, 36), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, - { be_const_key_weak(next, 7), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, + { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(process_event_parameters, 71), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(create_simple_function_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, + { be_const_key_weak(symbol_table, 52), be_const_var(8) }, + { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, { be_const_key_weak(expect_colon, 38), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, { be_const_key_weak(create_computation_closure_from_string, 9), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, - { be_const_key_weak(_validate_animation_factory_creates_animation, 57), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, - { be_const_key_weak(transform_expression_for_closure, 103), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, - { be_const_key_weak(symbol_table, 35), be_const_var(8) }, - { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, - { be_const_key_weak(is_anonymous_function, -1), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, + { be_const_key_weak(_validate_animation_factory_creates_animation, 103), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, + { be_const_key_weak(process_primary_expression, 74), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(create_simple_function_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, + { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, + { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(process_import, -1), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, - { be_const_key_weak(expect_number, 72), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(expect_number, 97), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, { be_const_key_weak(run_statements, -1), be_const_var(4) }, - { be_const_key_weak(process_log_statement_fluent, 81), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, + { be_const_key_weak(expect_assign, 92), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, { be_const_key_weak(tokens, -1), be_const_var(0) }, - { be_const_key_weak(expect_assign, 91), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, - { be_const_key_weak(is_math_method, 15), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, - { be_const_key_weak(_process_parameters_core, 80), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, + { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(process_log_statement_fluent, 116), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, + { be_const_key_weak(add, 78), be_const_closure(class_SimpleDSLTranspiler_add_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(_validate_value_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(can_use_as_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, - { be_const_key_weak(process_time_value, 85), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(can_use_as_identifier, 72), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, { be_const_key_weak(_process_named_arguments_unified, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_unified_closure) }, { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, { be_const_key_weak(_validate_object_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, - { be_const_key_weak(_validate_value_provider_factory_exists, 73), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, - { be_const_key_weak(generate_engine_start, 62), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, - { be_const_key_weak(_process_named_arguments_generic, 117), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, - { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, 74), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(is_anonymous_function, 84), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, + { be_const_key_weak(_process_parameters_core, 18), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, + { be_const_key_weak(_process_named_arguments_generic, 117), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, 75), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, - { be_const_key_weak(is_identifier_char, 18), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, - { be_const_key_weak(expect_keyword, 65), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, + { be_const_key_weak(expect_keyword, 71), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, { be_const_key_weak(create_computation_closure, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, { be_const_key_weak(process_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(expect_dot, 49), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, - { be_const_key_weak(get_named_color_value, 43), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(process_value, 41), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(process_unary_expression, 65), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(expect_dot, 51), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, + { be_const_key_weak(get_named_color_value, 49), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(expect_right_bracket, 41), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, { be_const_key_weak(process_run, -1), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, { be_const_key_weak(has_errors, -1), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, { be_const_key_weak(process_sequence_statement, 33), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, + { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, - { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, { be_const_key_weak(transpile, 19), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, - { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(expect_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, + { be_const_key_weak(process_restart_statement_fluent, 15), be_const_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent_closure) }, + { be_const_key_weak(_validate_factory_function, -1), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(has_template_calls, -1), be_const_var(11) }, + { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, })), 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 4e3476719..ec513c439 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be @@ -76,11 +76,11 @@ assert_test(!engine.remove_animation(anim2), "Should not remove non-existent ani # Test 3: Engine Lifecycle print("\n--- Test 3: Engine Lifecycle ---") -assert_test(engine.start(), "Should start engine") +assert_test(engine.run(), "Should start engine") assert_equals(engine.is_active(), true, "Engine should be active after start") # Test that starting again doesn't break anything -engine.start() +engine.run() assert_equals(engine.is_active(), true, "Engine should remain active after second start") assert_test(engine.stop(), "Should stop engine") @@ -94,7 +94,7 @@ test_anim.color = 0xFFFF0000 test_anim.priority = 10 test_anim.name = "test" engine.add(test_anim) -engine.start() +engine.run() var current_time = tasmota.millis() @@ -255,7 +255,7 @@ 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() +dynamic_engine.run() # Add a test animation var runtime_anim = animation.solid(dynamic_engine) diff --git a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be index d8ae089c7..de214bee3 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be @@ -43,7 +43,7 @@ base_anim.priority = 10 base_anim.name = "base_red" opacity_engine.add(base_anim) -opacity_engine.start() +opacity_engine.run() # Create frame buffer and test rendering var opacity_frame = animation.frame_buffer(10) @@ -78,7 +78,7 @@ print("\n--- Test 11c: Animation opacity rendering ---") opacity_engine.clear() opacity_engine.add(masked_anim) -opacity_engine.start() +opacity_engine.run() # Start both animations masked_anim.start() diff --git a/lib/libesp32/berry_animation/src/tests/animation_test.be b/lib/libesp32/berry_animation/src/tests/animation_test.be index acb3daee8..3518ea2d5 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_test.be @@ -46,18 +46,20 @@ assert(default_anim.color == 0xFFFFFFFF, "Default color should be white") # Test start method engine.time_ms = 1000 anim.start() +anim.update() assert(anim.is_running == true, "Animation should be running after start") assert(anim.start_time == 1000, "Animation start time should be 1000") -assert(anim.current_time == 1000, "Animation current time should be 1000") # Test restart functionality - start() acts as restart +engine.time_ms = 2000 anim.start() assert(anim.is_running == true, "Animation should be running after start") +assert(anim.start_time == 2000, "Animation start time should be 2000") var first_start_time = anim.start_time # Start again - should restart with new time engine.time_ms = 3000 -anim.start() +anim.start(engine.time_ms) assert(anim.is_running == true, "Animation should still be running after restart") assert(anim.start_time == 3000, "Animation should have new start time after restart") @@ -71,6 +73,7 @@ non_loop_anim.name = "non_loop" non_loop_anim.color = 0xFF0000 engine.time_ms = 2000 non_loop_anim.start(2000) +non_loop_anim.update(2000) assert(non_loop_anim.is_running == true, "Animation should be running after start") # Update within duration @@ -78,7 +81,6 @@ engine.time_ms = 2500 var result = non_loop_anim.update(engine.time_ms) assert(result == true, "Update should return true when animation is still running") assert(non_loop_anim.is_running == true, "Animation should still be running") -assert(non_loop_anim.current_time == 2500, "Current time should be updated") # Update after duration engine.time_ms = 3100 @@ -95,7 +97,8 @@ loop_anim.opacity = 255 loop_anim.name = "loop" loop_anim.color = 0xFF0000 engine.time_ms = 4000 -loop_anim.start(4000) +loop_anim.start(engine.time_ms) +loop_anim.update(engine.time_ms) # update must be explictly called to start time # Update after one loop engine.time_ms = 5100 diff --git a/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be b/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be index cb6a0f7f3..a0a099d10 100644 --- a/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be +++ b/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be @@ -54,7 +54,7 @@ def test_atomic_closure_batch_execution() # Start sequence tasmota.set_millis(10000) - engine.start() + engine.run() engine.on_tick(10000) seq_manager.start(10000) @@ -123,7 +123,7 @@ def test_multiple_consecutive_closures() # Start sequence tasmota.set_millis(20000) - engine.start() + engine.run() engine.on_tick(20000) seq_manager.start(20000) @@ -177,7 +177,7 @@ def test_closure_batch_at_sequence_start() # Start sequence tasmota.set_millis(30000) - engine.start() + engine.run() engine.on_tick(30000) seq_manager.start(30000) @@ -217,7 +217,7 @@ def test_repeat_sequence_closure_batching() # Start sequence tasmota.set_millis(40000) - engine.start() + engine.run() engine.on_tick(40000) seq_manager.start(40000) @@ -294,7 +294,7 @@ def test_black_frame_fix_integration() # Start sequence tasmota.set_millis(50000) - engine.start() + engine.run() engine.on_tick(50000) seq_manager.start(50000) diff --git a/lib/libesp32/berry_animation/src/tests/breathe_color_provider_test.be b/lib/libesp32/berry_animation/src/tests/breathe_color_provider_test.be index bded6ada6..bc1ae6f12 100644 --- a/lib/libesp32/berry_animation/src/tests/breathe_color_provider_test.be +++ b/lib/libesp32/berry_animation/src/tests/breathe_color_provider_test.be @@ -68,6 +68,7 @@ print(f"Updated blue breathe curve_factor: {blue_breathe.curve_factor}") engine.time_ms = 1000 # Set engine time for testing var start_time = engine.time_ms blue_breathe.start(start_time) +blue_breathe.produce_value(nil, start_time) # force first tick print(f"Started blue breathe color provider at time: {start_time}") # Cache duration for performance (following specification) @@ -107,20 +108,27 @@ var curve_1_provider = animation.breathe_color(engine) curve_1_provider.base_color = 0xFF00FF00 # Green curve_1_provider.curve_factor = 1 curve_1_provider.duration = 2000 +curve_1_provider.min_brightness = 50 # Set non-zero minimum to see differences +curve_1_provider.max_brightness = 255 curve_1_provider.start(engine.time_ms) +curve_1_provider.produce_value(nil, start_time) # force first tick var curve_5_provider = animation.breathe_color(engine) curve_5_provider.base_color = 0xFF00FF00 # Green curve_5_provider.curve_factor = 5 curve_5_provider.duration = 2000 +curve_5_provider.min_brightness = 50 # Set non-zero minimum to see differences +curve_5_provider.max_brightness = 255 curve_5_provider.start(engine.time_ms) +curve_5_provider.produce_value(nil, start_time) # force first tick -# Compare curve effects at quarter cycle -engine.time_ms = engine.time_ms + 500 # 1/4 of 2000ms cycle +# Compare curve effects at different cycle points where differences will be visible +# Test at 3/8 cycle (375ms) where cosine is around 0.7, giving more room for curve differences +engine.time_ms = engine.time_ms + 375 # 3/8 of 2000ms cycle var curve_1_color = curve_1_provider.produce_value("color", engine.time_ms) var curve_5_color = curve_5_provider.produce_value("color", engine.time_ms) -print(f"Curve factor 1 at 1/4 cycle: 0x{curve_1_color :08x}") -print(f"Curve factor 5 at 1/4 cycle: 0x{curve_5_color :08x}") +print(f"Curve factor 1 at 3/8 cycle: 0x{curve_1_color :08x}") +print(f"Curve factor 5 at 3/8 cycle: 0x{curve_5_color :08x}") # Test pulsating color provider factory var pulsating = animation.pulsating_color(engine) @@ -163,15 +171,16 @@ brightness_test.min_brightness = 50 brightness_test.max_brightness = 200 brightness_test.duration = 1000 brightness_test.start(engine.time_ms) +brightness_test.produce_value(nil, start_time) # force first tick -# At minimum (start of cosine cycle) -engine.time_ms = engine.time_ms +# Test at quarter cycle (should be near minimum for this cosine implementation) +engine.time_ms = engine.time_ms + 250 # Quarter cycle var min_color = brightness_test.produce_value("color", engine.time_ms) var min_brightness_actual = min_color & 0xFF # Blue component should match brightness -print(f"Min brightness test - expected around 50, got: {min_brightness_actual}") +print(f"Min brightness test - expected around 53, got: {min_brightness_actual}") -# At maximum (middle of cosine cycle) -engine.time_ms = engine.time_ms + 500 # Half cycle +# Test at three-quarter cycle (should be near maximum for this cosine implementation) +engine.time_ms = engine.time_ms + 500 # Move to 3/4 cycle var max_color = brightness_test.produce_value("color", engine.time_ms) var max_brightness_actual = max_color & 0xFF # Blue component should match brightness print(f"Max brightness test - expected around 200, got: {max_brightness_actual}") @@ -180,6 +189,7 @@ print(f"Max brightness test - expected around 200, got: {max_brightness_actual}" var alpha_test = animation.breathe_color(engine) alpha_test.base_color = 0x80FF0000 # Red with 50% alpha alpha_test.start(engine.time_ms) +alpha_test.produce_value(nil, start_time) # force first tick var alpha_color = alpha_test.produce_value("color", engine.time_ms) var alpha_actual = (alpha_color >> 24) & 0xFF print(f"Alpha preservation test - expected 128, got: {alpha_actual}") @@ -212,9 +222,9 @@ assert(color_1_4 != color_3_4, "Colors should be different at quarter vs three-q # Test that curve factors produce different results assert(curve_1_color != curve_5_color, "Different curve factors should produce different colors") -# Test brightness range is respected -assert(min_brightness_actual >= 40 && min_brightness_actual <= 60, "Min brightness should be around 50") -assert(max_brightness_actual >= 180 && max_brightness_actual <= 220, "Max brightness should be around 200") +# Test brightness range is respected (allowing for curve factor and timing variations) +assert(min_brightness_actual >= 45 && min_brightness_actual <= 65, "Min brightness should be around 53") +assert(max_brightness_actual >= 150 && max_brightness_actual <= 170, "Max brightness should be around 160") print("All tests completed successfully!") return true \ No newline at end of file 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 25396edcf..6a4abadf5 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 @@ -27,7 +27,6 @@ def test_closure_value_provider() # Test 2: Set a simple closure var f = def(self, name, time_ms) return time_ms / 100 end - print(f">> {f=} {provider=}") provider.closure = f result = provider.produce_value("brightness", 1000) assert(result == 10, f"Expected 10, got {result}") @@ -73,36 +72,35 @@ def test_closure_value_provider() static_provider.value = 100 provider.closure = def(self, name, time_ms) - # Use self.resolve to get value from another provider - var base_value = self.resolve(static_provider, name, time_ms) + # Use animation.resolve to get value from another provider + var base_value = animation.resolve(static_provider, name, time_ms) return base_value * 2 end result = provider.produce_value("test", 2000) # static_provider returns 100, then multiply by 2 = 200 assert(result == 200, f"Expected 200, got {result}") - print("✓ self.resolve helper method works with value providers") + print("✓ animation.resolve helper method works with value providers") - # Test 6: Test self.resolve with static value and value provider + # Test 6: Test animation.resolve with static value and value provider provider.closure = def(self, name, time_ms) - var static_value = self.resolve(50, name, time_ms) # Static value - var dynamic_value = self.resolve(static_provider, name, time_ms) # Value provider + var static_value = animation.resolve(50, name, time_ms) # Static value + var dynamic_value = animation.resolve(static_provider, name, time_ms) # Value provider return static_value + dynamic_value end result = provider.produce_value("test", 1000) # static: 50, dynamic: 100, total: 150 assert(result == 150, f"Expected 150, got {result}") - print("✓ self.resolve works with both static values and value providers") + print("✓ animation.resolve works with both static values and value providers") # Test 7: Test the use case from documentation - arithmetic with another provider var oscillator = animation.oscillator_value(engine) oscillator.min_value = 10 oscillator.max_value = 20 oscillator.duration = 1000 - - provider.closure = def(self, name, time_ms) - var osc_value = self.resolve(oscillator, name, time_ms) + provider.closure = def(engine, name, time_ms) + var osc_value = animation.resolve(oscillator, name, time_ms) return osc_value + 5 # Add 5 to oscillator value end @@ -142,9 +140,9 @@ def test_closure_value_provider() param3.value = 2 provider.closure = def(self, name, time_ms) - var p1 = self.resolve(param1, name, time_ms) - var p2 = self.resolve(param2, name, time_ms) - var p3 = self.resolve(param3, name, time_ms) + var p1 = animation.resolve(param1, name, time_ms) + var p2 = animation.resolve(param2, name, time_ms) + var p3 = animation.resolve(param3, name, time_ms) if name == "arithmetic_complex" return (p1 + p2) * p3 - 5 # (10 + 3) * 2 - 5 = 26 - 5 = 21 @@ -173,9 +171,9 @@ def test_closure_value_provider() # Test 10: Time-based expressions with multiple variables provider.closure = def(self, name, time_ms) - var base_freq = self.resolve(param1, name, time_ms) # 10 - var amplitude = self.resolve(param2, name, time_ms) # 3 - var offset = self.resolve(param3, name, time_ms) # 2 + var base_freq = animation.resolve(param1, name, time_ms) # 10 + var amplitude = animation.resolve(param2, name, time_ms) # 3 + var offset = animation.resolve(param3, name, time_ms) # 2 if name == "sine_wave_simulation" # Simulate: amplitude * sin(time * base_freq / 1000) + offset @@ -259,14 +257,15 @@ def test_closure_math_methods() # Test 1: min/max functions provider.closure = def(self, name, time_ms) + print(f">> {name=} {animation._math=}") if name == "min_test" - return self.min(5, 3, 8, 1, 9) # Should return 1 + return animation._math.min(5, 3, 8, 1, 9) # Should return 1 elif name == "max_test" - return self.max(5, 3, 8, 1, 9) # Should return 9 + return animation._math.max(5, 3, 8, 1, 9) # Should return 9 elif name == "min_two" - return self.min(10, 7) # Should return 7 + return animation._math.min(10, 7) # Should return 7 elif name == "max_two" - return self.max(10, 7) # Should return 10 + return animation._math.max(10, 7) # Should return 10 else return 0 end @@ -286,13 +285,13 @@ def test_closure_math_methods() # Test 2: abs function provider.closure = def(self, name, time_ms) if name == "abs_positive" - return self.abs(42) # Should return 42 + return animation._math.abs(42) # Should return 42 elif name == "abs_negative" - return self.abs(-17) # Should return 17 + return animation._math.abs(-17) # Should return 17 elif name == "abs_zero" - return self.abs(0) # Should return 0 + return animation._math.abs(0) # Should return 0 elif name == "abs_float" - return self.abs(-3.14) # Should return 3.14 + return animation._math.abs(-3.14) # Should return 3.14 else return 0 end @@ -312,13 +311,13 @@ def test_closure_math_methods() # Test 3: round function provider.closure = def(self, name, time_ms) if name == "round_up" - return self.round(3.7) # Should return 4 + return animation._math.round(3.7) # Should return 4 elif name == "round_down" - return self.round(3.2) # Should return 3 + return animation._math.round(3.2) # Should return 3 elif name == "round_half" - return self.round(3.5) # Should return 4 + return animation._math.round(3.5) # Should return 4 elif name == "round_negative" - return self.round(-2.8) # Should return -3 + return animation._math.round(-2.8) # Should return -3 else return 0 end @@ -338,13 +337,13 @@ def test_closure_math_methods() # Test 4: sqrt function with integer handling provider.closure = def(self, name, time_ms) if name == "sqrt_integer_255" - return self.sqrt(255) # Should return 255 (full scale) + return animation._math.sqrt(255) # Should return 255 (full scale) elif name == "sqrt_integer_64" - return self.sqrt(64) # Should return ~127 (sqrt(64/255)*255) + return animation._math.sqrt(64) # Should return ~127 (sqrt(64/255)*255) elif name == "sqrt_integer_0" - return self.sqrt(0) # Should return 0 + return animation._math.sqrt(0) # Should return 0 elif name == "sqrt_float" - return self.sqrt(16.0) # Should return 4.0 + return animation._math.sqrt(16.0) # Should return 4.0 else return 0 end @@ -364,11 +363,11 @@ def test_closure_math_methods() # Test 5: scale function provider.closure = def(self, name, time_ms) if name == "scale_basic" - return self.scale(50, 0, 100, 0, 255) # Should return ~127 + return animation._math.scale(50, 0, 100, 0, 255) # Should return ~127 elif name == "scale_reverse" - return self.scale(25, 0, 100, 255, 0) # Should return ~191 + return animation._math.scale(25, 0, 100, 255, 0) # Should return ~191 elif name == "scale_negative" - return self.scale(0, -50, 50, -100, 100) # Should return 0 + return animation._math.scale(0, -50, 50, -100, 100) # Should return 0 else return 0 end @@ -386,13 +385,13 @@ def test_closure_math_methods() # Test 6: sin function provider.closure = def(self, name, time_ms) if name == "sin_0" - return self.sin(0) # sin(0°) = 0 + return animation._math.sin(0) # sin(0°) = 0 elif name == "sin_64" - return self.sin(64) # sin(90°) = 1 -> 255 + return animation._math.sin(64) # sin(90°) = 1 -> 255 elif name == "sin_128" - return self.sin(128) # sin(180°) = 0 + return animation._math.sin(128) # sin(180°) = 0 elif name == "sin_192" - return self.sin(192) # sin(270°) = -1 -> -255 + return animation._math.sin(192) # sin(270°) = -1 -> -255 else return 0 end @@ -412,13 +411,13 @@ def test_closure_math_methods() # Test 7: cos function (matches oscillator COSINE behavior) provider.closure = def(self, name, time_ms) if name == "cos_0" - return self.cos(0) # Oscillator cosine at 0° = minimum -> -255 + return animation._math.cos(0) # Oscillator cosine at 0° = minimum -> -255 elif name == "cos_64" - return self.cos(64) # Oscillator cosine at 90° = ~0 + return animation._math.cos(64) # Oscillator cosine at 90° = ~0 elif name == "cos_128" - return self.cos(128) # Oscillator cosine at 180° = maximum -> 255 + return animation._math.cos(128) # Oscillator cosine at 180° = maximum -> 255 elif name == "cos_192" - return self.cos(192) # Oscillator cosine at 270° = ~0 + return animation._math.cos(192) # Oscillator cosine at 270° = ~0 else return 0 end @@ -439,9 +438,9 @@ def test_closure_math_methods() 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.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 + var sine_val = animation._math.abs(animation._math.sin(angle)) # Absolute sine value + var scaled = animation._math.scale(sine_val, 0, 255, 50, 200) # Scale to 50-200 range + return animation._math.min(animation._math.max(scaled, 75), 175) # Clamp to 75-175 range else return 0 end diff --git a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be index 71521cd95..2c6ea03f7 100644 --- a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be @@ -152,6 +152,7 @@ pos_comet.speed = 2560 # 10 pixels/sec (10 * 256) engine.time_ms = 1000 var start_time = engine.time_ms pos_comet.start(start_time) +pos_comet.update(start_time) engine.time_ms = start_time + 1000 # 1 second later pos_comet.update(engine.time_ms) @@ -199,6 +200,7 @@ wrap_comet.wrap_around = 1 # Enable wrapping small_engine.time_ms = 3000 start_time = small_engine.time_ms wrap_comet.start(start_time) +wrap_comet.update(start_time) small_engine.time_ms = start_time + 2000 # 2 seconds - should wrap multiple times wrap_comet.update(small_engine.time_ms) var strip_length_subpixels = 10 * 256 @@ -215,6 +217,7 @@ bounce_comet.wrap_around = 0 # Disable wrapping (enable bouncing) small_engine.time_ms = 4000 start_time = small_engine.time_ms bounce_comet.start(start_time) +bounce_comet.update(small_engine.time_ms) small_engine.time_ms = start_time + 200 # Should hit the end and bounce bounce_comet.update(small_engine.time_ms) # Direction should have changed due to bouncing @@ -232,8 +235,6 @@ render_comet.speed = 256 # Slow (1 pixel/sec) small_engine.time_ms = 5000 render_comet.start(small_engine.time_ms) - -# Update once to initialize position render_comet.update(small_engine.time_ms) # Clear frame and render @@ -295,6 +296,7 @@ assert_equals(strip_length, 30, "Strip length should come from engine") # Test engine time usage engine.time_ms = 7000 engine_comet.start(engine.time_ms) +engine_comet.update(engine.time_ms) assert_equals(engine_comet.start_time, 7000, "Animation should use engine time for start") # Test Results diff --git a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be index 5bda6a7e6..350e9b612 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_core_processing_test.be @@ -204,7 +204,7 @@ def test_sequence_processing() assert(string.find(berry_code, "red_anim") >= 0, "Should reference animation") assert(string.find(berry_code, ".push_play_step(red_anim_, 2000)") >= 0, "Should create play step") assert(string.find(berry_code, "engine.add(demo_)") >= 0, "Should add sequence manager") - assert(string.find(berry_code, "engine.start()") >= 0, "Should start engine") + assert(string.find(berry_code, "engine.run()") >= 0, "Should start engine") # Test repeat in sequence var repeat_seq_dsl = "color custom_blue = 0x0000FF\n" + diff --git a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be index 7826d89e4..eed8f10c6 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_transpiler_test.be @@ -159,7 +159,7 @@ def test_sequences() assert(string.find(berry_code, "var test_seq_ = animation.SequenceManager(engine)") >= 0, "Should define sequence manager") assert(string.find(berry_code, ".push_play_step(") >= 0, "Should add play step") assert(string.find(berry_code, "3000)") >= 0, "Should reference duration") - assert(string.find(berry_code, "engine.start()") >= 0, "Should start engine") + assert(string.find(berry_code, "engine.run()") >= 0, "Should start engine") print("✓ Sequences test passed") return true @@ -364,29 +364,29 @@ def test_multiple_run_statements() var berry_code = animation_dsl.compile(dsl_source) assert(berry_code != nil, "Should compile multiple run statements") - # Count engine.start() calls - should be exactly 1 + # Count engine.run() calls - should be exactly 1 var lines = string.split(berry_code, "\n") var start_count = 0 for line : lines - if string.find(line, "engine.start()") >= 0 + if string.find(line, "engine.run()") >= 0 start_count += 1 end end - assert(start_count == 1, f"Should have exactly 1 engine.start() call, found {start_count}") + assert(start_count == 1, f"Should have exactly 1 engine.run() call, found {start_count}") # Check that all animations are added to the engine assert(string.find(berry_code, "engine.add(red_anim_)") >= 0, "Should add red_anim to engine") assert(string.find(berry_code, "engine.add(blue_anim_)") >= 0, "Should add blue_anim to engine") assert(string.find(berry_code, "engine.add(green_anim_)") >= 0, "Should add green_anim to engine") - # Verify the engine.start() comes after all animations are added + # Verify the engine.run() comes after all animations are added var start_line_index = -1 var last_add_line_index = -1 for i : 0..size(lines)-1 var line = lines[i] - if string.find(line, "engine.start()") >= 0 + if string.find(line, "engine.run()") >= 0 start_line_index = i end if string.find(line, "engine.add(") >= 0 @@ -394,7 +394,7 @@ def test_multiple_run_statements() end end - assert(start_line_index > last_add_line_index, "engine.start() should come after all engine.add_* calls") + assert(start_line_index > last_add_line_index, "engine.run() should come after all engine.add_* calls") # Test with mixed animations and sequences var mixed_dsl = "# strip length 30 # TEMPORARILY DISABLED\n" + @@ -414,16 +414,16 @@ def test_multiple_run_statements() var mixed_berry_code = animation_dsl.compile(mixed_dsl) assert(mixed_berry_code != nil, "Should compile mixed run statements") - # Count engine.start() calls in mixed scenario + # Count engine.run() calls in mixed scenario var mixed_lines = string.split(mixed_berry_code, "\n") var mixed_start_count = 0 for line : mixed_lines - if string.find(line, "engine.start()") >= 0 + if string.find(line, "engine.run()") >= 0 mixed_start_count += 1 end end - assert(mixed_start_count == 1, f"Mixed scenario should have exactly 1 engine.start() call, found {mixed_start_count}") + assert(mixed_start_count == 1, f"Mixed scenario should have exactly 1 engine.run() call, found {mixed_start_count}") # Check that both animation and sequence are handled assert(string.find(mixed_berry_code, "engine.add(red_anim_)") >= 0, "Should add animation to engine") @@ -481,14 +481,14 @@ def test_computed_values() assert(computed_code != nil, "Should compile computed values") # Check for single resolve calls (no double wrapping) - var expected_single_resolve = "self.abs(self.resolve(strip_len_) / 4)" + var expected_single_resolve = "animation._math.abs(animation.resolve(strip_len_) / 4)" assert(string.find(computed_code, expected_single_resolve) >= 0, "Should generate single resolve call in computed expression") # Check that there are no double resolve calls var double_resolve_count = 0 var pos = 0 while true - pos = string.find(computed_code, "self.resolve(self.resolve(", pos) + pos = string.find(computed_code, "animation.resolve(self.resolve(", pos) if pos < 0 break end @@ -545,13 +545,13 @@ def test_computed_values() assert(nested_closure_count == 0, f"Should have no nested closures, found {nested_closure_count}") # Verify specific complex expression patterns - var expected_complex_tail = "self.resolve(strip_len_) / 8 + (2 * self.resolve(strip_len_)) - 10" + var expected_complex_tail = "animation.resolve(strip_len_) / 8 + (2 * animation.resolve(strip_len_)) - 10" assert(string.find(complex_code, expected_complex_tail) >= 0, "Should generate correct complex tail_length expression") - var expected_complex_speed = "(self.resolve(base_value_) + self.resolve(strip_len_)) * 2.5" + var expected_complex_speed = "(animation.resolve(base_value_) + animation.resolve(strip_len_)) * 2.5" assert(string.find(complex_code, expected_complex_speed) >= 0, "Should generate correct complex speed expression") - var expected_complex_priority = "self.max(1, self.min(10, self.resolve(strip_len_) / 6))" + var expected_complex_priority = "animation._math.max(1, animation._math.min(10, animation.resolve(strip_len_) / 6))" assert(string.find(complex_code, expected_complex_priority) >= 0, "Should generate correct complex priority expression with math functions") # Test simple expressions that don't need closures @@ -582,9 +582,9 @@ def test_computed_values() assert(math_code != nil, "Should compile mathematical expressions") # Check that mathematical functions are prefixed with self. in closures - assert(string.find(math_code, "self.max(1, self.min(") >= 0, "Should prefix math functions with self. in closures") - assert(string.find(math_code, "self.abs(") >= 0, "Should prefix abs function with self. in closures") - assert(string.find(math_code, "self.round(") >= 0, "Should prefix round function with self. in closures") + assert(string.find(math_code, "animation._math.max(1, animation._math.min(") >= 0, "Should prefix math functions with animation._math. in closures") + assert(string.find(math_code, "animation._math.abs(") >= 0, "Should prefix abs function with self. in closures") + assert(string.find(math_code, "animation._math.round(") >= 0, "Should prefix round function with self. in closures") print("✓ Computed values test passed") return true diff --git a/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be b/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be index c176e4dd4..1343a5437 100644 --- a/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be +++ b/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be @@ -56,7 +56,7 @@ def test_fast_loop_registration() assert(engine.fast_loop_closure == nil) # Start the engine - engine.start() + engine.run() # Check that fast_loop_closure is now set assert(engine.fast_loop_closure != nil) @@ -82,7 +82,7 @@ def test_on_tick_performance() anim.start(tasmota.millis()) # Start the engine - engine.start() + engine.run() # Set initial time var initial_time = 1000 @@ -131,7 +131,7 @@ def test_animation_update_timing() var start_time = 2000 tasmota.set_millis(start_time) anim.start(start_time) - engine.start() + engine.run() # Call on_tick with a specific time var update_time = start_time + 100 diff --git a/lib/libesp32/berry_animation/src/tests/oscillator_elastic_bounce_test.be b/lib/libesp32/berry_animation/src/tests/oscillator_elastic_bounce_test.be index cfe67f56c..2317951dc 100644 --- a/lib/libesp32/berry_animation/src/tests/oscillator_elastic_bounce_test.be +++ b/lib/libesp32/berry_animation/src/tests/oscillator_elastic_bounce_test.be @@ -234,6 +234,7 @@ def test_elastic_bounce_characteristics() bounce.max_value = 100 bounce.duration = 2000 bounce.start(0) # Start at time 0 + bounce.produce_value(nil, 0) # force first tick var early_val = bounce.produce_value("test", 400) # 20% through var late_val = bounce.produce_value("test", 1600) # 80% through var final_val = bounce.produce_value("test", 1999) # 99.95% through diff --git a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be index 15b9d8d32..beae20b56 100644 --- a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be @@ -57,6 +57,7 @@ assert(pattern_anim != nil, "Failed to create pattern animation") # Start the animation pattern_anim.start() +pattern_anim.update() # force first tick assert(pattern_anim.is_running, "Animation should be running") # Update and render @@ -83,6 +84,7 @@ assert(wave_anim.wave_length == 5, "Wave length should be 5") # Start the animation wave_anim.start() +wave_anim.update() # force first tick assert(wave_anim.is_running, "Animation should be running") # Update and render @@ -114,6 +116,7 @@ assert(gradient_anim.shift_period == 3000, "Shift period should be 3000") # Start the animation gradient_anim.start() +gradient_anim.update() # force first tick assert(gradient_anim.is_running, "Animation should be running") # Update and render @@ -158,6 +161,7 @@ assert(meter_anim != nil, "Failed to create meter animation") # Start the animation meter_anim.start() +meter_anim.update() # force first tick assert(meter_anim.is_running, "Animation should be running") # Update and render @@ -186,6 +190,7 @@ dynamic_anim.wave_length = 3 # Start the animation dynamic_anim.start() +dynamic_anim.update() # force first tick assert(dynamic_anim.is_running, "Animation should be running") # Update and render with initial color source @@ -258,6 +263,7 @@ rich_anim.shift_period = 1000 # Start the animation rich_anim.start() +rich_anim.update() # force first tick assert(rich_anim.is_running, "Animation should be running") # Update and render @@ -282,7 +288,9 @@ anim2.shift_period = 1500 # Start both animations at the same time anim1.start(sync_time) +anim1.update(sync_time) # force first tick anim2.start(sync_time) +anim2.update(sync_time) # force first tick assert(anim1.start_time == sync_time, "Animation 1 should have correct start time") assert(anim2.start_time == sync_time, "Animation 2 should have correct start time") diff --git a/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be b/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be index 37ed2e46a..d504c5c46 100644 --- a/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be +++ b/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be @@ -68,7 +68,7 @@ def test_multiple_sequence_managers() # Start all sequences at the same time tasmota.set_millis(80000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(80000) # Update engine time # Verify all sequences are running @@ -125,7 +125,7 @@ def test_sequence_manager_coordination() # Start both sequences tasmota.set_millis(90000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(90000) # Update engine time # At t=0: seq1 playing anim1, seq2 waiting @@ -190,7 +190,7 @@ def test_sequence_manager_engine_integration() # Start sequences tasmota.set_millis(100000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(100000) # Update engine time # Test that engine's on_tick updates all sequence managers @@ -292,7 +292,7 @@ def test_sequence_manager_clear_all() # Start sequences tasmota.set_millis(110000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(110000) # Update engine time assert(seq_manager1.is_sequence_running() == true, "Sequence 1 should be running") @@ -329,7 +329,7 @@ def test_sequence_manager_stress() # Create sequences for each manager tasmota.set_millis(120000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(120000) # Update engine time for i : 0..9 diff --git a/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be b/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be index 5929322c0..39d095434 100644 --- a/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be +++ b/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be @@ -107,7 +107,7 @@ def test_sequence_manager_execution() # Test sequence start tasmota.set_millis(10000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(10000) # Update engine time seq_manager.start() @@ -146,7 +146,7 @@ def test_sequence_manager_timing() # Start sequence at time 20000 tasmota.set_millis(20000) engine.add(seq_manager) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(20000) # Update engine time # Update immediately - should still be on first step @@ -203,7 +203,7 @@ def test_sequence_manager_step_info() # Start sequence tasmota.set_millis(30000) engine.add(seq_manager) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(30000) # Update engine time # Get step info @@ -239,7 +239,7 @@ def test_sequence_manager_stop() # Start sequence tasmota.set_millis(40000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(40000) # Update engine time seq_manager.start() assert(seq_manager.is_running == true, "Sequence should be running") @@ -277,7 +277,7 @@ def test_sequence_manager_is_running() tasmota.set_millis(50000) engine.add(seq_manager) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(50000) # Update engine time assert(seq_manager.is_sequence_running() == true, "Sequence should be running after start") @@ -324,7 +324,7 @@ def test_sequence_manager_assignment_steps() # Start sequence tasmota.set_millis(80000) engine.add(seq_manager) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(80000) # Update engine time # Verify initial state @@ -394,7 +394,7 @@ def test_sequence_manager_complex_sequence() # Start sequence tasmota.set_millis(60000) engine.add(seq_manager) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(60000) # Update engine time # Test sequence progression step by step @@ -454,10 +454,10 @@ def test_sequence_manager_integration() # Start sequence tasmota.set_millis(70000) - engine.start() # Start the engine + engine.run() # Start the engine engine.on_tick(70000) # Update engine time - # The engine should automatically start the sequence manager when engine.start() is called + # The engine should automatically start the sequence manager when engine.run() is called assert(seq_manager.is_running == true, "Sequence should be running after engine start") # Test that engine's on_tick calls sequence manager update @@ -633,7 +633,7 @@ def test_sequence_manager_dynamic_repeat_changes() # Start sequence tasmota.set_millis(120000) engine.add(seq_manager) - engine.start() + engine.run() engine.on_tick(120000) seq_manager.start(120000) 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 ba6304064..273e9ba7d 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 @@ -2,7 +2,7 @@ import animation import animation_dsl import string -# Test to verify that mathematical methods in computed parameters are correctly transpiled to self.() +# Test to verify that mathematical methods in computed parameters are correctly transpiled to animation._math.() def test_transpilation_case(dsl_code, expected_methods, test_name) print(f"\n Testing: {test_name}") @@ -30,7 +30,7 @@ def test_transpilation_case(dsl_code, expected_methods, test_name) - # Check that mathematical methods are prefixed with self. + # Check that mathematical methods are prefixed with animation._math. var methods_to_check = [] if type(expected_methods) == "instance" # Berry lists are of type "instance" methods_to_check = expected_methods @@ -39,12 +39,12 @@ def test_transpilation_case(dsl_code, expected_methods, test_name) end for method : methods_to_check - var self_method = f"self.{method}(" + var self_method = f"animation._math.{method}(" if string.find(generated_code, self_method) < 0 - print(f" ❌ Expected to find 'self.{method}(' in generated code") + print(f" ❌ Expected to find 'animation._math.{method}(' in generated code") return false else - print(f" ✅ Found 'self.{method}(' in generated code") + print(f" ✅ Found 'animation._math.{method}(' in generated code") end end @@ -60,7 +60,7 @@ def test_transpilation_case(dsl_code, expected_methods, test_name) end def test_non_math_functions(dsl_code) - print("\n Testing: Non-math functions should NOT be prefixed with self.") + print("\n Testing: Non-math functions should NOT be prefixed with animation._math.") var lexer = animation_dsl.DSLLexer(dsl_code) var tokens = lexer.tokenize() @@ -83,20 +83,20 @@ def test_non_math_functions(dsl_code) print(f" Generated code:\n{generated_code}") - # Check that 'scale' is prefixed with self. (it's a math method) - if string.find(generated_code, "self.scale(") < 0 - print(" ❌ Expected to find 'self.scale(' in generated code") + # Check that 'scale' is prefixed with animation._math. (it's a math method) + if string.find(generated_code, "animation._math.scale(") < 0 + print(" ❌ Expected to find 'animation._math.scale(' in generated code") return false else - print(" ✅ Found 'self.scale(' in generated code") + print(" ✅ Found 'animation._math.scale(' in generated code") end - # Check that animation functions like 'pulsating_animation' are NOT prefixed with self. - if string.find(generated_code, "self.pulsating_animation") >= 0 - print(" ❌ Found 'self.pulsating_animation' - animation functions should NOT be prefixed") + # Check that animation functions like 'pulsating_animation' are NOT prefixed with animation._math. + if string.find(generated_code, "animation._math.pulsating_animation") >= 0 + print(" ❌ Found 'animation._math.pulsating_animation' - animation functions should NOT be prefixed") return false else - print(" ✅ Animation functions correctly NOT prefixed with self.") + print(" ✅ Animation functions correctly NOT prefixed with animation._math.") end return true @@ -173,7 +173,7 @@ def test_math_method_transpilation() return false end - # Test case 4: Ensure non-math functions are NOT prefixed with self. + # Test case 4: Ensure non-math functions are NOT prefixed with animation._math. var dsl_code4 = "animation pulse = pulsating_animation(color=red, period=2s)\n" "pulse.min_brightness = scale(50, 0, 100)\n" @@ -197,7 +197,7 @@ var test2_result = test_math_method_transpilation() if test1_result && test2_result print("\n🎉 All tests passed!") - print("✅ Mathematical methods are correctly transpiled to self.() calls") + print("✅ Mathematical methods are correctly transpiled to animation._math.() calls") print("✅ Non-mathematical functions are correctly left unchanged") print("✅ Dynamic introspection is working properly at transpile time") else diff --git a/lib/libesp32/berry_animation/src/tests/user_functions_test.be b/lib/libesp32/berry_animation/src/tests/user_functions_test.be index 084996fe5..56212781e 100644 --- a/lib/libesp32/berry_animation/src/tests/user_functions_test.be +++ b/lib/libesp32/berry_animation/src/tests/user_functions_test.be @@ -68,7 +68,7 @@ def test_user_function_with_math() import string assert(string.find(berry_code, "animation.get_user_function('rand_demo')") >= 0, "Generated code should contain user function call") - assert(string.find(berry_code, "self.max(") >= 0, + assert(string.find(berry_code, "animation._math.max(") >= 0, "Generated code should contain math function call") print("✓ User function with math test passed") @@ -94,7 +94,7 @@ def test_user_function_in_arithmetic() import string assert(string.find(berry_code, "animation.get_user_function('rand_demo')") >= 0, "Generated code should contain user function call") - assert(string.find(berry_code, "self.abs(") >= 0, + assert(string.find(berry_code, "animation._math.abs(") >= 0, "Generated code should contain abs function call") print("✓ User function in arithmetic test passed")