From 8feff1148a82d514810b9df6176d4c8232188927 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 6 Dec 2025 16:52:43 +0100 Subject: [PATCH] Berry animation meter (#24193) * Remove tab from json * Berry animation meter and other optimizations --- .../chap_5_21_template_shutter_bidir.anim | 67 - .../chap_5_22_template_shutter_bidir.anim | 77 - .../chap_5_21_template_shutter_bidir.be | 164 - .../chap_5_22_template_shutter_bidir.be | 182 - .../compiled/compilation_summary.md | 44 +- .../compiled/demo_value_meter.be | 4 +- .../anim_examples/demo_value_meter.anim | 2 +- .../chap_1_40_color_pattern_meter.anim | 39 +- .../chap_1_41_color_pattern_meter_random.anim | 30 + .../anim_tutorials/chap_2_10_sky.anim | 17 + .../docs/ANIMATION_CLASS_HIERARCHY.md | 52 +- .../docs/ANIMATION_DEVELOPMENT.md | 52 +- .../berry_animation/docs/DSL_REFERENCE.md | 2 +- .../docs/TRANSPILER_ARCHITECTURE.md | 2 +- lib/libesp32/berry_animation/src/animation.be | 2 + .../berry_animation/src/animations/beacon.be | 21 +- .../berry_animation/src/animations/comet.be | 19 +- .../src/animations/crenel_position.be | 18 +- .../berry_animation/src/animations/fire.be | 25 +- .../src/animations/gradient.be | 16 +- .../berry_animation/src/animations/noise.be | 16 +- .../src/animations/palette_meter.be | 148 + .../src/animations/palette_pattern.be | 102 +- .../src/animations/rich_palette_animation.be | 5 +- .../berry_animation/src/animations/solid.be | 2 - .../berry_animation/src/animations/twinkle.be | 55 +- .../berry_animation/src/animations/wave.be | 16 +- .../src/animations_future/bounce.be | 20 +- .../src/animations_future/jitter.be | 18 +- .../src/animations_future/plasma.be | 18 +- .../src/animations_future/scale.be | 18 +- .../src/animations_future/shift.be | 18 +- .../src/animations_future/sparkle.be | 22 +- .../src/core/animation_base.be | 32 +- .../src/core/animation_engine.be | 5 +- .../berry_animation/src/core/engine_proxy.be | 68 +- .../src/core/parameterized_object.be | 17 +- .../src/core/sequence_manager.be | 13 +- .../berry_animation/src/dsl/transpiler.be | 73 +- .../providers/rich_palette_color_provider.be | 5 +- .../src/providers/value_provider.be | 10 - .../src/solidify/solidified_animation.h | 4879 ++--- .../src/solidify/solidified_animation_dsl.h | 16299 ++++++++-------- .../src/tests/animation_engine_test.be | 5 - .../src/tests/animation_opacity_test.be | 22 +- .../src/tests/animation_test.be | 33 +- .../src/tests/beacon_animation_test.be | 12 +- .../src/tests/black_frame_fix_test.be | 7 - .../src/tests/bounce_animation_test.be | 21 +- .../src/tests/breathe_animation_test.be | 2 +- .../src/tests/color_cycle_animation_test.be | 21 +- .../src/tests/comet_animation_test.be | 12 +- .../tests/crenel_position_animation_test.be | 19 +- .../src/tests/crenel_position_color_test.be | 21 +- .../src/tests/dsl_berry_code_blocks_test.be | 45 +- .../src/tests/engine_proxy_test.be | 11 +- .../src/tests/fast_loop_integration_test.be | 2 +- .../src/tests/filled_animation_test.be | 23 +- .../src/tests/fire_animation_test.be | 7 +- .../src/tests/get_param_value_test.be | 4 - .../src/tests/gradient_animation_test.be | 39 +- .../src/tests/gradient_rainbow_test.be | 2 +- .../src/tests/gradient_simple_test.be | 6 +- .../src/tests/jitter_animation_test.be | 6 +- .../src/tests/motion_effects_test.be | 18 +- .../src/tests/noise_animation_test.be | 8 +- .../src/tests/palette_meter_animation_test.be | 236 + .../tests/palette_pattern_animation_test.be | 82 +- .../src/tests/parameter_validation_test.be | 1 - .../src/tests/plasma_animation_test.be | 12 +- .../src/tests/pull_lexer_transpiler_test.be | 21 - .../src/tests/pulse_animation_test.be | 2 +- .../rich_palette_animation_class_test.be | 10 +- .../src/tests/rich_palette_animation_test.be | 12 +- .../src/tests/scale_animation_test.be | 6 +- .../tests/sequence_manager_layering_test.be | 10 - .../src/tests/sequence_manager_test.be | 16 - .../src/tests/shift_animation_test.be | 6 +- .../src/tests/solid_animation_test.be | 5 +- .../src/tests/solid_unification_test.be | 10 +- .../src/tests/sparkle_animation_test.be | 8 +- .../src/tests/static_value_provider_test.be | 58 +- .../berry_animation/src/tests/test_all.be | 1 + .../src/tests/twinkle_animation_test.be | 17 +- .../src/tests/wave_animation_test.be | 11 +- 85 files changed, 11476 insertions(+), 12088 deletions(-) delete mode 100644 lib/libesp32/berry_animation/anim_examples/chap_5_21_template_shutter_bidir.anim delete mode 100644 lib/libesp32/berry_animation/anim_examples/chap_5_22_template_shutter_bidir.anim delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/chap_5_21_template_shutter_bidir.be delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/chap_5_22_template_shutter_bidir.be create mode 100644 lib/libesp32/berry_animation/anim_tutorials/chap_1_41_color_pattern_meter_random.anim create mode 100644 lib/libesp32/berry_animation/anim_tutorials/chap_2_10_sky.anim create mode 100644 lib/libesp32/berry_animation/src/animations/palette_meter.be create mode 100644 lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be diff --git a/lib/libesp32/berry_animation/anim_examples/chap_5_21_template_shutter_bidir.anim b/lib/libesp32/berry_animation/anim_examples/chap_5_21_template_shutter_bidir.anim deleted file mode 100644 index 4dc5b56ee..000000000 --- a/lib/libesp32/berry_animation/anim_examples/chap_5_21_template_shutter_bidir.anim +++ /dev/null @@ -1,67 +0,0 @@ -# Template animation for Cylon like eye - -template animation shutter_bidir { - param colors type palette - param period type time default 5s - param acending type bool default true - - set strip_len = strip_length() - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = period) - - 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 period - col1.next = 1 - col2.next = 1 - } - repeat col1.palette_size times { - restart shutter_size - play shutter_rl_animation for period - col1.next = 1 - col2.next = 1 - } - } - - run shutter_seq -} - -# define a palette of rainbow colors including white with constant brightness -palette rainbow_with_white = [ - 0xFC0000 # Red - 0xFF8000 # Orange - 0xFFFF00 # Yellow - 0x00FF00 # Green - 0x00FFFF # Cyan - 0x0080FF # Blue - 0x8000FF # Violet - 0xCCCCCC # White - 0xFC0000 # Red - need to add the first color at last position to ensure roll-over -] - -animation main = shutter_bidir(colors = rainbow_with_white, period = 1.5s) -run main diff --git a/lib/libesp32/berry_animation/anim_examples/chap_5_22_template_shutter_bidir.anim b/lib/libesp32/berry_animation/anim_examples/chap_5_22_template_shutter_bidir.anim deleted file mode 100644 index a9ed3ba96..000000000 --- a/lib/libesp32/berry_animation/anim_examples/chap_5_22_template_shutter_bidir.anim +++ /dev/null @@ -1,77 +0,0 @@ -# Template animation with flags - -template animation shutter_bidir { - param colors type palette - param period default 2s - param ascending type bool default true # define to true to enable 'ascending' part - param descending type bool default true # define to true to enable 'descending' part - - # since 'strip_length()' is a value provider, it must be assigned to a variable before being used - set strip_len = strip_length() - - # animated value for the size of the shutter, evolving linearly in time (sawtooth from 0% to 100%) - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = period) - - # define two rotating palettes, shifted by one color - color col1 = color_cycle(palette=colors, cycle_period=0) - color col2 = color_cycle(palette=colors, cycle_period=0) - col2.next = 1 # move 'col2' to the next color so it's shifte by one compared to 'col1' - - # shutter moving in ascending - animation shutter_lr_animation = beacon_animation( - color = col2 - back_color = col1 - pos = 0 - beacon_size = shutter_size - slew_size = 0 - priority = 5 - ) - - # shutter moving in descending - animation shutter_rl_animation = beacon_animation( - color = col1 - back_color = col2 - pos = 0 - beacon_size = strip_len - shutter_size - slew_size = 0 - priority = 5 - ) - - # this is the overall sequence composed of two sub-sequences - # the first in ascending mode, the second in descending - sequence shutter_seq repeat forever { - if ascending { # conditional execution: run only if 'ascending' is true - repeat col1.palette_size times { # run the shutter animation - restart shutter_size # resync all times for this animation, to avoid temporal drift - play shutter_lr_animation for period # run the animation - col1.next = 1 # then move to next color for both palettes - col2.next = 1 - } - } - if descending { # conditional execution: run only if 'descending' is true - repeat col1.palette_size times { - restart shutter_size - play shutter_rl_animation for period - col1.next = 1 - col2.next = 1 - } - } - } - - run shutter_seq -} - -# define a palette of rainbow colors including white with constant brightness -palette rainbow_with_white = [ - 0xFC0000 # Red - 0xFF8000 # Orange - 0xFFFF00 # Yellow - 0x00FF00 # Green - 0x00FFFF # Cyan - 0x0080FF # Blue - 0x8000FF # Violet - 0xCCCCCC # White -] - -animation main = shutter_bidir(colors = rainbow_with_white, period = 1.5s) -run main diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_21_template_shutter_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_21_template_shutter_bidir.be deleted file mode 100644 index 9e16f8c8f..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_21_template_shutter_bidir.be +++ /dev/null @@ -1,164 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: chap_5_21_template_shutter_bidir.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Template animation for Cylon like eye -# Template animation class: shutter_bidir -class shutter_bidir_animation : animation.engine_proxy - static var PARAMS = animation.enc_params({ - "colors": {"type": "palette"}, - "period": {"type": "time", "default": 5000}, - "acending": {"type": "bool", "default": true} - }) - - # Template setup method - overrides EngineProxy placeholder - def setup_template() - var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') - - 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 = animation.create_closure_value(engine, def (engine) return self.period end) - return provider - end)(engine) - var col1_ = animation.color_cycle(engine) - col1_.palette = animation.create_closure_value(engine, def (engine) return self.colors end) - col1_.cycle_period = 0 - var col2_ = animation.color_cycle(engine) - col2_.palette = animation.create_closure_value(engine, def (engine) return self.colors end) - 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.sequence_manager(engine, -1) - .push_repeat_subsequence(animation.sequence_manager(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_, def (engine) return self.period end) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - ) - .push_repeat_subsequence(animation.sequence_manager(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_, def (engine) return self.period end) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - ) - self.add(shutter_seq_) - end -end - -# define a palette of rainbow colors including white with constant brightness -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -var rainbow_with_white_ = bytes( - "FFFC0000" # Red - "FFFF8000" # Orange - "FFFFFF00" # Yellow - "FF00FF00" # Green - "FF00FFFF" # Cyan - "FF0080FF" # Blue - "FF8000FF" # Violet - "FFCCCCCC" # White - "FFFC0000" # Red - need to add the first color at last position to ensure roll-over -) -var main_ = shutter_bidir_animation(engine) -main_.colors = rainbow_with_white_ -main_.period = 1500 -engine.add(main_) -engine.run() - -# Compilation warnings: -# Line 51: Template 'shutter_bidir' parameter 'acending' is declared but never used in the template body. - - -#- Original DSL source: -# Template animation for Cylon like eye - -template animation shutter_bidir { - param colors type palette - param period type time default 5s - param acending type bool default true - - set strip_len = strip_length() - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = period) - - 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 period - col1.next = 1 - col2.next = 1 - } - repeat col1.palette_size times { - restart shutter_size - play shutter_rl_animation for period - col1.next = 1 - col2.next = 1 - } - } - - run shutter_seq -} - -# define a palette of rainbow colors including white with constant brightness -palette rainbow_with_white = [ - 0xFC0000 # Red - 0xFF8000 # Orange - 0xFFFF00 # Yellow - 0x00FF00 # Green - 0x00FFFF # Cyan - 0x0080FF # Blue - 0x8000FF # Violet - 0xCCCCCC # White - 0xFC0000 # Red - need to add the first color at last position to ensure roll-over -] - -animation main = shutter_bidir(colors = rainbow_with_white, period = 1.5s) -run main - --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_22_template_shutter_bidir.be b/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_22_template_shutter_bidir.be deleted file mode 100644 index da5a40c08..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/chap_5_22_template_shutter_bidir.be +++ /dev/null @@ -1,182 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: chap_5_22_template_shutter_bidir.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Template animation with flags -# Template animation class: shutter_bidir -class shutter_bidir_animation : animation.engine_proxy - static var PARAMS = animation.enc_params({ - "colors": {"type": "palette"}, - "period": {"default": 2000}, - "ascending": {"type": "bool", "default": true}, - "descending": {"type": "bool", "default": true} - }) - - # Template setup method - overrides EngineProxy placeholder - def setup_template() - var engine = self # using 'self' as a proxy to engine object (instead of 'self.engine') - - var strip_len_ = animation.strip_length(engine) - # animated value for the size of the shutter, evolving linearly in time (sawtooth from 0% to 100%) - var shutter_size_ = (def (engine) - var provider = animation.sawtooth(engine) - provider.min_value = 0 - provider.max_value = strip_len_ - provider.duration = animation.create_closure_value(engine, def (engine) return self.period end) - return provider - end)(engine) - # define two rotating palettes, shifted by one color - var col1_ = animation.color_cycle(engine) - col1_.palette = animation.create_closure_value(engine, def (engine) return self.colors end) - col1_.cycle_period = 0 - var col2_ = animation.color_cycle(engine) - col2_.palette = animation.create_closure_value(engine, def (engine) return self.colors end) - col2_.cycle_period = 0 - col2_.next = 1 # move 'col2' to the next color so it's shifte by one compared to 'col1' - # shutter moving in ascending - 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 in descending - 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 - # this is the overall sequence composed of two sub-sequences - # the first in ascending mode, the second in descending - var shutter_seq_ = animation.sequence_manager(engine, -1) - .push_repeat_subsequence(animation.sequence_manager(engine, def (engine) return bool(self.ascending) end) - # conditional execution: run only if 'ascending' is true - .push_repeat_subsequence(animation.sequence_manager(engine, def (engine) return col1_.palette_size end) - # run the shutter animation - .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) # resync all times for this animation, to avoid temporal drift - .push_play_step(shutter_lr_animation_, def (engine) return self.period end) # run the animation - .push_closure_step(def (engine) col1_.next = 1 end) # then move to next color for both palettes - .push_closure_step(def (engine) col2_.next = 1 end) - ) - ) - .push_repeat_subsequence(animation.sequence_manager(engine, def (engine) return bool(self.descending) end) - # conditional execution: run only if 'descending' is true - .push_repeat_subsequence(animation.sequence_manager(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_, def (engine) return self.period end) - .push_closure_step(def (engine) col1_.next = 1 end) - .push_closure_step(def (engine) col2_.next = 1 end) - ) - ) - self.add(shutter_seq_) - end -end - -# define a palette of rainbow colors including white with constant brightness -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -var rainbow_with_white_ = bytes( - "FFFC0000" # Red - "FFFF8000" # Orange - "FFFFFF00" # Yellow - "FF00FF00" # Green - "FF00FFFF" # Cyan - "FF0080FF" # Blue - "FF8000FF" # Violet - "FFCCCCCC" # White -) -var main_ = shutter_bidir_animation(engine) -main_.colors = rainbow_with_white_ -main_.period = 1500 -engine.add(main_) -engine.run() - - -#- Original DSL source: -# Template animation with flags - -template animation shutter_bidir { - param colors type palette - param period default 2s - param ascending type bool default true # define to true to enable 'ascending' part - param descending type bool default true # define to true to enable 'descending' part - - # since 'strip_length()' is a value provider, it must be assigned to a variable before being used - set strip_len = strip_length() - - # animated value for the size of the shutter, evolving linearly in time (sawtooth from 0% to 100%) - set shutter_size = sawtooth(min_value = 0, max_value = strip_len, duration = period) - - # define two rotating palettes, shifted by one color - color col1 = color_cycle(palette=colors, cycle_period=0) - color col2 = color_cycle(palette=colors, cycle_period=0) - col2.next = 1 # move 'col2' to the next color so it's shifte by one compared to 'col1' - - # shutter moving in ascending - animation shutter_lr_animation = beacon_animation( - color = col2 - back_color = col1 - pos = 0 - beacon_size = shutter_size - slew_size = 0 - priority = 5 - ) - - # shutter moving in descending - animation shutter_rl_animation = beacon_animation( - color = col1 - back_color = col2 - pos = 0 - beacon_size = strip_len - shutter_size - slew_size = 0 - priority = 5 - ) - - # this is the overall sequence composed of two sub-sequences - # the first in ascending mode, the second in descending - sequence shutter_seq repeat forever { - if ascending { # conditional execution: run only if 'ascending' is true - repeat col1.palette_size times { # run the shutter animation - restart shutter_size # resync all times for this animation, to avoid temporal drift - play shutter_lr_animation for period # run the animation - col1.next = 1 # then move to next color for both palettes - col2.next = 1 - } - } - if descending { # conditional execution: run only if 'descending' is true - repeat col1.palette_size times { - restart shutter_size - play shutter_rl_animation for period - col1.next = 1 - col2.next = 1 - } - } - } - - run shutter_seq -} - -# define a palette of rainbow colors including white with constant brightness -palette rainbow_with_white = [ - 0xFC0000 # Red - 0xFF8000 # Orange - 0xFFFF00 # Yellow - 0x00FF00 # Green - 0x00FFFF # Cyan - 0x0080FF # Blue - 0x8000FF # Violet - 0xCCCCCC # White -] - -animation main = shutter_bidir(colors = rainbow_with_white, period = 1.5s) -run main - --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md index 49de41a68..d044933e8 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md +++ b/lib/libesp32/berry_animation/anim_examples/compiled/compilation_summary.md @@ -61,42 +61,6 @@ SUCCESS SUCCESS ``` -## chap_5_21_template_shutter_bidir.anim - -**Status:** ✅ Success - -## Symbol Table - -| Symbol | Type | Builtin | Dangerous | Takes Args | -|----------------------|-----------------------|---------|-----------|------------| -| `main` | animation | | | | -| `rainbow_with_white` | palette | | | | -| `shutter_bidir` | animation_constructor | | | ✓ | - -### Compilation Output - -``` -SUCCESS -``` - -## chap_5_22_template_shutter_bidir.anim - -**Status:** ✅ Success - -## Symbol Table - -| Symbol | Type | Builtin | Dangerous | Takes Args | -|----------------------|-----------------------|---------|-----------|------------| -| `main` | animation | | | | -| `rainbow_with_white` | palette | | | | -| `shutter_bidir` | animation_constructor | | | ✓ | - -### Compilation Output - -``` -SUCCESS -``` - ## christmas_tree.anim **Status:** ✅ Success @@ -448,7 +412,7 @@ stack traceback: ### Compilation Output ``` -dsl_compilation_error: Line 4: Transpilation failed: Line 4: Cannot redefine built-in symbol 'abs' (type: 4). Use a different name like 'abs_custom' or 'my_abs' +dsl_compilation_error: Line 4: Transpilation failed: Line 4: Cannot redefine built-in symbol 'abs'. Use a different name like 'abs_custom' or 'my_abs' stack traceback: : in function `error` : in function `transpile` @@ -1256,16 +1220,14 @@ SUCCESS ## Summary -- **Total files processed:** 51 -- **Successfully compiled:** 48 +- **Total files processed:** 49 +- **Successfully compiled:** 46 - **Failed to compile:** 3 ### Successful Files - ✅ breathing_colors.anim - ✅ candy_cane.anim -- ✅ chap_5_21_template_shutter_bidir.anim -- ✅ chap_5_22_template_shutter_bidir.anim - ✅ christmas_tree.anim - ✅ comet_chase.anim - ✅ computed_values_demo.anim diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be index 3ea093e60..8b51d8490 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_value_meter.be @@ -35,7 +35,7 @@ var rainbow_with_white_ = bytes( ) # define a gradient across the whole strip var back_pattern_ = animation.palette_meter_animation(engine) -back_pattern_.value_func = animation.create_closure_value(engine, def (engine) return animation.get_user_function('rand_meter')(engine) end) +back_pattern_.level = animation.create_closure_value(engine, def (engine) return animation.get_user_function('rand_meter')(engine) end) engine.add(back_pattern_) engine.run() @@ -67,7 +67,7 @@ palette rainbow_with_white = [ ] # define a gradient across the whole strip -animation back_pattern = palette_meter_animation(value_func = rand_meter) +animation back_pattern = palette_meter_animation(level = rand_meter()) run back_pattern diff --git a/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim b/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim index 8223163cf..200b8333d 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_value_meter.anim @@ -24,6 +24,6 @@ palette rainbow_with_white = [ ] # define a gradient across the whole strip -animation back_pattern = palette_meter_animation(value_func = rand_meter) +animation back_pattern = palette_meter_animation(level = rand_meter()) run back_pattern diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_1_40_color_pattern_meter.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_1_40_color_pattern_meter.anim index b571b9c2b..1b9cfc65a 100644 --- a/lib/libesp32/berry_animation/anim_tutorials/chap_1_40_color_pattern_meter.anim +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_1_40_color_pattern_meter.anim @@ -1,32 +1,21 @@ -# Pattern of colors in the background based on palette, rotating over 5 s - -berry """ -def rand_meter(time_ms, self) - import math - var r = math.rand() % 101 - return r -end -""" - -extern function rand_meter +# Vue-meter based on random data # define a palette of rainbow colors including white with constant brightness -palette rainbow_with_white = [ - 0xFC0000 # Red - 0xFF8000 # Orange - 0xFFFF00 # Yellow - 0x00FF00 # Green - 0x00FFFF # Cyan - 0x0080FF # Blue - 0x8000FF # Violet - 0xCCCCCC # White - 0xFC0000 # Red - need to add the first color at last position to ensure roll-over +palette vue_meter_palette = [ + ( 0, 0x00FF00) # Green + (143, 0x00FF00) + + (164, 0xFFFF00) # Yellow + (207, 0xFFFF00) + + (228, 0xFF0000) # Red + (255, 0xFF0000) ] -# define a color attribute cycles color in space -color rainbow_rich_color = rich_palette(palette=rainbow_with_white, cycle_period=0, transition_type=SINE) +# define a color palette pattern for 'vue_meter_palette' +color rainbow_rich_color = rich_palette(palette=vue_meter_palette, cycle_period=0, transition_type=LINEAR) -# define a gradient across the whole strip -animation back_pattern = palette_meter_animation(color_source = rainbow_rich_color, value_func = rand_meter) +# define a vue-meter based on all elements above +animation back_pattern = palette_meter_animation(color_source = rainbow_rich_color, level = 85%) run back_pattern diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_1_41_color_pattern_meter_random.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_1_41_color_pattern_meter_random.anim new file mode 100644 index 000000000..3e4233070 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_1_41_color_pattern_meter_random.anim @@ -0,0 +1,30 @@ +# Vue-meter based on random data + +berry """ +# define a pseudo-random generator, returns value in range 0..255 +def rand_meter(engine) + return (engine.time_ms * 2654435761) & 0xFF +end +""" + +extern function rand_meter # declare the external function + +# define a palette of rainbow colors including white with constant brightness +palette vue_meter_palette = [ + ( 0, 0x00FF00) # Green + (143, 0x00FF00) + + (164, 0xFFFF00) # Yellow + (207, 0xFFFF00) + + (228, 0xFF0000) # Red + (255, 0xFF0000) +] + +# define a color palette pattern for 'vue_meter_palette' +color rainbow_rich_color = rich_palette(palette=vue_meter_palette, cycle_period=0, transition_type=LINEAR) + +# define a vue-meter based on all elements above +animation back_pattern = palette_meter_animation(color_source = rainbow_rich_color, level = rand_meter()) + +run back_pattern diff --git a/lib/libesp32/berry_animation/anim_tutorials/chap_2_10_sky.anim b/lib/libesp32/berry_animation/anim_tutorials/chap_2_10_sky.anim new file mode 100644 index 000000000..0226d3bba --- /dev/null +++ b/lib/libesp32/berry_animation/anim_tutorials/chap_2_10_sky.anim @@ -0,0 +1,17 @@ +# Sky + +# Dark blue background +color space_blue = 0x000066 # Note: opaque 0xFF alpha channel is implicitly added +animation background = solid(color=space_blue) + +# Add sparkle trail behind comets but on top of blue background +animation stars = twinkle_animation( + color=0xFFFFAA # Light blue sparkles + density=8 # density (moderate sparkles) + twinkle_speed=400ms # twinkle speed (quick sparkle) + priority = 8 +) + +# Start all animations +run background +run stars diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md index c8d1ab59c..4b9551599 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md @@ -23,7 +23,8 @@ ParameterizedObject (base class with parameter management and playable interface │ ├── CrenelPositionAnimation (crenel/square wave pattern) │ ├── BreatheAnimation (breathing effect) │ ├── PaletteGradientAnimation (gradient patterns with palette colors) -│ │ └── PaletteMeterAnimation (meter/bar patterns) +│ │ ├── PaletteMeterAnimation (meter/bar patterns) +│ │ └── GradientMeterAnimation (VU meter with gradient colors and peak hold) │ ├── CometAnimation (moving comet with tail) │ ├── FireAnimation (realistic fire effect) │ ├── TwinkleAnimation (twinkling stars effect) @@ -65,7 +66,7 @@ This unified base class enables: **Key Methods**: - `start(time_ms)` - Start the object at a specific time - `stop()` - Stop the object -- `update(time_ms)` - Update object state based on current time +- `update(time_ms)` - Update object state based on current time (no return value) **Factory**: N/A (base class) @@ -75,7 +76,7 @@ Unified base class for all visual elements. Inherits from `ParameterizedObject`. | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| -| `name` | string | "animation" | - | Optional name for the animation | +| `id` | string | "animation" | - | Optional name for the animation | | `is_running` | bool | false | - | Whether the animation is active | | `priority` | int | 10 | 0-255 | Rendering priority (higher = on top) | | `duration` | int | 0 | min: 0 | Animation duration in ms (0 = infinite) | @@ -158,7 +159,7 @@ Template animation parameters support all standard constraints: **Implicit Parameters**: Template animations automatically inherit parameters from the `EngineProxy` class hierarchy without explicit declaration: -- `name` (string, default: "animation") - Animation name +- `id` (string, default: "animation") - Animation name - `priority` (int, default: 10) - Rendering priority - `duration` (int, default: 0) - Animation duration in milliseconds - `loop` (bool, default: false) - Whether animation loops @@ -213,6 +214,8 @@ Base interface for all value providers. Inherits from `ParameterizedObject`. **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). +**Update Method**: The `update(time_ms)` method does not return any value. Subclasses should check `self.is_running` to determine if the object is still active. + **Factory**: N/A (base interface) ### StaticValueProvider @@ -611,7 +614,48 @@ Creates smooth color gradients that can be linear or radial. Inherits from `Anim **Factories**: `animation.gradient_animation(engine)`, `animation.gradient_rainbow_linear(engine)`, `animation.gradient_rainbow_radial(engine)`, `animation.gradient_two_color_linear(engine)` +### GradientMeterAnimation +VU meter style animation that displays a gradient-colored bar from the start of the strip up to a configurable level. Includes optional peak hold indicator. Inherits from `PaletteGradientAnimation`. + +| Parameter | Type | Default | Constraints | Description | +|-----------|------|---------|-------------|-------------| +| `level` | int | 255 | 0-255 | Current meter level (0=empty, 255=full) | +| `peak_hold` | int | 1000 | min: 0 | Peak hold time in ms (0=disabled) | +| *(inherits all PaletteGradientAnimation parameters)* | | | | | + +#### Visual Representation + +``` +level=128 (50%), peak at 200 +[████████████████--------•-------] +^ ^ +| peak indicator (single pixel) +filled gradient area +``` + +#### Usage Examples + +```berry +# Simple meter with rainbow gradient +color rainbow = rich_palette() +animation meter = gradient_meter_animation() +meter.color_source = rainbow +meter.level = 128 + +# Meter with peak hold (1 second) +color fire_colors = rich_palette(palette=PALETTE_FIRE) +animation vu_meter = gradient_meter_animation(peak_hold=1000) +vu_meter.color_source = fire_colors + +# Dynamic level from value provider +set audio_level = triangle(min_value=0, max_value=255, period=2s) +animation audio_meter = gradient_meter_animation(peak_hold=500) +audio_meter.color_source = rainbow +audio_meter.level = audio_level +``` + +**Factory**: `animation.gradient_meter_animation(engine)` ### NoiseAnimation diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md index 26393155c..fbae87a28 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md @@ -38,18 +38,22 @@ class MyAnimation : animation.animation # Parameter validation is handled automatically by the framework end - def render(frame, time_ms) + # Update animation state (no return value needed) + def update(time_ms) + super(self).update(time_ms) + # Your update logic here + end + + def render(frame, time_ms, strip_length) if !self.is_running || frame == nil return false 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 var param2 = self.my_param2 + # Use strip_length parameter instead of self.engine.strip_length for performance # Your rendering logic here # ... @@ -153,20 +157,16 @@ end The virtual parameter system automatically resolves ValueProviders when you access parameters: ```berry -def render(frame, time_ms) - # Use engine time if not provided - if time_ms == nil - time_ms = self.engine.time_ms - end - +def render(frame, time_ms, strip_length) # Virtual parameter access automatically resolves ValueProviders var color = self.color # Returns current color value, not the provider var position = self.pos # Returns current position value var size = self.size # Returns current size value + # Use strip_length parameter (computed once by engine_proxy) instead of self.engine.strip_length # Use resolved values in rendering logic for i: position..(position + size - 1) - if i >= 0 && i < frame.width + if i >= 0 && i < strip_length frame.set_pixel_color(i, color) end end @@ -198,7 +198,7 @@ anim.pos = animation.triangle(0, 29, 3000) For performance-critical code, cache parameter values: ```berry -def render(frame, time_ms) +def render(frame, time_ms, strip_length) # Cache parameter values to avoid multiple virtual member access var current_color = self.color var current_pos = self.pos @@ -206,7 +206,7 @@ def render(frame, time_ms) # Use cached values in loops for i: current_pos..(current_pos + current_size - 1) - if i >= 0 && i < frame.width + if i >= 0 && i < strip_length frame.set_pixel_color(i, current_color) end end @@ -389,24 +389,17 @@ end ### Frame Buffer Operations ```berry -def render(frame, time_ms) +def render(frame, time_ms, strip_length) 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 - var height = frame.height # Usually 1 for LED strips # Resolve dynamic parameters var color = self.resolve_value(self.color, "color", time_ms) var opacity = self.resolve_value(self.opacity, "opacity", time_ms) - # Render your effect - for i: 0..(width-1) + # Render your effect using strip_length parameter + for i: 0..(strip_length-1) var pixel_color = calculate_pixel_color(i, time_ms) frame.set_pixel_color(i, pixel_color) end @@ -487,19 +480,12 @@ class BeaconAnimation : animation.animation end # Render the pulse to the provided frame buffer - def render(frame, time_ms) + def render(frame, time_ms, strip_length) if frame == nil return false end - # 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 - - var pixel_size = frame.width + var pixel_size = strip_length # Use virtual parameter access - automatically resolves ValueProviders var back_color = self.back_color var pos = self.pos @@ -636,7 +622,7 @@ def test_my_animation() # Test rendering var frame = animation.frame_buffer(10) anim.start() - var result = anim.render(frame, 1000) + var result = anim.render(frame, 1000, engine.strip_length) assert(result == true, "Should render successfully") print("✓ All tests passed") diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index b143fb0b7..ab430e906 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -1119,7 +1119,7 @@ Template animations automatically inherit parameters from the `engine_proxy` cla ```berry # These parameters are implicitly available in all template animations: -param name type string default "animation" +param id type string default "animation" param priority type int default 10 param duration type int default 0 param loop type bool default false diff --git a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md index f2dd1caad..5c4797f85 100644 --- a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md +++ b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md @@ -163,7 +163,7 @@ _add_inherited_params_to_template(template_params_map) ``` **Inherited Parameters (from Animation and ParameterizedObject):** -- `name` (string, default: "animation") +- `id` (string, default: "animation") - `priority` (int, default: 10) - `duration` (int, default: 0) - `loop` (bool, default: false) diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index 3c304b58c..1e63e3496 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -153,6 +153,8 @@ import "animations/twinkle" as twinkle_animation register_to_animation(twinkle_animation) import "animations/gradient" as gradient_animation register_to_animation(gradient_animation) +import "animations/palette_meter" as palette_meter_animation +register_to_animation(palette_meter_animation) import "animations/noise" as noise_animation register_to_animation(noise_animation) # import "animations/plasma" as plasma_animation diff --git a/lib/libesp32/berry_animation/src/animations/beacon.be b/lib/libesp32/berry_animation/src/animations/beacon.be index 41facbe19..404b7449a 100644 --- a/lib/libesp32/berry_animation/src/animations/beacon.be +++ b/lib/libesp32/berry_animation/src/animations/beacon.be @@ -34,13 +34,10 @@ class BeaconAnimation : animation.animation # Render the beacon to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to - # @param time_ms: int - Optional current time in milliseconds (defaults to engine time) + # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @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) - - var pixel_size = frame.width + def render(frame, time_ms, strip_length) # Use virtual parameter access - automatically resolves ValueProviders var back_color = self.back_color var pos = self.pos @@ -61,8 +58,8 @@ class BeaconAnimation : animation.animation if beacon_min < 0 beacon_min = 0 end - if beacon_max >= pixel_size - beacon_max = pixel_size + if beacon_max >= strip_length + beacon_max = strip_length end # Draw the main beacon @@ -83,8 +80,8 @@ class BeaconAnimation : animation.animation if left_slew_min < 0 left_slew_min = 0 end - if left_slew_max >= pixel_size - left_slew_max = pixel_size + if left_slew_max >= strip_length + left_slew_max = strip_length end i = left_slew_min @@ -103,8 +100,8 @@ class BeaconAnimation : animation.animation if right_slew_min < 0 right_slew_min = 0 end - if right_slew_max >= pixel_size - right_slew_max = pixel_size + if right_slew_max >= strip_length + right_slew_max = strip_length end i = right_slew_min diff --git a/lib/libesp32/berry_animation/src/animations/comet.be b/lib/libesp32/berry_animation/src/animations/comet.be index 8eb0fbf2c..ff43e68e3 100644 --- a/lib/libesp32/berry_animation/src/animations/comet.be +++ b/lib/libesp32/berry_animation/src/animations/comet.be @@ -53,16 +53,7 @@ class CometAnimation : animation.animation # Update animation state based on current time # # @param time_ms: int - current time in milliseconds - # @return bool - True if animation is still running, false if completed def update(time_ms) - # Call parent update method first - if !super(self).update(time_ms) - return false - end - - # Auto-fix time_ms and start_time - time_ms = self._fix_time_ms(time_ms) - # Cache parameter values for performance (read once, use multiple times) var current_speed = self.speed var current_direction = self.direction @@ -106,20 +97,15 @@ class CometAnimation : animation.animation self.direction = -current_direction end end - - return true end # Render the comet to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @return bool - True if frame was modified, false otherwise - def render(frame, time_ms) - if !self.is_running || frame == nil - return false - end - + def render(frame, time_ms, strip_length) # Get the integer position of the head (convert from 1/256th pixels to pixels) var head_pixel = self.head_position / 256 @@ -129,7 +115,6 @@ class CometAnimation : animation.animation var direction = self.direction var wrap_around = self.wrap_around var fade_factor = self.fade_factor - var strip_length = self.engine.strip_length # Extract color components from current color (ARGB format) var head_a = (current_color >> 24) & 0xFF diff --git a/lib/libesp32/berry_animation/src/animations/crenel_position.be b/lib/libesp32/berry_animation/src/animations/crenel_position.be index 75e47fa8e..763c2a750 100644 --- a/lib/libesp32/berry_animation/src/animations/crenel_position.be +++ b/lib/libesp32/berry_animation/src/animations/crenel_position.be @@ -37,18 +37,10 @@ class CrenelPositionAnimation : animation.animation # Render the crenel pattern to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to - # @param time_ms: int - Optional current time in milliseconds (defaults to self.engine.time_ms) + # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @return bool - True if frame was modified, false otherwise - 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) - - var pixel_size = frame.width - + def render(frame, time_ms, strip_length) # Access parameters via virtual members (automatically resolves ValueProviders) var back_color = self.back_color var pos = self.pos @@ -87,7 +79,7 @@ class CrenelPositionAnimation : animation.animation end # Render pulses - while (pos < pixel_size) && (nb_pulse != 0) + while (pos < strip_length) && (nb_pulse != 0) var i = 0 if pos < 0 i = -pos @@ -95,7 +87,7 @@ class CrenelPositionAnimation : animation.animation # Invariant: pos + i >= 0 # Draw the pulse pixels - while (i < pulse_size) && (pos + i < pixel_size) + while (i < pulse_size) && (pos + i < strip_length) frame.set_pixel_color(pos + i, color) i += 1 end diff --git a/lib/libesp32/berry_animation/src/animations/fire.be b/lib/libesp32/berry_animation/src/animations/fire.be index 9e769a81b..a4b85aa43 100644 --- a/lib/libesp32/berry_animation/src/animations/fire.be +++ b/lib/libesp32/berry_animation/src/animations/fire.be @@ -77,16 +77,7 @@ class FireAnimation : animation.animation # Update animation state based on current time # # @param time_ms: int - Current time in milliseconds - # @return bool - True if animation is still running, false if completed def update(time_ms) - # Call parent update method first - if !super(self).update(time_ms) - return false - end - - # Auto-fix time_ms and start_time - time_ms = self._fix_time_ms(time_ms) - # Check if it's time to update the fire simulation # Update frequency is based on flicker_speed (Hz) var flicker_speed = self.flicker_speed # Cache parameter value @@ -95,8 +86,6 @@ class FireAnimation : animation.animation self.last_update = time_ms self._update_fire_simulation(time_ms) end - - return true end # Update the fire simulation @@ -231,18 +220,10 @@ class FireAnimation : animation.animation # Render the fire to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to - # @param time_ms: int - Optional current time in milliseconds (defaults to engine time) + # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @return bool - True if frame was modified, false otherwise - 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) - - var strip_length = self.engine.strip_length - + def render(frame, time_ms, strip_length) # Render each pixel with its current color var i = 0 while i < strip_length diff --git a/lib/libesp32/berry_animation/src/animations/gradient.be b/lib/libesp32/berry_animation/src/animations/gradient.be index ed6193f04..cc68e93bc 100644 --- a/lib/libesp32/berry_animation/src/animations/gradient.be +++ b/lib/libesp32/berry_animation/src/animations/gradient.be @@ -64,9 +64,7 @@ class GradientAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Cache parameter values for performance var movement_speed = self.movement_speed @@ -83,8 +81,6 @@ class GradientAnimation : animation.animation # Calculate gradient colors self._calculate_gradient(time_ms) - - return true end # Calculate gradient colors for all pixels @@ -197,15 +193,7 @@ class GradientAnimation : animation.animation end # Render gradient to frame buffer - 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) - - var strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 while i < strip_length && i < frame.width if i < size(self.current_colors) diff --git a/lib/libesp32/berry_animation/src/animations/noise.be b/lib/libesp32/berry_animation/src/animations/noise.be index 26c1c972a..46a9a27f7 100644 --- a/lib/libesp32/berry_animation/src/animations/noise.be +++ b/lib/libesp32/berry_animation/src/animations/noise.be @@ -182,9 +182,7 @@ class NoiseAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Update time offset based on speed var current_speed = self.speed @@ -199,8 +197,6 @@ class NoiseAnimation : animation.animation # Calculate noise colors self._calculate_noise(time_ms) - - return true end # Calculate noise colors for all pixels @@ -230,15 +226,7 @@ class NoiseAnimation : animation.animation end # Render noise to frame buffer - 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) - - var strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 while i < strip_length if i < frame.width diff --git a/lib/libesp32/berry_animation/src/animations/palette_meter.be b/lib/libesp32/berry_animation/src/animations/palette_meter.be new file mode 100644 index 000000000..506372566 --- /dev/null +++ b/lib/libesp32/berry_animation/src/animations/palette_meter.be @@ -0,0 +1,148 @@ +# GradientMeterAnimation - VU meter style animation with palette gradient colors +# +# Displays a gradient-colored bar from the start of the strip up to a level (0-255). +# Includes optional peak hold indicator that shows the maximum level for a configurable time. +# +# Visual representation: +# level=128 (50%), peak at 200 +# [████████████████--------•-------] +# ^ ^ +# | peak indicator (single pixel) +# filled gradient area + +import "./core/param_encoder" as encode_constraints + +#@ solidify:GradientMeterAnimation,weak +class GradientMeterAnimation : animation.palette_gradient_animation + # Instance variables for peak tracking + var peak_level # Current peak level (0-255) + var peak_time # Time when peak was set (ms) + var _level # Cached value for 'self.level' + + # Parameter definitions - extends PaletteGradientAnimation params + static var PARAMS = animation.enc_params({ + # Inherited from PaletteGradientAnimation: color_source, shift_period, spatial_period, phase_shift + # New meter-specific parameters + "level": {"min": 0, "max": 255, "default": 255}, + "peak_hold": {"min": 0, "default": 1000} # 0 = disabled, >0 = hold time in ms + }) + + # Initialize a new GradientMeterAnimation + def init(engine) + super(self).init(engine) + + # Initialize peak tracking + self.peak_level = 0 + self.peak_time = 0 + self._level = 0 + + # Override gradient defaults for meter use - static gradient + self.shift_period = 0 + end + + # Override update to handle peak tracking with absolute time + def update(time_ms) + var peak_hold = self.peak_hold + + if peak_hold > 0 + var level = self.level + self._level = level # cache value to be used in 'render()' + var peak_level = self.peak_level + # Update peak tracking using absolute time + if level >= peak_level + # New peak detected, or rearm current peak + self.peak_level = level + self.peak_time = time_ms + elif peak_level > 0 + # Check if peak hold has expired + var elapsed_since_peak = time_ms - self.peak_time + if elapsed_since_peak > peak_hold + # Peak hold expired, reset to current level + self.peak_level = level + self.peak_time = time_ms + end + end + end + + # Call parent update (computes value_buffer with gradient values) + super(self).update(time_ms) + end + + # Override render to only display filled pixels and peak indicator + def render(frame, time_ms, strip_length) + var color_source = self.get_param('color_source') + if color_source == nil + return false + end + + var elapsed = time_ms - self.start_time + var level = self._level # use cached value in 'update()' + var peak_hold = self.peak_hold + + # Calculate fill position (how many pixels to fill) + var fill_pixels = tasmota.scale_uint(level, 0, 255, 0, strip_length) + + # Calculate peak pixel position + var peak_pixel = -1 + if peak_hold > 0 && self.peak_level > level + peak_pixel = tasmota.scale_uint(self.peak_level, 0, 255, 0, strip_length) - 1 + end + + + # Optimization for LUT patterns + var lut + if isinstance(color_source, animation.color_provider) && (lut := color_source.get_lut()) != nil + var lut_factor = color_source.LUT_FACTOR # default = 1, we have only 128 cached values + var lut_max = 256 >> lut_factor + var i = 0 + var frame_ptr = frame.pixels._buffer() + var lut_ptr = lut._buffer() + var buffer = self.value_buffer._buffer() + while (i < fill_pixels) + var byte_value = buffer[i] + var lut_index = byte_value >> lut_factor # Divide by 2 using bit shift + if byte_value == 255 + lut_index = lut_max + end + + var lut_color_ptr = lut_ptr + (lut_index << 2) # calculate the pointer for LUT color + frame_ptr[0] = lut_color_ptr[0] + frame_ptr[1] = lut_color_ptr[1] + frame_ptr[2] = lut_color_ptr[2] + frame_ptr[3] = lut_color_ptr[3] + + # advance to next + i += 1 + frame_ptr += 4 + end + else + # Render only filled pixels and peak indicator (leave rest transparent) + var i = 0 + while i < fill_pixels + var byte_value = self.value_buffer[i] + var color = color_source.get_color_for_value(byte_value, elapsed) + frame.set_pixel_color(i, color) + # Unfilled pixels stay transparent (not rendered) + i += 1 + end + end + + # Do we need to show peak pixel? + if peak_pixel >= fill_pixels + var byte_value = self.value_buffer[peak_pixel] + var color = color_source.get_color_for_value(byte_value, elapsed) + frame.set_pixel_color(peak_pixel, color) + end + + return true + end + + # String representation + def tostring() + var level = self.level + var peak_hold = self.peak_hold + return f"GradientMeterAnimation(level={level}, peak_hold={peak_hold}ms, peak={self.peak_level})" + end +end + +return {'palette_meter_animation': GradientMeterAnimation} diff --git a/lib/libesp32/berry_animation/src/animations/palette_pattern.be b/lib/libesp32/berry_animation/src/animations/palette_pattern.be index 4d2610efa..8771bcbcf 100644 --- a/lib/libesp32/berry_animation/src/animations/palette_pattern.be +++ b/lib/libesp32/berry_animation/src/animations/palette_pattern.be @@ -9,6 +9,8 @@ import "./core/param_encoder" as encode_constraints #@ solidify:PaletteGradientAnimation,weak class PaletteGradientAnimation : animation.animation var value_buffer # Buffer to store values for each pixel (bytes object) + var _spatial_period # Cached spatial_period for static pattern optimization + var _phase_shift # Cached phase_shift for static pattern optimization # Static definitions of parameters with constraints static var PARAMS = animation.enc_params({ @@ -29,9 +31,6 @@ class PaletteGradientAnimation : animation.animation # Initialize non-parameter instance variables only self.value_buffer = bytes() - # Set default name - self.name = "palette_gradient" - # Initialize value buffer with default frame width self._initialize_value_buffer() end @@ -52,9 +51,23 @@ class PaletteGradientAnimation : animation.animation # Update the value buffer to generate gradient pattern def _update_value_buffer(time_ms, strip_length) # Cache parameter values for performance - var shift_period = self.shift_period - var spatial_period = self.spatial_period - var phase_shift = self.phase_shift + var shift_period = self.member("shift_period") + var spatial_period = self.member("spatial_period") + var phase_shift = self.member("phase_shift") + + # Optimization: for static patterns (shift_period == 0), skip recomputation + # if spatial_period, phase_shift, and strip_length haven't changed + if shift_period == 0 + if self._spatial_period != nil && + self._spatial_period == spatial_period && + self._phase_shift == phase_shift && + size(self.value_buffer) == strip_length + return # No changes, skip recomputation + end + # Update cached values + self._spatial_period = spatial_period + self._phase_shift = phase_shift + end # Determine effective spatial period (0 means full strip) var effective_spatial_period = spatial_period > 0 ? spatial_period : strip_length @@ -97,16 +110,7 @@ class PaletteGradientAnimation : animation.animation # Update animation state based on current time # # @param time_ms: int - Current time in milliseconds - # @return bool - True if animation is still running, false if completed def update(time_ms) - # Call parent update method first - if !super(self).update(time_ms) - 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 @@ -119,31 +123,21 @@ class PaletteGradientAnimation : animation.animation # Update the value buffer self._update_value_buffer(elapsed, strip_length) - - return true end # Render the pattern to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to - # @param time_ms: int - Optional current time in milliseconds (defaults to engine time) + # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @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) - + def render(frame, time_ms, strip_length) # Get current parameter values (cached for performance) var color_source = self.get_param('color_source') # use get_param to avoid resolving of color_provider if color_source == nil return false end - # Calculate elapsed time since animation started - var elapsed = time_ms - self.start_time - - # Apply colors from the color source to each pixel based on its value - var strip_length = self.engine.strip_length - # Optimization for LUT patterns var lut if isinstance(color_source, animation.color_provider) && (lut := color_source.get_lut()) != nil @@ -171,6 +165,8 @@ class PaletteGradientAnimation : animation.animation frame_ptr += 4 end else # no LUT, do one color at a time + # Calculate elapsed time since animation started + var elapsed = time_ms - self.start_time var i = 0 while (i < strip_length) var byte_value = self.value_buffer[i] @@ -202,54 +198,6 @@ class PaletteGradientAnimation : animation.animation end end -# Value meter pattern animation - creates meter/bar patterns based on a value function -#@ solidify:PaletteMeterAnimation,weak -class PaletteMeterAnimation : PaletteGradientAnimation - # Static definitions of parameters with constraints - static var PARAMS = animation.enc_params({ - # Meter-specific parameters only - "value_func": {"default": nil, "type": "function"} - }) - - # Initialize a new meter pattern animation - # - # @param engine: AnimationEngine - Required animation engine reference - def init(engine) - # Call parent constructor - super(self).init(engine) - - # Set default name - self.name = "palette_meter" - end - - # Override _update_value_buffer to generate meter pattern directly - def _update_value_buffer(time_ms, strip_length) - # Cache parameter values for performance - var value_func = self.value_func - if value_func == nil - return - end - - # Cache engine reference to avoid dereferencing - var engine = self.engine - - # Get the current value - var current_value = value_func(engine, time_ms, self) - - # Calculate the meter position using scale_uint for better precision - var meter_position = tasmota.scale_uint(current_value, 0, 255, 0, strip_length) - - # Calculate values for each pixel - var i = 0 - while i < strip_length - # Return 255 if pixel is within the meter, 0 otherwise - self.value_buffer[i] = i < meter_position ? 255 : 0 - i += 1 - end - end -end - return { - 'palette_gradient_animation': PaletteGradientAnimation, - 'palette_meter_animation': PaletteMeterAnimation + 'palette_gradient_animation': PaletteGradientAnimation } \ No newline at end of file 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 33b2de104..1fe626c9c 100644 --- a/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be +++ b/lib/libesp32/berry_animation/src/animations/rich_palette_animation.be @@ -29,9 +29,6 @@ class RichPaletteAnimation : animation.animation def init(engine) super(self).init(engine) # Initialize Animation base class - # Set default name (override inherited default) - self.name = "rich_palette" - # Create internal RichPaletteColorProvider instance self.color_provider = animation.rich_palette(engine) @@ -71,7 +68,7 @@ class RichPaletteAnimation : animation.animation # String representation def tostring() try - return f"RichPaletteAnimation({self.name}, cycle_period={self.cycle_period}, brightness={self.brightness})" + return f"RichPaletteAnimation(cycle_period={self.cycle_period}, brightness={self.brightness})" except .. return "RichPaletteAnimation(uninitialized)" end diff --git a/lib/libesp32/berry_animation/src/animations/solid.be b/lib/libesp32/berry_animation/src/animations/solid.be index 0d447e769..f79d67cde 100644 --- a/lib/libesp32/berry_animation/src/animations/solid.be +++ b/lib/libesp32/berry_animation/src/animations/solid.be @@ -10,8 +10,6 @@ def solid(engine) # Create animation with engine-only constructor var anim = animation.animation(engine) - anim.name = "solid" - return anim end diff --git a/lib/libesp32/berry_animation/src/animations/twinkle.be b/lib/libesp32/berry_animation/src/animations/twinkle.be index 10b1d0bcf..29ff23e88 100644 --- a/lib/libesp32/berry_animation/src/animations/twinkle.be +++ b/lib/libesp32/berry_animation/src/animations/twinkle.be @@ -10,7 +10,6 @@ class TwinkleAnimation : animation.animation # NO instance variables for parameters - they are handled by the virtual parameter system # Non-parameter instance variables only - var twinkle_states # Array storing twinkle state for each pixel var current_colors # bytes() buffer storing ARGB colors (4 bytes per pixel) var last_update # Last update time for timing var random_seed # Seed for random number generation @@ -33,32 +32,28 @@ class TwinkleAnimation : animation.animation super(self).init(engine) # Initialize non-parameter instance variables only - self.twinkle_states = [] self.current_colors = bytes() # Use bytes() buffer for ARGB colors (4 bytes per pixel) self.last_update = 0 # Initialize random seed using engine time self.random_seed = self.engine.time_ms % 65536 - # Initialize arrays based on strip length from engine + # Initialize buffer based on strip length from engine self._initialize_arrays() end - # Initialize arrays based on current strip length + # Initialize buffer based on current strip length def _initialize_arrays() var strip_length = self.engine.strip_length - # Resize arrays - self.twinkle_states.resize(strip_length) - # Create new bytes() buffer for colors (4 bytes per pixel: ARGB) + # Alpha channel serves as the active state: alpha=0 means off, alpha>0 means active self.current_colors.clear() self.current_colors.resize(strip_length * 4) - # Initialize all pixels to off state + # Initialize all pixels to off state (transparent = alpha 0) var i = 0 while i < strip_length - self.twinkle_states[i] = 0 # 0 = off, >0 = brightness level self.current_colors.set(i * 4, 0x00000000, -4) # Transparent (alpha = 0) i += 1 end @@ -102,16 +97,7 @@ class TwinkleAnimation : animation.animation # Update animation state based on current time # # @param time_ms: int - Current time in milliseconds - # @return bool - True if animation is still running, false if completed def update(time_ms) - # Call parent update method first - if !super(self).update(time_ms) - return false - 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 @@ -122,8 +108,6 @@ class TwinkleAnimation : animation.animation self.last_update = time_ms self._update_twinkle_simulation(time_ms) end - - return true end # Update the twinkle simulation with alpha-based fading @@ -137,8 +121,8 @@ class TwinkleAnimation : animation.animation var strip_length = self.engine.strip_length - # Ensure arrays are properly sized - if size(self.twinkle_states) != strip_length || self.current_colors.size() != strip_length * 4 + # Ensure buffer is properly sized + if self.current_colors.size() != strip_length * 4 self._initialize_arrays() end @@ -153,7 +137,6 @@ class TwinkleAnimation : animation.animation var fade_amount = tasmota.scale_uint(fade_speed, 0, 255, 1, 20) if alpha <= fade_amount # Star has faded completely - reset to transparent - self.twinkle_states[i] = 0 self.current_colors.set(i * 4, 0x00000000, -4) else # Reduce alpha while keeping RGB components unchanged @@ -169,8 +152,11 @@ class TwinkleAnimation : animation.animation # For each pixel, check if it should twinkle based on density probability var j = 0 while j < strip_length - # Only consider pixels that are currently off (transparent) - if self.twinkle_states[j] == 0 + # Only consider pixels that are currently off (alpha = 0) + var current_color = self.current_colors.get(j * 4, -4) + var alpha = (current_color >> 24) & 0xFF + + if alpha == 0 # Use density as probability out of 255 if self._random_range(255) < density # Create new star at full brightness with random intensity alpha @@ -185,7 +171,6 @@ class TwinkleAnimation : animation.animation var b = base_color & 0xFF # Create new star with full-brightness color and variable alpha - self.twinkle_states[j] = 1 # Mark as active (non-zero) self.current_colors.set(j * 4, (star_alpha << 24) | (r << 16) | (g << 8) | b, -4) end end @@ -196,20 +181,12 @@ class TwinkleAnimation : animation.animation # Render the twinkle to the provided frame buffer # # @param frame: FrameBuffer - The frame buffer to render to - # @param time_ms: int - Optional current time in milliseconds (defaults to self.engine.time_ms) + # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @return bool - True if frame was modified, false otherwise - 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) - - var strip_length = self.engine.strip_length - - # Ensure arrays are properly sized - if size(self.twinkle_states) != strip_length || self.current_colors.size() != strip_length * 4 + def render(frame, time_ms, strip_length) + # Ensure buffer is properly sized + if self.current_colors.size() != strip_length * 4 self._initialize_arrays() end diff --git a/lib/libesp32/berry_animation/src/animations/wave.be b/lib/libesp32/berry_animation/src/animations/wave.be index 8c5fcf847..dc3858dda 100644 --- a/lib/libesp32/berry_animation/src/animations/wave.be +++ b/lib/libesp32/berry_animation/src/animations/wave.be @@ -97,9 +97,7 @@ class WaveAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Update time offset based on wave speed var current_wave_speed = self.wave_speed @@ -114,8 +112,6 @@ class WaveAnimation : animation.animation # Calculate wave colors self._calculate_wave(time_ms) - - return true end # Calculate wave colors for all pixels @@ -197,15 +193,7 @@ class WaveAnimation : animation.animation end # Render wave to frame buffer - 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) - - var strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 while i < strip_length if i < frame.width && i < self.current_colors.size() diff --git a/lib/libesp32/berry_animation/src/animations_future/bounce.be b/lib/libesp32/berry_animation/src/animations_future/bounce.be index d4193ca31..014a0dc2c 100644 --- a/lib/libesp32/berry_animation/src/animations_future/bounce.be +++ b/lib/libesp32/berry_animation/src/animations_future/bounce.be @@ -102,9 +102,7 @@ class BounceAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Initialize last_update_time on first update if self.last_update_time == 0 @@ -114,7 +112,7 @@ class BounceAnimation : animation.animation # Calculate time delta var dt = time_ms - self.last_update_time if dt <= 0 - return true + return end self.last_update_time = time_ms @@ -132,8 +130,6 @@ class BounceAnimation : animation.animation # Calculate bounced colors self._calculate_bounce() - - return true end # Update bounce physics @@ -220,14 +216,9 @@ class BounceAnimation : animation.animation end # Render bounce to frame buffer - def render(frame, time_ms) - if !self.is_running || frame == nil - return false - end - - var current_strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 - while i < current_strip_length + while i < strip_length if i < frame.width frame.set_pixel_color(i, self.current_colors[i]) end @@ -255,7 +246,6 @@ def bounce_basic(engine) bounce.bounce_range = 0 # full strip range bounce.damping = 250 bounce.gravity = 0 - bounce.name = "bounce_basic" return bounce end @@ -269,7 +259,6 @@ def bounce_gravity(engine) bounce.bounce_range = 0 # full strip range bounce.damping = 240 bounce.gravity = 128 - bounce.name = "bounce_gravity" return bounce end @@ -283,7 +272,6 @@ def bounce_constrained(engine) bounce.bounce_range = 15 # constrained range bounce.damping = 250 bounce.gravity = 0 - bounce.name = "bounce_constrained" return bounce end diff --git a/lib/libesp32/berry_animation/src/animations_future/jitter.be b/lib/libesp32/berry_animation/src/animations_future/jitter.be index 137fe9178..6208f3c5e 100644 --- a/lib/libesp32/berry_animation/src/animations_future/jitter.be +++ b/lib/libesp32/berry_animation/src/animations_future/jitter.be @@ -89,9 +89,7 @@ class JitterAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Cache parameter values for performance var jitter_frequency = self.jitter_frequency @@ -116,8 +114,6 @@ class JitterAnimation : animation.animation # Calculate jittered colors self._calculate_jitter() - - return true end # Update jitter offsets @@ -237,17 +233,9 @@ class JitterAnimation : animation.animation end # Render jitter to frame buffer - 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) - - var current_strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 - while i < current_strip_length + while i < strip_length if i < frame.width frame.set_pixel_color(i, self.current_colors[i]) end diff --git a/lib/libesp32/berry_animation/src/animations_future/plasma.be b/lib/libesp32/berry_animation/src/animations_future/plasma.be index 7eaef6ab6..94b0bfafb 100644 --- a/lib/libesp32/berry_animation/src/animations_future/plasma.be +++ b/lib/libesp32/berry_animation/src/animations_future/plasma.be @@ -100,9 +100,7 @@ class PlasmaAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Update time phase based on speed var current_time_speed = self.time_speed @@ -117,8 +115,6 @@ class PlasmaAnimation : animation.animation # Calculate plasma colors self._calculate_plasma(time_ms) - - return true end # Calculate plasma colors for all pixels @@ -184,15 +180,7 @@ class PlasmaAnimation : animation.animation end # Render plasma to frame buffer - 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) - - var strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 while i < strip_length if i < frame.width @@ -230,7 +218,6 @@ def plasma_rainbow(engine) # Use default rainbow color (nil triggers rainbow in on_param_changed) anim.color = nil anim.time_speed = 50 - anim.name = "plasma_rainbow" return anim end @@ -244,7 +231,6 @@ def plasma_fast(engine) anim.time_speed = 150 anim.freq_x = 48 anim.freq_y = 35 - anim.name = "plasma_fast" return anim end diff --git a/lib/libesp32/berry_animation/src/animations_future/scale.be b/lib/libesp32/berry_animation/src/animations_future/scale.be index 1ebdc5288..584961ba5 100644 --- a/lib/libesp32/berry_animation/src/animations_future/scale.be +++ b/lib/libesp32/berry_animation/src/animations_future/scale.be @@ -69,9 +69,7 @@ class ScaleAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Cache parameter values for performance var current_scale_speed = self.scale_speed @@ -98,8 +96,6 @@ class ScaleAnimation : animation.animation # Calculate scaled colors self._calculate_scale() - - return true end # Calculate current scale factor based on mode @@ -235,17 +231,9 @@ class ScaleAnimation : animation.animation end # Render scale to frame buffer - def render(frame, time_ms) - if 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.strip_length + def render(frame, time_ms, strip_length) var i = 0 - while i < current_strip_length + while i < strip_length if i < frame.width frame.set_pixel_color(i, self.current_colors[i]) end diff --git a/lib/libesp32/berry_animation/src/animations_future/shift.be b/lib/libesp32/berry_animation/src/animations_future/shift.be index 049cdf3c8..ac8b3c9bb 100644 --- a/lib/libesp32/berry_animation/src/animations_future/shift.be +++ b/lib/libesp32/berry_animation/src/animations_future/shift.be @@ -56,9 +56,7 @@ class ShiftAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Cache parameter values for performance var current_shift_speed = self.shift_speed @@ -95,8 +93,6 @@ class ShiftAnimation : animation.animation # Calculate shifted colors self._calculate_shift() - - return true end # Calculate shifted colors for all pixels @@ -152,17 +148,9 @@ class ShiftAnimation : animation.animation end # Render shift to frame buffer - 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) - - var current_strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 - while i < current_strip_length + while i < strip_length if i < frame.width frame.set_pixel_color(i, self.current_colors[i]) end diff --git a/lib/libesp32/berry_animation/src/animations_future/sparkle.be b/lib/libesp32/berry_animation/src/animations_future/sparkle.be index ffcfaf6ba..ba8dbdea0 100644 --- a/lib/libesp32/berry_animation/src/animations_future/sparkle.be +++ b/lib/libesp32/berry_animation/src/animations_future/sparkle.be @@ -94,21 +94,17 @@ class SparkleAnimation : animation.animation # Update animation state def update(time_ms) - if !super(self).update(time_ms) - return false - end + super(self).update(time_ms) # Update at approximately 30 FPS var update_interval = 33 # ~30 FPS if time_ms - self.last_update < update_interval - return true + return end self.last_update = time_ms # Update sparkle simulation self._update_sparkles(time_ms) - - return true end # Update sparkle states and create new sparkles @@ -198,17 +194,9 @@ class SparkleAnimation : animation.animation end # Render sparkles to frame buffer - 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) - - var current_strip_length = self.engine.strip_length + def render(frame, time_ms, strip_length) var i = 0 - while i < current_strip_length + while i < strip_length if i < frame.width frame.set_pixel_color(i, self.current_colors[i]) end @@ -241,7 +229,6 @@ end def sparkle_white(engine) var anim = animation.sparkle_animation(engine) anim.color = 0xFFFFFFFF # white sparkles - anim.name = "sparkle_white" return anim end @@ -256,7 +243,6 @@ def sparkle_rainbow(engine) var anim = animation.sparkle_animation(engine) anim.color = rainbow_provider - anim.name = "sparkle_rainbow" return anim end diff --git a/lib/libesp32/berry_animation/src/core/animation_base.be b/lib/libesp32/berry_animation/src/core/animation_base.be index 442af298e..91623e808 100644 --- a/lib/libesp32/berry_animation/src/core/animation_base.be +++ b/lib/libesp32/berry_animation/src/core/animation_base.be @@ -18,7 +18,7 @@ class Animation : animation.parameterized_object # Parameter definitions (extends Playable's PARAMS) static var PARAMS = animation.enc_params({ # Inherited from Playable: is_running - "name": {"type": "string", "default": "animation"}, # Optional name for the animation + "id": {"type": "string", "default": ""}, # Optional id for the animation "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 @@ -40,15 +40,7 @@ class Animation : animation.parameterized_object # This method should be called regularly by the animation engine # # @param time_ms: int - Current time in milliseconds - # @return bool - True if animation is still running, false if completed def update(time_ms) - # do nothing if not running - if (!self.is_running) return false end - - # auto-fix time_ms and start_time - time_ms = self._fix_time_ms(time_ms) - - # Access parameters via virtual members var current_duration = self.duration @@ -66,12 +58,9 @@ class Animation : animation.parameterized_object # Animation completed, make it inactive # Set directly in values map to avoid triggering on_param_changed self.is_running = false - return false end end end - - return true end # Render the animation to the provided frame buffer @@ -79,12 +68,11 @@ class Animation : animation.parameterized_object # # @param frame: FrameBuffer - The frame buffer to render to # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels # @return bool - True if frame was modified, false otherwise - def render(frame, time_ms) - if (!self.is_running) return false end - + def render(frame, time_ms, strip_length) # Access parameters via virtual members (auto-resolves ValueProviders) - var current_color = self.color + var current_color = self.member("color") # Fill the entire frame with the current color if not transparent if (current_color != 0x00000000) @@ -98,7 +86,8 @@ 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) + # @param strip_length: int - Length of the LED strip in pixels + def post_render(frame, time_ms, strip_length) # no need to auto-fix time_ms and start_time # Handle opacity - can be number, frame buffer, or animation var current_opacity = self.opacity @@ -109,7 +98,7 @@ class Animation : animation.parameterized_object frame.apply_opacity(frame.pixels, current_opacity) else # Opacity is a frame buffer - self._apply_opacity(frame, current_opacity, time_ms) + self._apply_opacity(frame, current_opacity, time_ms, strip_length) end end @@ -118,7 +107,8 @@ class Animation : animation.parameterized_object # @param frame: FrameBuffer - The frame buffer to apply opacity to # @param opacity: int|Animation - Opacity value or animation # @param time_ms: int - Current time in milliseconds - def _apply_opacity(frame, opacity, time_ms) + # @param strip_length: int - Length of the LED strip in pixels + def _apply_opacity(frame, opacity, time_ms, strip_length) # Check if opacity is an animation instance if isinstance(opacity, animation.animation) # Animation mode: render opacity animation to frame buffer and use as mask @@ -139,7 +129,7 @@ class Animation : animation.parameterized_object # Update and render opacity animation opacity_animation.update(time_ms) - opacity_animation.render(self.opacity_frame, time_ms) + opacity_animation.render(self.opacity_frame, time_ms, strip_length) # Use rendered frame buffer as opacity mask frame.apply_opacity(frame.pixels, self.opacity_frame.pixels) @@ -166,7 +156,7 @@ class Animation : animation.parameterized_object # String representation of the animation def tostring() - return f"Animation({self.name}, priority={self.priority}, duration={self.duration}, loop={self.loop}, running={self.is_running})" + return f"Animation(priority={self.priority}, duration={self.duration}, loop={self.loop}, running={self.is_running})" end end diff --git a/lib/libesp32/berry_animation/src/core/animation_engine.be b/lib/libesp32/berry_animation/src/core/animation_engine.be index efdaf1ebb..51d1f67ff 100644 --- a/lib/libesp32/berry_animation/src/core/animation_engine.be +++ b/lib/libesp32/berry_animation/src/core/animation_engine.be @@ -74,7 +74,6 @@ class AnimationEngine # Create root EngineProxy to manage all children self.root_animation = animation.engine_proxy(self) - self.root_animation.name = "root" # Initialize state self.is_running = false @@ -455,11 +454,11 @@ class AnimationEngine end # Interrupt specific animation by name - def interrupt_animation(name) + def interrupt_animation(id) var i = 0 while i < size(self.root_animation.children) var child = self.root_animation.children[i] - if isinstance(child, animation.animation) && child.name != nil && child.name == name + if isinstance(child, animation.animation) && child.id == id child.stop() self.root_animation.children.remove(i) return diff --git a/lib/libesp32/berry_animation/src/core/engine_proxy.be b/lib/libesp32/berry_animation/src/core/engine_proxy.be index 91e1c7ec6..3957b361b 100644 --- a/lib/libesp32/berry_animation/src/core/engine_proxy.be +++ b/lib/libesp32/berry_animation/src/core/engine_proxy.be @@ -254,7 +254,14 @@ class EngineProxy : animation.animation idx += 1 end - # Start all animations SECOND (they use values from providers and sequences) + # Start all value providers SECOND (they provide dynamic values) + idx = 0 + while idx < size(self.value_providers) + self.value_providers[idx].start(time_ms) + idx += 1 + end + + # Start all animations THIRD (they use values from providers and sequences) idx = 0 while idx < size(self.animations) self.animations[idx].start(time_ms) @@ -306,24 +313,27 @@ class EngineProxy : animation.animation # Update the hybrid animation and all its children # # @param time_ms: int - Current time in milliseconds - # @return bool - True if still running, false if completed def update(time_ms) # Cache time for child access - self.time_ms = time_ms - self.strip_length = self.engine.strip_length + self.time_ms = time_ms # We have 'self.time' attribute to mimick 'engine' behavior + self.strip_length = self.engine.strip_length # We have 'self.strip_length' attribute to mimick 'engine' behavior # Update parent animation state - var still_running = super(self).update(time_ms) - - if !still_running - return false - end + super(self).update(time_ms) # Update all value providers FIRST (they may produce values used by sequences and animations) var idx = 0 var sz = size(self.value_providers) while idx < sz - self.value_providers[idx].update(time_ms) + var vp = self.value_providers[idx] + if vp.is_running + # Set start time if needed + if vp.start_time == nil + vp.start_time = time_ms + end + # Call actual update + vp.update(time_ms) + end idx += 1 end @@ -331,7 +341,15 @@ class EngineProxy : animation.animation idx = 0 sz = size(self.sequences) while idx < sz - self.sequences[idx].update(time_ms) + var sq = self.sequences[idx] + if sq.is_running + # Set start time if needed + if sq.start_time == nil + sq.start_time = time_ms + end + # Call actual update + sq.update(time_ms) + end idx += 1 end @@ -339,11 +357,17 @@ class EngineProxy : animation.animation idx = 0 sz = size(self.animations) while idx < sz - var child = self.animations[idx].update(time_ms) + var an = self.animations[idx] + if an.is_running + # Set start time if needed + if an.start_time == nil + an.start_time = time_ms + end + # Call actual update + an.update(time_ms) + end idx += 1 end - - return true end # Render the hybrid animation @@ -351,12 +375,18 @@ class EngineProxy : animation.animation # # @param frame: FrameBuffer - The frame buffer to render to # @param time_ms: int - Current time in milliseconds + # @param strip_length: int - Length of the LED strip in pixels (optional, defaults to self.strip_length) # @return bool - True if frame was modified, false otherwise - def render(frame, time_ms) + def render(frame, time_ms, strip_length) if !self.is_running || frame == nil return false end + # Use cached strip_length if not provided + if strip_length == nil + strip_length = self.strip_length + end + # # update sequences first # var i = 0 # while i < size(self.sequences) @@ -367,7 +397,7 @@ class EngineProxy : animation.animation var modified = false # We don't call super method for optimization, skipping color computation - # modified = super(self).render(frame, time_ms) + # modified = super(self).render(frame, time_ms, strip_length) # Render all child animations (but not sequences - they don't render) var idx = 0 @@ -380,11 +410,11 @@ class EngineProxy : animation.animation self.temp_buffer.clear() # Render child - var child_rendered = child.render(self.temp_buffer, time_ms) + var child_rendered = child.render(self.temp_buffer, time_ms, strip_length) if child_rendered # Apply child's post-processing - child.post_render(self.temp_buffer, time_ms) + child.post_render(self.temp_buffer, time_ms, strip_length) # Blend child into main frame frame.blend_pixels(frame.pixels, self.temp_buffer.pixels) @@ -446,7 +476,7 @@ class EngineProxy : animation.animation # String representation def tostring() - return f"{classname(self)}({self.name}, animations={size(self.animations)}, sequences={size(self.sequences)}, value_providers={size(self.value_providers)}, running={self.is_running})" + return f"{classname(self)}(animations={size(self.animations)}, sequences={size(self.sequences)}, value_providers={size(self.value_providers)}, running={self.is_running})" end end diff --git a/lib/libesp32/berry_animation/src/core/parameterized_object.be b/lib/libesp32/berry_animation/src/core/parameterized_object.be index cbf418b5c..90c532a9a 100644 --- a/lib/libesp32/berry_animation/src/core/parameterized_object.be +++ b/lib/libesp32/berry_animation/src/core/parameterized_object.be @@ -108,14 +108,16 @@ class ParameterizedObject # end # Check if it's a parameter (either set in values or defined in PARAMS) # Implement a fast-track if the value exists - if self.values.contains(name) - var value = self.values[name] + + # main case, the value is numerical and present, so `find()` will get it in one search + var value = self.values.find(name) + if (value != nil) # in not nil, there is a value if type(value) != "instance" return value end - - # Apply produce_value() if it' a ValueProvider return self.resolve_value(value, name, self.engine.time_ms) + elif self.values.contains(name) # second case, nil is the actual value (and not returned because not found) + return nil else # Return default if available from class hierarchy var encoded_constraints = self._get_param_def(name) @@ -375,9 +377,6 @@ class ParameterizedObject 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 @@ -428,10 +427,8 @@ class ParameterizedObject # Subclasses must override this to implement their update logic # # @param time_ms: int - Current time in milliseconds - # @return bool - True if object is still running, false if completed def update(time_ms) - # Default implementation just returns running state - return self.is_running + # Default implementation does nothing - subclasses override as needed end # Method called when a parameter is changed diff --git a/lib/libesp32/berry_animation/src/core/sequence_manager.be b/lib/libesp32/berry_animation/src/core/sequence_manager.be index 758d019c4..ccce33a82 100644 --- a/lib/libesp32/berry_animation/src/core/sequence_manager.be +++ b/lib/libesp32/berry_animation/src/core/sequence_manager.be @@ -177,10 +177,14 @@ class SequenceManager : animation.parameterized_object end # Update sequence state - called from fast_loop - # Returns true if still running, false if completed def update(current_time) if !self.is_running || size(self.steps) == 0 - return false + return + end + + # Safety check: ensure step_index is valid + if self.step_index >= size(self.steps) + return end var current_step = self.steps[self.step_index] @@ -189,7 +193,8 @@ class SequenceManager : animation.parameterized_object if current_step["type"] == "subsequence" # Handle sub-sequence (including repeat sequences) var sub_seq = current_step["sequence_manager"] - if !sub_seq.update(current_time) + sub_seq.update(current_time) + if !sub_seq.is_running # Sub-sequence finished, advance to next step self.advance_to_next_step(current_time) end @@ -221,8 +226,6 @@ class SequenceManager : animation.parameterized_object self.advance_to_next_step(current_time) end end - - return self.is_running end # Execute the current step diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index 17e28cd9d..0836c09de 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -46,15 +46,10 @@ class SimpleDSLTranspiler self.instance_for_validation = instance_for_validation # nil by default end - # Check if this expression needs closure wrapping + # Check if this expression needs closure/function wrapping def needs_closure() return self.has_dynamic end - - # Check if this expression needs function wrapping - def needs_function() - return self.has_dynamic - end # String representation for debugging def tostring() @@ -367,46 +362,6 @@ class SimpleDSLTranspiler end end - # Transpile template body (similar to main transpile but without imports/engine start) - def transpile_template_body() - try - # Process all statements in template body until we hit the closing brace - var brace_depth = 0 - while !self.at_end() - var tok = self.current() - - # Check for template end condition - if tok != nil && tok.type == 27 #-animation_dsl.Token.RIGHT_BRACE-# && brace_depth == 0 - # This is the closing brace of the template - stop processing - break - end - - # Track brace depth for nested braces - if tok != nil && tok.type == 26 #-animation_dsl.Token.LEFT_BRACE-# - brace_depth += 1 - elif tok != nil && tok.type == 27 #-animation_dsl.Token.RIGHT_BRACE-# - brace_depth -= 1 - end - - self.process_statement() - end - - # For templates, process run statements immediately instead of collecting them - if size(self.run_statements) > 0 - for run_stmt : self.run_statements - var obj_name = run_stmt["name"] - var comment = run_stmt["comment"] - # In templates, use underscore suffix for local variables - self.add(f"engine.add({obj_name}_){comment}") - end - end - - return self.join_output() - except .. as e, msg - self.error(f"Template body transpilation failed: {msg}") - end - end - # Transpile template animation body (for engine_proxy classes) # Similar to template body but uses self.add() instead of engine.add() def transpile_template_animation_body() @@ -1430,9 +1385,8 @@ class SimpleDSLTranspiler def process_value(context) var result = self.process_additive_expression(context, true, false) # true = top-level, false = not raw mode # Handle closure wrapping for top-level expressions (not in raw mode) only if there is computation needed - # print(f"> process_value {context=} {result.needs_function()=} {result=}") if (((context == self.CONTEXT_VARIABLE) || (context == self.CONTEXT_PROPERTY)) && result.needs_closure()) - || ((context == self.CONTEXT_REPEAT_COUNT) && result.needs_function()) + || ((context == self.CONTEXT_REPEAT_COUNT) && result.needs_closure()) # Special handling for repeat_count context - always create simple function for property access if context == self.CONTEXT_REPEAT_COUNT # print(f">>> CONTEXT_REPEAT_COUNT") @@ -2317,11 +2271,14 @@ class SimpleDSLTranspiler self.error(f"Cannot redefine predefined color '{name}'. Use a different name like '{name}_custom' or 'my_{name}'") return false elif entry.is_builtin - self.error(f"Cannot redefine built-in symbol '{name}' (type: {entry.type}). Use a different name like '{name}_custom' or 'my_{name}'") + self.error(f"Cannot redefine built-in symbol '{name}'. Use a different name like '{name}_custom' or 'my_{name}'") return false + elif definition_type == "extern function" && entry.type == 5 #-animation_dsl._symbol_entry.TYPE_USER_FUNCTION-# + # Allow duplicate extern function declarations for the same function + return true else # User-defined symbol already exists - this is a redefinition error - self.error(f"Symbol '{name}' is already defined as {entry.type}. Cannot redefine as {definition_type}.") + self.error(f"Symbol '{name}' is already defined. Cannot redefine as {definition_type}.") return false end @@ -2389,11 +2346,8 @@ class SimpleDSLTranspiler end def join_output() - var result = "" - for line : self.output - result += line + "\n" - end - return result + # Use list.concat() for O(n) performance instead of O(n²) string concatenation + return self.output.concat("\n") + "\n" end def error(msg) @@ -2729,6 +2683,15 @@ class SimpleDSLTranspiler var inline_comment = self.collect_inline_comment() + # Check if already declared (duplicate extern function is allowed, skip code generation) + if self.symbol_table.contains(func_name) + var entry = self.symbol_table.get(func_name) + if entry != nil && entry.type == 5 #-animation_dsl._symbol_entry.TYPE_USER_FUNCTION-# + # Already declared as extern function, skip duplicate registration + return + end + end + # Validate function name self.validate_user_name(func_name, "extern function") 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 1e53b264b..83e3b01a2 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 @@ -239,7 +239,6 @@ class RichPaletteColorProvider : animation.color_provider # Subclasses must override this to implement their update logic # # @param time_ms: int - Current time in milliseconds - # @return bool - True if object is still running, false if completed def update(time_ms) # Rebuild LUT if dirty if self._lut_dirty || self._color_lut == nil @@ -247,9 +246,7 @@ class RichPaletteColorProvider : animation.color_provider end # Cache the brightness to an instance variable for this tick - self._brightness = self.brightness - - return self.is_running + self._brightness = self.member("brightness") end # Produce a color value for any parameter name (optimized version from Animate_palette) diff --git a/lib/libesp32/berry_animation/src/providers/value_provider.be b/lib/libesp32/berry_animation/src/providers/value_provider.be index 0d8c0caa9..7f844aa00 100644 --- a/lib/libesp32/berry_animation/src/providers/value_provider.be +++ b/lib/libesp32/berry_animation/src/providers/value_provider.be @@ -35,16 +35,6 @@ class ValueProvider : animation.parameterized_object def produce_value(name, time_ms) return module("undefined") # Default behavior - return undefined end - - # Update object state based on current time - # Subclasses must override this to implement their update logic - # - # @param time_ms: int - Current time in milliseconds - # @return bool - True if object is still running, false if completed - def update(time_ms) - # Default implementation just returns running state - return self.is_running - end end # Add a method to check if an object is a value provider diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index 489f44058..9539d1325 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -1629,34 +1629,32 @@ be_local_closure(gradient_two_color_linear, /* name */ ); /*******************************************************************/ -// compact class 'CometAnimation' ktab size: 26, total: 47 (saved 168 bytes) -static const bvalue be_ktab_class_CometAnimation[26] = { - /* K0 */ be_nested_str_weak(update), - /* K1 */ be_nested_str_weak(_fix_time_ms), - /* K2 */ be_nested_str_weak(speed), - /* K3 */ be_nested_str_weak(direction), - /* K4 */ be_nested_str_weak(wrap_around), - /* K5 */ be_nested_str_weak(engine), - /* K6 */ be_nested_str_weak(strip_length), - /* K7 */ be_nested_str_weak(start_time), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(head_position), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(init), - /* K12 */ be_nested_str_weak(animation), - /* K13 */ be_nested_str_weak(is_value_provider), - /* K14 */ be_nested_str_weak(color), - /* K15 */ be_nested_str_weak(0x_X2508x), - /* K16 */ be_nested_str_weak(CometAnimation_X28color_X3D_X25s_X2C_X20head_pos_X3D_X25_X2E1f_X2C_X20tail_length_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20direction_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K17 */ be_nested_str_weak(tail_length), - /* K18 */ be_nested_str_weak(priority), - /* K19 */ be_nested_str_weak(is_running), - /* K20 */ be_nested_str_weak(fade_factor), - /* K21 */ be_nested_str_weak(tasmota), - /* K22 */ be_nested_str_weak(scale_uint), - /* K23 */ be_nested_str_weak(width), - /* K24 */ be_nested_str_weak(set_pixel_color), - /* K25 */ be_nested_str_weak(on_param_changed), +// compact class 'CometAnimation' ktab size: 24, total: 42 (saved 144 bytes) +static const bvalue be_ktab_class_CometAnimation[24] = { + /* K0 */ be_nested_str_weak(speed), + /* K1 */ be_nested_str_weak(direction), + /* K2 */ be_nested_str_weak(wrap_around), + /* K3 */ be_nested_str_weak(engine), + /* K4 */ be_nested_str_weak(strip_length), + /* K5 */ be_nested_str_weak(start_time), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(head_position), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(init), + /* K10 */ be_nested_str_weak(animation), + /* K11 */ be_nested_str_weak(is_value_provider), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(0x_X2508x), + /* K14 */ be_nested_str_weak(CometAnimation_X28color_X3D_X25s_X2C_X20head_pos_X3D_X25_X2E1f_X2C_X20tail_length_X3D_X25s_X2C_X20speed_X3D_X25s_X2C_X20direction_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K15 */ be_nested_str_weak(tail_length), + /* K16 */ be_nested_str_weak(priority), + /* K17 */ be_nested_str_weak(is_running), + /* K18 */ be_nested_str_weak(fade_factor), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(scale_uint), + /* K21 */ be_nested_str_weak(width), + /* K22 */ be_nested_str_weak(set_pixel_color), + /* K23 */ be_nested_str_weak(on_param_changed), }; @@ -1678,77 +1676,63 @@ be_local_closure(class_CometAnimation_update, /* name */ &be_ktab_class_CometAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x8C080101, // 0009 GETMET R2 R0 K1 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x5C040400, // 000C MOVE R1 R2 - 0x88080102, // 000D GETMBR R2 R0 K2 - 0x880C0103, // 000E GETMBR R3 R0 K3 - 0x88100104, // 000F GETMBR R4 R0 K4 - 0x88140105, // 0010 GETMBR R5 R0 K5 - 0x88140B06, // 0011 GETMBR R5 R5 K6 - 0x88180107, // 0012 GETMBR R6 R0 K7 - 0x04180206, // 0013 SUB R6 R1 R6 - 0x081C0406, // 0014 MUL R7 R2 R6 - 0x081C0E03, // 0015 MUL R7 R7 R3 - 0x542203E7, // 0016 LDINT R8 1000 - 0x0C1C0E08, // 0017 DIV R7 R7 R8 - 0x24200708, // 0018 GT R8 R3 K8 - 0x78220001, // 0019 JMPF R8 #001C - 0x90021207, // 001A SETMBR R0 K9 R7 - 0x70020004, // 001B JMP #0021 - 0x04200B0A, // 001C SUB R8 R5 K10 - 0x542600FF, // 001D LDINT R9 256 - 0x08201009, // 001E MUL R8 R8 R9 - 0x00201007, // 001F ADD R8 R8 R7 - 0x90021208, // 0020 SETMBR R0 K9 R8 - 0x542200FF, // 0021 LDINT R8 256 - 0x08200A08, // 0022 MUL R8 R5 R8 - 0x20240908, // 0023 NE R9 R4 K8 - 0x7826000E, // 0024 JMPF R9 #0034 - 0x88240109, // 0025 GETMBR R9 R0 K9 - 0x28241208, // 0026 GE R9 R9 R8 - 0x78260003, // 0027 JMPF R9 #002C - 0x88240109, // 0028 GETMBR R9 R0 K9 - 0x04241208, // 0029 SUB R9 R9 R8 - 0x90021209, // 002A SETMBR R0 K9 R9 - 0x7001FFF8, // 002B JMP #0025 - 0x88240109, // 002C GETMBR R9 R0 K9 - 0x14241308, // 002D LT R9 R9 K8 - 0x78260003, // 002E JMPF R9 #0033 - 0x88240109, // 002F GETMBR R9 R0 K9 - 0x00241208, // 0030 ADD R9 R9 R8 - 0x90021209, // 0031 SETMBR R0 K9 R9 - 0x7001FFF8, // 0032 JMP #002C - 0x7002000F, // 0033 JMP #0044 - 0x88240109, // 0034 GETMBR R9 R0 K9 - 0x28241208, // 0035 GE R9 R9 R8 - 0x78260006, // 0036 JMPF R9 #003E - 0x04240B0A, // 0037 SUB R9 R5 K10 - 0x542A00FF, // 0038 LDINT R10 256 - 0x0824120A, // 0039 MUL R9 R9 R10 - 0x90021209, // 003A SETMBR R0 K9 R9 - 0x44240600, // 003B NEG R9 R3 - 0x90020609, // 003C SETMBR R0 K3 R9 - 0x70020005, // 003D JMP #0044 - 0x88240109, // 003E GETMBR R9 R0 K9 - 0x14241308, // 003F LT R9 R9 K8 - 0x78260002, // 0040 JMPF R9 #0044 - 0x90021308, // 0041 SETMBR R0 K9 K8 - 0x44240600, // 0042 NEG R9 R3 - 0x90020609, // 0043 SETMBR R0 K3 R9 - 0x50240200, // 0044 LDBOOL R9 1 0 - 0x80041200, // 0045 RET 1 R9 + ( &(const binstruction[56]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88140103, // 0003 GETMBR R5 R0 K3 + 0x88140B04, // 0004 GETMBR R5 R5 K4 + 0x88180105, // 0005 GETMBR R6 R0 K5 + 0x04180206, // 0006 SUB R6 R1 R6 + 0x081C0406, // 0007 MUL R7 R2 R6 + 0x081C0E03, // 0008 MUL R7 R7 R3 + 0x542203E7, // 0009 LDINT R8 1000 + 0x0C1C0E08, // 000A DIV R7 R7 R8 + 0x24200706, // 000B GT R8 R3 K6 + 0x78220001, // 000C JMPF R8 #000F + 0x90020E07, // 000D SETMBR R0 K7 R7 + 0x70020004, // 000E JMP #0014 + 0x04200B08, // 000F SUB R8 R5 K8 + 0x542600FF, // 0010 LDINT R9 256 + 0x08201009, // 0011 MUL R8 R8 R9 + 0x00201007, // 0012 ADD R8 R8 R7 + 0x90020E08, // 0013 SETMBR R0 K7 R8 + 0x542200FF, // 0014 LDINT R8 256 + 0x08200A08, // 0015 MUL R8 R5 R8 + 0x20240906, // 0016 NE R9 R4 K6 + 0x7826000E, // 0017 JMPF R9 #0027 + 0x88240107, // 0018 GETMBR R9 R0 K7 + 0x28241208, // 0019 GE R9 R9 R8 + 0x78260003, // 001A JMPF R9 #001F + 0x88240107, // 001B GETMBR R9 R0 K7 + 0x04241208, // 001C SUB R9 R9 R8 + 0x90020E09, // 001D SETMBR R0 K7 R9 + 0x7001FFF8, // 001E JMP #0018 + 0x88240107, // 001F GETMBR R9 R0 K7 + 0x14241306, // 0020 LT R9 R9 K6 + 0x78260003, // 0021 JMPF R9 #0026 + 0x88240107, // 0022 GETMBR R9 R0 K7 + 0x00241208, // 0023 ADD R9 R9 R8 + 0x90020E09, // 0024 SETMBR R0 K7 R9 + 0x7001FFF8, // 0025 JMP #001F + 0x7002000F, // 0026 JMP #0037 + 0x88240107, // 0027 GETMBR R9 R0 K7 + 0x28241208, // 0028 GE R9 R9 R8 + 0x78260006, // 0029 JMPF R9 #0031 + 0x04240B08, // 002A SUB R9 R5 K8 + 0x542A00FF, // 002B LDINT R10 256 + 0x0824120A, // 002C MUL R9 R9 R10 + 0x90020E09, // 002D SETMBR R0 K7 R9 + 0x44240600, // 002E NEG R9 R3 + 0x90020209, // 002F SETMBR R0 K1 R9 + 0x70020005, // 0030 JMP #0037 + 0x88240107, // 0031 GETMBR R9 R0 K7 + 0x14241306, // 0032 LT R9 R9 K6 + 0x78260002, // 0033 JMPF R9 #0037 + 0x90020F06, // 0034 SETMBR R0 K7 K6 + 0x44240600, // 0035 NEG R9 R3 + 0x90020209, // 0036 SETMBR R0 K1 R9 + 0x80000000, // 0037 RET 0 }) ) ); @@ -1775,10 +1759,10 @@ be_local_closure(class_CometAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050B, // 0003 GETMET R2 R2 K11 + 0x8C080509, // 0003 GETMET R2 R2 K9 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x90021308, // 0006 SETMBR R0 K9 K8 + 0x90020F06, // 0006 SETMBR R0 K7 K6 0x80000000, // 0007 RET 0 }) ) @@ -1804,32 +1788,32 @@ be_local_closure(class_CometAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[29]) { /* code */ 0x4C040000, // 0000 LDNIL R1 - 0xB80A1800, // 0001 GETNGBL R2 K12 - 0x8C08050D, // 0002 GETMET R2 R2 K13 - 0x8810010E, // 0003 GETMBR R4 R0 K14 + 0xB80A1400, // 0001 GETNGBL R2 K10 + 0x8C08050B, // 0002 GETMET R2 R2 K11 + 0x8810010C, // 0003 GETMBR R4 R0 K12 0x7C080400, // 0004 CALL R2 2 0x780A0004, // 0005 JMPF R2 #000B 0x60080008, // 0006 GETGBL R2 G8 - 0x880C010E, // 0007 GETMBR R3 R0 K14 + 0x880C010C, // 0007 GETMBR R3 R0 K12 0x7C080200, // 0008 CALL R2 1 0x5C040400, // 0009 MOVE R1 R2 0x70020004, // 000A JMP #0010 0x60080018, // 000B GETGBL R2 G24 - 0x580C000F, // 000C LDCONST R3 K15 - 0x8810010E, // 000D GETMBR R4 R0 K14 + 0x580C000D, // 000C LDCONST R3 K13 + 0x8810010C, // 000D GETMBR R4 R0 K12 0x7C080400, // 000E CALL R2 2 0x5C040400, // 000F MOVE R1 R2 0x60080018, // 0010 GETGBL R2 G24 - 0x580C0010, // 0011 LDCONST R3 K16 + 0x580C000E, // 0011 LDCONST R3 K14 0x5C100200, // 0012 MOVE R4 R1 - 0x88140109, // 0013 GETMBR R5 R0 K9 + 0x88140107, // 0013 GETMBR R5 R0 K7 0x541A00FF, // 0014 LDINT R6 256 0x0C140A06, // 0015 DIV R5 R5 R6 - 0x88180111, // 0016 GETMBR R6 R0 K17 - 0x881C0102, // 0017 GETMBR R7 R0 K2 - 0x88200103, // 0018 GETMBR R8 R0 K3 - 0x88240112, // 0019 GETMBR R9 R0 K18 - 0x88280113, // 001A GETMBR R10 R0 K19 + 0x8818010F, // 0016 GETMBR R6 R0 K15 + 0x881C0100, // 0017 GETMBR R7 R0 K0 + 0x88200101, // 0018 GETMBR R8 R0 K1 + 0x88240110, // 0019 GETMBR R9 R0 K16 + 0x88280111, // 001A GETMBR R10 R0 K17 0x7C081000, // 001B CALL R2 8 0x80040400, // 001C RET 1 R2 }) @@ -1844,7 +1828,7 @@ be_local_closure(class_CometAnimation_tostring, /* name */ be_local_closure(class_CometAnimation_render, /* name */ be_nested_proto( 25, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1854,99 +1838,90 @@ be_local_closure(class_CometAnimation_render, /* name */ &be_ktab_class_CometAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[92]) { /* code */ - 0x880C0113, // 0000 GETMBR R3 R0 K19 - 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 - 0x880C0109, // 0007 GETMBR R3 R0 K9 - 0x541200FF, // 0008 LDINT R4 256 - 0x0C0C0604, // 0009 DIV R3 R3 R4 - 0x8810010E, // 000A GETMBR R4 R0 K14 - 0x88140111, // 000B GETMBR R5 R0 K17 - 0x88180103, // 000C GETMBR R6 R0 K3 - 0x881C0104, // 000D GETMBR R7 R0 K4 - 0x88200114, // 000E GETMBR R8 R0 K20 - 0x88240105, // 000F GETMBR R9 R0 K5 - 0x88241306, // 0010 GETMBR R9 R9 K6 - 0x542A0017, // 0011 LDINT R10 24 - 0x3C28080A, // 0012 SHR R10 R4 R10 - 0x542E00FE, // 0013 LDINT R11 255 - 0x2C28140B, // 0014 AND R10 R10 R11 - 0x542E000F, // 0015 LDINT R11 16 - 0x3C2C080B, // 0016 SHR R11 R4 R11 - 0x543200FE, // 0017 LDINT R12 255 - 0x2C2C160C, // 0018 AND R11 R11 R12 - 0x54320007, // 0019 LDINT R12 8 - 0x3C30080C, // 001A SHR R12 R4 R12 - 0x543600FE, // 001B LDINT R13 255 - 0x2C30180D, // 001C AND R12 R12 R13 - 0x543600FE, // 001D LDINT R13 255 - 0x2C34080D, // 001E AND R13 R4 R13 - 0x58380008, // 001F LDCONST R14 K8 - 0x143C1C05, // 0020 LT R15 R14 R5 - 0x783E0037, // 0021 JMPF R15 #005A - 0x083C1C06, // 0022 MUL R15 R14 R6 - 0x043C060F, // 0023 SUB R15 R3 R15 - 0x20400F08, // 0024 NE R16 R7 K8 - 0x78420008, // 0025 JMPF R16 #002F - 0x28401E09, // 0026 GE R16 R15 R9 - 0x78420001, // 0027 JMPF R16 #002A - 0x043C1E09, // 0028 SUB R15 R15 R9 - 0x7001FFFB, // 0029 JMP #0026 - 0x14401F08, // 002A LT R16 R15 K8 - 0x78420001, // 002B JMPF R16 #002E - 0x003C1E09, // 002C ADD R15 R15 R9 - 0x7001FFFB, // 002D JMP #002A - 0x70020005, // 002E JMP #0035 - 0x14401F08, // 002F LT R16 R15 K8 - 0x74420001, // 0030 JMPT R16 #0033 - 0x28401E09, // 0031 GE R16 R15 R9 - 0x78420001, // 0032 JMPF R16 #0035 - 0x00381D0A, // 0033 ADD R14 R14 K10 - 0x7001FFEA, // 0034 JMP #0020 - 0x544200FE, // 0035 LDINT R16 255 - 0x24441D08, // 0036 GT R17 R14 K8 - 0x7846000D, // 0037 JMPF R17 #0046 - 0x58440008, // 0038 LDCONST R17 K8 - 0x1448220E, // 0039 LT R18 R17 R14 - 0x784A000A, // 003A JMPF R18 #0046 - 0xB84A2A00, // 003B GETNGBL R18 K21 - 0x8C482516, // 003C GETMET R18 R18 K22 - 0x5C502000, // 003D MOVE R20 R16 - 0x58540008, // 003E LDCONST R21 K8 - 0x545A00FE, // 003F LDINT R22 255 - 0x585C0008, // 0040 LDCONST R23 K8 - 0x5C601000, // 0041 MOVE R24 R8 - 0x7C480C00, // 0042 CALL R18 6 - 0x5C402400, // 0043 MOVE R16 R18 - 0x0044230A, // 0044 ADD R17 R17 K10 - 0x7001FFF2, // 0045 JMP #0039 - 0x54460017, // 0046 LDINT R17 24 - 0x38442011, // 0047 SHL R17 R16 R17 - 0x544A000F, // 0048 LDINT R18 16 - 0x38481612, // 0049 SHL R18 R11 R18 - 0x30442212, // 004A OR R17 R17 R18 - 0x544A0007, // 004B LDINT R18 8 - 0x38481812, // 004C SHL R18 R12 R18 - 0x30442212, // 004D OR R17 R17 R18 - 0x3044220D, // 004E OR R17 R17 R13 - 0x28481F08, // 004F GE R18 R15 K8 - 0x784A0006, // 0050 JMPF R18 #0058 - 0x88480317, // 0051 GETMBR R18 R1 K23 - 0x14481E12, // 0052 LT R18 R15 R18 - 0x784A0003, // 0053 JMPF R18 #0058 - 0x8C480318, // 0054 GETMET R18 R1 K24 - 0x5C501E00, // 0055 MOVE R20 R15 - 0x5C542200, // 0056 MOVE R21 R17 - 0x7C480600, // 0057 CALL R18 3 - 0x00381D0A, // 0058 ADD R14 R14 K10 - 0x7001FFC5, // 0059 JMP #0020 - 0x503C0200, // 005A LDBOOL R15 1 0 - 0x80041E00, // 005B RET 1 R15 + ( &(const binstruction[83]) { /* code */ + 0x88100107, // 0000 GETMBR R4 R0 K7 + 0x541600FF, // 0001 LDINT R5 256 + 0x0C100805, // 0002 DIV R4 R4 R5 + 0x8814010C, // 0003 GETMBR R5 R0 K12 + 0x8818010F, // 0004 GETMBR R6 R0 K15 + 0x881C0101, // 0005 GETMBR R7 R0 K1 + 0x88200102, // 0006 GETMBR R8 R0 K2 + 0x88240112, // 0007 GETMBR R9 R0 K18 + 0x542A0017, // 0008 LDINT R10 24 + 0x3C280A0A, // 0009 SHR R10 R5 R10 + 0x542E00FE, // 000A LDINT R11 255 + 0x2C28140B, // 000B AND R10 R10 R11 + 0x542E000F, // 000C LDINT R11 16 + 0x3C2C0A0B, // 000D SHR R11 R5 R11 + 0x543200FE, // 000E LDINT R12 255 + 0x2C2C160C, // 000F AND R11 R11 R12 + 0x54320007, // 0010 LDINT R12 8 + 0x3C300A0C, // 0011 SHR R12 R5 R12 + 0x543600FE, // 0012 LDINT R13 255 + 0x2C30180D, // 0013 AND R12 R12 R13 + 0x543600FE, // 0014 LDINT R13 255 + 0x2C340A0D, // 0015 AND R13 R5 R13 + 0x58380006, // 0016 LDCONST R14 K6 + 0x143C1C06, // 0017 LT R15 R14 R6 + 0x783E0037, // 0018 JMPF R15 #0051 + 0x083C1C07, // 0019 MUL R15 R14 R7 + 0x043C080F, // 001A SUB R15 R4 R15 + 0x20401106, // 001B NE R16 R8 K6 + 0x78420008, // 001C JMPF R16 #0026 + 0x28401E03, // 001D GE R16 R15 R3 + 0x78420001, // 001E JMPF R16 #0021 + 0x043C1E03, // 001F SUB R15 R15 R3 + 0x7001FFFB, // 0020 JMP #001D + 0x14401F06, // 0021 LT R16 R15 K6 + 0x78420001, // 0022 JMPF R16 #0025 + 0x003C1E03, // 0023 ADD R15 R15 R3 + 0x7001FFFB, // 0024 JMP #0021 + 0x70020005, // 0025 JMP #002C + 0x14401F06, // 0026 LT R16 R15 K6 + 0x74420001, // 0027 JMPT R16 #002A + 0x28401E03, // 0028 GE R16 R15 R3 + 0x78420001, // 0029 JMPF R16 #002C + 0x00381D08, // 002A ADD R14 R14 K8 + 0x7001FFEA, // 002B JMP #0017 + 0x544200FE, // 002C LDINT R16 255 + 0x24441D06, // 002D GT R17 R14 K6 + 0x7846000D, // 002E JMPF R17 #003D + 0x58440006, // 002F LDCONST R17 K6 + 0x1448220E, // 0030 LT R18 R17 R14 + 0x784A000A, // 0031 JMPF R18 #003D + 0xB84A2600, // 0032 GETNGBL R18 K19 + 0x8C482514, // 0033 GETMET R18 R18 K20 + 0x5C502000, // 0034 MOVE R20 R16 + 0x58540006, // 0035 LDCONST R21 K6 + 0x545A00FE, // 0036 LDINT R22 255 + 0x585C0006, // 0037 LDCONST R23 K6 + 0x5C601200, // 0038 MOVE R24 R9 + 0x7C480C00, // 0039 CALL R18 6 + 0x5C402400, // 003A MOVE R16 R18 + 0x00442308, // 003B ADD R17 R17 K8 + 0x7001FFF2, // 003C JMP #0030 + 0x54460017, // 003D LDINT R17 24 + 0x38442011, // 003E SHL R17 R16 R17 + 0x544A000F, // 003F LDINT R18 16 + 0x38481612, // 0040 SHL R18 R11 R18 + 0x30442212, // 0041 OR R17 R17 R18 + 0x544A0007, // 0042 LDINT R18 8 + 0x38481812, // 0043 SHL R18 R12 R18 + 0x30442212, // 0044 OR R17 R17 R18 + 0x3044220D, // 0045 OR R17 R17 R13 + 0x28481F06, // 0046 GE R18 R15 K6 + 0x784A0006, // 0047 JMPF R18 #004F + 0x88480315, // 0048 GETMBR R18 R1 K21 + 0x14481E12, // 0049 LT R18 R15 R18 + 0x784A0003, // 004A JMPF R18 #004F + 0x8C480316, // 004B GETMET R18 R1 K22 + 0x5C501E00, // 004C MOVE R20 R15 + 0x5C542200, // 004D MOVE R21 R17 + 0x7C480600, // 004E CALL R18 3 + 0x00381D08, // 004F ADD R14 R14 K8 + 0x7001FFC5, // 0050 JMP #0017 + 0x503C0200, // 0051 LDBOOL R15 1 0 + 0x80041E00, // 0052 RET 1 R15 }) ) ); @@ -1973,22 +1948,22 @@ be_local_closure(class_CometAnimation_on_param_changed, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0719, // 0003 GETMET R3 R3 K25 + 0x8C0C0717, // 0003 GETMET R3 R3 K23 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0303, // 0007 EQ R3 R1 K3 + 0x1C0C0301, // 0007 EQ R3 R1 K1 0x780E0009, // 0008 JMPF R3 #0013 - 0x880C0105, // 0009 GETMBR R3 R0 K5 - 0x880C0706, // 000A GETMBR R3 R3 K6 - 0x24100508, // 000B GT R4 R2 K8 + 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x24100506, // 000B GT R4 R2 K6 0x78120001, // 000C JMPF R4 #000F - 0x90021308, // 000D SETMBR R0 K9 K8 + 0x90020F06, // 000D SETMBR R0 K7 K6 0x70020003, // 000E JMP #0013 - 0x0410070A, // 000F SUB R4 R3 K10 + 0x04100708, // 000F SUB R4 R3 K8 0x541600FF, // 0010 LDINT R5 256 0x08100805, // 0011 MUL R4 R4 R5 - 0x90021204, // 0012 SETMBR R0 K9 R4 + 0x90020E04, // 0012 SETMBR R0 K7 R4 0x80000000, // 0013 RET 0 }) ) @@ -2023,57 +1998,55 @@ be_local_class(CometAnimation, })), be_str_weak(CometAnimation) ); -// compact class 'FireAnimation' ktab size: 49, total: 79 (saved 240 bytes) -static const bvalue be_ktab_class_FireAnimation[49] = { +// compact class 'FireAnimation' ktab size: 47, total: 73 (saved 208 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(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_nested_str_weak(get), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K12 */ be_nested_str_weak(intensity), - /* K13 */ be_nested_str_weak(flicker_speed), - /* K14 */ be_nested_str_weak(priority), - /* K15 */ be_nested_str_weak(init), - /* K16 */ be_nested_str_weak(heat_map), - /* K17 */ be_nested_str_weak(last_update), - /* K18 */ be_nested_str_weak(random_seed), - /* K19 */ be_nested_str_weak(time_ms), - /* K20 */ be_nested_str_weak(clear), - /* K21 */ be_nested_str_weak(resize), - /* K22 */ be_nested_str_weak(set), - /* K23 */ be_const_int(-16777216), - /* K24 */ be_nested_str_weak(update), - /* K25 */ be_nested_str_weak(_update_fire_simulation), - /* K26 */ be_const_int(1103515245), - /* K27 */ be_const_int(2147483647), - /* K28 */ be_nested_str_weak(cooling_rate), - /* K29 */ be_nested_str_weak(sparking_rate), - /* K30 */ be_nested_str_weak(flicker_amount), - /* K31 */ be_nested_str_weak(color), - /* K32 */ be_nested_str_weak(size), - /* K33 */ be_nested_str_weak(_initialize_buffers), - /* K34 */ be_nested_str_weak(_random_range), - /* K35 */ be_nested_str_weak(tasmota), - /* K36 */ be_nested_str_weak(scale_uint), - /* K37 */ be_const_int(2), - /* K38 */ be_const_int(3), - /* K39 */ be_nested_str_weak(animation), - /* K40 */ be_nested_str_weak(rich_palette), - /* K41 */ be_nested_str_weak(palette), - /* K42 */ be_nested_str_weak(PALETTE_FIRE), - /* K43 */ be_nested_str_weak(cycle_period), - /* K44 */ be_nested_str_weak(transition_type), - /* K45 */ be_nested_str_weak(brightness), - /* K46 */ be_nested_str_weak(is_color_provider), - /* K47 */ be_nested_str_weak(get_color_for_value), - /* K48 */ be_nested_str_weak(start), + /* K2 */ be_nested_str_weak(width), + /* K3 */ be_nested_str_weak(set_pixel_color), + /* K4 */ be_nested_str_weak(current_colors), + /* K5 */ be_nested_str_weak(get), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K8 */ be_nested_str_weak(intensity), + /* K9 */ be_nested_str_weak(flicker_speed), + /* K10 */ be_nested_str_weak(priority), + /* K11 */ be_nested_str_weak(is_running), + /* K12 */ be_nested_str_weak(init), + /* K13 */ be_nested_str_weak(heat_map), + /* K14 */ be_nested_str_weak(last_update), + /* K15 */ be_nested_str_weak(random_seed), + /* K16 */ be_nested_str_weak(engine), + /* K17 */ be_nested_str_weak(time_ms), + /* K18 */ be_nested_str_weak(strip_length), + /* K19 */ be_nested_str_weak(clear), + /* K20 */ be_nested_str_weak(resize), + /* K21 */ be_nested_str_weak(set), + /* K22 */ be_const_int(-16777216), + /* K23 */ be_nested_str_weak(_update_fire_simulation), + /* K24 */ be_const_int(1103515245), + /* K25 */ be_const_int(2147483647), + /* K26 */ be_nested_str_weak(cooling_rate), + /* K27 */ be_nested_str_weak(sparking_rate), + /* K28 */ be_nested_str_weak(flicker_amount), + /* K29 */ be_nested_str_weak(color), + /* K30 */ be_nested_str_weak(size), + /* K31 */ be_nested_str_weak(_initialize_buffers), + /* K32 */ be_nested_str_weak(_random_range), + /* K33 */ be_nested_str_weak(tasmota), + /* K34 */ be_nested_str_weak(scale_uint), + /* K35 */ be_const_int(2), + /* K36 */ be_const_int(3), + /* K37 */ be_nested_str_weak(animation), + /* K38 */ be_nested_str_weak(rich_palette), + /* K39 */ be_nested_str_weak(palette), + /* K40 */ be_nested_str_weak(PALETTE_FIRE), + /* K41 */ be_nested_str_weak(cycle_period), + /* K42 */ be_nested_str_weak(transition_type), + /* K43 */ be_nested_str_weak(brightness), + /* K44 */ be_nested_str_weak(is_color_provider), + /* K45 */ be_nested_str_weak(get_color_for_value), + /* K46 */ be_nested_str_weak(start), }; @@ -2115,7 +2088,7 @@ be_local_closure(class_FireAnimation__random_range, /* name */ be_local_closure(class_FireAnimation_render, /* name */ be_nested_proto( 12, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2125,39 +2098,26 @@ be_local_closure(class_FireAnimation_render, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[32]) { /* 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 - 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 - 0x880C0705, // 000C GETMBR R3 R3 K5 - 0x58100000, // 000D LDCONST R4 K0 - 0x14140803, // 000E LT R5 R4 R3 - 0x7816000D, // 000F JMPF R5 #001E - 0x88140306, // 0010 GETMBR R5 R1 K6 - 0x14140805, // 0011 LT R5 R4 R5 - 0x78160008, // 0012 JMPF R5 #001C - 0x8C140307, // 0013 GETMET R5 R1 K7 - 0x5C1C0800, // 0014 MOVE R7 R4 - 0x88200108, // 0015 GETMBR R8 R0 K8 - 0x8C201109, // 0016 GETMET R8 R8 K9 - 0x542A0003, // 0017 LDINT R10 4 - 0x0828080A, // 0018 MUL R10 R4 R10 - 0x542DFFFB, // 0019 LDINT R11 -4 - 0x7C200600, // 001A CALL R8 3 - 0x7C140600, // 001B CALL R5 3 - 0x0010090A, // 001C ADD R4 R4 K10 - 0x7001FFEF, // 001D JMP #000E - 0x50140200, // 001E LDBOOL R5 1 0 - 0x80040A00, // 001F RET 1 R5 + ( &(const binstruction[19]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x14140803, // 0001 LT R5 R4 R3 + 0x7816000D, // 0002 JMPF R5 #0011 + 0x88140302, // 0003 GETMBR R5 R1 K2 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160008, // 0005 JMPF R5 #000F + 0x8C140303, // 0006 GETMET R5 R1 K3 + 0x5C1C0800, // 0007 MOVE R7 R4 + 0x88200104, // 0008 GETMBR R8 R0 K4 + 0x8C201105, // 0009 GETMET R8 R8 K5 + 0x542A0003, // 000A LDINT R10 4 + 0x0828080A, // 000B MUL R10 R4 R10 + 0x542DFFFB, // 000C LDINT R11 -4 + 0x7C200600, // 000D CALL R8 3 + 0x7C140600, // 000E CALL R5 3 + 0x00100906, // 000F ADD R4 R4 K6 + 0x7001FFEF, // 0010 JMP #0001 + 0x50140200, // 0011 LDBOOL R5 1 0 + 0x80040A00, // 0012 RET 1 R5 }) ) ); @@ -2182,11 +2142,11 @@ be_local_closure(class_FireAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x5808000B, // 0001 LDCONST R2 K11 - 0x880C010C, // 0002 GETMBR R3 R0 K12 - 0x8810010D, // 0003 GETMBR R4 R0 K13 - 0x8814010E, // 0004 GETMBR R5 R0 K14 - 0x88180102, // 0005 GETMBR R6 R0 K2 + 0x58080007, // 0001 LDCONST R2 K7 + 0x880C0108, // 0002 GETMBR R3 R0 K8 + 0x88100109, // 0003 GETMBR R4 R0 K9 + 0x8814010A, // 0004 GETMBR R5 R0 K10 + 0x8818010B, // 0005 GETMBR R6 R0 K11 0x7C040A00, // 0006 CALL R1 5 0x80040200, // 0007 RET 1 R1 }) @@ -2215,21 +2175,21 @@ be_local_closure(class_FireAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050F, // 0003 GETMET R2 R2 K15 + 0x8C08050C, // 0003 GETMET R2 R2 K12 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x90022002, // 0008 SETMBR R0 K16 R2 + 0x90021A02, // 0008 SETMBR R0 K13 R2 0x60080015, // 0009 GETGBL R2 G21 0x7C080000, // 000A CALL R2 0 - 0x90021002, // 000B SETMBR R0 K8 R2 - 0x90022300, // 000C SETMBR R0 K17 K0 - 0x88080104, // 000D GETMBR R2 R0 K4 - 0x88080513, // 000E GETMBR R2 R2 K19 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x90021D00, // 000C SETMBR R0 K14 K0 + 0x88080110, // 000D GETMBR R2 R0 K16 + 0x88080511, // 000E GETMBR R2 R2 K17 0x540EFFFF, // 000F LDINT R3 65536 0x10080403, // 0010 MOD R2 R2 R3 - 0x90022402, // 0011 SETMBR R0 K18 R2 + 0x90021E02, // 0011 SETMBR R0 K15 R2 0x80000000, // 0012 RET 0 }) ) @@ -2254,34 +2214,34 @@ be_local_closure(class_FireAnimation__initialize_buffers, /* name */ be_str_weak(_initialize_buffers), &be_const_str_solidified, ( &(const binstruction[30]) { /* code */ - 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x88040305, // 0001 GETMBR R1 R1 K5 - 0x88080110, // 0002 GETMBR R2 R0 K16 - 0x8C080514, // 0003 GETMET R2 R2 K20 + 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x88040312, // 0001 GETMBR R1 R1 K18 + 0x8808010D, // 0002 GETMBR R2 R0 K13 + 0x8C080513, // 0003 GETMET R2 R2 K19 0x7C080200, // 0004 CALL R2 1 - 0x88080110, // 0005 GETMBR R2 R0 K16 - 0x8C080515, // 0006 GETMET R2 R2 K21 + 0x8808010D, // 0005 GETMBR R2 R0 K13 + 0x8C080514, // 0006 GETMET R2 R2 K20 0x5C100200, // 0007 MOVE R4 R1 0x7C080400, // 0008 CALL R2 2 - 0x88080108, // 0009 GETMBR R2 R0 K8 - 0x8C080514, // 000A GETMET R2 R2 K20 + 0x88080104, // 0009 GETMBR R2 R0 K4 + 0x8C080513, // 000A GETMET R2 R2 K19 0x7C080200, // 000B CALL R2 1 - 0x88080108, // 000C GETMBR R2 R0 K8 - 0x8C080515, // 000D GETMET R2 R2 K21 + 0x88080104, // 000C GETMBR R2 R0 K4 + 0x8C080514, // 000D GETMET R2 R2 K20 0x54120003, // 000E LDINT R4 4 0x08100204, // 000F MUL R4 R1 R4 0x7C080400, // 0010 CALL R2 2 0x58080000, // 0011 LDCONST R2 K0 0x140C0401, // 0012 LT R3 R2 R1 0x780E0008, // 0013 JMPF R3 #001D - 0x880C0108, // 0014 GETMBR R3 R0 K8 - 0x8C0C0716, // 0015 GETMET R3 R3 K22 + 0x880C0104, // 0014 GETMBR R3 R0 K4 + 0x8C0C0715, // 0015 GETMET R3 R3 K21 0x54160003, // 0016 LDINT R5 4 0x08140405, // 0017 MUL R5 R2 R5 - 0x58180017, // 0018 LDCONST R6 K23 + 0x58180016, // 0018 LDCONST R6 K22 0x541DFFFB, // 0019 LDINT R7 -4 0x7C0C0800, // 001A CALL R3 4 - 0x0008050A, // 001B ADD R2 R2 K10 + 0x00080506, // 001B ADD R2 R2 K6 0x7001FFF4, // 001C JMP #0012 0x80000000, // 001D RET 0 }) @@ -2306,33 +2266,19 @@ be_local_closure(class_FireAnimation_update, /* name */ &be_ktab_class_FireAnimation, /* 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 - 0x8C080518, // 0003 GETMET R2 R2 K24 - 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 - 0x8C080103, // 0009 GETMET R2 R0 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x5C040400, // 000C MOVE R1 R2 - 0x8808010D, // 000D GETMBR R2 R0 K13 - 0x540E03E7, // 000E LDINT R3 1000 - 0x0C0C0602, // 000F DIV R3 R3 R2 - 0x88100111, // 0010 GETMBR R4 R0 K17 - 0x04100204, // 0011 SUB R4 R1 R4 - 0x28100803, // 0012 GE R4 R4 R3 - 0x78120003, // 0013 JMPF R4 #0018 - 0x90022201, // 0014 SETMBR R0 K17 R1 - 0x8C100119, // 0015 GETMET R4 R0 K25 - 0x5C180200, // 0016 MOVE R6 R1 - 0x7C100400, // 0017 CALL R4 2 - 0x50100200, // 0018 LDBOOL R4 1 0 - 0x80040800, // 0019 RET 1 R4 + ( &(const binstruction[12]) { /* code */ + 0x88080109, // 0000 GETMBR R2 R0 K9 + 0x540E03E7, // 0001 LDINT R3 1000 + 0x0C0C0602, // 0002 DIV R3 R3 R2 + 0x8810010E, // 0003 GETMBR R4 R0 K14 + 0x04100204, // 0004 SUB R4 R1 R4 + 0x28100803, // 0005 GE R4 R4 R3 + 0x78120003, // 0006 JMPF R4 #000B + 0x90021C01, // 0007 SETMBR R0 K14 R1 + 0x8C100117, // 0008 GETMET R4 R0 K23 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 }) ) ); @@ -2356,13 +2302,13 @@ be_local_closure(class_FireAnimation__random, /* name */ be_str_weak(_random), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88040112, // 0000 GETMBR R1 R0 K18 - 0x0804031A, // 0001 MUL R1 R1 K26 + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x08040318, // 0001 MUL R1 R1 K24 0x540A3038, // 0002 LDINT R2 12345 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C04031B, // 0004 AND R1 R1 K27 - 0x90022401, // 0005 SETMBR R0 K18 R1 - 0x88040112, // 0006 GETMBR R1 R0 K18 + 0x2C040319, // 0004 AND R1 R1 K25 + 0x90021E01, // 0005 SETMBR R0 K15 R1 + 0x8804010F, // 0006 GETMBR R1 R0 K15 0x80040200, // 0007 RET 1 R1 }) ) @@ -2387,71 +2333,71 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ be_str_weak(_update_fire_simulation), &be_const_str_solidified, ( &(const binstruction[232]) { /* code */ - 0x8808011C, // 0000 GETMBR R2 R0 K28 - 0x880C011D, // 0001 GETMBR R3 R0 K29 - 0x8810010C, // 0002 GETMBR R4 R0 K12 - 0x8814011E, // 0003 GETMBR R5 R0 K30 - 0x8818011F, // 0004 GETMBR R6 R0 K31 - 0x881C0104, // 0005 GETMBR R7 R0 K4 - 0x881C0F05, // 0006 GETMBR R7 R7 K5 - 0x88200110, // 0007 GETMBR R8 R0 K16 - 0x8C201120, // 0008 GETMET R8 R8 K32 + 0x8808011A, // 0000 GETMBR R2 R0 K26 + 0x880C011B, // 0001 GETMBR R3 R0 K27 + 0x88100108, // 0002 GETMBR R4 R0 K8 + 0x8814011C, // 0003 GETMBR R5 R0 K28 + 0x8818011D, // 0004 GETMBR R6 R0 K29 + 0x881C0110, // 0005 GETMBR R7 R0 K16 + 0x881C0F12, // 0006 GETMBR R7 R7 K18 + 0x8820010D, // 0007 GETMBR R8 R0 K13 + 0x8C20111E, // 0008 GETMET R8 R8 K30 0x7C200200, // 0009 CALL R8 1 0x20201007, // 000A NE R8 R8 R7 0x74220006, // 000B JMPT R8 #0013 - 0x88200108, // 000C GETMBR R8 R0 K8 - 0x8C201120, // 000D GETMET R8 R8 K32 + 0x88200104, // 000C GETMBR R8 R0 K4 + 0x8C20111E, // 000D GETMET R8 R8 K30 0x7C200200, // 000E CALL R8 1 0x54260003, // 000F LDINT R9 4 0x08240E09, // 0010 MUL R9 R7 R9 0x20201009, // 0011 NE R8 R8 R9 0x78220001, // 0012 JMPF R8 #0015 - 0x8C200121, // 0013 GETMET R8 R0 K33 + 0x8C20011F, // 0013 GETMET R8 R0 K31 0x7C200200, // 0014 CALL R8 1 0x58200000, // 0015 LDCONST R8 K0 0x14241007, // 0016 LT R9 R8 R7 0x78260017, // 0017 JMPF R9 #0030 - 0x8C240122, // 0018 GETMET R9 R0 K34 - 0xB82E4600, // 0019 GETNGBL R11 K35 - 0x8C2C1724, // 001A GETMET R11 R11 K36 + 0x8C240120, // 0018 GETMET R9 R0 K32 + 0xB82E4200, // 0019 GETNGBL R11 K33 + 0x8C2C1722, // 001A GETMET R11 R11 K34 0x5C340400, // 001B MOVE R13 R2 0x58380000, // 001C LDCONST R14 K0 0x543E00FE, // 001D LDINT R15 255 0x58400000, // 001E LDCONST R16 K0 0x54460009, // 001F LDINT R17 10 0x7C2C0C00, // 0020 CALL R11 6 - 0x002C1725, // 0021 ADD R11 R11 K37 + 0x002C1723, // 0021 ADD R11 R11 K35 0x7C240400, // 0022 CALL R9 2 - 0x88280110, // 0023 GETMBR R10 R0 K16 + 0x8828010D, // 0023 GETMBR R10 R0 K13 0x94281408, // 0024 GETIDX R10 R10 R8 0x2828120A, // 0025 GE R10 R9 R10 0x782A0002, // 0026 JMPF R10 #002A - 0x88280110, // 0027 GETMBR R10 R0 K16 + 0x8828010D, // 0027 GETMBR R10 R0 K13 0x98281100, // 0028 SETIDX R10 R8 K0 0x70020003, // 0029 JMP #002E - 0x88280110, // 002A GETMBR R10 R0 K16 + 0x8828010D, // 002A GETMBR R10 R0 K13 0x942C1408, // 002B GETIDX R11 R10 R8 0x042C1609, // 002C SUB R11 R11 R9 0x9828100B, // 002D SETIDX R10 R8 R11 - 0x0020110A, // 002E ADD R8 R8 K10 + 0x00201106, // 002E ADD R8 R8 K6 0x7001FFE5, // 002F JMP #0016 - 0x28240F26, // 0030 GE R9 R7 K38 + 0x28240F24, // 0030 GE R9 R7 K36 0x7826001D, // 0031 JMPF R9 #0050 - 0x04240F0A, // 0032 SUB R9 R7 K10 - 0x28281325, // 0033 GE R10 R9 K37 + 0x04240F06, // 0032 SUB R9 R7 K6 + 0x28281323, // 0033 GE R10 R9 K35 0x782A001A, // 0034 JMPF R10 #0050 - 0x0428130A, // 0035 SUB R10 R9 K10 - 0x882C0110, // 0036 GETMBR R11 R0 K16 + 0x04281306, // 0035 SUB R10 R9 K6 + 0x882C010D, // 0036 GETMBR R11 R0 K13 0x9428160A, // 0037 GETIDX R10 R11 R10 - 0x042C1325, // 0038 SUB R11 R9 K37 - 0x88300110, // 0039 GETMBR R12 R0 K16 + 0x042C1323, // 0038 SUB R11 R9 K35 + 0x8830010D, // 0039 GETMBR R12 R0 K13 0x942C180B, // 003A GETIDX R11 R12 R11 0x0028140B, // 003B ADD R10 R10 R11 - 0x042C1325, // 003C SUB R11 R9 K37 - 0x88300110, // 003D GETMBR R12 R0 K16 + 0x042C1323, // 003C SUB R11 R9 K35 + 0x8830010D, // 003D GETMBR R12 R0 K13 0x942C180B, // 003E GETIDX R11 R12 R11 0x0028140B, // 003F ADD R10 R10 R11 - 0x0C281526, // 0040 DIV R10 R10 K38 + 0x0C281524, // 0040 DIV R10 R10 K36 0x142C1500, // 0041 LT R11 R10 K0 0x782E0001, // 0042 JMPF R11 #0045 0x58280000, // 0043 LDCONST R10 K0 @@ -2460,22 +2406,22 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x242C140B, // 0046 GT R11 R10 R11 0x782E0000, // 0047 JMPF R11 #0049 0x542A00FE, // 0048 LDINT R10 255 - 0x882C0110, // 0049 GETMBR R11 R0 K16 + 0x882C010D, // 0049 GETMBR R11 R0 K13 0x60300009, // 004A GETGBL R12 G9 0x5C341400, // 004B MOVE R13 R10 0x7C300200, // 004C CALL R12 1 0x982C120C, // 004D SETIDX R11 R9 R12 - 0x0424130A, // 004E SUB R9 R9 K10 + 0x04241306, // 004E SUB R9 R9 K6 0x7001FFE2, // 004F JMP #0033 - 0x8C240122, // 0050 GETMET R9 R0 K34 + 0x8C240120, // 0050 GETMET R9 R0 K32 0x542E00FE, // 0051 LDINT R11 255 0x7C240400, // 0052 CALL R9 2 0x14241203, // 0053 LT R9 R9 R3 0x7826000F, // 0054 JMPF R9 #0065 - 0x8C240122, // 0055 GETMET R9 R0 K34 + 0x8C240120, // 0055 GETMET R9 R0 K32 0x542E0006, // 0056 LDINT R11 7 0x7C240400, // 0057 CALL R9 2 - 0x8C280122, // 0058 GETMET R10 R0 K34 + 0x8C280120, // 0058 GETMET R10 R0 K32 0x5432005E, // 0059 LDINT R12 95 0x7C280400, // 005A CALL R10 2 0x542E009F, // 005B LDINT R11 160 @@ -2486,15 +2432,15 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x542A00FE, // 0060 LDINT R10 255 0x142C1207, // 0061 LT R11 R9 R7 0x782E0001, // 0062 JMPF R11 #0065 - 0x882C0110, // 0063 GETMBR R11 R0 K16 + 0x882C010D, // 0063 GETMBR R11 R0 K13 0x982C120A, // 0064 SETIDX R11 R9 R10 0x58200000, // 0065 LDCONST R8 K0 0x14241007, // 0066 LT R9 R8 R7 0x7826007E, // 0067 JMPF R9 #00E7 - 0x88240110, // 0068 GETMBR R9 R0 K16 + 0x8824010D, // 0068 GETMBR R9 R0 K13 0x94241208, // 0069 GETIDX R9 R9 R8 - 0xB82A4600, // 006A GETNGBL R10 K35 - 0x8C281524, // 006B GETMET R10 R10 K36 + 0xB82A4200, // 006A GETNGBL R10 K33 + 0x8C281522, // 006B GETMET R10 R10 K34 0x5C301200, // 006C MOVE R12 R9 0x58340000, // 006D LDCONST R13 K0 0x543A00FE, // 006E LDINT R14 255 @@ -2504,11 +2450,11 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x5C241400, // 0072 MOVE R9 R10 0x24280B00, // 0073 GT R10 R5 K0 0x782A0012, // 0074 JMPF R10 #0088 - 0x8C280122, // 0075 GETMET R10 R0 K34 + 0x8C280120, // 0075 GETMET R10 R0 K32 0x5C300A00, // 0076 MOVE R12 R5 0x7C280400, // 0077 CALL R10 2 - 0x8C2C0122, // 0078 GETMET R11 R0 K34 - 0x58340025, // 0079 LDCONST R13 K37 + 0x8C2C0120, // 0078 GETMET R11 R0 K32 + 0x58340023, // 0079 LDCONST R13 K35 0x7C2C0400, // 007A CALL R11 2 0x1C2C1700, // 007B EQ R11 R11 K0 0x782E0001, // 007C JMPF R11 #007F @@ -2523,35 +2469,35 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x242C120B, // 0085 GT R11 R9 R11 0x782E0000, // 0086 JMPF R11 #0088 0x542600FE, // 0087 LDINT R9 255 - 0x58280017, // 0088 LDCONST R10 K23 + 0x58280016, // 0088 LDCONST R10 K22 0x242C1300, // 0089 GT R11 R9 K0 0x782E0052, // 008A JMPF R11 #00DE 0x5C2C0C00, // 008B MOVE R11 R6 0x4C300000, // 008C LDNIL R12 0x1C30160C, // 008D EQ R12 R11 R12 0x7832000B, // 008E JMPF R12 #009B - 0xB8324E00, // 008F GETNGBL R12 K39 - 0x8C301928, // 0090 GETMET R12 R12 K40 - 0x88380104, // 0091 GETMBR R14 R0 K4 + 0xB8324A00, // 008F GETNGBL R12 K37 + 0x8C301926, // 0090 GETMET R12 R12 K38 + 0x88380110, // 0091 GETMBR R14 R0 K16 0x7C300400, // 0092 CALL R12 2 - 0xB8364E00, // 0093 GETNGBL R13 K39 - 0x88341B2A, // 0094 GETMBR R13 R13 K42 - 0x9032520D, // 0095 SETMBR R12 K41 R13 - 0x90325700, // 0096 SETMBR R12 K43 K0 - 0x9032590A, // 0097 SETMBR R12 K44 K10 + 0xB8364A00, // 0093 GETNGBL R13 K37 + 0x88341B28, // 0094 GETMBR R13 R13 K40 + 0x90324E0D, // 0095 SETMBR R12 K39 R13 + 0x90325300, // 0096 SETMBR R12 K41 K0 + 0x90325506, // 0097 SETMBR R12 K42 K6 0x543600FE, // 0098 LDINT R13 255 - 0x90325A0D, // 0099 SETMBR R12 K45 R13 + 0x9032560D, // 0099 SETMBR R12 K43 R13 0x5C2C1800, // 009A MOVE R11 R12 - 0xB8324E00, // 009B GETNGBL R12 K39 - 0x8C30192E, // 009C GETMET R12 R12 K46 + 0xB8324A00, // 009B GETNGBL R12 K37 + 0x8C30192C, // 009C GETMET R12 R12 K44 0x5C381600, // 009D MOVE R14 R11 0x7C300400, // 009E CALL R12 2 0x78320009, // 009F JMPF R12 #00AA - 0x8830172F, // 00A0 GETMBR R12 R11 K47 + 0x8830172D, // 00A0 GETMBR R12 R11 K45 0x4C340000, // 00A1 LDNIL R13 0x2030180D, // 00A2 NE R12 R12 R13 0x78320005, // 00A3 JMPF R12 #00AA - 0x8C30172F, // 00A4 GETMET R12 R11 K47 + 0x8C30172D, // 00A4 GETMET R12 R11 K45 0x5C381200, // 00A5 MOVE R14 R9 0x583C0000, // 00A6 LDCONST R15 K0 0x7C300600, // 00A7 CALL R12 3 @@ -2572,8 +2518,8 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x2C381C0F, // 00B6 AND R14 R14 R15 0x543E00FE, // 00B7 LDINT R15 255 0x2C3C140F, // 00B8 AND R15 R10 R15 - 0xB8424600, // 00B9 GETNGBL R16 K35 - 0x8C402124, // 00BA GETMET R16 R16 K36 + 0xB8424200, // 00B9 GETNGBL R16 K33 + 0x8C402122, // 00BA GETMET R16 R16 K34 0x5C481200, // 00BB MOVE R18 R9 0x584C0000, // 00BC LDCONST R19 K0 0x545200FE, // 00BD LDINT R20 255 @@ -2581,8 +2527,8 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x5C581A00, // 00BF MOVE R22 R13 0x7C400C00, // 00C0 CALL R16 6 0x5C342000, // 00C1 MOVE R13 R16 - 0xB8424600, // 00C2 GETNGBL R16 K35 - 0x8C402124, // 00C3 GETMET R16 R16 K36 + 0xB8424200, // 00C2 GETNGBL R16 K33 + 0x8C402122, // 00C3 GETMET R16 R16 K34 0x5C481200, // 00C4 MOVE R18 R9 0x584C0000, // 00C5 LDCONST R19 K0 0x545200FE, // 00C6 LDINT R20 255 @@ -2590,8 +2536,8 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x5C581C00, // 00C8 MOVE R22 R14 0x7C400C00, // 00C9 CALL R16 6 0x5C382000, // 00CA MOVE R14 R16 - 0xB8424600, // 00CB GETNGBL R16 K35 - 0x8C402124, // 00CC GETMET R16 R16 K36 + 0xB8424200, // 00CB GETNGBL R16 K33 + 0x8C402122, // 00CC GETMET R16 R16 K34 0x5C481200, // 00CD MOVE R18 R9 0x584C0000, // 00CE LDCONST R19 K0 0x545200FE, // 00CF LDINT R20 255 @@ -2609,14 +2555,14 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x30402011, // 00DB OR R16 R16 R17 0x3040200F, // 00DC OR R16 R16 R15 0x5C282000, // 00DD MOVE R10 R16 - 0x882C0108, // 00DE GETMBR R11 R0 K8 - 0x8C2C1716, // 00DF GETMET R11 R11 K22 + 0x882C0104, // 00DE GETMBR R11 R0 K4 + 0x8C2C1715, // 00DF GETMET R11 R11 K21 0x54360003, // 00E0 LDINT R13 4 0x0834100D, // 00E1 MUL R13 R8 R13 0x5C381400, // 00E2 MOVE R14 R10 0x543DFFFB, // 00E3 LDINT R15 -4 0x7C2C0800, // 00E4 CALL R11 4 - 0x0020110A, // 00E5 ADD R8 R8 K10 + 0x00201106, // 00E5 ADD R8 R8 K6 0x7001FF7E, // 00E6 JMP #0066 0x80000000, // 00E7 RET 0 }) @@ -2645,17 +2591,17 @@ be_local_closure(class_FireAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080530, // 0003 GETMET R2 R2 K48 + 0x8C08052E, // 0003 GETMET R2 R2 K46 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x90022300, // 0006 SETMBR R0 K17 K0 - 0x8C080121, // 0007 GETMET R2 R0 K33 + 0x90021D00, // 0006 SETMBR R0 K14 K0 + 0x8C08011F, // 0007 GETMET R2 R0 K31 0x7C080200, // 0008 CALL R2 1 - 0x88080104, // 0009 GETMBR R2 R0 K4 - 0x88080513, // 000A GETMBR R2 R2 K19 + 0x88080110, // 0009 GETMBR R2 R0 K16 + 0x88080511, // 000A GETMBR R2 R2 K17 0x540EFFFF, // 000B LDINT R3 65536 0x10080403, // 000C MOD R2 R2 R3 - 0x90022402, // 000D SETMBR R0 K18 R2 + 0x90021E02, // 000D SETMBR R0 K15 R2 0x80040000, // 000E RET 1 R0 }) ) @@ -2718,8 +2664,8 @@ static const bvalue be_ktab_class_RichPaletteColorProvider[57] = { /* K16 */ be_nested_str_weak(_interpolate), /* K17 */ be_nested_str_weak(_rebuild_color_lut), /* K18 */ be_nested_str_weak(_brightness), - /* K19 */ be_nested_str_weak(brightness), - /* K20 */ be_nested_str_weak(is_running), + /* K19 */ be_nested_str_weak(member), + /* K20 */ be_nested_str_weak(brightness), /* K21 */ be_nested_str_weak(palette), /* K22 */ be_nested_str_weak(_DEFAULT_PALETTE), /* K23 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right_X2C_X20_X23000000_X29_X3B), @@ -2991,7 +2937,7 @@ be_local_closure(class_RichPaletteColorProvider__get_color_for_value_uncached, ********************************************************************/ be_local_closure(class_RichPaletteColorProvider_update, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -3002,7 +2948,7 @@ be_local_closure(class_RichPaletteColorProvider_update, /* name */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x8808010A, // 0000 GETMBR R2 R0 K10 0x740A0003, // 0001 JMPT R2 #0006 0x88080102, // 0002 GETMBR R2 R0 K2 @@ -3011,10 +2957,11 @@ be_local_closure(class_RichPaletteColorProvider_update, /* name */ 0x780A0001, // 0005 JMPF R2 #0008 0x8C080111, // 0006 GETMET R2 R0 K17 0x7C080200, // 0007 CALL R2 1 - 0x88080113, // 0008 GETMBR R2 R0 K19 - 0x90022402, // 0009 SETMBR R0 K18 R2 - 0x88080114, // 000A GETMBR R2 R0 K20 - 0x80040400, // 000B RET 1 R2 + 0x8C080113, // 0008 GETMET R2 R0 K19 + 0x58100014, // 0009 LDCONST R4 K20 + 0x7C080400, // 000A CALL R2 2 + 0x90022402, // 000B SETMBR R0 K18 R2 + 0x80000000, // 000C RET 0 }) ) ); @@ -3571,7 +3518,7 @@ be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ 0x5411FFFE, // 0016 LDINT R4 -1 0x80040800, // 0017 RET 1 R4 0x8810011E, // 0018 GETMBR R4 R0 K30 - 0x88140113, // 0019 GETMBR R5 R0 K19 + 0x88140114, // 0019 GETMBR R5 R0 K20 0x1C180905, // 001A EQ R6 R4 K5 0x781A0039, // 001B JMPF R6 #0056 0x8C18070D, // 001C GETMET R6 R3 K13 @@ -4169,56 +4116,104 @@ be_local_class(StaticColorProvider, })), be_str_weak(StaticColorProvider) ); -// compact class 'TwinkleAnimation' ktab size: 43, total: 74 (saved 248 bytes) -static const bvalue be_ktab_class_TwinkleAnimation[43] = { - /* 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(strip_length), - /* K11 */ be_nested_str_weak(twinkle_states), - /* K12 */ be_nested_str_weak(current_colors), - /* K13 */ be_nested_str_weak(size), - /* K14 */ be_nested_str_weak(_initialize_arrays), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(get), - /* K17 */ be_nested_str_weak(tasmota), - /* K18 */ be_nested_str_weak(scale_uint), - /* K19 */ be_nested_str_weak(set), - /* K20 */ be_const_int(16777215), - /* K21 */ be_nested_str_weak(_random_range), - /* K22 */ be_nested_str_weak(get_param), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(is_value_provider), - /* K25 */ be_nested_str_weak(0x_X2508x), - /* K26 */ 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), - /* K27 */ be_nested_str_weak(priority), - /* K28 */ be_nested_str_weak(is_running), - /* K29 */ be_nested_str_weak(init), - /* K30 */ be_nested_str_weak(last_update), - /* K31 */ be_nested_str_weak(random_seed), - /* K32 */ be_nested_str_weak(time_ms), - /* K33 */ be_nested_str_weak(_fix_time_ms), - /* K34 */ be_nested_str_weak(width), - /* K35 */ be_nested_str_weak(set_pixel_color), - /* K36 */ be_nested_str_weak(update), - /* K37 */ be_nested_str_weak(_update_twinkle_simulation), - /* K38 */ be_nested_str_weak(resize), - /* K39 */ be_nested_str_weak(clear), - /* K40 */ be_const_int(1103515245), - /* K41 */ be_const_int(2147483647), - /* K42 */ be_nested_str_weak(_random), +// compact class 'TwinkleAnimation' ktab size: 40, total: 64 (saved 192 bytes) +static const bvalue be_ktab_class_TwinkleAnimation[40] = { + /* K0 */ be_nested_str_weak(get_param), + /* K1 */ be_nested_str_weak(color), + /* K2 */ be_nested_str_weak(animation), + /* K3 */ be_nested_str_weak(is_value_provider), + /* K4 */ be_nested_str_weak(0x_X2508x), + /* K5 */ 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), + /* K6 */ be_nested_str_weak(density), + /* K7 */ be_nested_str_weak(twinkle_speed), + /* K8 */ be_nested_str_weak(priority), + /* K9 */ be_nested_str_weak(is_running), + /* K10 */ be_nested_str_weak(on_param_changed), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(set_param), + /* K13 */ be_const_int(0), + /* K14 */ be_nested_str_weak(_random), + /* K15 */ be_nested_str_weak(random_seed), + /* K16 */ be_const_int(1103515245), + /* K17 */ be_const_int(2147483647), + /* K18 */ be_nested_str_weak(init), + /* K19 */ be_nested_str_weak(current_colors), + /* K20 */ be_nested_str_weak(last_update), + /* K21 */ be_nested_str_weak(engine), + /* K22 */ be_nested_str_weak(time_ms), + /* K23 */ be_nested_str_weak(_initialize_arrays), + /* K24 */ be_nested_str_weak(fade_speed), + /* K25 */ be_nested_str_weak(min_brightness), + /* K26 */ be_nested_str_weak(max_brightness), + /* K27 */ be_nested_str_weak(strip_length), + /* K28 */ be_nested_str_weak(size), + /* K29 */ be_nested_str_weak(get), + /* K30 */ be_nested_str_weak(tasmota), + /* K31 */ be_nested_str_weak(scale_uint), + /* K32 */ be_nested_str_weak(set), + /* K33 */ be_const_int(16777215), + /* K34 */ be_nested_str_weak(_random_range), + /* K35 */ be_nested_str_weak(clear), + /* K36 */ be_nested_str_weak(resize), + /* K37 */ be_nested_str_weak(width), + /* K38 */ be_nested_str_weak(set_pixel_color), + /* K39 */ be_nested_str_weak(_update_twinkle_simulation), }; extern const bclass be_class_TwinkleAnimation; +/******************************************************************** +** 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 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x58100001, // 0002 LDCONST R4 K1 + 0x7C080400, // 0003 CALL R2 2 + 0xB80E0400, // 0004 GETNGBL R3 K2 + 0x8C0C0703, // 0005 GETMET R3 R3 K3 + 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 + 0x58100004, // 000F LDCONST R4 K4 + 0x88140101, // 0010 GETMBR R5 R0 K1 + 0x7C0C0400, // 0011 CALL R3 2 + 0x5C040600, // 0012 MOVE R1 R3 + 0x600C0018, // 0013 GETGBL R3 G24 + 0x58100005, // 0014 LDCONST R4 K5 + 0x5C140200, // 0015 MOVE R5 R1 + 0x88180106, // 0016 GETMBR R6 R0 K6 + 0x881C0107, // 0017 GETMBR R7 R0 K7 + 0x88200108, // 0018 GETMBR R8 R0 K8 + 0x88240109, // 0019 GETMBR R9 R0 K9 + 0x7C0C0C00, // 001A CALL R3 6 + 0x80040600, // 001B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ @@ -4239,27 +4234,27 @@ be_local_closure(class_TwinkleAnimation_on_param_changed, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x8C0C070A, // 0003 GETMET R3 R3 K10 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x1C0C0301, // 0007 EQ R3 R1 K1 + 0x1C0C0307, // 0007 EQ R3 R1 K7 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 + 0x1410070B, // 000E LT R4 R3 K11 0x78120001, // 000F JMPF R4 #0012 - 0x580C0002, // 0010 LDCONST R3 K2 + 0x580C000B, // 0010 LDCONST R3 K11 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 + 0x8C10010C, // 0016 GETMET R4 R0 K12 + 0x58180007, // 0017 LDCONST R6 K7 0x5C1C0600, // 0018 MOVE R7 R3 0x7C100600, // 0019 CALL R4 3 0x80000000, // 001A RET 0 @@ -4269,450 +4264,6 @@ be_local_closure(class_TwinkleAnimation_on_param_changed, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: _update_twinkle_simulation -********************************************************************/ -be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ - be_nested_proto( - 20, /* nstack */ - 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[117]) { /* 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 - 0x881C0F0A, // 0006 GETMBR R7 R7 K10 - 0x6020000C, // 0007 GETGBL R8 G12 - 0x8824010B, // 0008 GETMBR R9 R0 K11 - 0x7C200200, // 0009 CALL R8 1 - 0x20201007, // 000A NE R8 R8 R7 - 0x74220006, // 000B JMPT R8 #0013 - 0x8820010C, // 000C GETMBR R8 R0 K12 - 0x8C20110D, // 000D GETMET R8 R8 K13 - 0x7C200200, // 000E CALL R8 1 - 0x54260003, // 000F LDINT R9 4 - 0x08240E09, // 0010 MUL R9 R7 R9 - 0x20201009, // 0011 NE R8 R8 R9 - 0x78220001, // 0012 JMPF R8 #0015 - 0x8C20010E, // 0013 GETMET R8 R0 K14 - 0x7C200200, // 0014 CALL R8 1 - 0x5820000F, // 0015 LDCONST R8 K15 - 0x14241007, // 0016 LT R9 R8 R7 - 0x7826002C, // 0017 JMPF R9 #0045 - 0x8824010C, // 0018 GETMBR R9 R0 K12 - 0x8C241310, // 0019 GETMET R9 R9 K16 - 0x542E0003, // 001A LDINT R11 4 - 0x082C100B, // 001B MUL R11 R8 R11 - 0x5431FFFB, // 001C LDINT R12 -4 - 0x7C240600, // 001D CALL R9 3 - 0x542A0017, // 001E LDINT R10 24 - 0x3C28120A, // 001F SHR R10 R9 R10 - 0x542E00FE, // 0020 LDINT R11 255 - 0x2C28140B, // 0021 AND R10 R10 R11 - 0x242C150F, // 0022 GT R11 R10 K15 - 0x782E001E, // 0023 JMPF R11 #0043 - 0xB82E2200, // 0024 GETNGBL R11 K17 - 0x8C2C1712, // 0025 GETMET R11 R11 K18 - 0x5C340400, // 0026 MOVE R13 R2 - 0x5838000F, // 0027 LDCONST R14 K15 - 0x543E00FE, // 0028 LDINT R15 255 - 0x58400002, // 0029 LDCONST R16 K2 - 0x54460013, // 002A LDINT R17 20 - 0x7C2C0C00, // 002B CALL R11 6 - 0x1830140B, // 002C LE R12 R10 R11 - 0x78320009, // 002D JMPF R12 #0038 - 0x8830010B, // 002E GETMBR R12 R0 K11 - 0x9830110F, // 002F SETIDX R12 R8 K15 - 0x8830010C, // 0030 GETMBR R12 R0 K12 - 0x8C301913, // 0031 GETMET R12 R12 K19 - 0x543A0003, // 0032 LDINT R14 4 - 0x0838100E, // 0033 MUL R14 R8 R14 - 0x583C000F, // 0034 LDCONST R15 K15 - 0x5441FFFB, // 0035 LDINT R16 -4 - 0x7C300800, // 0036 CALL R12 4 - 0x7002000A, // 0037 JMP #0043 - 0x0430140B, // 0038 SUB R12 R10 R11 - 0x2C341314, // 0039 AND R13 R9 K20 - 0x8838010C, // 003A GETMBR R14 R0 K12 - 0x8C381D13, // 003B GETMET R14 R14 K19 - 0x54420003, // 003C LDINT R16 4 - 0x08401010, // 003D MUL R16 R8 R16 - 0x54460017, // 003E LDINT R17 24 - 0x38441811, // 003F SHL R17 R12 R17 - 0x3044220D, // 0040 OR R17 R17 R13 - 0x5449FFFB, // 0041 LDINT R18 -4 - 0x7C380800, // 0042 CALL R14 4 - 0x00201102, // 0043 ADD R8 R8 K2 - 0x7001FFD0, // 0044 JMP #0016 - 0x5824000F, // 0045 LDCONST R9 K15 - 0x14281207, // 0046 LT R10 R9 R7 - 0x782A002B, // 0047 JMPF R10 #0074 - 0x8828010B, // 0048 GETMBR R10 R0 K11 - 0x94281409, // 0049 GETIDX R10 R10 R9 - 0x1C28150F, // 004A EQ R10 R10 K15 - 0x782A0025, // 004B JMPF R10 #0072 - 0x8C280115, // 004C GETMET R10 R0 K21 - 0x543200FE, // 004D LDINT R12 255 - 0x7C280400, // 004E CALL R10 2 - 0x14281403, // 004F LT R10 R10 R3 - 0x782A0020, // 0050 JMPF R10 #0072 - 0x8C280115, // 0051 GETMET R10 R0 K21 - 0x04300A04, // 0052 SUB R12 R5 R4 - 0x00301902, // 0053 ADD R12 R12 K2 - 0x7C280400, // 0054 CALL R10 2 - 0x0028080A, // 0055 ADD R10 R4 R10 - 0x5C2C0C00, // 0056 MOVE R11 R6 - 0x5432000F, // 0057 LDINT R12 16 - 0x3C30160C, // 0058 SHR R12 R11 R12 - 0x543600FE, // 0059 LDINT R13 255 - 0x2C30180D, // 005A AND R12 R12 R13 - 0x54360007, // 005B LDINT R13 8 - 0x3C34160D, // 005C SHR R13 R11 R13 - 0x543A00FE, // 005D LDINT R14 255 - 0x2C341A0E, // 005E AND R13 R13 R14 - 0x543A00FE, // 005F LDINT R14 255 - 0x2C38160E, // 0060 AND R14 R11 R14 - 0x883C010B, // 0061 GETMBR R15 R0 K11 - 0x983C1302, // 0062 SETIDX R15 R9 K2 - 0x883C010C, // 0063 GETMBR R15 R0 K12 - 0x8C3C1F13, // 0064 GETMET R15 R15 K19 - 0x54460003, // 0065 LDINT R17 4 - 0x08441211, // 0066 MUL R17 R9 R17 - 0x544A0017, // 0067 LDINT R18 24 - 0x38481412, // 0068 SHL R18 R10 R18 - 0x544E000F, // 0069 LDINT R19 16 - 0x384C1813, // 006A SHL R19 R12 R19 - 0x30482413, // 006B OR R18 R18 R19 - 0x544E0007, // 006C LDINT R19 8 - 0x384C1A13, // 006D SHL R19 R13 R19 - 0x30482413, // 006E OR R18 R18 R19 - 0x3048240E, // 006F OR R18 R18 R14 - 0x544DFFFB, // 0070 LDINT R19 -4 - 0x7C3C0800, // 0071 CALL R15 4 - 0x00241302, // 0072 ADD R9 R9 K2 - 0x7001FFD1, // 0073 JMP #0046 - 0x80000000, // 0074 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 - 0x8C080116, // 0001 GETMET R2 R0 K22 - 0x58100008, // 0002 LDCONST R4 K8 - 0x7C080400, // 0003 CALL R2 2 - 0xB80E2E00, // 0004 GETNGBL R3 K23 - 0x8C0C0718, // 0005 GETMET R3 R3 K24 - 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 - 0x58100019, // 000F LDCONST R4 K25 - 0x88140108, // 0010 GETMBR R5 R0 K8 - 0x7C0C0400, // 0011 CALL R3 2 - 0x5C040600, // 0012 MOVE R1 R3 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x5810001A, // 0014 LDCONST R4 K26 - 0x5C140200, // 0015 MOVE R5 R1 - 0x88180105, // 0016 GETMBR R6 R0 K5 - 0x881C0101, // 0017 GETMBR R7 R0 K1 - 0x8820011B, // 0018 GETMBR R8 R0 K27 - 0x8824011C, // 0019 GETMBR R9 R0 K28 - 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 - 0x8C08051D, // 0003 GETMET R2 R2 K29 - 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 - 0x60080015, // 0009 GETGBL R2 G21 - 0x7C080000, // 000A CALL R2 0 - 0x90021802, // 000B SETMBR R0 K12 R2 - 0x90023D0F, // 000C SETMBR R0 K30 K15 - 0x88080109, // 000D GETMBR R2 R0 K9 - 0x88080520, // 000E GETMBR R2 R2 K32 - 0x540EFFFF, // 000F LDINT R3 65536 - 0x10080403, // 0010 MOD R2 R2 R3 - 0x90023E02, // 0011 SETMBR R0 K31 R2 - 0x8C08010E, // 0012 GETMET R2 R0 K14 - 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[54]) { /* code */ - 0x880C011C, // 0000 GETMBR R3 R0 K28 - 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 - 0x8C0C0121, // 0007 GETMET R3 R0 K33 - 0x5C140400, // 0008 MOVE R5 R2 - 0x7C0C0400, // 0009 CALL R3 2 - 0x5C080600, // 000A MOVE R2 R3 - 0x880C0109, // 000B GETMBR R3 R0 K9 - 0x880C070A, // 000C GETMBR R3 R3 K10 - 0x6010000C, // 000D GETGBL R4 G12 - 0x8814010B, // 000E GETMBR R5 R0 K11 - 0x7C100200, // 000F CALL R4 1 - 0x20100803, // 0010 NE R4 R4 R3 - 0x74120006, // 0011 JMPT R4 #0019 - 0x8810010C, // 0012 GETMBR R4 R0 K12 - 0x8C10090D, // 0013 GETMET R4 R4 K13 - 0x7C100200, // 0014 CALL R4 1 - 0x54160003, // 0015 LDINT R5 4 - 0x08140605, // 0016 MUL R5 R3 R5 - 0x20100805, // 0017 NE R4 R4 R5 - 0x78120001, // 0018 JMPF R4 #001B - 0x8C10010E, // 0019 GETMET R4 R0 K14 - 0x7C100200, // 001A CALL R4 1 - 0x50100000, // 001B LDBOOL R4 0 0 - 0x5814000F, // 001C LDCONST R5 K15 - 0x14180A03, // 001D LT R6 R5 R3 - 0x781A0015, // 001E JMPF R6 #0035 - 0x88180322, // 001F GETMBR R6 R1 K34 - 0x14180A06, // 0020 LT R6 R5 R6 - 0x781A0010, // 0021 JMPF R6 #0033 - 0x8818010C, // 0022 GETMBR R6 R0 K12 - 0x8C180D10, // 0023 GETMET R6 R6 K16 - 0x54220003, // 0024 LDINT R8 4 - 0x08200A08, // 0025 MUL R8 R5 R8 - 0x5425FFFB, // 0026 LDINT R9 -4 - 0x7C180600, // 0027 CALL R6 3 - 0x541E0017, // 0028 LDINT R7 24 - 0x3C1C0C07, // 0029 SHR R7 R6 R7 - 0x542200FE, // 002A LDINT R8 255 - 0x2C1C0E08, // 002B AND R7 R7 R8 - 0x241C0F0F, // 002C GT R7 R7 K15 - 0x781E0004, // 002D JMPF R7 #0033 - 0x8C1C0323, // 002E GETMET R7 R1 K35 - 0x5C240A00, // 002F MOVE R9 R5 - 0x5C280C00, // 0030 MOVE R10 R6 - 0x7C1C0600, // 0031 CALL R7 3 - 0x50100200, // 0032 LDBOOL R4 1 0 - 0x00140B02, // 0033 ADD R5 R5 K2 - 0x7001FFE7, // 0034 JMP #001D - 0x80040800, // 0035 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 - 0x8C080524, // 0003 GETMET R2 R2 K36 - 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 - 0x8C080121, // 0009 GETMET R2 R0 K33 - 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 - 0x8810011E, // 0010 GETMBR R4 R0 K30 - 0x04100204, // 0011 SUB R4 R1 R4 - 0x28100803, // 0012 GE R4 R4 R3 - 0x78120003, // 0013 JMPF R4 #0018 - 0x90023C01, // 0014 SETMBR R0 K30 R1 - 0x8C100125, // 0015 GETMET R4 R0 K37 - 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( - 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_TwinkleAnimation, /* shared constants */ - be_str_weak(_initialize_arrays), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x88040109, // 0000 GETMBR R1 R0 K9 - 0x8804030A, // 0001 GETMBR R1 R1 K10 - 0x8808010B, // 0002 GETMBR R2 R0 K11 - 0x8C080526, // 0003 GETMET R2 R2 K38 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x8808010C, // 0006 GETMBR R2 R0 K12 - 0x8C080527, // 0007 GETMET R2 R2 K39 - 0x7C080200, // 0008 CALL R2 1 - 0x8808010C, // 0009 GETMBR R2 R0 K12 - 0x8C080526, // 000A GETMET R2 R2 K38 - 0x54120003, // 000B LDINT R4 4 - 0x08100204, // 000C MUL R4 R1 R4 - 0x7C080400, // 000D CALL R2 2 - 0x5808000F, // 000E LDCONST R2 K15 - 0x140C0401, // 000F LT R3 R2 R1 - 0x780E000A, // 0010 JMPF R3 #001C - 0x880C010B, // 0011 GETMBR R3 R0 K11 - 0x980C050F, // 0012 SETIDX R3 R2 K15 - 0x880C010C, // 0013 GETMBR R3 R0 K12 - 0x8C0C0713, // 0014 GETMET R3 R3 K19 - 0x54160003, // 0015 LDINT R5 4 - 0x08140405, // 0016 MUL R5 R2 R5 - 0x5818000F, // 0017 LDCONST R6 K15 - 0x541DFFFB, // 0018 LDINT R7 -4 - 0x7C0C0800, // 0019 CALL R3 4 - 0x00080502, // 001A ADD R2 R2 K2 - 0x7001FFF2, // 001B JMP #000F - 0x80000000, // 001C 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 */ - 0x8804011F, // 0000 GETMBR R1 R0 K31 - 0x08040328, // 0001 MUL R1 R1 K40 - 0x540A3038, // 0002 LDINT R2 12345 - 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040329, // 0004 AND R1 R1 K41 - 0x90023E01, // 0005 SETMBR R0 K31 R1 - 0x8804011F, // 0006 GETMBR R1 R0 K31 - 0x80040200, // 0007 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _random_range ********************************************************************/ @@ -4730,10 +4281,10 @@ be_local_closure(class_TwinkleAnimation__random_range, /* name */ be_str_weak(_random_range), &be_const_str_solidified, ( &(const binstruction[ 7]) { /* code */ - 0x1808030F, // 0000 LE R2 R1 K15 + 0x1808030D, // 0000 LE R2 R1 K13 0x780A0000, // 0001 JMPF R2 #0003 - 0x80061E00, // 0002 RET 1 K15 - 0x8C08012A, // 0003 GETMET R2 R0 K42 + 0x80061A00, // 0002 RET 1 K13 + 0x8C08010E, // 0003 GETMET R2 R0 K14 0x7C080200, // 0004 CALL R2 1 0x10080401, // 0005 MOD R2 R2 R1 0x80040400, // 0006 RET 1 R2 @@ -4743,21 +4294,378 @@ be_local_closure(class_TwinkleAnimation__random_range, /* name */ /*******************************************************************/ +/******************************************************************** +** 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 */ + 0x8804010F, // 0000 GETMBR R1 R0 K15 + 0x08040310, // 0001 MUL R1 R1 K16 + 0x540A3038, // 0002 LDINT R2 12345 + 0x00040202, // 0003 ADD R1 R1 R2 + 0x2C040311, // 0004 AND R1 R1 K17 + 0x90021E01, // 0005 SETMBR R0 K15 R1 + 0x8804010F, // 0006 GETMBR R1 R0 K15 + 0x80040200, // 0007 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[18]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080512, // 0003 GETMET R2 R2 K18 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x60080015, // 0006 GETGBL R2 G21 + 0x7C080000, // 0007 CALL R2 0 + 0x90022602, // 0008 SETMBR R0 K19 R2 + 0x9002290D, // 0009 SETMBR R0 K20 K13 + 0x88080115, // 000A GETMBR R2 R0 K21 + 0x88080516, // 000B GETMBR R2 R2 K22 + 0x540EFFFF, // 000C LDINT R3 65536 + 0x10080403, // 000D MOD R2 R2 R3 + 0x90021E02, // 000E SETMBR R0 K15 R2 + 0x8C080117, // 000F GETMET R2 R0 K23 + 0x7C080200, // 0010 CALL R2 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_twinkle_simulation +********************************************************************/ +be_local_closure(class_TwinkleAnimation__update_twinkle_simulation, /* name */ + be_nested_proto( + 22, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_update_twinkle_simulation), + &be_const_str_solidified, + ( &(const binstruction[116]) { /* code */ + 0x88080118, // 0000 GETMBR R2 R0 K24 + 0x880C0106, // 0001 GETMBR R3 R0 K6 + 0x88100119, // 0002 GETMBR R4 R0 K25 + 0x8814011A, // 0003 GETMBR R5 R0 K26 + 0x88180101, // 0004 GETMBR R6 R0 K1 + 0x881C0115, // 0005 GETMBR R7 R0 K21 + 0x881C0F1B, // 0006 GETMBR R7 R7 K27 + 0x88200113, // 0007 GETMBR R8 R0 K19 + 0x8C20111C, // 0008 GETMET R8 R8 K28 + 0x7C200200, // 0009 CALL R8 1 + 0x54260003, // 000A LDINT R9 4 + 0x08240E09, // 000B MUL R9 R7 R9 + 0x20201009, // 000C NE R8 R8 R9 + 0x78220001, // 000D JMPF R8 #0010 + 0x8C200117, // 000E GETMET R8 R0 K23 + 0x7C200200, // 000F CALL R8 1 + 0x5820000D, // 0010 LDCONST R8 K13 + 0x14241007, // 0011 LT R9 R8 R7 + 0x7826002A, // 0012 JMPF R9 #003E + 0x88240113, // 0013 GETMBR R9 R0 K19 + 0x8C24131D, // 0014 GETMET R9 R9 K29 + 0x542E0003, // 0015 LDINT R11 4 + 0x082C100B, // 0016 MUL R11 R8 R11 + 0x5431FFFB, // 0017 LDINT R12 -4 + 0x7C240600, // 0018 CALL R9 3 + 0x542A0017, // 0019 LDINT R10 24 + 0x3C28120A, // 001A SHR R10 R9 R10 + 0x542E00FE, // 001B LDINT R11 255 + 0x2C28140B, // 001C AND R10 R10 R11 + 0x242C150D, // 001D GT R11 R10 K13 + 0x782E001C, // 001E JMPF R11 #003C + 0xB82E3C00, // 001F GETNGBL R11 K30 + 0x8C2C171F, // 0020 GETMET R11 R11 K31 + 0x5C340400, // 0021 MOVE R13 R2 + 0x5838000D, // 0022 LDCONST R14 K13 + 0x543E00FE, // 0023 LDINT R15 255 + 0x5840000B, // 0024 LDCONST R16 K11 + 0x54460013, // 0025 LDINT R17 20 + 0x7C2C0C00, // 0026 CALL R11 6 + 0x1830140B, // 0027 LE R12 R10 R11 + 0x78320007, // 0028 JMPF R12 #0031 + 0x88300113, // 0029 GETMBR R12 R0 K19 + 0x8C301920, // 002A GETMET R12 R12 K32 + 0x543A0003, // 002B LDINT R14 4 + 0x0838100E, // 002C MUL R14 R8 R14 + 0x583C000D, // 002D LDCONST R15 K13 + 0x5441FFFB, // 002E LDINT R16 -4 + 0x7C300800, // 002F CALL R12 4 + 0x7002000A, // 0030 JMP #003C + 0x0430140B, // 0031 SUB R12 R10 R11 + 0x2C341321, // 0032 AND R13 R9 K33 + 0x88380113, // 0033 GETMBR R14 R0 K19 + 0x8C381D20, // 0034 GETMET R14 R14 K32 + 0x54420003, // 0035 LDINT R16 4 + 0x08401010, // 0036 MUL R16 R8 R16 + 0x54460017, // 0037 LDINT R17 24 + 0x38441811, // 0038 SHL R17 R12 R17 + 0x3044220D, // 0039 OR R17 R17 R13 + 0x5449FFFB, // 003A LDINT R18 -4 + 0x7C380800, // 003B CALL R14 4 + 0x0020110B, // 003C ADD R8 R8 K11 + 0x7001FFD2, // 003D JMP #0011 + 0x5824000D, // 003E LDCONST R9 K13 + 0x14281207, // 003F LT R10 R9 R7 + 0x782A0031, // 0040 JMPF R10 #0073 + 0x88280113, // 0041 GETMBR R10 R0 K19 + 0x8C28151D, // 0042 GETMET R10 R10 K29 + 0x54320003, // 0043 LDINT R12 4 + 0x0830120C, // 0044 MUL R12 R9 R12 + 0x5435FFFB, // 0045 LDINT R13 -4 + 0x7C280600, // 0046 CALL R10 3 + 0x542E0017, // 0047 LDINT R11 24 + 0x3C2C140B, // 0048 SHR R11 R10 R11 + 0x543200FE, // 0049 LDINT R12 255 + 0x2C2C160C, // 004A AND R11 R11 R12 + 0x1C30170D, // 004B EQ R12 R11 K13 + 0x78320023, // 004C JMPF R12 #0071 + 0x8C300122, // 004D GETMET R12 R0 K34 + 0x543A00FE, // 004E LDINT R14 255 + 0x7C300400, // 004F CALL R12 2 + 0x14301803, // 0050 LT R12 R12 R3 + 0x7832001E, // 0051 JMPF R12 #0071 + 0x8C300122, // 0052 GETMET R12 R0 K34 + 0x04380A04, // 0053 SUB R14 R5 R4 + 0x00381D0B, // 0054 ADD R14 R14 K11 + 0x7C300400, // 0055 CALL R12 2 + 0x0030080C, // 0056 ADD R12 R4 R12 + 0x5C340C00, // 0057 MOVE R13 R6 + 0x543A000F, // 0058 LDINT R14 16 + 0x3C381A0E, // 0059 SHR R14 R13 R14 + 0x543E00FE, // 005A LDINT R15 255 + 0x2C381C0F, // 005B AND R14 R14 R15 + 0x543E0007, // 005C LDINT R15 8 + 0x3C3C1A0F, // 005D SHR R15 R13 R15 + 0x544200FE, // 005E LDINT R16 255 + 0x2C3C1E10, // 005F AND R15 R15 R16 + 0x544200FE, // 0060 LDINT R16 255 + 0x2C401A10, // 0061 AND R16 R13 R16 + 0x88440113, // 0062 GETMBR R17 R0 K19 + 0x8C442320, // 0063 GETMET R17 R17 K32 + 0x544E0003, // 0064 LDINT R19 4 + 0x084C1213, // 0065 MUL R19 R9 R19 + 0x54520017, // 0066 LDINT R20 24 + 0x38501814, // 0067 SHL R20 R12 R20 + 0x5456000F, // 0068 LDINT R21 16 + 0x38541C15, // 0069 SHL R21 R14 R21 + 0x30502815, // 006A OR R20 R20 R21 + 0x54560007, // 006B LDINT R21 8 + 0x38541E15, // 006C SHL R21 R15 R21 + 0x30502815, // 006D OR R20 R20 R21 + 0x30502810, // 006E OR R20 R20 R16 + 0x5455FFFB, // 006F LDINT R21 -4 + 0x7C440800, // 0070 CALL R17 4 + 0x0024130B, // 0071 ADD R9 R9 K11 + 0x7001FFCB, // 0072 JMP #003F + 0x80000000, // 0073 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _initialize_arrays +********************************************************************/ +be_local_closure(class_TwinkleAnimation__initialize_arrays, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(_initialize_arrays), + &be_const_str_solidified, + ( &(const binstruction[23]) { /* code */ + 0x88040115, // 0000 GETMBR R1 R0 K21 + 0x8804031B, // 0001 GETMBR R1 R1 K27 + 0x88080113, // 0002 GETMBR R2 R0 K19 + 0x8C080523, // 0003 GETMET R2 R2 K35 + 0x7C080200, // 0004 CALL R2 1 + 0x88080113, // 0005 GETMBR R2 R0 K19 + 0x8C080524, // 0006 GETMET R2 R2 K36 + 0x54120003, // 0007 LDINT R4 4 + 0x08100204, // 0008 MUL R4 R1 R4 + 0x7C080400, // 0009 CALL R2 2 + 0x5808000D, // 000A LDCONST R2 K13 + 0x140C0401, // 000B LT R3 R2 R1 + 0x780E0008, // 000C JMPF R3 #0016 + 0x880C0113, // 000D GETMBR R3 R0 K19 + 0x8C0C0720, // 000E GETMET R3 R3 K32 + 0x54160003, // 000F LDINT R5 4 + 0x08140405, // 0010 MUL R5 R2 R5 + 0x5818000D, // 0011 LDCONST R6 K13 + 0x541DFFFB, // 0012 LDINT R7 -4 + 0x7C0C0800, // 0013 CALL R3 4 + 0x0008050B, // 0014 ADD R2 R2 K11 + 0x7001FFF4, // 0015 JMP #000B + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_TwinkleAnimation_render, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_TwinkleAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x88100113, // 0000 GETMBR R4 R0 K19 + 0x8C10091C, // 0001 GETMET R4 R4 K28 + 0x7C100200, // 0002 CALL R4 1 + 0x54160003, // 0003 LDINT R5 4 + 0x08140605, // 0004 MUL R5 R3 R5 + 0x20100805, // 0005 NE R4 R4 R5 + 0x78120001, // 0006 JMPF R4 #0009 + 0x8C100117, // 0007 GETMET R4 R0 K23 + 0x7C100200, // 0008 CALL R4 1 + 0x50100000, // 0009 LDBOOL R4 0 0 + 0x5814000D, // 000A LDCONST R5 K13 + 0x14180A03, // 000B LT R6 R5 R3 + 0x781A0015, // 000C JMPF R6 #0023 + 0x88180325, // 000D GETMBR R6 R1 K37 + 0x14180A06, // 000E LT R6 R5 R6 + 0x781A0010, // 000F JMPF R6 #0021 + 0x88180113, // 0010 GETMBR R6 R0 K19 + 0x8C180D1D, // 0011 GETMET R6 R6 K29 + 0x54220003, // 0012 LDINT R8 4 + 0x08200A08, // 0013 MUL R8 R5 R8 + 0x5425FFFB, // 0014 LDINT R9 -4 + 0x7C180600, // 0015 CALL R6 3 + 0x541E0017, // 0016 LDINT R7 24 + 0x3C1C0C07, // 0017 SHR R7 R6 R7 + 0x542200FE, // 0018 LDINT R8 255 + 0x2C1C0E08, // 0019 AND R7 R7 R8 + 0x241C0F0D, // 001A GT R7 R7 K13 + 0x781E0004, // 001B JMPF R7 #0021 + 0x8C1C0326, // 001C GETMET R7 R1 K38 + 0x5C240A00, // 001D MOVE R9 R5 + 0x5C280C00, // 001E MOVE R10 R6 + 0x7C1C0600, // 001F CALL R7 3 + 0x50100200, // 0020 LDBOOL R4 1 0 + 0x00140B0B, // 0021 ADD R5 R5 K11 + 0x7001FFE7, // 0022 JMP #000B + 0x80040800, // 0023 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[12]) { /* code */ + 0x88080107, // 0000 GETMBR R2 R0 K7 + 0x540E03E7, // 0001 LDINT R3 1000 + 0x0C0C0602, // 0002 DIV R3 R3 R2 + 0x88100114, // 0003 GETMBR R4 R0 K20 + 0x04100204, // 0004 SUB R4 R1 R4 + 0x28100803, // 0005 GE R4 R4 R3 + 0x78120003, // 0006 JMPF R4 #000B + 0x90022801, // 0007 SETMBR R0 K20 R1 + 0x8C100127, // 0008 GETMET R4 R0 K39 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C100400, // 000A CALL R4 2 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: TwinkleAnimation ********************************************************************/ extern const bclass be_class_Animation; be_local_class(TwinkleAnimation, - 4, + 3, &be_class_Animation, - be_nested_map(14, + be_nested_map(13, ( (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(tostring, 10), be_const_closure(class_TwinkleAnimation_tostring_closure) }, + { be_const_key_weak(last_update, 2), be_const_var(1) }, + { be_const_key_weak(_random, -1), be_const_closure(class_TwinkleAnimation__random_closure) }, + { be_const_key_weak(_random_range, 7), be_const_closure(class_TwinkleAnimation__random_range_closure) }, { 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_key_weak(random_seed, -1), be_const_var(2) }, + { be_const_key_weak(on_param_changed, 4), be_const_closure(class_TwinkleAnimation_on_param_changed_closure) }, + { be_const_key_weak(render, -1), be_const_closure(class_TwinkleAnimation_render_closure) }, + { be_const_key_weak(_update_twinkle_simulation, -1), be_const_closure(class_TwinkleAnimation__update_twinkle_simulation_closure) }, + { be_const_key_weak(_initialize_arrays, -1), be_const_closure(class_TwinkleAnimation__initialize_arrays_closure) }, + { be_const_key_weak(current_colors, -1), be_const_var(0) }, + { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(twinkle_speed, 1), be_const_bytes_instance(0700010188130006) }, @@ -4767,14 +4675,7 @@ be_local_class(TwinkleAnimation, { be_const_key_weak(color, -1), be_const_bytes_instance(0400FF) }, { be_const_key_weak(fade_speed, 0), be_const_bytes_instance(07000001FF0001B400) }, })) ) } )) }, - { 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) ); @@ -5641,8 +5542,8 @@ be_local_closure(bounce, /* name */ ); /*******************************************************************/ -// compact class 'RichPaletteAnimation' ktab size: 16, total: 21 (saved 40 bytes) -static const bvalue be_ktab_class_RichPaletteAnimation[16] = { +// compact class 'RichPaletteAnimation' ktab size: 15, total: 19 (saved 32 bytes) +static const bvalue be_ktab_class_RichPaletteAnimation[15] = { /* K0 */ be_nested_str_weak(on_param_changed), /* K1 */ be_nested_str_weak(palette), /* K2 */ be_nested_str_weak(cycle_period), @@ -5650,15 +5551,14 @@ static const bvalue be_ktab_class_RichPaletteAnimation[16] = { /* K4 */ be_nested_str_weak(brightness), /* K5 */ be_nested_str_weak(color_provider), /* K6 */ be_nested_str_weak(set_param), - /* K7 */ be_nested_str_weak(RichPaletteAnimation_X28_X25s_X2C_X20cycle_period_X3D_X25s_X2C_X20brightness_X3D_X25s_X29), - /* K8 */ be_nested_str_weak(name), - /* K9 */ be_nested_str_weak(RichPaletteAnimation_X28uninitialized_X29), - /* K10 */ be_nested_str_weak(init), + /* K7 */ be_nested_str_weak(RichPaletteAnimation_X28cycle_period_X3D_X25s_X2C_X20brightness_X3D_X25s_X29), + /* K8 */ be_nested_str_weak(RichPaletteAnimation_X28uninitialized_X29), + /* K9 */ be_nested_str_weak(init), + /* K10 */ be_nested_str_weak(animation), /* K11 */ be_nested_str_weak(rich_palette), - /* K12 */ be_nested_str_weak(animation), - /* K13 */ be_nested_str_weak(values), - /* K14 */ be_nested_str_weak(color), - /* K15 */ be_nested_str_weak(start), + /* K12 */ be_nested_str_weak(values), + /* K13 */ be_nested_str_weak(color), + /* K14 */ be_nested_str_weak(start), }; @@ -5721,7 +5621,7 @@ be_local_closure(class_RichPaletteAnimation_on_param_changed, /* name */ ********************************************************************/ be_local_closure(class_RichPaletteAnimation_tostring, /* name */ be_nested_proto( - 6, /* nstack */ + 5, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -5732,24 +5632,23 @@ be_local_closure(class_RichPaletteAnimation_tostring, /* name */ &be_ktab_class_RichPaletteAnimation, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA8020009, // 0000 EXBLK 0 #000B + ( &(const binstruction[16]) { /* code */ + 0xA8020008, // 0000 EXBLK 0 #000A 0x60040018, // 0001 GETGBL R1 G24 0x58080007, // 0002 LDCONST R2 K7 - 0x880C0108, // 0003 GETMBR R3 R0 K8 - 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 - 0xA8040001, // 0009 EXBLK 1 1 - 0x70020004, // 000A JMP #0010 - 0xAC040000, // 000B CATCH R1 0 0 - 0x70020001, // 000C JMP #000F - 0x80061200, // 000D RET 1 K9 - 0x70020000, // 000E JMP #0010 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x80000000, // 0010 RET 0 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x88100104, // 0004 GETMBR R4 R0 K4 + 0x7C040600, // 0005 CALL R1 3 + 0xA8040001, // 0006 EXBLK 1 1 + 0x80040200, // 0007 RET 1 R1 + 0xA8040001, // 0008 EXBLK 1 1 + 0x70020004, // 0009 JMP #000F + 0xAC040000, // 000A CATCH R1 0 0 + 0x70020001, // 000B JMP #000E + 0x80061000, // 000C RET 1 K8 + 0x70020000, // 000D JMP #000F + 0xB0080000, // 000E RAISE 2 R0 R0 + 0x80000000, // 000F RET 0 }) ) ); @@ -5772,23 +5671,22 @@ be_local_closure(class_RichPaletteAnimation_init, /* name */ &be_ktab_class_RichPaletteAnimation, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050A, // 0003 GETMET R2 R2 K10 + 0x8C080509, // 0003 GETMET R2 R2 K9 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x9002110B, // 0006 SETMBR R0 K8 K11 - 0xB80A1800, // 0007 GETNGBL R2 K12 - 0x8C08050B, // 0008 GETMET R2 R2 K11 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x90020A02, // 000B SETMBR R0 K5 R2 - 0x8808010D, // 000C GETMBR R2 R0 K13 - 0x880C0105, // 000D GETMBR R3 R0 K5 - 0x980A1C03, // 000E SETIDX R2 K14 R3 - 0x80000000, // 000F RET 0 + 0xB80A1400, // 0006 GETNGBL R2 K10 + 0x8C08050B, // 0007 GETMET R2 R2 K11 + 0x5C100200, // 0008 MOVE R4 R1 + 0x7C080400, // 0009 CALL R2 2 + 0x90020A02, // 000A SETMBR R0 K5 R2 + 0x8808010C, // 000B GETMBR R2 R0 K12 + 0x880C0105, // 000C GETMBR R3 R0 K5 + 0x980A1A03, // 000D SETIDX R2 K13 R3 + 0x80000000, // 000E RET 0 }) ) ); @@ -5815,11 +5713,11 @@ be_local_closure(class_RichPaletteAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08050F, // 0003 GETMET R2 R2 K15 + 0x8C08050E, // 0003 GETMET R2 R2 K14 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x88080105, // 0006 GETMBR R2 R0 K5 - 0x8C08050F, // 0007 GETMET R2 R2 K15 + 0x8C08050E, // 0007 GETMET R2 R2 K14 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 0x80040000, // 000A RET 1 R0 @@ -6846,7 +6744,7 @@ be_local_closure(square, /* name */ ); /*******************************************************************/ -// compact class 'EngineProxy' ktab size: 41, total: 111 (saved 560 bytes) +// compact class 'EngineProxy' ktab size: 41, total: 114 (saved 584 bytes) static const bvalue be_ktab_class_EngineProxy[41] = { /* K0 */ be_nested_str_weak(animations), /* K1 */ be_nested_str_weak(animation), @@ -6858,11 +6756,11 @@ static const bvalue be_ktab_class_EngineProxy[41] = { /* K7 */ be_nested_str_weak(update), /* K8 */ be_const_int(0), /* K9 */ be_nested_str_weak(value_providers), - /* K10 */ be_const_int(1), - /* K11 */ be_nested_str_weak(sequences), - /* K12 */ be_nested_str_weak(_X25s_X28_X25s_X2C_X20animations_X3D_X25s_X2C_X20sequences_X3D_X25s_X2C_X20value_providers_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K13 */ be_nested_str_weak(name), - /* K14 */ be_nested_str_weak(is_running), + /* K10 */ be_nested_str_weak(is_running), + /* K11 */ be_nested_str_weak(start_time), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(sequences), + /* K14 */ be_nested_str_weak(_X25s_X28animations_X3D_X25s_X2C_X20sequences_X3D_X25s_X2C_X20value_providers_X3D_X25s_X2C_X20running_X3D_X25s_X29), /* K15 */ be_nested_str_weak(find), /* K16 */ be_nested_str_weak(remove), /* K17 */ be_nested_str_weak(iteration_stack), @@ -6955,7 +6853,7 @@ be_local_closure(class_EngineProxy_update, /* name */ &be_ktab_class_EngineProxy, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ + ( &(const binstruction[73]) { /* code */ 0x90020801, // 0000 SETMBR R0 K4 R1 0x88080106, // 0001 GETMBR R2 R0 K6 0x88080505, // 0002 GETMBR R2 R2 K5 @@ -6966,53 +6864,69 @@ be_local_closure(class_EngineProxy_update, /* name */ 0x8C080507, // 0007 GETMET R2 R2 K7 0x5C100200, // 0008 MOVE R4 R1 0x7C080400, // 0009 CALL R2 2 - 0x5C0C0400, // 000A MOVE R3 R2 - 0x740E0001, // 000B JMPT R3 #000E - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x80040600, // 000D RET 1 R3 - 0x580C0008, // 000E LDCONST R3 K8 - 0x6010000C, // 000F GETGBL R4 G12 - 0x88140109, // 0010 GETMBR R5 R0 K9 - 0x7C100200, // 0011 CALL R4 1 - 0x14140604, // 0012 LT R5 R3 R4 - 0x78160006, // 0013 JMPF R5 #001B - 0x88140109, // 0014 GETMBR R5 R0 K9 - 0x94140A03, // 0015 GETIDX R5 R5 R3 - 0x8C140B07, // 0016 GETMET R5 R5 K7 - 0x5C1C0200, // 0017 MOVE R7 R1 - 0x7C140400, // 0018 CALL R5 2 - 0x000C070A, // 0019 ADD R3 R3 K10 - 0x7001FFF6, // 001A JMP #0012 - 0x580C0008, // 001B LDCONST R3 K8 - 0x6014000C, // 001C GETGBL R5 G12 - 0x8818010B, // 001D GETMBR R6 R0 K11 - 0x7C140200, // 001E CALL R5 1 - 0x5C100A00, // 001F MOVE R4 R5 - 0x14140604, // 0020 LT R5 R3 R4 - 0x78160006, // 0021 JMPF R5 #0029 - 0x8814010B, // 0022 GETMBR R5 R0 K11 - 0x94140A03, // 0023 GETIDX R5 R5 R3 - 0x8C140B07, // 0024 GETMET R5 R5 K7 - 0x5C1C0200, // 0025 MOVE R7 R1 - 0x7C140400, // 0026 CALL R5 2 - 0x000C070A, // 0027 ADD R3 R3 K10 - 0x7001FFF6, // 0028 JMP #0020 - 0x580C0008, // 0029 LDCONST R3 K8 - 0x6014000C, // 002A GETGBL R5 G12 - 0x88180100, // 002B GETMBR R6 R0 K0 - 0x7C140200, // 002C CALL R5 1 - 0x5C100A00, // 002D MOVE R4 R5 - 0x14140604, // 002E LT R5 R3 R4 - 0x78160006, // 002F JMPF R5 #0037 - 0x88140100, // 0030 GETMBR R5 R0 K0 - 0x94140A03, // 0031 GETIDX R5 R5 R3 - 0x8C140B07, // 0032 GETMET R5 R5 K7 - 0x5C1C0200, // 0033 MOVE R7 R1 - 0x7C140400, // 0034 CALL R5 2 - 0x000C070A, // 0035 ADD R3 R3 K10 - 0x7001FFF6, // 0036 JMP #002E - 0x50140200, // 0037 LDBOOL R5 1 0 - 0x80040A00, // 0038 RET 1 R5 + 0x58080008, // 000A LDCONST R2 K8 + 0x600C000C, // 000B GETGBL R3 G12 + 0x88100109, // 000C GETMBR R4 R0 K9 + 0x7C0C0200, // 000D CALL R3 1 + 0x14100403, // 000E LT R4 R2 R3 + 0x7812000D, // 000F JMPF R4 #001E + 0x88100109, // 0010 GETMBR R4 R0 K9 + 0x94100802, // 0011 GETIDX R4 R4 R2 + 0x8814090A, // 0012 GETMBR R5 R4 K10 + 0x78160007, // 0013 JMPF R5 #001C + 0x8814090B, // 0014 GETMBR R5 R4 K11 + 0x4C180000, // 0015 LDNIL R6 + 0x1C140A06, // 0016 EQ R5 R5 R6 + 0x78160000, // 0017 JMPF R5 #0019 + 0x90121601, // 0018 SETMBR R4 K11 R1 + 0x8C140907, // 0019 GETMET R5 R4 K7 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x7C140400, // 001B CALL R5 2 + 0x0008050C, // 001C ADD R2 R2 K12 + 0x7001FFEF, // 001D JMP #000E + 0x58080008, // 001E LDCONST R2 K8 + 0x6010000C, // 001F GETGBL R4 G12 + 0x8814010D, // 0020 GETMBR R5 R0 K13 + 0x7C100200, // 0021 CALL R4 1 + 0x5C0C0800, // 0022 MOVE R3 R4 + 0x14100403, // 0023 LT R4 R2 R3 + 0x7812000D, // 0024 JMPF R4 #0033 + 0x8810010D, // 0025 GETMBR R4 R0 K13 + 0x94100802, // 0026 GETIDX R4 R4 R2 + 0x8814090A, // 0027 GETMBR R5 R4 K10 + 0x78160007, // 0028 JMPF R5 #0031 + 0x8814090B, // 0029 GETMBR R5 R4 K11 + 0x4C180000, // 002A LDNIL R6 + 0x1C140A06, // 002B EQ R5 R5 R6 + 0x78160000, // 002C JMPF R5 #002E + 0x90121601, // 002D SETMBR R4 K11 R1 + 0x8C140907, // 002E GETMET R5 R4 K7 + 0x5C1C0200, // 002F MOVE R7 R1 + 0x7C140400, // 0030 CALL R5 2 + 0x0008050C, // 0031 ADD R2 R2 K12 + 0x7001FFEF, // 0032 JMP #0023 + 0x58080008, // 0033 LDCONST R2 K8 + 0x6010000C, // 0034 GETGBL R4 G12 + 0x88140100, // 0035 GETMBR R5 R0 K0 + 0x7C100200, // 0036 CALL R4 1 + 0x5C0C0800, // 0037 MOVE R3 R4 + 0x14100403, // 0038 LT R4 R2 R3 + 0x7812000D, // 0039 JMPF R4 #0048 + 0x88100100, // 003A GETMBR R4 R0 K0 + 0x94100802, // 003B GETIDX R4 R4 R2 + 0x8814090A, // 003C GETMBR R5 R4 K10 + 0x78160007, // 003D JMPF R5 #0046 + 0x8814090B, // 003E GETMBR R5 R4 K11 + 0x4C180000, // 003F LDNIL R6 + 0x1C140A06, // 0040 EQ R5 R5 R6 + 0x78160000, // 0041 JMPF R5 #0043 + 0x90121601, // 0042 SETMBR R4 K11 R1 + 0x8C140907, // 0043 GETMET R5 R4 K7 + 0x5C1C0200, // 0044 MOVE R7 R1 + 0x7C140400, // 0045 CALL R5 2 + 0x0008050C, // 0046 ADD R2 R2 K12 + 0x7001FFEF, // 0047 JMP #0038 + 0x80000000, // 0048 RET 0 }) ) ); @@ -7024,7 +6938,7 @@ be_local_closure(class_EngineProxy_update, /* name */ ********************************************************************/ be_local_closure(class_EngineProxy_tostring, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -7035,25 +6949,24 @@ be_local_closure(class_EngineProxy_tostring, /* name */ &be_ktab_class_EngineProxy, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x5808000C, // 0001 LDCONST R2 K12 + 0x5808000E, // 0001 LDCONST R2 K14 0x600C0005, // 0002 GETGBL R3 G5 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x8810010D, // 0005 GETMBR R4 R0 K13 - 0x6014000C, // 0006 GETGBL R5 G12 - 0x88180100, // 0007 GETMBR R6 R0 K0 - 0x7C140200, // 0008 CALL R5 1 - 0x6018000C, // 0009 GETGBL R6 G12 - 0x881C010B, // 000A GETMBR R7 R0 K11 - 0x7C180200, // 000B CALL R6 1 - 0x601C000C, // 000C GETGBL R7 G12 - 0x88200109, // 000D GETMBR R8 R0 K9 - 0x7C1C0200, // 000E CALL R7 1 - 0x8820010E, // 000F GETMBR R8 R0 K14 - 0x7C040E00, // 0010 CALL R1 7 - 0x80040200, // 0011 RET 1 R1 + 0x6010000C, // 0005 GETGBL R4 G12 + 0x88140100, // 0006 GETMBR R5 R0 K0 + 0x7C100200, // 0007 CALL R4 1 + 0x6014000C, // 0008 GETGBL R5 G12 + 0x8818010D, // 0009 GETMBR R6 R0 K13 + 0x7C140200, // 000A CALL R5 1 + 0x6018000C, // 000B GETGBL R6 G12 + 0x881C0109, // 000C GETMBR R7 R0 K9 + 0x7C180200, // 000D CALL R6 1 + 0x881C010A, // 000E GETMBR R7 R0 K10 + 0x7C040C00, // 000F CALL R1 6 + 0x80040200, // 0010 RET 1 R1 }) ) ); @@ -7104,14 +7017,14 @@ be_local_closure(class_EngineProxy__add_sequence_manager, /* name */ be_str_weak(_add_sequence_manager), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8808010B, // 0000 GETMBR R2 R0 K11 + 0x8808010D, // 0000 GETMBR R2 R0 K13 0x8C08050F, // 0001 GETMET R2 R2 K15 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x1C080403, // 0005 EQ R2 R2 R3 0x780A0006, // 0006 JMPF R2 #000E - 0x8808010B, // 0007 GETMBR R2 R0 K11 + 0x8808010D, // 0007 GETMBR R2 R0 K13 0x8C080502, // 0008 GETMET R2 R2 K2 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 @@ -7212,14 +7125,14 @@ be_local_closure(class_EngineProxy__remove_sequence_manager, /* name */ be_str_weak(_remove_sequence_manager), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x8808010B, // 0000 GETMBR R2 R0 K11 + 0x8808010D, // 0000 GETMBR R2 R0 K13 0x8C08050F, // 0001 GETMET R2 R2 K15 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x4C0C0000, // 0004 LDNIL R3 0x200C0403, // 0005 NE R3 R2 R3 0x780E0006, // 0006 JMPF R3 #000E - 0x880C010B, // 0007 GETMBR R3 R0 K11 + 0x880C010D, // 0007 GETMBR R3 R0 K13 0x8C0C0710, // 0008 GETMET R3 R3 K16 0x5C140400, // 0009 MOVE R5 R2 0x7C0C0400, // 000A CALL R3 2 @@ -7289,10 +7202,10 @@ be_local_closure(class_EngineProxy__sort_animations_by_priority, /* name */ 0x6004000C, // 0000 GETGBL R1 G12 0x88080100, // 0001 GETMBR R2 R0 K0 0x7C040200, // 0002 CALL R1 1 - 0x1808030A, // 0003 LE R2 R1 K10 + 0x1808030C, // 0003 LE R2 R1 K12 0x780A0000, // 0004 JMPF R2 #0006 0x80000400, // 0005 RET 0 - 0x5808000A, // 0006 LDCONST R2 K10 + 0x5808000C, // 0006 LDCONST R2 K12 0x140C0401, // 0007 LT R3 R2 R1 0x780E0025, // 0008 JMPF R3 #002F 0x880C0100, // 0009 GETMBR R3 R0 K0 @@ -7303,12 +7216,12 @@ be_local_closure(class_EngineProxy__sort_animations_by_priority, /* name */ 0x88180D01, // 000E GETMBR R6 R6 K1 0x7C100400, // 000F CALL R4 2 0x74120001, // 0010 JMPT R4 #0013 - 0x0008050A, // 0011 ADD R2 R2 K10 + 0x0008050C, // 0011 ADD R2 R2 K12 0x7001FFF3, // 0012 JMP #0007 0x5C100400, // 0013 MOVE R4 R2 0x24140908, // 0014 GT R5 R4 K8 0x78160014, // 0015 JMPF R5 #002B - 0x0414090A, // 0016 SUB R5 R4 K10 + 0x0414090C, // 0016 SUB R5 R4 K12 0x88180100, // 0017 GETMBR R6 R0 K0 0x94140C05, // 0018 GETIDX R5 R6 R5 0x6018000F, // 0019 GETGBL R6 G15 @@ -7323,15 +7236,15 @@ be_local_closure(class_EngineProxy__sort_animations_by_priority, /* name */ 0x781A0000, // 0022 JMPF R6 #0024 0x70020006, // 0023 JMP #002B 0x88180100, // 0024 GETMBR R6 R0 K0 - 0x041C090A, // 0025 SUB R7 R4 K10 + 0x041C090C, // 0025 SUB R7 R4 K12 0x88200100, // 0026 GETMBR R8 R0 K0 0x941C1007, // 0027 GETIDX R7 R8 R7 0x98180807, // 0028 SETIDX R6 R4 R7 - 0x0410090A, // 0029 SUB R4 R4 K10 + 0x0410090C, // 0029 SUB R4 R4 K12 0x7001FFE8, // 002A JMP #0014 0x88140100, // 002B GETMBR R5 R0 K0 0x98140803, // 002C SETIDX R5 R4 R3 - 0x0008050A, // 002D ADD R2 R2 K10 + 0x0008050C, // 002D ADD R2 R2 K12 0x7001FFD7, // 002E JMP #0007 0x80000000, // 002F RET 0 }) @@ -7345,8 +7258,8 @@ be_local_closure(class_EngineProxy__sort_animations_by_priority, /* name */ ********************************************************************/ be_local_closure(class_EngineProxy_render, /* name */ be_nested_proto( - 12, /* nstack */ - 3, /* argc */ + 14, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -7356,46 +7269,52 @@ be_local_closure(class_EngineProxy_render, /* name */ &be_ktab_class_EngineProxy, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x880C010E, // 0000 GETMBR R3 R0 K14 - 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 - 0x500C0000, // 0007 LDBOOL R3 0 0 - 0x58100008, // 0008 LDCONST R4 K8 - 0x6014000C, // 0009 GETGBL R5 G12 - 0x88180100, // 000A GETMBR R6 R0 K0 - 0x7C140200, // 000B CALL R5 1 - 0x14180805, // 000C LT R6 R4 R5 - 0x781A0017, // 000D JMPF R6 #0026 - 0x88180100, // 000E GETMBR R6 R0 K0 - 0x94180C04, // 000F GETIDX R6 R6 R4 - 0x881C0D0E, // 0010 GETMBR R7 R6 K14 - 0x781E0011, // 0011 JMPF R7 #0024 - 0x881C0113, // 0012 GETMBR R7 R0 K19 - 0x8C1C0F14, // 0013 GETMET R7 R7 K20 - 0x7C1C0200, // 0014 CALL R7 1 - 0x8C1C0D15, // 0015 GETMET R7 R6 K21 - 0x88240113, // 0016 GETMBR R9 R0 K19 - 0x5C280400, // 0017 MOVE R10 R2 - 0x7C1C0600, // 0018 CALL R7 3 - 0x781E0009, // 0019 JMPF R7 #0024 - 0x8C200D16, // 001A GETMET R8 R6 K22 - 0x88280113, // 001B GETMBR R10 R0 K19 - 0x5C2C0400, // 001C MOVE R11 R2 - 0x7C200600, // 001D CALL R8 3 - 0x8C200317, // 001E GETMET R8 R1 K23 - 0x88280318, // 001F GETMBR R10 R1 K24 + ( &(const binstruction[45]) { /* code */ + 0x8810010A, // 0000 GETMBR R4 R0 K10 + 0x78120002, // 0001 JMPF R4 #0005 + 0x4C100000, // 0002 LDNIL R4 + 0x1C100204, // 0003 EQ R4 R1 R4 + 0x78120001, // 0004 JMPF R4 #0007 + 0x50100000, // 0005 LDBOOL R4 0 0 + 0x80040800, // 0006 RET 1 R4 + 0x4C100000, // 0007 LDNIL R4 + 0x1C100604, // 0008 EQ R4 R3 R4 + 0x78120000, // 0009 JMPF R4 #000B + 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x50100000, // 000B LDBOOL R4 0 0 + 0x58140008, // 000C LDCONST R5 K8 + 0x6018000C, // 000D GETGBL R6 G12 + 0x881C0100, // 000E GETMBR R7 R0 K0 + 0x7C180200, // 000F CALL R6 1 + 0x141C0A06, // 0010 LT R7 R5 R6 + 0x781E0019, // 0011 JMPF R7 #002C + 0x881C0100, // 0012 GETMBR R7 R0 K0 + 0x941C0E05, // 0013 GETIDX R7 R7 R5 + 0x88200F0A, // 0014 GETMBR R8 R7 K10 + 0x78220013, // 0015 JMPF R8 #002A + 0x88200113, // 0016 GETMBR R8 R0 K19 + 0x8C201114, // 0017 GETMET R8 R8 K20 + 0x7C200200, // 0018 CALL R8 1 + 0x8C200F15, // 0019 GETMET R8 R7 K21 + 0x88280113, // 001A GETMBR R10 R0 K19 + 0x5C2C0400, // 001B MOVE R11 R2 + 0x5C300600, // 001C MOVE R12 R3 + 0x7C200800, // 001D CALL R8 4 + 0x7822000A, // 001E JMPF R8 #002A + 0x8C240F16, // 001F GETMET R9 R7 K22 0x882C0113, // 0020 GETMBR R11 R0 K19 - 0x882C1718, // 0021 GETMBR R11 R11 K24 - 0x7C200600, // 0022 CALL R8 3 - 0x500C0200, // 0023 LDBOOL R3 1 0 - 0x0010090A, // 0024 ADD R4 R4 K10 - 0x7001FFE5, // 0025 JMP #000C - 0x80040600, // 0026 RET 1 R3 + 0x5C300400, // 0021 MOVE R12 R2 + 0x5C340600, // 0022 MOVE R13 R3 + 0x7C240800, // 0023 CALL R9 4 + 0x8C240317, // 0024 GETMET R9 R1 K23 + 0x882C0318, // 0025 GETMBR R11 R1 K24 + 0x88300113, // 0026 GETMBR R12 R0 K19 + 0x88301918, // 0027 GETMBR R12 R12 K24 + 0x7C240600, // 0028 CALL R9 3 + 0x50100200, // 0029 LDBOOL R4 1 0 + 0x00140B0C, // 002A ADD R5 R5 K12 + 0x7001FFE3, // 002B JMP #0010 + 0x80040800, // 002C RET 1 R4 }) ) ); @@ -7487,19 +7406,19 @@ be_local_closure(class_EngineProxy_stop, /* name */ 0x94080401, // 0007 GETIDX R2 R2 R1 0x8C080520, // 0008 GETMET R2 R2 K32 0x7C080200, // 0009 CALL R2 1 - 0x0004030A, // 000A ADD R1 R1 K10 + 0x0004030C, // 000A ADD R1 R1 K12 0x7001FFF4, // 000B JMP #0001 0x58040008, // 000C LDCONST R1 K8 0x6008000C, // 000D GETGBL R2 G12 - 0x880C010B, // 000E GETMBR R3 R0 K11 + 0x880C010D, // 000E GETMBR R3 R0 K13 0x7C080200, // 000F CALL R2 1 0x14080202, // 0010 LT R2 R1 R2 0x780A0005, // 0011 JMPF R2 #0018 - 0x8808010B, // 0012 GETMBR R2 R0 K11 + 0x8808010D, // 0012 GETMBR R2 R0 K13 0x94080401, // 0013 GETIDX R2 R2 R1 0x8C080520, // 0014 GETMET R2 R2 K32 0x7C080200, // 0015 CALL R2 1 - 0x0004030A, // 0016 ADD R1 R1 K10 + 0x0004030C, // 0016 ADD R1 R1 K12 0x7001FFF4, // 0017 JMP #000D 0x60080003, // 0018 GETGBL R2 G3 0x5C0C0000, // 0019 MOVE R3 R0 @@ -7576,7 +7495,7 @@ be_local_closure(class_EngineProxy_init, /* name */ 0x90020002, // 000B SETMBR R0 K0 R2 0x60080012, // 000C GETGBL R2 G18 0x7C080000, // 000D CALL R2 0 - 0x90021602, // 000E SETMBR R0 K11 R2 + 0x90021A02, // 000E SETMBR R0 K13 R2 0x60080012, // 000F GETGBL R2 G18 0x7C080000, // 0010 CALL R2 0 0x90021202, // 0011 SETMBR R0 K9 R2 @@ -7623,7 +7542,7 @@ be_local_closure(class_EngineProxy__add_animation, /* name */ 0x7C080400, // 000A CALL R2 2 0x8C080123, // 000B GETMET R2 R0 K35 0x7C080200, // 000C CALL R2 1 - 0x8808010E, // 000D GETMBR R2 R0 K14 + 0x8808010A, // 000D GETMBR R2 R0 K10 0x780A0003, // 000E JMPF R2 #0013 0x8C080324, // 000F GETMET R2 R1 K36 0x88100106, // 0010 GETMBR R4 R0 K6 @@ -7704,7 +7623,7 @@ be_local_closure(class_EngineProxy_is_empty, /* name */ 0x1C040308, // 0003 EQ R1 R1 K8 0x78060009, // 0004 JMPF R1 #000F 0x6004000C, // 0005 GETGBL R1 G12 - 0x8808010B, // 0006 GETMBR R2 R0 K11 + 0x8808010D, // 0006 GETMBR R2 R0 K13 0x7C040200, // 0007 CALL R1 1 0x1C040308, // 0008 EQ R1 R1 K8 0x78060004, // 0009 JMPF R1 #000F @@ -7830,7 +7749,7 @@ be_local_closure(class_EngineProxy_clear, /* name */ 0x90020001, // 0004 SETMBR R0 K0 R1 0x60040012, // 0005 GETGBL R1 G18 0x7C040000, // 0006 CALL R1 0 - 0x90021601, // 0007 SETMBR R0 K11 R1 + 0x90021A01, // 0007 SETMBR R0 K13 R1 0x60040012, // 0008 GETGBL R1 G18 0x7C040000, // 0009 CALL R1 0 0x90021201, // 000A SETMBR R0 K9 R1 @@ -7954,7 +7873,7 @@ be_local_closure(class_EngineProxy_start, /* name */ &be_ktab_class_EngineProxy, /* shared constants */ be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ + ( &(const binstruction[46]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 @@ -7963,31 +7882,44 @@ be_local_closure(class_EngineProxy_start, /* name */ 0x7C080400, // 0005 CALL R2 2 0x58080008, // 0006 LDCONST R2 K8 0x600C000C, // 0007 GETGBL R3 G12 - 0x8810010B, // 0008 GETMBR R4 R0 K11 + 0x8810010D, // 0008 GETMBR R4 R0 K13 0x7C0C0200, // 0009 CALL R3 1 0x140C0403, // 000A LT R3 R2 R3 0x780E0006, // 000B JMPF R3 #0013 - 0x880C010B, // 000C GETMBR R3 R0 K11 + 0x880C010D, // 000C GETMBR R3 R0 K13 0x940C0602, // 000D GETIDX R3 R3 R2 0x8C0C0724, // 000E GETMET R3 R3 K36 0x5C140200, // 000F MOVE R5 R1 0x7C0C0400, // 0010 CALL R3 2 - 0x0008050A, // 0011 ADD R2 R2 K10 + 0x0008050C, // 0011 ADD R2 R2 K12 0x7001FFF3, // 0012 JMP #0007 0x58080008, // 0013 LDCONST R2 K8 0x600C000C, // 0014 GETGBL R3 G12 - 0x88100100, // 0015 GETMBR R4 R0 K0 + 0x88100109, // 0015 GETMBR R4 R0 K9 0x7C0C0200, // 0016 CALL R3 1 0x140C0403, // 0017 LT R3 R2 R3 0x780E0006, // 0018 JMPF R3 #0020 - 0x880C0100, // 0019 GETMBR R3 R0 K0 + 0x880C0109, // 0019 GETMBR R3 R0 K9 0x940C0602, // 001A GETIDX R3 R3 R2 0x8C0C0724, // 001B GETMET R3 R3 K36 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 - 0x0008050A, // 001E ADD R2 R2 K10 + 0x0008050C, // 001E ADD R2 R2 K12 0x7001FFF3, // 001F JMP #0014 - 0x80040000, // 0020 RET 1 R0 + 0x58080008, // 0020 LDCONST R2 K8 + 0x600C000C, // 0021 GETGBL R3 G12 + 0x88100100, // 0022 GETMBR R4 R0 K0 + 0x7C0C0200, // 0023 CALL R3 1 + 0x140C0403, // 0024 LT R3 R2 R3 + 0x780E0006, // 0025 JMPF R3 #002D + 0x880C0100, // 0026 GETMBR R3 R0 K0 + 0x940C0602, // 0027 GETIDX R3 R3 R2 + 0x8C0C0724, // 0028 GETMET R3 R3 K36 + 0x5C140200, // 0029 MOVE R5 R1 + 0x7C0C0400, // 002A CALL R3 2 + 0x0008050C, // 002B ADD R2 R2 K12 + 0x7001FFF3, // 002C JMP #0021 + 0x80040000, // 002D RET 1 R0 }) ) ); @@ -8038,8 +7970,8 @@ be_local_class(EngineProxy, })), be_str_weak(EngineProxy) ); -// compact class 'NoiseAnimation' ktab size: 50, total: 105 (saved 440 bytes) -static const bvalue be_ktab_class_NoiseAnimation[50] = { +// compact class 'NoiseAnimation' ktab size: 49, total: 101 (saved 416 bytes) +static const bvalue be_ktab_class_NoiseAnimation[49] = { /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(engine), /* K2 */ be_nested_str_weak(strip_length), @@ -8076,20 +8008,19 @@ static const bvalue be_ktab_class_NoiseAnimation[50] = { /* K33 */ be_nested_str_weak(resolve_value), /* K34 */ be_nested_str_weak(on_param_changed), /* K35 */ be_nested_str_weak(_init_noise_table), - /* 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_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(width), + /* K37 */ be_nested_str_weak(set_pixel_color), + /* K38 */ be_nested_str_weak(is_value_provider), + /* K39 */ be_nested_str_weak(0x_X2508x), + /* K40 */ 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), + /* K41 */ be_nested_str_weak(scale), + /* K42 */ be_nested_str_weak(octaves), + /* K43 */ be_nested_str_weak(priority), + /* K44 */ be_nested_str_weak(is_running), + /* K45 */ be_nested_str_weak(start), + /* K46 */ be_nested_str_weak(persistence), + /* K47 */ be_nested_str_weak(_noise_1d), + /* K48 */ be_const_int(2), }; @@ -8323,42 +8254,38 @@ be_local_closure(class_NoiseAnimation_update, /* name */ &be_ktab_class_NoiseAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ + ( &(const binstruction[31]) { /* 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 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080119, // 0009 GETMBR R2 R0 K25 - 0x240C0506, // 000A GT R3 R2 K6 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C011A, // 000C GETMBR R3 R0 K26 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8123600, // 000E GETNGBL R4 K27 - 0x8C10091C, // 000F GETMET R4 R4 K28 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C0006, // 0011 LDCONST R7 K6 - 0x542200FE, // 0012 LDINT R8 255 - 0x58240006, // 0013 LDCONST R9 K6 - 0x542A0004, // 0014 LDINT R10 5 - 0x7C100C00, // 0015 CALL R4 6 - 0x24140906, // 0016 GT R5 R4 K6 - 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 - 0x90020A05, // 001D SETMBR R0 K5 R5 - 0x8C0C011D, // 001E GETMET R3 R0 K29 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 + 0x88080119, // 0006 GETMBR R2 R0 K25 + 0x240C0506, // 0007 GT R3 R2 K6 + 0x780E0011, // 0008 JMPF R3 #001B + 0x880C011A, // 0009 GETMBR R3 R0 K26 + 0x040C0203, // 000A SUB R3 R1 R3 + 0xB8123600, // 000B GETNGBL R4 K27 + 0x8C10091C, // 000C GETMET R4 R4 K28 + 0x5C180400, // 000D MOVE R6 R2 + 0x581C0006, // 000E LDCONST R7 K6 + 0x542200FE, // 000F LDINT R8 255 + 0x58240006, // 0010 LDCONST R9 K6 + 0x542A0004, // 0011 LDINT R10 5 + 0x7C100C00, // 0012 CALL R4 6 + 0x24140906, // 0013 GT R5 R4 K6 + 0x78160005, // 0014 JMPF R5 #001B + 0x08140604, // 0015 MUL R5 R3 R4 + 0x541A03E7, // 0016 LDINT R6 1000 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x541A00FF, // 0018 LDINT R6 256 + 0x10140A06, // 0019 MOD R5 R5 R6 + 0x90020A05, // 001A SETMBR R0 K5 R5 + 0x8C0C011D, // 001B GETMET R3 R0 K29 + 0x5C140200, // 001C MOVE R5 R1 + 0x7C0C0400, // 001D CALL R3 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -8488,7 +8415,7 @@ be_local_closure(class_NoiseAnimation_on_param_changed, /* name */ be_local_closure(class_NoiseAnimation_render, /* name */ be_nested_proto( 9, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -8498,35 +8425,22 @@ be_local_closure(class_NoiseAnimation_render, /* name */ &be_ktab_class_NoiseAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[28]) { /* 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 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x880C0702, // 000C GETMBR R3 R3 K2 - 0x58100006, // 000D LDCONST R4 K6 - 0x14140803, // 000E LT R5 R4 R3 - 0x78160009, // 000F JMPF R5 #001A - 0x88140326, // 0010 GETMBR R5 R1 K38 - 0x14140805, // 0011 LT R5 R4 R5 - 0x78160004, // 0012 JMPF R5 #0018 - 0x8C140327, // 0013 GETMET R5 R1 K39 - 0x5C1C0800, // 0014 MOVE R7 R4 - 0x88200103, // 0015 GETMBR R8 R0 K3 - 0x94201004, // 0016 GETIDX R8 R8 R4 - 0x7C140600, // 0017 CALL R5 3 - 0x00100908, // 0018 ADD R4 R4 K8 - 0x7001FFF3, // 0019 JMP #000E - 0x50140200, // 001A LDBOOL R5 1 0 - 0x80040A00, // 001B RET 1 R5 + ( &(const binstruction[15]) { /* code */ + 0x58100006, // 0000 LDCONST R4 K6 + 0x14140803, // 0001 LT R5 R4 R3 + 0x78160009, // 0002 JMPF R5 #000D + 0x88140324, // 0003 GETMBR R5 R1 K36 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160004, // 0005 JMPF R5 #000B + 0x8C140325, // 0006 GETMET R5 R1 K37 + 0x5C1C0800, // 0007 MOVE R7 R4 + 0x88200103, // 0008 GETMBR R8 R0 K3 + 0x94201004, // 0009 GETIDX R8 R8 R4 + 0x7C140600, // 000A CALL R5 3 + 0x00100908, // 000B ADD R4 R4 K8 + 0x7001FFF3, // 000C JMP #0001 + 0x50140200, // 000D LDBOOL R5 1 0 + 0x80040A00, // 000E RET 1 R5 }) ) ); @@ -8553,7 +8467,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 + 0x8C0C0726, // 0003 GETMET R3 R3 K38 0x5C140200, // 0004 MOVE R5 R1 0x7C0C0400, // 0005 CALL R3 2 0x780E0004, // 0006 JMPF R3 #000C @@ -8563,18 +8477,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 + 0x58100027, // 000D LDCONST R4 K39 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 + 0x58100028, // 0012 LDCONST R4 K40 0x5C140400, // 0013 MOVE R5 R2 - 0x8818012B, // 0014 GETMBR R6 R0 K43 + 0x88180129, // 0014 GETMBR R6 R0 K41 0x881C0119, // 0015 GETMBR R7 R0 K25 - 0x8820012C, // 0016 GETMBR R8 R0 K44 - 0x8824012D, // 0017 GETMBR R9 R0 K45 - 0x88280124, // 0018 GETMBR R10 R0 K36 + 0x8820012A, // 0016 GETMBR R8 R0 K42 + 0x8824012B, // 0017 GETMBR R9 R0 K43 + 0x8828012C, // 0018 GETMBR R10 R0 K44 0x7C0C0E00, // 0019 CALL R3 7 0x80040600, // 001A RET 1 R3 }) @@ -8603,7 +8517,7 @@ 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 + 0x8C08052D, // 0003 GETMET R2 R2 K45 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x8C080123, // 0006 GETMET R2 R0 K35 @@ -8694,9 +8608,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 + 0x88140129, // 0002 GETMBR R5 R0 K41 + 0x8818012A, // 0003 GETMBR R6 R0 K42 + 0x881C012E, // 0004 GETMBR R7 R0 K46 0x5C200A00, // 0005 MOVE R8 R5 0x58240006, // 0006 LDCONST R9 K6 0x58280006, // 0007 LDCONST R10 K6 @@ -8713,7 +8627,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 + 0x8C30012F, // 0015 GETMET R12 R0 K47 0x5C381600, // 0016 MOVE R14 R11 0x7C300400, // 0017 CALL R12 2 0xB8363600, // 0018 GETNGBL R13 K27 @@ -8735,7 +8649,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 + 0x08201130, // 002B MUL R8 R8 K48 0x543600FE, // 002C LDINT R13 255 0x2434100D, // 002D GT R13 R8 R13 0x78360000, // 002E JMPF R13 #0030 @@ -9623,44 +9537,43 @@ be_local_closure(twinkle_gentle, /* name */ ); /*******************************************************************/ -// compact class 'PaletteGradientAnimation' ktab size: 36, total: 56 (saved 160 bytes) -static const bvalue be_ktab_class_PaletteGradientAnimation[36] = { +// compact class 'PaletteGradientAnimation' ktab size: 35, total: 52 (saved 136 bytes) +static const bvalue be_ktab_class_PaletteGradientAnimation[35] = { /* K0 */ be_nested_str_weak(on_param_changed), /* K1 */ be_nested_str_weak(color_source), /* K2 */ be_nested_str_weak(_initialize_value_buffer), - /* K3 */ be_nested_str_weak(_fix_time_ms), - /* K4 */ be_nested_str_weak(get_param), - /* K5 */ be_nested_str_weak(start_time), - /* K6 */ be_nested_str_weak(engine), - /* K7 */ be_nested_str_weak(strip_length), - /* K8 */ be_nested_str_weak(animation), - /* K9 */ be_nested_str_weak(color_provider), - /* K10 */ be_nested_str_weak(get_lut), - /* K11 */ be_nested_str_weak(LUT_FACTOR), - /* K12 */ be_const_int(0), - /* K13 */ be_nested_str_weak(pixels), - /* K14 */ be_nested_str_weak(_buffer), - /* K15 */ be_nested_str_weak(value_buffer), - /* K16 */ be_const_int(2), - /* K17 */ be_const_int(1), - /* K18 */ be_const_int(3), - /* K19 */ be_nested_str_weak(get_color_for_value), - /* K20 */ be_nested_str_weak(set_pixel_color), - /* K21 */ be_nested_str_weak(shift_period), - /* K22 */ be_nested_str_weak(spatial_period), - /* K23 */ be_nested_str_weak(phase_shift), - /* K24 */ be_nested_str_weak(tasmota), - /* K25 */ be_nested_str_weak(scale_uint), - /* K26 */ be_const_int(522241), - /* K27 */ be_nested_str_weak(resize), - /* K28 */ be_nested_str_weak(init), - /* K29 */ be_nested_str_weak(name), - /* K30 */ be_nested_str_weak(palette_gradient), - /* K31 */ be_nested_str_weak(_X25s_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K32 */ be_nested_str_weak(priority), - /* K33 */ be_nested_str_weak(is_running), - /* K34 */ be_nested_str_weak(update), - /* K35 */ be_nested_str_weak(_update_value_buffer), + /* K3 */ be_nested_str_weak(member), + /* K4 */ be_nested_str_weak(shift_period), + /* K5 */ be_nested_str_weak(spatial_period), + /* K6 */ be_nested_str_weak(phase_shift), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(_spatial_period), + /* K9 */ be_nested_str_weak(_phase_shift), + /* K10 */ be_nested_str_weak(value_buffer), + /* K11 */ be_nested_str_weak(tasmota), + /* K12 */ be_nested_str_weak(scale_uint), + /* K13 */ be_const_int(522241), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(_buffer), + /* K16 */ be_nested_str_weak(get_param), + /* K17 */ be_nested_str_weak(animation), + /* K18 */ be_nested_str_weak(color_provider), + /* K19 */ be_nested_str_weak(get_lut), + /* K20 */ be_nested_str_weak(LUT_FACTOR), + /* K21 */ be_nested_str_weak(pixels), + /* K22 */ be_const_int(2), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(start_time), + /* K25 */ be_nested_str_weak(get_color_for_value), + /* K26 */ be_nested_str_weak(set_pixel_color), + /* K27 */ be_nested_str_weak(engine), + /* K28 */ be_nested_str_weak(strip_length), + /* K29 */ be_nested_str_weak(_X25s_X28strip_length_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K30 */ be_nested_str_weak(priority), + /* K31 */ be_nested_str_weak(is_running), + /* K32 */ be_nested_str_weak(resize), + /* K33 */ be_nested_str_weak(init), + /* K34 */ be_nested_str_weak(_update_value_buffer), }; @@ -9701,110 +9614,6 @@ be_local_closure(class_PaletteGradientAnimation_on_param_changed, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: render -********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_render, /* name */ - be_nested_proto( - 17, /* 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_PaletteGradientAnimation, /* shared constants */ - be_str_weak(render), - &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ - 0x8C0C0103, // 0000 GETMET R3 R0 K3 - 0x5C140400, // 0001 MOVE R5 R2 - 0x7C0C0400, // 0002 CALL R3 2 - 0x5C080600, // 0003 MOVE R2 R3 - 0x8C0C0104, // 0004 GETMET R3 R0 K4 - 0x58140001, // 0005 LDCONST R5 K1 - 0x7C0C0400, // 0006 CALL R3 2 - 0x4C100000, // 0007 LDNIL R4 - 0x1C100604, // 0008 EQ R4 R3 R4 - 0x78120001, // 0009 JMPF R4 #000C - 0x50100000, // 000A LDBOOL R4 0 0 - 0x80040800, // 000B RET 1 R4 - 0x88100105, // 000C GETMBR R4 R0 K5 - 0x04100404, // 000D SUB R4 R2 R4 - 0x88140106, // 000E GETMBR R5 R0 K6 - 0x88140B07, // 000F GETMBR R5 R5 K7 - 0x4C180000, // 0010 LDNIL R6 - 0x601C000F, // 0011 GETGBL R7 G15 - 0x5C200600, // 0012 MOVE R8 R3 - 0xB8261000, // 0013 GETNGBL R9 K8 - 0x88241309, // 0014 GETMBR R9 R9 K9 - 0x7C1C0400, // 0015 CALL R7 2 - 0x781E0028, // 0016 JMPF R7 #0040 - 0x8C1C070A, // 0017 GETMET R7 R3 K10 - 0x7C1C0200, // 0018 CALL R7 1 - 0x5C180E00, // 0019 MOVE R6 R7 - 0x4C200000, // 001A LDNIL R8 - 0x201C0E08, // 001B NE R7 R7 R8 - 0x781E0022, // 001C JMPF R7 #0040 - 0x881C070B, // 001D GETMBR R7 R3 K11 - 0x542200FF, // 001E LDINT R8 256 - 0x3C201007, // 001F SHR R8 R8 R7 - 0x5824000C, // 0020 LDCONST R9 K12 - 0x8828030D, // 0021 GETMBR R10 R1 K13 - 0x8C28150E, // 0022 GETMET R10 R10 K14 - 0x7C280200, // 0023 CALL R10 1 - 0x8C2C0D0E, // 0024 GETMET R11 R6 K14 - 0x7C2C0200, // 0025 CALL R11 1 - 0x8830010F, // 0026 GETMBR R12 R0 K15 - 0x8C30190E, // 0027 GETMET R12 R12 K14 - 0x7C300200, // 0028 CALL R12 1 - 0x14341205, // 0029 LT R13 R9 R5 - 0x78360013, // 002A JMPF R13 #003F - 0x94341809, // 002B GETIDX R13 R12 R9 - 0x3C381A07, // 002C SHR R14 R13 R7 - 0x543E00FE, // 002D LDINT R15 255 - 0x1C3C1A0F, // 002E EQ R15 R13 R15 - 0x783E0000, // 002F JMPF R15 #0031 - 0x5C381000, // 0030 MOVE R14 R8 - 0x383C1D10, // 0031 SHL R15 R14 K16 - 0x003C160F, // 0032 ADD R15 R11 R15 - 0x94401F0C, // 0033 GETIDX R16 R15 K12 - 0x982A1810, // 0034 SETIDX R10 K12 R16 - 0x94401F11, // 0035 GETIDX R16 R15 K17 - 0x982A2210, // 0036 SETIDX R10 K17 R16 - 0x94401F10, // 0037 GETIDX R16 R15 K16 - 0x982A2010, // 0038 SETIDX R10 K16 R16 - 0x94401F12, // 0039 GETIDX R16 R15 K18 - 0x982A2410, // 003A SETIDX R10 K18 R16 - 0x00241311, // 003B ADD R9 R9 K17 - 0x54420003, // 003C LDINT R16 4 - 0x00281410, // 003D ADD R10 R10 R16 - 0x7001FFE9, // 003E JMP #0029 - 0x7002000E, // 003F JMP #004F - 0x581C000C, // 0040 LDCONST R7 K12 - 0x14200E05, // 0041 LT R8 R7 R5 - 0x7822000B, // 0042 JMPF R8 #004F - 0x8820010F, // 0043 GETMBR R8 R0 K15 - 0x94201007, // 0044 GETIDX R8 R8 R7 - 0x8C240713, // 0045 GETMET R9 R3 K19 - 0x5C2C1000, // 0046 MOVE R11 R8 - 0x5C300800, // 0047 MOVE R12 R4 - 0x7C240600, // 0048 CALL R9 3 - 0x8C280314, // 0049 GETMET R10 R1 K20 - 0x5C300E00, // 004A MOVE R12 R7 - 0x5C341200, // 004B MOVE R13 R9 - 0x7C280600, // 004C CALL R10 3 - 0x001C0F11, // 004D ADD R7 R7 K17 - 0x7001FFF1, // 004E JMP #0041 - 0x501C0200, // 004F LDBOOL R7 1 0 - 0x80040E00, // 0050 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _update_value_buffer ********************************************************************/ @@ -9821,53 +9630,212 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name &be_ktab_class_PaletteGradientAnimation, /* shared constants */ be_str_weak(_update_value_buffer), &be_const_str_solidified, - ( &(const binstruction[46]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x88100116, // 0001 GETMBR R4 R0 K22 - 0x88140117, // 0002 GETMBR R5 R0 K23 - 0x2418090C, // 0003 GT R6 R4 K12 - 0x781A0001, // 0004 JMPF R6 #0007 - 0x5C180800, // 0005 MOVE R6 R4 - 0x70020000, // 0006 JMP #0008 - 0x5C180400, // 0007 MOVE R6 R2 - 0x581C000C, // 0008 LDCONST R7 K12 - 0x2420070C, // 0009 GT R8 R3 K12 - 0x78220008, // 000A JMPF R8 #0014 - 0xB8223000, // 000B GETNGBL R8 K24 - 0x8C201119, // 000C GETMET R8 R8 K25 - 0x10280203, // 000D MOD R10 R1 R3 - 0x582C000C, // 000E LDCONST R11 K12 - 0x5C300600, // 000F MOVE R12 R3 - 0x5834000C, // 0010 LDCONST R13 K12 - 0x5C380C00, // 0011 MOVE R14 R6 - 0x7C200C00, // 0012 CALL R8 6 - 0x5C1C1000, // 0013 MOVE R7 R8 - 0xB8223000, // 0014 GETNGBL R8 K24 - 0x8C201119, // 0015 GETMET R8 R8 K25 - 0x5C280A00, // 0016 MOVE R10 R5 - 0x582C000C, // 0017 LDCONST R11 K12 - 0x543200FE, // 0018 LDINT R12 255 - 0x5834000C, // 0019 LDCONST R13 K12 - 0x5C380C00, // 001A MOVE R14 R6 - 0x7C200C00, // 001B CALL R8 6 - 0x5824000C, // 001C LDCONST R9 K12 - 0x00280E08, // 001D ADD R10 R7 R8 - 0x10281406, // 001E MOD R10 R10 R6 - 0x0C2E3406, // 001F DIV R11 K26 R6 - 0x3C2C1711, // 0020 SHR R11 R11 K17 - 0x0830140B, // 0021 MUL R12 R10 R11 - 0x8834010F, // 0022 GETMBR R13 R0 K15 - 0x8C341B0E, // 0023 GETMET R13 R13 K14 - 0x7C340200, // 0024 CALL R13 1 - 0x14381202, // 0025 LT R14 R9 R2 - 0x783A0005, // 0026 JMPF R14 #002D - 0x543A0009, // 0027 LDINT R14 10 - 0x3C38180E, // 0028 SHR R14 R12 R14 - 0x9834120E, // 0029 SETIDX R13 R9 R14 - 0x0030180B, // 002A ADD R12 R12 R11 - 0x00241311, // 002B ADD R9 R9 K17 - 0x7001FFF7, // 002C JMP #0025 - 0x80000000, // 002D RET 0 + ( &(const binstruction[72]) { /* code */ + 0x8C0C0103, // 0000 GETMET R3 R0 K3 + 0x58140004, // 0001 LDCONST R5 K4 + 0x7C0C0400, // 0002 CALL R3 2 + 0x8C100103, // 0003 GETMET R4 R0 K3 + 0x58180005, // 0004 LDCONST R6 K5 + 0x7C100400, // 0005 CALL R4 2 + 0x8C140103, // 0006 GETMET R5 R0 K3 + 0x581C0006, // 0007 LDCONST R7 K6 + 0x7C140400, // 0008 CALL R5 2 + 0x1C180707, // 0009 EQ R6 R3 K7 + 0x781A0011, // 000A JMPF R6 #001D + 0x88180108, // 000B GETMBR R6 R0 K8 + 0x4C1C0000, // 000C LDNIL R7 + 0x20180C07, // 000D NE R6 R6 R7 + 0x781A000B, // 000E JMPF R6 #001B + 0x88180108, // 000F GETMBR R6 R0 K8 + 0x1C180C04, // 0010 EQ R6 R6 R4 + 0x781A0008, // 0011 JMPF R6 #001B + 0x88180109, // 0012 GETMBR R6 R0 K9 + 0x1C180C05, // 0013 EQ R6 R6 R5 + 0x781A0005, // 0014 JMPF R6 #001B + 0x6018000C, // 0015 GETGBL R6 G12 + 0x881C010A, // 0016 GETMBR R7 R0 K10 + 0x7C180200, // 0017 CALL R6 1 + 0x1C180C02, // 0018 EQ R6 R6 R2 + 0x781A0000, // 0019 JMPF R6 #001B + 0x80000C00, // 001A RET 0 + 0x90021004, // 001B SETMBR R0 K8 R4 + 0x90021205, // 001C SETMBR R0 K9 R5 + 0x24180907, // 001D GT R6 R4 K7 + 0x781A0001, // 001E JMPF R6 #0021 + 0x5C180800, // 001F MOVE R6 R4 + 0x70020000, // 0020 JMP #0022 + 0x5C180400, // 0021 MOVE R6 R2 + 0x581C0007, // 0022 LDCONST R7 K7 + 0x24200707, // 0023 GT R8 R3 K7 + 0x78220008, // 0024 JMPF R8 #002E + 0xB8221600, // 0025 GETNGBL R8 K11 + 0x8C20110C, // 0026 GETMET R8 R8 K12 + 0x10280203, // 0027 MOD R10 R1 R3 + 0x582C0007, // 0028 LDCONST R11 K7 + 0x5C300600, // 0029 MOVE R12 R3 + 0x58340007, // 002A LDCONST R13 K7 + 0x5C380C00, // 002B MOVE R14 R6 + 0x7C200C00, // 002C CALL R8 6 + 0x5C1C1000, // 002D MOVE R7 R8 + 0xB8221600, // 002E GETNGBL R8 K11 + 0x8C20110C, // 002F GETMET R8 R8 K12 + 0x5C280A00, // 0030 MOVE R10 R5 + 0x582C0007, // 0031 LDCONST R11 K7 + 0x543200FE, // 0032 LDINT R12 255 + 0x58340007, // 0033 LDCONST R13 K7 + 0x5C380C00, // 0034 MOVE R14 R6 + 0x7C200C00, // 0035 CALL R8 6 + 0x58240007, // 0036 LDCONST R9 K7 + 0x00280E08, // 0037 ADD R10 R7 R8 + 0x10281406, // 0038 MOD R10 R10 R6 + 0x0C2E1A06, // 0039 DIV R11 K13 R6 + 0x3C2C170E, // 003A SHR R11 R11 K14 + 0x0830140B, // 003B MUL R12 R10 R11 + 0x8834010A, // 003C GETMBR R13 R0 K10 + 0x8C341B0F, // 003D GETMET R13 R13 K15 + 0x7C340200, // 003E CALL R13 1 + 0x14381202, // 003F LT R14 R9 R2 + 0x783A0005, // 0040 JMPF R14 #0047 + 0x543A0009, // 0041 LDINT R14 10 + 0x3C38180E, // 0042 SHR R14 R12 R14 + 0x9834120E, // 0043 SETIDX R13 R9 R14 + 0x0030180B, // 0044 ADD R12 R12 R11 + 0x0024130E, // 0045 ADD R9 R9 K14 + 0x7001FFF7, // 0046 JMP #003F + 0x80000000, // 0047 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: render +********************************************************************/ +be_local_closure(class_PaletteGradientAnimation_render, /* name */ + be_nested_proto( + 16, /* 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_PaletteGradientAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[75]) { /* code */ + 0x8C100110, // 0000 GETMET R4 R0 K16 + 0x58180001, // 0001 LDCONST R6 K1 + 0x7C100400, // 0002 CALL R4 2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140805, // 0004 EQ R5 R4 R5 + 0x78160001, // 0005 JMPF R5 #0008 + 0x50140000, // 0006 LDBOOL R5 0 0 + 0x80040A00, // 0007 RET 1 R5 + 0x4C140000, // 0008 LDNIL R5 + 0x6018000F, // 0009 GETGBL R6 G15 + 0x5C1C0800, // 000A MOVE R7 R4 + 0xB8222200, // 000B GETNGBL R8 K17 + 0x88201112, // 000C GETMBR R8 R8 K18 + 0x7C180400, // 000D CALL R6 2 + 0x781A0028, // 000E JMPF R6 #0038 + 0x8C180913, // 000F GETMET R6 R4 K19 + 0x7C180200, // 0010 CALL R6 1 + 0x5C140C00, // 0011 MOVE R5 R6 + 0x4C1C0000, // 0012 LDNIL R7 + 0x20180C07, // 0013 NE R6 R6 R7 + 0x781A0022, // 0014 JMPF R6 #0038 + 0x88180914, // 0015 GETMBR R6 R4 K20 + 0x541E00FF, // 0016 LDINT R7 256 + 0x3C1C0E06, // 0017 SHR R7 R7 R6 + 0x58200007, // 0018 LDCONST R8 K7 + 0x88240315, // 0019 GETMBR R9 R1 K21 + 0x8C24130F, // 001A GETMET R9 R9 K15 + 0x7C240200, // 001B CALL R9 1 + 0x8C280B0F, // 001C GETMET R10 R5 K15 + 0x7C280200, // 001D CALL R10 1 + 0x882C010A, // 001E GETMBR R11 R0 K10 + 0x8C2C170F, // 001F GETMET R11 R11 K15 + 0x7C2C0200, // 0020 CALL R11 1 + 0x14301003, // 0021 LT R12 R8 R3 + 0x78320013, // 0022 JMPF R12 #0037 + 0x94301608, // 0023 GETIDX R12 R11 R8 + 0x3C341806, // 0024 SHR R13 R12 R6 + 0x543A00FE, // 0025 LDINT R14 255 + 0x1C38180E, // 0026 EQ R14 R12 R14 + 0x783A0000, // 0027 JMPF R14 #0029 + 0x5C340E00, // 0028 MOVE R13 R7 + 0x38381B16, // 0029 SHL R14 R13 K22 + 0x0038140E, // 002A ADD R14 R10 R14 + 0x943C1D07, // 002B GETIDX R15 R14 K7 + 0x98260E0F, // 002C SETIDX R9 K7 R15 + 0x943C1D0E, // 002D GETIDX R15 R14 K14 + 0x98261C0F, // 002E SETIDX R9 K14 R15 + 0x943C1D16, // 002F GETIDX R15 R14 K22 + 0x98262C0F, // 0030 SETIDX R9 K22 R15 + 0x943C1D17, // 0031 GETIDX R15 R14 K23 + 0x98262E0F, // 0032 SETIDX R9 K23 R15 + 0x0020110E, // 0033 ADD R8 R8 K14 + 0x543E0003, // 0034 LDINT R15 4 + 0x0024120F, // 0035 ADD R9 R9 R15 + 0x7001FFE9, // 0036 JMP #0021 + 0x70020010, // 0037 JMP #0049 + 0x88180118, // 0038 GETMBR R6 R0 K24 + 0x04180406, // 0039 SUB R6 R2 R6 + 0x581C0007, // 003A LDCONST R7 K7 + 0x14200E03, // 003B LT R8 R7 R3 + 0x7822000B, // 003C JMPF R8 #0049 + 0x8820010A, // 003D GETMBR R8 R0 K10 + 0x94201007, // 003E GETIDX R8 R8 R7 + 0x8C240919, // 003F GETMET R9 R4 K25 + 0x5C2C1000, // 0040 MOVE R11 R8 + 0x5C300C00, // 0041 MOVE R12 R6 + 0x7C240600, // 0042 CALL R9 3 + 0x8C28031A, // 0043 GETMET R10 R1 K26 + 0x5C300E00, // 0044 MOVE R12 R7 + 0x5C341200, // 0045 MOVE R13 R9 + 0x7C280600, // 0046 CALL R10 3 + 0x001C0F0E, // 0047 ADD R7 R7 K14 + 0x7001FFF1, // 0048 JMP #003B + 0x50180200, // 0049 LDBOOL R6 1 0 + 0x80040C00, // 004A RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_PaletteGradientAnimation_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_PaletteGradientAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x8804031C, // 0001 GETMBR R1 R1 K28 + 0x60080018, // 0002 GETGBL R2 G24 + 0x580C001D, // 0003 LDCONST R3 K29 + 0x60100005, // 0004 GETGBL R4 G5 + 0x5C140000, // 0005 MOVE R5 R0 + 0x7C100200, // 0006 CALL R4 1 + 0x5C140200, // 0007 MOVE R5 R1 + 0x8818011E, // 0008 GETMBR R6 R0 K30 + 0x881C011F, // 0009 GETMBR R7 R0 K31 + 0x7C080A00, // 000A CALL R2 5 + 0x80040400, // 000B RET 1 R2 }) ) ); @@ -9891,18 +9859,18 @@ be_local_closure(class_PaletteGradientAnimation__initialize_value_buffer, /* n be_str_weak(_initialize_value_buffer), &be_const_str_solidified, ( &(const binstruction[14]) { /* code */ - 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x88040307, // 0001 GETMBR R1 R1 K7 - 0x8808010F, // 0002 GETMBR R2 R0 K15 - 0x8C08051B, // 0003 GETMET R2 R2 K27 + 0x8804011B, // 0000 GETMBR R1 R0 K27 + 0x8804031C, // 0001 GETMBR R1 R1 K28 + 0x8808010A, // 0002 GETMBR R2 R0 K10 + 0x8C080520, // 0003 GETMET R2 R2 K32 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x5808000C, // 0006 LDCONST R2 K12 + 0x58080007, // 0006 LDCONST R2 K7 0x140C0401, // 0007 LT R3 R2 R1 0x780E0003, // 0008 JMPF R3 #000D - 0x880C010F, // 0009 GETMBR R3 R0 K15 - 0x980C050C, // 000A SETIDX R3 R2 K12 - 0x00080511, // 000B ADD R2 R2 K17 + 0x880C010A, // 0009 GETMBR R3 R0 K10 + 0x980C0507, // 000A SETIDX R3 R2 K7 + 0x0008050E, // 000B ADD R2 R2 K14 0x7001FFF9, // 000C JMP #0007 0x80000000, // 000D RET 0 }) @@ -9927,55 +9895,19 @@ be_local_closure(class_PaletteGradientAnimation_init, /* name */ &be_ktab_class_PaletteGradientAnimation, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08051C, // 0003 GETMET R2 R2 K28 + 0x8C080521, // 0003 GETMET R2 R2 K33 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x90021E02, // 0008 SETMBR R0 K15 R2 - 0x90023B1E, // 0009 SETMBR R0 K29 K30 - 0x8C080102, // 000A GETMET R2 R0 K2 - 0x7C080200, // 000B CALL R2 1 - 0x80000000, // 000C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_PaletteGradientAnimation_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_PaletteGradientAnimation, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x88040307, // 0001 GETMBR R1 R1 K7 - 0x60080018, // 0002 GETGBL R2 G24 - 0x580C001F, // 0003 LDCONST R3 K31 - 0x60100005, // 0004 GETGBL R4 G5 - 0x5C140000, // 0005 MOVE R5 R0 - 0x7C100200, // 0006 CALL R4 1 - 0x5C140200, // 0007 MOVE R5 R1 - 0x88180120, // 0008 GETMBR R6 R0 K32 - 0x881C0121, // 0009 GETMBR R7 R0 K33 - 0x7C080A00, // 000A CALL R2 5 - 0x80040400, // 000B RET 1 R2 + 0x90021402, // 0008 SETMBR R0 K10 R2 + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x80000000, // 000B RET 0 }) ) ); @@ -9998,39 +9930,25 @@ be_local_closure(class_PaletteGradientAnimation_update, /* name */ &be_ktab_class_PaletteGradientAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080522, // 0003 GETMET R2 R2 K34 - 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 - 0x8C080103, // 0009 GETMET R2 R0 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x5C040400, // 000C MOVE R1 R2 - 0x88080105, // 000D GETMBR R2 R0 K5 - 0x04080202, // 000E SUB R2 R1 R2 - 0x880C0106, // 000F GETMBR R3 R0 K6 - 0x880C0707, // 0010 GETMBR R3 R3 K7 - 0x6010000C, // 0011 GETGBL R4 G12 - 0x8814010F, // 0012 GETMBR R5 R0 K15 - 0x7C100200, // 0013 CALL R4 1 - 0x20100803, // 0014 NE R4 R4 R3 - 0x78120003, // 0015 JMPF R4 #001A - 0x8810010F, // 0016 GETMBR R4 R0 K15 - 0x8C10091B, // 0017 GETMET R4 R4 K27 - 0x5C180600, // 0018 MOVE R6 R3 - 0x7C100400, // 0019 CALL R4 2 - 0x8C100123, // 001A GETMET R4 R0 K35 - 0x5C180400, // 001B MOVE R6 R2 - 0x5C1C0600, // 001C MOVE R7 R3 - 0x7C100600, // 001D CALL R4 3 - 0x50100200, // 001E LDBOOL R4 1 0 - 0x80040800, // 001F RET 1 R4 + ( &(const binstruction[18]) { /* code */ + 0x88080118, // 0000 GETMBR R2 R0 K24 + 0x04080202, // 0001 SUB R2 R1 R2 + 0x880C011B, // 0002 GETMBR R3 R0 K27 + 0x880C071C, // 0003 GETMBR R3 R3 K28 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x8814010A, // 0005 GETMBR R5 R0 K10 + 0x7C100200, // 0006 CALL R4 1 + 0x20100803, // 0007 NE R4 R4 R3 + 0x78120003, // 0008 JMPF R4 #000D + 0x8810010A, // 0009 GETMBR R4 R0 K10 + 0x8C100920, // 000A GETMET R4 R4 K32 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x8C100122, // 000D GETMET R4 R0 K34 + 0x5C180400, // 000E MOVE R6 R2 + 0x5C1C0600, // 000F MOVE R7 R3 + 0x7C100600, // 0010 CALL R4 3 + 0x80000000, // 0011 RET 0 }) ) ); @@ -10042,15 +9960,18 @@ be_local_closure(class_PaletteGradientAnimation_update, /* name */ ********************************************************************/ extern const bclass be_class_Animation; be_local_class(PaletteGradientAnimation, - 1, + 3, &be_class_Animation, - be_nested_map(9, + be_nested_map(11, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update, 1), be_const_closure(class_PaletteGradientAnimation_update_closure) }, + { be_const_key_weak(update, 10), be_const_closure(class_PaletteGradientAnimation_update_closure) }, + { be_const_key_weak(_update_value_buffer, 6), be_const_closure(class_PaletteGradientAnimation__update_value_buffer_closure) }, + { be_const_key_weak(value_buffer, -1), be_const_var(0) }, { be_const_key_weak(tostring, -1), be_const_closure(class_PaletteGradientAnimation_tostring_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteGradientAnimation__update_value_buffer_closure) }, + { be_const_key_weak(render, 0), be_const_closure(class_PaletteGradientAnimation_render_closure) }, + { be_const_key_weak(on_param_changed, 7), be_const_closure(class_PaletteGradientAnimation_on_param_changed_closure) }, { be_const_key_weak(_initialize_value_buffer, -1), be_const_closure(class_PaletteGradientAnimation__initialize_value_buffer_closure) }, - { be_const_key_weak(on_param_changed, 8), be_const_closure(class_PaletteGradientAnimation_on_param_changed_closure) }, + { be_const_key_weak(_phase_shift, 2), be_const_var(2) }, { 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[]) { @@ -10059,9 +9980,8 @@ be_local_class(PaletteGradientAnimation, { be_const_key_weak(spatial_period, -1), be_const_bytes_instance(0500000000) }, { be_const_key_weak(phase_shift, -1), be_const_bytes_instance(07000001FF000000) }, })) ) } )) }, - { be_const_key_weak(init, 5), be_const_closure(class_PaletteGradientAnimation_init_closure) }, - { be_const_key_weak(render, 0), be_const_closure(class_PaletteGradientAnimation_render_closure) }, - { be_const_key_weak(value_buffer, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(class_PaletteGradientAnimation_init_closure) }, + { be_const_key_weak(_spatial_period, -1), be_const_var(1) }, })), be_str_weak(PaletteGradientAnimation) ); @@ -10469,8 +10389,8 @@ be_local_class(FrameBuffer, })), be_str_weak(FrameBuffer) ); -// compact class 'AnimationEngine' ktab size: 91, total: 213 (saved 976 bytes) -static const bvalue be_ktab_class_AnimationEngine[91] = { +// compact class 'AnimationEngine' ktab size: 90, total: 211 (saved 968 bytes) +static const bvalue be_ktab_class_AnimationEngine[90] = { /* K0 */ be_nested_str_weak(is_running), /* K1 */ be_nested_str_weak(fast_loop_closure), /* K2 */ be_nested_str_weak(tasmota), @@ -10517,7 +10437,7 @@ static const bvalue be_ktab_class_AnimationEngine[91] = { /* K43 */ be_const_int(3), /* K44 */ be_nested_str_weak(children), /* K45 */ be_nested_str_weak(animation), - /* K46 */ be_nested_str_weak(name), + /* K46 */ be_nested_str_weak(id), /* K47 */ be_nested_str_weak(stop), /* K48 */ be_const_int(1), /* K49 */ be_nested_str_weak(push_pixels_buffer_argb), @@ -10558,10 +10478,9 @@ static const bvalue be_ktab_class_AnimationEngine[91] = { /* K84 */ be_nested_str_weak(value_error), /* K85 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), /* K86 */ be_nested_str_weak(engine_proxy), - /* K87 */ be_nested_str_weak(root), - /* K88 */ be_nested_str_weak(TICK_MS), - /* K89 */ be_nested_str_weak(resize), - /* K90 */ be_nested_str_weak(pop_iteration_context), + /* K87 */ be_nested_str_weak(TICK_MS), + /* K88 */ be_nested_str_weak(resize), + /* K89 */ be_nested_str_weak(pop_iteration_context), }; @@ -10879,14 +10798,14 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ &be_ktab_class_AnimationEngine, /* shared constants */ be_str_weak(interrupt_animation), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ + ( &(const binstruction[30]) { /* code */ 0x58080018, // 0000 LDCONST R2 K24 0x600C000C, // 0001 GETGBL R3 G12 0x88100104, // 0002 GETMBR R4 R0 K4 0x8810092C, // 0003 GETMBR R4 R4 K44 0x7C0C0200, // 0004 CALL R3 1 0x140C0403, // 0005 LT R3 R2 R3 - 0x780E0019, // 0006 JMPF R3 #0021 + 0x780E0015, // 0006 JMPF R3 #001D 0x880C0104, // 0007 GETMBR R3 R0 K4 0x880C072C, // 0008 GETMBR R3 R3 K44 0x940C0602, // 0009 GETIDX R3 R3 R2 @@ -10895,25 +10814,21 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ 0xB81A5A00, // 000C GETNGBL R6 K45 0x88180D2D, // 000D GETMBR R6 R6 K45 0x7C100400, // 000E CALL R4 2 - 0x7812000E, // 000F JMPF R4 #001F + 0x7812000A, // 000F JMPF R4 #001B 0x8810072E, // 0010 GETMBR R4 R3 K46 - 0x4C140000, // 0011 LDNIL R5 - 0x20100805, // 0012 NE R4 R4 R5 - 0x7812000A, // 0013 JMPF R4 #001F - 0x8810072E, // 0014 GETMBR R4 R3 K46 - 0x1C100801, // 0015 EQ R4 R4 R1 - 0x78120007, // 0016 JMPF R4 #001F - 0x8C10072F, // 0017 GETMET R4 R3 K47 - 0x7C100200, // 0018 CALL R4 1 - 0x88100104, // 0019 GETMBR R4 R0 K4 - 0x8810092C, // 001A GETMBR R4 R4 K44 - 0x8C100915, // 001B GETMET R4 R4 K21 - 0x5C180400, // 001C MOVE R6 R2 - 0x7C100400, // 001D CALL R4 2 - 0x80000800, // 001E RET 0 - 0x00080530, // 001F ADD R2 R2 K48 - 0x7001FFDF, // 0020 JMP #0001 - 0x80000000, // 0021 RET 0 + 0x1C100801, // 0011 EQ R4 R4 R1 + 0x78120007, // 0012 JMPF R4 #001B + 0x8C10072F, // 0013 GETMET R4 R3 K47 + 0x7C100200, // 0014 CALL R4 1 + 0x88100104, // 0015 GETMBR R4 R0 K4 + 0x8810092C, // 0016 GETMBR R4 R4 K44 + 0x8C100915, // 0017 GETMET R4 R4 K21 + 0x5C180400, // 0018 MOVE R6 R2 + 0x7C100400, // 0019 CALL R4 2 + 0x80000800, // 001A RET 0 + 0x00080530, // 001B ADD R2 R2 K48 + 0x7001FFE3, // 001C JMP #0001 + 0x80000000, // 001D RET 0 }) ) ); @@ -11812,7 +11727,7 @@ be_local_closure(class_AnimationEngine_init, /* name */ &be_ktab_class_AnimationEngine, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[70]) { /* code */ + ( &(const binstruction[68]) { /* code */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0000, // 0002 JMPF R2 #0004 @@ -11836,53 +11751,51 @@ be_local_closure(class_AnimationEngine_init, /* name */ 0x5C100000, // 0014 MOVE R4 R0 0x7C080400, // 0015 CALL R2 2 0x90020802, // 0016 SETMBR R0 K4 R2 - 0x88080104, // 0017 GETMBR R2 R0 K4 - 0x900A5D57, // 0018 SETMBR R2 K46 K87 - 0x50080000, // 0019 LDBOOL R2 0 0 - 0x90020002, // 001A SETMBR R0 K0 R2 - 0x90021118, // 001B SETMBR R0 K8 K24 - 0x90021918, // 001C SETMBR R0 K12 K24 - 0x4C080000, // 001D LDNIL R2 - 0x90020202, // 001E SETMBR R0 K1 R2 - 0x88080158, // 001F GETMBR R2 R0 K88 - 0x90021202, // 0020 SETMBR R0 K9 R2 - 0x50080000, // 0021 LDBOOL R2 0 0 - 0x90022C02, // 0022 SETMBR R0 K22 R2 - 0x90022F18, // 0023 SETMBR R0 K23 K24 - 0x90023318, // 0024 SETMBR R0 K25 K24 - 0x90024145, // 0025 SETMBR R0 K32 K69 - 0x90024318, // 0026 SETMBR R0 K33 K24 - 0x90023518, // 0027 SETMBR R0 K26 K24 - 0x90024D45, // 0028 SETMBR R0 K38 K69 - 0x90024F18, // 0029 SETMBR R0 K39 K24 - 0x90023718, // 002A SETMBR R0 K27 K24 - 0x90025145, // 002B SETMBR R0 K40 K69 - 0x90025318, // 002C SETMBR R0 K41 K24 - 0x90023918, // 002D SETMBR R0 K28 K24 - 0x90024545, // 002E SETMBR R0 K34 K69 - 0x90024718, // 002F SETMBR R0 K35 K24 - 0x90023B18, // 0030 SETMBR R0 K29 K24 - 0x90024945, // 0031 SETMBR R0 K36 K69 - 0x90024B18, // 0032 SETMBR R0 K37 K24 - 0x90023D18, // 0033 SETMBR R0 K30 K24 - 0x90028345, // 0034 SETMBR R0 K65 K69 - 0x90028518, // 0035 SETMBR R0 K66 K24 - 0x90028118, // 0036 SETMBR R0 K64 K24 - 0x540A1387, // 0037 LDINT R2 5000 - 0x90028602, // 0038 SETMBR R0 K67 R2 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x90020002, // 0018 SETMBR R0 K0 R2 + 0x90021118, // 0019 SETMBR R0 K8 K24 + 0x90021918, // 001A SETMBR R0 K12 K24 + 0x4C080000, // 001B LDNIL R2 + 0x90020202, // 001C SETMBR R0 K1 R2 + 0x88080157, // 001D GETMBR R2 R0 K87 + 0x90021202, // 001E SETMBR R0 K9 R2 + 0x50080000, // 001F LDBOOL R2 0 0 + 0x90022C02, // 0020 SETMBR R0 K22 R2 + 0x90022F18, // 0021 SETMBR R0 K23 K24 + 0x90023318, // 0022 SETMBR R0 K25 K24 + 0x90024145, // 0023 SETMBR R0 K32 K69 + 0x90024318, // 0024 SETMBR R0 K33 K24 + 0x90023518, // 0025 SETMBR R0 K26 K24 + 0x90024D45, // 0026 SETMBR R0 K38 K69 + 0x90024F18, // 0027 SETMBR R0 K39 K24 + 0x90023718, // 0028 SETMBR R0 K27 K24 + 0x90025145, // 0029 SETMBR R0 K40 K69 + 0x90025318, // 002A SETMBR R0 K41 K24 + 0x90023918, // 002B SETMBR R0 K28 K24 + 0x90024545, // 002C SETMBR R0 K34 K69 + 0x90024718, // 002D SETMBR R0 K35 K24 + 0x90023B18, // 002E SETMBR R0 K29 K24 + 0x90024945, // 002F SETMBR R0 K36 K69 + 0x90024B18, // 0030 SETMBR R0 K37 K24 + 0x90023D18, // 0031 SETMBR R0 K30 K24 + 0x90028345, // 0032 SETMBR R0 K65 K69 + 0x90028518, // 0033 SETMBR R0 K66 K24 + 0x90028118, // 0034 SETMBR R0 K64 K24 + 0x540A1387, // 0035 LDINT R2 5000 + 0x90028602, // 0036 SETMBR R0 K67 R2 + 0x4C080000, // 0037 LDNIL R2 + 0x90021402, // 0038 SETMBR R0 K10 R2 0x4C080000, // 0039 LDNIL R2 - 0x90021402, // 003A SETMBR R0 K10 R2 + 0x90027E02, // 003A SETMBR R0 K63 R2 0x4C080000, // 003B LDNIL R2 - 0x90027E02, // 003C SETMBR R0 K63 R2 + 0x90027802, // 003C SETMBR R0 K60 R2 0x4C080000, // 003D LDNIL R2 - 0x90027802, // 003E SETMBR R0 K60 R2 + 0x90027A02, // 003E SETMBR R0 K61 R2 0x4C080000, // 003F LDNIL R2 - 0x90027A02, // 0040 SETMBR R0 K61 R2 + 0x90027C02, // 0040 SETMBR R0 K62 R2 0x4C080000, // 0041 LDNIL R2 - 0x90027C02, // 0042 SETMBR R0 K62 R2 - 0x4C080000, // 0043 LDNIL R2 - 0x90022202, // 0044 SETMBR R0 K17 R2 - 0x80000000, // 0045 RET 0 + 0x90022202, // 0042 SETMBR R0 K17 R2 + 0x80000000, // 0043 RET 0 }) ) ); @@ -11941,11 +11854,11 @@ be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ 0x80000400, // 0002 RET 0 0x90026E01, // 0003 SETMBR R0 K55 R1 0x88080132, // 0004 GETMBR R2 R0 K50 - 0x8C080559, // 0005 GETMET R2 R2 K89 + 0x8C080558, // 0005 GETMET R2 R2 K88 0x5C100200, // 0006 MOVE R4 R1 0x7C080400, // 0007 CALL R2 2 0x8808014D, // 0008 GETMBR R2 R0 K77 - 0x8C080559, // 0009 GETMET R2 R2 K89 + 0x8C080558, // 0009 GETMET R2 R2 K88 0x5C100200, // 000A MOVE R4 R1 0x7C080400, // 000B CALL R2 2 0x50080200, // 000C LDBOOL R2 1 0 @@ -11975,7 +11888,7 @@ be_local_closure(class_AnimationEngine_pop_iteration_context, /* name */ &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C04035A, // 0001 GETMET R1 R1 K90 + 0x8C040359, // 0001 GETMET R1 R1 K89 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) @@ -12167,8 +12080,8 @@ be_local_closure(get_event_handlers, /* name */ ); /*******************************************************************/ -// compact class 'WaveAnimation' ktab size: 43, total: 71 (saved 224 bytes) -static const bvalue be_ktab_class_WaveAnimation[43] = { +// compact class 'WaveAnimation' ktab size: 42, total: 67 (saved 200 bytes) +static const bvalue be_ktab_class_WaveAnimation[42] = { /* K0 */ be_nested_str_weak(wave_table), /* K1 */ be_nested_str_weak(resize), /* K2 */ be_nested_str_weak(wave_type), @@ -12191,27 +12104,26 @@ static const bvalue be_ktab_class_WaveAnimation[43] = { /* 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(_fix_time_ms), - /* K23 */ be_nested_str_weak(engine), - /* K24 */ be_nested_str_weak(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), + /* K22 */ be_nested_str_weak(width), + /* K23 */ be_nested_str_weak(current_colors), + /* K24 */ be_nested_str_weak(size), + /* K25 */ be_nested_str_weak(set_pixel_color), + /* K26 */ be_nested_str_weak(on_param_changed), + /* K27 */ be_nested_str_weak(_init_wave_table), + /* K28 */ be_nested_str_weak(update), + /* K29 */ be_nested_str_weak(start_time), + /* K30 */ be_nested_str_weak(time_offset), + /* K31 */ be_nested_str_weak(_calculate_wave), + /* K32 */ be_nested_str_weak(init), + /* K33 */ be_nested_str_weak(engine), + /* K34 */ be_nested_str_weak(strip_length), + /* K35 */ be_nested_str_weak(phase), + /* K36 */ be_nested_str_weak(amplitude), + /* K37 */ be_nested_str_weak(center_level), + /* K38 */ be_nested_str_weak(back_color), + /* K39 */ be_nested_str_weak(is_color_provider), + /* K40 */ be_nested_str_weak(get_color_for_value), + /* K41 */ be_nested_str_weak(resolve_value), }; @@ -12418,7 +12330,7 @@ be_local_closure(class_WaveAnimation_tostring, /* name */ be_local_closure(class_WaveAnimation_render, /* name */ be_nested_proto( 9, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -12428,40 +12340,27 @@ be_local_closure(class_WaveAnimation_render, /* name */ &be_ktab_class_WaveAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 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 - 0x880C0718, // 000C GETMBR R3 R3 K24 - 0x58100003, // 000D LDCONST R4 K3 - 0x14140803, // 000E LT R5 R4 R3 - 0x7816000E, // 000F JMPF R5 #001F - 0x88140319, // 0010 GETMBR R5 R1 K25 - 0x14140805, // 0011 LT R5 R4 R5 - 0x78160009, // 0012 JMPF R5 #001D - 0x8814011A, // 0013 GETMBR R5 R0 K26 - 0x8C140B1B, // 0014 GETMET R5 R5 K27 - 0x7C140200, // 0015 CALL R5 1 - 0x14140805, // 0016 LT R5 R4 R5 - 0x78160004, // 0017 JMPF R5 #001D - 0x8C14031C, // 0018 GETMET R5 R1 K28 - 0x5C1C0800, // 0019 MOVE R7 R4 - 0x8820011A, // 001A GETMBR R8 R0 K26 - 0x94201004, // 001B GETIDX R8 R8 R4 - 0x7C140600, // 001C CALL R5 3 - 0x00100906, // 001D ADD R4 R4 K6 - 0x7001FFEE, // 001E JMP #000E - 0x50140200, // 001F LDBOOL R5 1 0 - 0x80040A00, // 0020 RET 1 R5 + ( &(const binstruction[20]) { /* code */ + 0x58100003, // 0000 LDCONST R4 K3 + 0x14140803, // 0001 LT R5 R4 R3 + 0x7816000E, // 0002 JMPF R5 #0012 + 0x88140316, // 0003 GETMBR R5 R1 K22 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160009, // 0005 JMPF R5 #0010 + 0x88140117, // 0006 GETMBR R5 R0 K23 + 0x8C140B18, // 0007 GETMET R5 R5 K24 + 0x7C140200, // 0008 CALL R5 1 + 0x14140805, // 0009 LT R5 R4 R5 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C140319, // 000B GETMET R5 R1 K25 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x88200117, // 000D GETMBR R8 R0 K23 + 0x94201004, // 000E GETIDX R8 R8 R4 + 0x7C140600, // 000F CALL R5 3 + 0x00100906, // 0010 ADD R4 R4 K6 + 0x7001FFEE, // 0011 JMP #0001 + 0x50140200, // 0012 LDBOOL R5 1 0 + 0x80040A00, // 0013 RET 1 R5 }) ) ); @@ -12488,13 +12387,13 @@ be_local_closure(class_WaveAnimation_on_param_changed, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C071D, // 0003 GETMET R3 R3 K29 + 0x8C0C071A, // 0003 GETMET R3 R3 K26 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 + 0x8C0C011B, // 0009 GETMET R3 R0 K27 0x7C0C0200, // 000A CALL R3 1 0x80000000, // 000B RET 0 }) @@ -12519,42 +12418,38 @@ be_local_closure(class_WaveAnimation_update, /* name */ &be_ktab_class_WaveAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ + ( &(const binstruction[31]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08051F, // 0003 GETMET R2 R2 K31 + 0x8C08051C, // 0003 GETMET R2 R2 K28 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080113, // 0009 GETMBR R2 R0 K19 - 0x240C0503, // 000A GT R3 R2 K3 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C0120, // 000C GETMBR R3 R0 K32 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8120800, // 000E GETNGBL R4 K4 - 0x8C100905, // 000F GETMET R4 R4 K5 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C0003, // 0011 LDCONST R7 K3 - 0x542200FE, // 0012 LDINT R8 255 - 0x58240003, // 0013 LDCONST R9 K3 - 0x542A0009, // 0014 LDINT R10 10 - 0x7C100C00, // 0015 CALL R4 6 - 0x24140903, // 0016 GT R5 R4 K3 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 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 - 0x80040600, // 0022 RET 1 R3 + 0x88080113, // 0006 GETMBR R2 R0 K19 + 0x240C0503, // 0007 GT R3 R2 K3 + 0x780E0011, // 0008 JMPF R3 #001B + 0x880C011D, // 0009 GETMBR R3 R0 K29 + 0x040C0203, // 000A SUB R3 R1 R3 + 0xB8120800, // 000B GETNGBL R4 K4 + 0x8C100905, // 000C GETMET R4 R4 K5 + 0x5C180400, // 000D MOVE R6 R2 + 0x581C0003, // 000E LDCONST R7 K3 + 0x542200FE, // 000F LDINT R8 255 + 0x58240003, // 0010 LDCONST R9 K3 + 0x542A0009, // 0011 LDINT R10 10 + 0x7C100C00, // 0012 CALL R4 6 + 0x24140903, // 0013 GT R5 R4 K3 + 0x78160005, // 0014 JMPF R5 #001B + 0x08140604, // 0015 MUL R5 R3 R4 + 0x541A03E7, // 0016 LDINT R6 1000 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x541A00FF, // 0018 LDINT R6 256 + 0x10140A06, // 0019 MOD R5 R5 R6 + 0x90023C05, // 001A SETMBR R0 K30 R5 + 0x8C0C011F, // 001B GETMET R3 R0 K31 + 0x5C140200, // 001C MOVE R5 R1 + 0x7C0C0400, // 001D CALL R3 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -12581,17 +12476,17 @@ be_local_closure(class_WaveAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080523, // 0003 GETMET R2 R2 K35 + 0x8C080520, // 0003 GETMET R2 R2 K32 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x60080012, // 0006 GETGBL R2 G18 0x7C080000, // 0007 CALL R2 0 - 0x90023402, // 0008 SETMBR R0 K26 R2 - 0x90024303, // 0009 SETMBR R0 K33 K3 + 0x90022E02, // 0008 SETMBR R0 K23 R2 + 0x90023D03, // 0009 SETMBR R0 K30 K3 0x60080012, // 000A GETGBL R2 G18 0x7C080000, // 000B CALL R2 0 0x90020002, // 000C SETMBR R0 K0 R2 - 0x8C08011E, // 000D GETMET R2 R0 K30 + 0x8C08011B, // 000D GETMET R2 R0 K27 0x7C080200, // 000E CALL R2 1 0x80000000, // 000F RET 0 }) @@ -12617,20 +12512,20 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ be_str_weak(_calculate_wave), &be_const_str_solidified, ( &(const binstruction[168]) { /* code */ - 0x88080117, // 0000 GETMBR R2 R0 K23 - 0x88080518, // 0001 GETMBR R2 R2 K24 + 0x88080121, // 0000 GETMBR R2 R0 K33 + 0x88080522, // 0001 GETMBR R2 R2 K34 0x880C0112, // 0002 GETMBR R3 R0 K18 - 0x88100124, // 0003 GETMBR R4 R0 K36 - 0x88140125, // 0004 GETMBR R5 R0 K37 - 0x88180126, // 0005 GETMBR R6 R0 K38 - 0x881C0127, // 0006 GETMBR R7 R0 K39 + 0x88100123, // 0003 GETMBR R4 R0 K35 + 0x88140124, // 0004 GETMBR R5 R0 K36 + 0x88180125, // 0005 GETMBR R6 R0 K37 + 0x881C0126, // 0006 GETMBR R7 R0 K38 0x8820010D, // 0007 GETMBR R8 R0 K13 - 0x8824011A, // 0008 GETMBR R9 R0 K26 - 0x8C24131B, // 0009 GETMET R9 R9 K27 + 0x88240117, // 0008 GETMBR R9 R0 K23 + 0x8C241318, // 0009 GETMET R9 R9 K24 0x7C240200, // 000A CALL R9 1 0x20241202, // 000B NE R9 R9 R2 0x78260003, // 000C JMPF R9 #0011 - 0x8824011A, // 000D GETMBR R9 R0 K26 + 0x88240117, // 000D GETMBR R9 R0 K23 0x8C241301, // 000E GETMET R9 R9 K1 0x5C2C0400, // 000F MOVE R11 R2 0x7C240400, // 0010 CALL R9 2 @@ -12649,7 +12544,7 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x5432001F, // 001D LDINT R12 32 0x0C2C160C, // 001E DIV R11 R11 R12 0x002C1604, // 001F ADD R11 R11 R4 - 0x88300121, // 0020 GETMBR R12 R0 K33 + 0x8830011E, // 0020 GETMBR R12 R0 K30 0x002C160C, // 0021 ADD R11 R11 R12 0x543200FE, // 0022 LDINT R12 255 0x2C2C160C, // 0023 AND R11 R11 R12 @@ -12707,21 +12602,21 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x24401C10, // 0057 GT R16 R14 R16 0x78420049, // 0058 JMPF R16 #00A3 0xB8421C00, // 0059 GETNGBL R16 K14 - 0x8C402128, // 005A GETMET R16 R16 K40 + 0x8C402127, // 005A GETMET R16 R16 K39 0x5C481000, // 005B MOVE R18 R8 0x7C400400, // 005C CALL R16 2 0x78420009, // 005D JMPF R16 #0068 - 0x88401129, // 005E GETMBR R16 R8 K41 + 0x88401128, // 005E GETMBR R16 R8 K40 0x4C440000, // 005F LDNIL R17 0x20402011, // 0060 NE R16 R16 R17 0x78420005, // 0061 JMPF R16 #0068 - 0x8C401129, // 0062 GETMET R16 R8 K41 + 0x8C401128, // 0062 GETMET R16 R8 K40 0x5C481C00, // 0063 MOVE R18 R14 0x584C0003, // 0064 LDCONST R19 K3 0x7C400600, // 0065 CALL R16 3 0x5C3C2000, // 0066 MOVE R15 R16 0x7002003A, // 0067 JMP #00A3 - 0x8C40012A, // 0068 GETMET R16 R0 K42 + 0x8C400129, // 0068 GETMET R16 R0 K41 0x5C481000, // 0069 MOVE R18 R8 0x584C000D, // 006A LDCONST R19 K13 0x54520009, // 006B LDINT R20 10 @@ -12780,7 +12675,7 @@ be_local_closure(class_WaveAnimation__calculate_wave, /* name */ 0x30502815, // 00A0 OR R20 R20 R21 0x30502813, // 00A1 OR R20 R20 R19 0x5C3C2800, // 00A2 MOVE R15 R20 - 0x8840011A, // 00A3 GETMBR R16 R0 K26 + 0x88400117, // 00A3 GETMBR R16 R0 K23 0x9840120F, // 00A4 SETIDX R16 R9 R15 0x00241306, // 00A5 ADD R9 R9 K6 0x7001FF6A, // 00A6 JMP #0012 @@ -13321,75 +13216,81 @@ be_local_closure(class_SequenceManager_update, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ + ( &(const binstruction[74]) { /* code */ 0x8808011C, // 0000 GETMBR R2 R0 K28 0x780A0004, // 0001 JMPF R2 #0007 0x6008000C, // 0002 GETGBL R2 G12 0x880C0103, // 0003 GETMBR R3 R0 K3 0x7C080200, // 0004 CALL R2 1 0x1C080516, // 0005 EQ R2 R2 K22 - 0x780A0001, // 0006 JMPF R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080103, // 0009 GETMBR R2 R0 K3 - 0x880C0108, // 000A GETMBR R3 R0 K8 - 0x94080403, // 000B GETIDX R2 R2 R3 - 0x940C0505, // 000C GETIDX R3 R2 K5 - 0x1C0C0712, // 000D EQ R3 R3 K18 - 0x780E0008, // 000E JMPF R3 #0018 - 0x940C0513, // 000F GETIDX R3 R2 K19 - 0x8C10071D, // 0010 GETMET R4 R3 K29 - 0x5C180200, // 0011 MOVE R6 R1 - 0x7C100400, // 0012 CALL R4 2 - 0x74120002, // 0013 JMPT R4 #0017 - 0x8C10011E, // 0014 GETMET R4 R0 K30 - 0x5C180200, // 0015 MOVE R6 R1 - 0x7C100400, // 0016 CALL R4 2 - 0x70020029, // 0017 JMP #0042 - 0x940C0505, // 0018 GETIDX R3 R2 K5 - 0x1C0C0709, // 0019 EQ R3 R3 K9 - 0x780E0003, // 001A JMPF R3 #001F - 0x8C0C011F, // 001B GETMET R3 R0 K31 - 0x5C140200, // 001C MOVE R5 R1 - 0x7C0C0400, // 001D CALL R3 2 - 0x70020022, // 001E JMP #0042 - 0x8C0C0520, // 001F GETMET R3 R2 K32 - 0x58140007, // 0020 LDCONST R5 K7 - 0x7C0C0400, // 0021 CALL R3 2 - 0x780E001B, // 0022 JMPF R3 #003F - 0x940C0507, // 0023 GETIDX R3 R2 K7 - 0x4C100000, // 0024 LDNIL R4 - 0x200C0604, // 0025 NE R3 R3 R4 - 0x780E0017, // 0026 JMPF R3 #003F - 0x940C0507, // 0027 GETIDX R3 R2 K7 - 0x60100004, // 0028 GETGBL R4 G4 - 0x5C140600, // 0029 MOVE R5 R3 - 0x7C100200, // 002A CALL R4 1 - 0x1C100901, // 002B EQ R4 R4 K1 - 0x78120003, // 002C JMPF R4 #0031 - 0x5C100600, // 002D MOVE R4 R3 - 0x88140102, // 002E GETMBR R5 R0 K2 - 0x7C100200, // 002F CALL R4 1 - 0x5C0C0800, // 0030 MOVE R3 R4 - 0x24100716, // 0031 GT R4 R3 K22 - 0x78120007, // 0032 JMPF R4 #003B - 0x8810010F, // 0033 GETMBR R4 R0 K15 - 0x04100204, // 0034 SUB R4 R1 R4 - 0x28140803, // 0035 GE R5 R4 R3 - 0x78160002, // 0036 JMPF R5 #003A - 0x8C14011E, // 0037 GETMET R5 R0 K30 - 0x5C1C0200, // 0038 MOVE R7 R1 - 0x7C140400, // 0039 CALL R5 2 - 0x70020002, // 003A JMP #003E - 0x8C10011E, // 003B GETMET R4 R0 K30 - 0x5C180200, // 003C MOVE R6 R1 - 0x7C100400, // 003D CALL R4 2 - 0x70020002, // 003E JMP #0042 - 0x8C0C011E, // 003F GETMET R3 R0 K30 - 0x5C140200, // 0040 MOVE R5 R1 - 0x7C0C0400, // 0041 CALL R3 2 - 0x880C011C, // 0042 GETMBR R3 R0 K28 - 0x80040600, // 0043 RET 1 R3 + 0x780A0000, // 0006 JMPF R2 #0008 + 0x80000400, // 0007 RET 0 + 0x88080108, // 0008 GETMBR R2 R0 K8 + 0x600C000C, // 0009 GETGBL R3 G12 + 0x88100103, // 000A GETMBR R4 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x28080403, // 000C GE R2 R2 R3 + 0x780A0000, // 000D JMPF R2 #000F + 0x80000400, // 000E RET 0 + 0x88080103, // 000F GETMBR R2 R0 K3 + 0x880C0108, // 0010 GETMBR R3 R0 K8 + 0x94080403, // 0011 GETIDX R2 R2 R3 + 0x940C0505, // 0012 GETIDX R3 R2 K5 + 0x1C0C0712, // 0013 EQ R3 R3 K18 + 0x780E0009, // 0014 JMPF R3 #001F + 0x940C0513, // 0015 GETIDX R3 R2 K19 + 0x8C10071D, // 0016 GETMET R4 R3 K29 + 0x5C180200, // 0017 MOVE R6 R1 + 0x7C100400, // 0018 CALL R4 2 + 0x8810071C, // 0019 GETMBR R4 R3 K28 + 0x74120002, // 001A JMPT R4 #001E + 0x8C10011E, // 001B GETMET R4 R0 K30 + 0x5C180200, // 001C MOVE R6 R1 + 0x7C100400, // 001D CALL R4 2 + 0x70020029, // 001E JMP #0049 + 0x940C0505, // 001F GETIDX R3 R2 K5 + 0x1C0C0709, // 0020 EQ R3 R3 K9 + 0x780E0003, // 0021 JMPF R3 #0026 + 0x8C0C011F, // 0022 GETMET R3 R0 K31 + 0x5C140200, // 0023 MOVE R5 R1 + 0x7C0C0400, // 0024 CALL R3 2 + 0x70020022, // 0025 JMP #0049 + 0x8C0C0520, // 0026 GETMET R3 R2 K32 + 0x58140007, // 0027 LDCONST R5 K7 + 0x7C0C0400, // 0028 CALL R3 2 + 0x780E001B, // 0029 JMPF R3 #0046 + 0x940C0507, // 002A GETIDX R3 R2 K7 + 0x4C100000, // 002B LDNIL R4 + 0x200C0604, // 002C NE R3 R3 R4 + 0x780E0017, // 002D JMPF R3 #0046 + 0x940C0507, // 002E GETIDX R3 R2 K7 + 0x60100004, // 002F GETGBL R4 G4 + 0x5C140600, // 0030 MOVE R5 R3 + 0x7C100200, // 0031 CALL R4 1 + 0x1C100901, // 0032 EQ R4 R4 K1 + 0x78120003, // 0033 JMPF R4 #0038 + 0x5C100600, // 0034 MOVE R4 R3 + 0x88140102, // 0035 GETMBR R5 R0 K2 + 0x7C100200, // 0036 CALL R4 1 + 0x5C0C0800, // 0037 MOVE R3 R4 + 0x24100716, // 0038 GT R4 R3 K22 + 0x78120007, // 0039 JMPF R4 #0042 + 0x8810010F, // 003A GETMBR R4 R0 K15 + 0x04100204, // 003B SUB R4 R1 R4 + 0x28140803, // 003C GE R5 R4 R3 + 0x78160002, // 003D JMPF R5 #0041 + 0x8C14011E, // 003E GETMET R5 R0 K30 + 0x5C1C0200, // 003F MOVE R7 R1 + 0x7C140400, // 0040 CALL R5 2 + 0x70020002, // 0041 JMP #0045 + 0x8C10011E, // 0042 GETMET R4 R0 K30 + 0x5C180200, // 0043 MOVE R6 R1 + 0x7C100400, // 0044 CALL R4 2 + 0x70020002, // 0045 JMP #0049 + 0x8C0C011E, // 0046 GETMET R3 R0 K30 + 0x5C140200, // 0047 MOVE R5 R1 + 0x7C0C0400, // 0048 CALL R3 2 + 0x80000000, // 0049 RET 0 }) ) ); @@ -14000,8 +13901,8 @@ be_local_class(SequenceManager, })), be_str_weak(SequenceManager) ); -// compact class 'Animation' ktab size: 27, total: 39 (saved 96 bytes) -static const bvalue be_ktab_class_Animation[27] = { +// compact class 'Animation' ktab size: 26, total: 37 (saved 88 bytes) +static const bvalue be_ktab_class_Animation[26] = { /* K0 */ be_nested_str_weak(get_param_value), /* K1 */ be_nested_str_weak(color), /* K2 */ be_nested_str_weak(animation), @@ -14016,19 +13917,18 @@ static const bvalue be_ktab_class_Animation[27] = { /* K11 */ be_nested_str_weak(render), /* K12 */ be_nested_str_weak(apply_opacity), /* K13 */ be_nested_str_weak(pixels), - /* K14 */ be_nested_str_weak(_fix_time_ms), - /* K15 */ be_nested_str_weak(duration), - /* K16 */ be_const_int(0), - /* K17 */ be_nested_str_weak(loop), - /* K18 */ be_nested_str_weak(init), - /* K19 */ be_nested_str_weak(get_color_at), + /* K14 */ be_nested_str_weak(duration), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(loop), + /* K17 */ be_nested_str_weak(init), + /* K18 */ be_nested_str_weak(get_color_at), + /* K19 */ be_nested_str_weak(member), /* K20 */ be_nested_str_weak(fill_pixels), /* K21 */ be_nested_str_weak(opacity), /* K22 */ be_nested_str_weak(int), /* 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), + /* K24 */ be_nested_str_weak(Animation_X28priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K25 */ be_nested_str_weak(priority), }; @@ -14067,8 +13967,8 @@ be_local_closure(class_Animation_get_color_at, /* name */ ********************************************************************/ be_local_closure(class_Animation__apply_opacity, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 11, /* nstack */ + 5, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -14078,49 +13978,50 @@ be_local_closure(class_Animation__apply_opacity, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(_apply_opacity), &be_const_str_solidified, - ( &(const binstruction[42]) { /* 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 - 0x78120022, // 0005 JMPF R4 #0029 - 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 - 0x881C030D, // 0025 GETMBR R7 R1 K13 - 0x88200103, // 0026 GETMBR R8 R0 K3 - 0x8820110D, // 0027 GETMBR R8 R8 K13 - 0x7C140600, // 0028 CALL R5 3 - 0x80000000, // 0029 RET 0 + ( &(const binstruction[43]) { /* code */ + 0x6014000F, // 0000 GETGBL R5 G15 + 0x5C180400, // 0001 MOVE R6 R2 + 0xB81E0400, // 0002 GETNGBL R7 K2 + 0x881C0F02, // 0003 GETMBR R7 R7 K2 + 0x7C140400, // 0004 CALL R5 2 + 0x78160023, // 0005 JMPF R5 #002A + 0x5C140400, // 0006 MOVE R5 R2 + 0x88180103, // 0007 GETMBR R6 R0 K3 + 0x4C1C0000, // 0008 LDNIL R7 + 0x1C180C07, // 0009 EQ R6 R6 R7 + 0x741A0004, // 000A JMPT R6 #0010 + 0x88180103, // 000B GETMBR R6 R0 K3 + 0x88180D04, // 000C GETMBR R6 R6 K4 + 0x881C0304, // 000D GETMBR R7 R1 K4 + 0x20180C07, // 000E NE R6 R6 R7 + 0x781A0004, // 000F JMPF R6 #0015 + 0xB81A0400, // 0010 GETNGBL R6 K2 + 0x8C180D05, // 0011 GETMET R6 R6 K5 + 0x88200304, // 0012 GETMBR R8 R1 K4 + 0x7C180400, // 0013 CALL R6 2 + 0x90020606, // 0014 SETMBR R0 K3 R6 + 0x88180103, // 0015 GETMBR R6 R0 K3 + 0x8C180D06, // 0016 GETMET R6 R6 K6 + 0x7C180200, // 0017 CALL R6 1 + 0x88180B07, // 0018 GETMBR R6 R5 K7 + 0x741A0002, // 0019 JMPT R6 #001D + 0x8C180B08, // 001A GETMET R6 R5 K8 + 0x88200109, // 001B GETMBR R8 R0 K9 + 0x7C180400, // 001C CALL R6 2 + 0x8C180B0A, // 001D GETMET R6 R5 K10 + 0x5C200600, // 001E MOVE R8 R3 + 0x7C180400, // 001F CALL R6 2 + 0x8C180B0B, // 0020 GETMET R6 R5 K11 + 0x88200103, // 0021 GETMBR R8 R0 K3 + 0x5C240600, // 0022 MOVE R9 R3 + 0x5C280800, // 0023 MOVE R10 R4 + 0x7C180800, // 0024 CALL R6 4 + 0x8C18030C, // 0025 GETMET R6 R1 K12 + 0x8820030D, // 0026 GETMBR R8 R1 K13 + 0x88240103, // 0027 GETMBR R9 R0 K3 + 0x8824130D, // 0028 GETMBR R9 R9 K13 + 0x7C180600, // 0029 CALL R6 3 + 0x80000000, // 002A RET 0 }) ) ); @@ -14143,36 +14044,25 @@ 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 */ - 0x88080107, // 0000 GETMBR R2 R0 K7 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x8C08010E, // 0004 GETMET R2 R0 K14 - 0x5C100200, // 0005 MOVE R4 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x5C040400, // 0007 MOVE R1 R2 - 0x8808010F, // 0008 GETMBR R2 R0 K15 - 0x240C0510, // 0009 GT R3 R2 K16 - 0x780E000F, // 000A JMPF R3 #001B - 0x880C0109, // 000B GETMBR R3 R0 K9 - 0x040C0203, // 000C SUB R3 R1 R3 - 0x28100602, // 000D GE R4 R3 R2 - 0x7812000B, // 000E JMPF R4 #001B - 0x88100111, // 000F GETMBR R4 R0 K17 - 0x78120005, // 0010 JMPF R4 #0017 - 0x0C140602, // 0011 DIV R5 R3 R2 - 0x88180109, // 0012 GETMBR R6 R0 K9 - 0x081C0A02, // 0013 MUL R7 R5 R2 - 0x00180C07, // 0014 ADD R6 R6 R7 - 0x90021206, // 0015 SETMBR R0 K9 R6 - 0x70020003, // 0016 JMP #001B - 0x50140000, // 0017 LDBOOL R5 0 0 - 0x90020E05, // 0018 SETMBR R0 K7 R5 - 0x50140000, // 0019 LDBOOL R5 0 0 - 0x80040A00, // 001A RET 1 R5 - 0x500C0200, // 001B LDBOOL R3 1 0 - 0x80040600, // 001C RET 1 R3 + ( &(const binstruction[18]) { /* code */ + 0x8808010E, // 0000 GETMBR R2 R0 K14 + 0x240C050F, // 0001 GT R3 R2 K15 + 0x780E000D, // 0002 JMPF R3 #0011 + 0x880C0109, // 0003 GETMBR R3 R0 K9 + 0x040C0203, // 0004 SUB R3 R1 R3 + 0x28100602, // 0005 GE R4 R3 R2 + 0x78120009, // 0006 JMPF R4 #0011 + 0x88100110, // 0007 GETMBR R4 R0 K16 + 0x78120005, // 0008 JMPF R4 #000F + 0x0C140602, // 0009 DIV R5 R3 R2 + 0x88180109, // 000A GETMBR R6 R0 K9 + 0x081C0A02, // 000B MUL R7 R5 R2 + 0x00180C07, // 000C ADD R6 R6 R7 + 0x90021206, // 000D SETMBR R0 K9 R6 + 0x70020001, // 000E JMP #0011 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x90020E05, // 0010 SETMBR R0 K7 R5 + 0x80000000, // 0011 RET 0 }) ) ); @@ -14199,7 +14089,7 @@ be_local_closure(class_Animation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080512, // 0003 GETMET R2 R2 K18 + 0x8C080511, // 0003 GETMET R2 R2 K17 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x80000000, // 0006 RET 0 @@ -14226,8 +14116,8 @@ be_local_closure(class_Animation_get_color, /* name */ be_str_weak(get_color), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C080113, // 0000 GETMET R2 R0 K19 - 0x58100010, // 0001 LDCONST R4 K16 + 0x8C080112, // 0000 GETMET R2 R0 K18 + 0x5810000F, // 0001 LDCONST R4 K15 0x5C140200, // 0002 MOVE R5 R1 0x7C080600, // 0003 CALL R2 3 0x80040400, // 0004 RET 1 R2 @@ -14242,8 +14132,8 @@ be_local_closure(class_Animation_get_color, /* name */ ********************************************************************/ be_local_closure(class_Animation_render, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 9, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -14253,20 +14143,18 @@ be_local_closure(class_Animation_render, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x880C0107, // 0000 GETMBR R3 R0 K7 - 0x740E0001, // 0001 JMPT R3 #0004 - 0x500C0000, // 0002 LDBOOL R3 0 0 - 0x80040600, // 0003 RET 1 R3 - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x20100710, // 0005 NE R4 R3 K16 - 0x78120003, // 0006 JMPF R4 #000B - 0x8C100314, // 0007 GETMET R4 R1 K20 - 0x8818030D, // 0008 GETMBR R6 R1 K13 - 0x5C1C0600, // 0009 MOVE R7 R3 - 0x7C100600, // 000A CALL R4 3 - 0x50100200, // 000B LDBOOL R4 1 0 - 0x80040800, // 000C RET 1 R4 + ( &(const binstruction[11]) { /* code */ + 0x8C100113, // 0000 GETMET R4 R0 K19 + 0x58180001, // 0001 LDCONST R6 K1 + 0x7C100400, // 0002 CALL R4 2 + 0x2014090F, // 0003 NE R5 R4 K15 + 0x78160003, // 0004 JMPF R5 #0009 + 0x8C140314, // 0005 GETMET R5 R1 K20 + 0x881C030D, // 0006 GETMBR R7 R1 K13 + 0x5C200800, // 0007 MOVE R8 R4 + 0x7C140600, // 0008 CALL R5 3 + 0x50140200, // 0009 LDBOOL R5 1 0 + 0x80040A00, // 000A RET 1 R5 }) ) ); @@ -14278,8 +14166,8 @@ be_local_closure(class_Animation_render, /* name */ ********************************************************************/ be_local_closure(class_Animation_post_render, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 11, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -14289,29 +14177,30 @@ be_local_closure(class_Animation_post_render, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(post_render), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x541200FE, // 0001 LDINT R4 255 - 0x1C100604, // 0002 EQ R4 R3 R4 - 0x78120001, // 0003 JMPF R4 #0006 - 0x80000800, // 0004 RET 0 - 0x7002000E, // 0005 JMP #0015 - 0x60100004, // 0006 GETGBL R4 G4 - 0x5C140600, // 0007 MOVE R5 R3 - 0x7C100200, // 0008 CALL R4 1 - 0x1C100916, // 0009 EQ R4 R4 K22 - 0x78120004, // 000A JMPF R4 #0010 - 0x8C10030C, // 000B GETMET R4 R1 K12 - 0x8818030D, // 000C GETMBR R6 R1 K13 - 0x5C1C0600, // 000D MOVE R7 R3 - 0x7C100600, // 000E CALL R4 3 - 0x70020004, // 000F JMP #0015 - 0x8C100117, // 0010 GETMET R4 R0 K23 - 0x5C180200, // 0011 MOVE R6 R1 - 0x5C1C0600, // 0012 MOVE R7 R3 - 0x5C200400, // 0013 MOVE R8 R2 - 0x7C100800, // 0014 CALL R4 4 - 0x80000000, // 0015 RET 0 + ( &(const binstruction[23]) { /* code */ + 0x88100115, // 0000 GETMBR R4 R0 K21 + 0x541600FE, // 0001 LDINT R5 255 + 0x1C140805, // 0002 EQ R5 R4 R5 + 0x78160001, // 0003 JMPF R5 #0006 + 0x80000A00, // 0004 RET 0 + 0x7002000F, // 0005 JMP #0016 + 0x60140004, // 0006 GETGBL R5 G4 + 0x5C180800, // 0007 MOVE R6 R4 + 0x7C140200, // 0008 CALL R5 1 + 0x1C140B16, // 0009 EQ R5 R5 K22 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C14030C, // 000B GETMET R5 R1 K12 + 0x881C030D, // 000C GETMBR R7 R1 K13 + 0x5C200800, // 000D MOVE R8 R4 + 0x7C140600, // 000E CALL R5 3 + 0x70020005, // 000F JMP #0016 + 0x8C140117, // 0010 GETMET R5 R0 K23 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x5C200800, // 0012 MOVE R8 R4 + 0x5C240400, // 0013 MOVE R9 R2 + 0x5C280600, // 0014 MOVE R10 R3 + 0x7C140A00, // 0015 CALL R5 5 + 0x80000000, // 0016 RET 0 }) ) ); @@ -14323,7 +14212,7 @@ be_local_closure(class_Animation_post_render, /* name */ ********************************************************************/ be_local_closure(class_Animation_tostring, /* name */ be_nested_proto( - 8, /* nstack */ + 7, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -14334,16 +14223,15 @@ be_local_closure(class_Animation_tostring, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(tostring), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 0x58080018, // 0001 LDCONST R2 K24 0x880C0119, // 0002 GETMBR R3 R0 K25 - 0x8810011A, // 0003 GETMBR R4 R0 K26 - 0x8814010F, // 0004 GETMBR R5 R0 K15 - 0x88180111, // 0005 GETMBR R6 R0 K17 - 0x881C0107, // 0006 GETMBR R7 R0 K7 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 + 0x8810010E, // 0003 GETMBR R4 R0 K14 + 0x88140110, // 0004 GETMBR R5 R0 K16 + 0x88180107, // 0005 GETMBR R6 R0 K7 + 0x7C040A00, // 0006 CALL R1 5 + 0x80040200, // 0007 RET 1 R1 }) ) ); @@ -14365,11 +14253,11 @@ be_local_class(Animation, { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(id, -1), be_const_bytes_instance(0C030001) }, { be_const_key_weak(priority, -1), be_const_bytes_instance(050000000A) }, { be_const_key_weak(color, -1), be_const_bytes_instance(040000) }, - { be_const_key_weak(name, -1), be_const_bytes_instance(0C0309616E696D6174696F6E01) }, - { be_const_key_weak(loop, 0), be_const_bytes_instance(0C050003) }, - { be_const_key_weak(opacity, 1), be_const_bytes_instance(0C01FF0004) }, + { be_const_key_weak(loop, 1), be_const_bytes_instance(0C050003) }, + { be_const_key_weak(opacity, 2), be_const_bytes_instance(0C01FF0004) }, { be_const_key_weak(duration, -1), be_const_bytes_instance(0500000000) }, })) ) } )) }, { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, @@ -14444,25 +14332,23 @@ be_local_closure(register_user_function, /* name */ ); /*******************************************************************/ -// compact class 'BeaconAnimation' ktab size: 17, total: 21 (saved 32 bytes) -static const bvalue be_ktab_class_BeaconAnimation[17] = { - /* 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_const_int(0), - /* K9 */ be_nested_str_weak(fill_pixels), - /* K10 */ be_nested_str_weak(pixels), - /* K11 */ be_nested_str_weak(tasmota), - /* K12 */ be_nested_str_weak(scale_int), - /* K13 */ be_const_int(1), - /* K14 */ be_nested_str_weak(blend_linear), - /* K15 */ be_nested_str_weak(set_pixel_color), - /* K16 */ be_nested_str_weak(BeaconAnimation_X28color_X3D0x_X2508x_X2C_X20pos_X3D_X25s_X2C_X20beacon_size_X3D_X25s_X2C_X20slew_size_X3D_X25s_X29), +// compact class 'BeaconAnimation' ktab size: 15, total: 19 (saved 32 bytes) +static const bvalue be_ktab_class_BeaconAnimation[15] = { + /* K0 */ be_nested_str_weak(back_color), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_nested_str_weak(slew_size), + /* K3 */ be_nested_str_weak(beacon_size), + /* K4 */ be_nested_str_weak(color), + /* K5 */ be_const_int(-16777216), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(fill_pixels), + /* K8 */ be_nested_str_weak(pixels), + /* K9 */ be_nested_str_weak(tasmota), + /* K10 */ be_nested_str_weak(scale_int), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(blend_linear), + /* K13 */ be_nested_str_weak(set_pixel_color), + /* K14 */ be_nested_str_weak(BeaconAnimation_X28color_X3D0x_X2508x_X2C_X20pos_X3D_X25s_X2C_X20beacon_size_X3D_X25s_X2C_X20slew_size_X3D_X25s_X29), }; @@ -14474,7 +14360,7 @@ extern const bclass be_class_BeaconAnimation; be_local_closure(class_BeaconAnimation_render, /* name */ be_nested_proto( 23, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -14484,109 +14370,104 @@ be_local_closure(class_BeaconAnimation_render, /* name */ &be_ktab_class_BeaconAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[102]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140400, // 0001 MOVE R5 R2 - 0x7C0C0400, // 0002 CALL R3 2 - 0x5C080600, // 0003 MOVE R2 R3 - 0x880C0301, // 0004 GETMBR R3 R1 K1 - 0x88100102, // 0005 GETMBR R4 R0 K2 - 0x88140103, // 0006 GETMBR R5 R0 K3 - 0x88180104, // 0007 GETMBR R6 R0 K4 - 0x881C0105, // 0008 GETMBR R7 R0 K5 - 0x88200106, // 0009 GETMBR R8 R0 K6 - 0x20240907, // 000A NE R9 R4 K7 - 0x78260006, // 000B JMPF R9 #0013 - 0x2C240907, // 000C AND R9 R4 K7 - 0x20241308, // 000D NE R9 R9 K8 - 0x78260003, // 000E JMPF R9 #0013 - 0x8C240309, // 000F GETMET R9 R1 K9 - 0x882C030A, // 0010 GETMBR R11 R1 K10 - 0x5C300800, // 0011 MOVE R12 R4 - 0x7C240600, // 0012 CALL R9 3 - 0x5C240A00, // 0013 MOVE R9 R5 - 0x00280A07, // 0014 ADD R10 R5 R7 - 0x142C1308, // 0015 LT R11 R9 K8 - 0x782E0000, // 0016 JMPF R11 #0018 - 0x58240008, // 0017 LDCONST R9 K8 - 0x282C1403, // 0018 GE R11 R10 R3 - 0x782E0000, // 0019 JMPF R11 #001B - 0x5C280600, // 001A MOVE R10 R3 - 0x8C2C0309, // 001B GETMET R11 R1 K9 - 0x8834030A, // 001C GETMBR R13 R1 K10 - 0x5C381000, // 001D MOVE R14 R8 - 0x5C3C1200, // 001E MOVE R15 R9 - 0x5C401400, // 001F MOVE R16 R10 - 0x7C2C0A00, // 0020 CALL R11 5 - 0x4C2C0000, // 0021 LDNIL R11 - 0x24300D08, // 0022 GT R12 R6 K8 - 0x7832003F, // 0023 JMPF R12 #0064 - 0x04300A06, // 0024 SUB R12 R5 R6 - 0x5C340A00, // 0025 MOVE R13 R5 - 0x14381908, // 0026 LT R14 R12 K8 - 0x783A0000, // 0027 JMPF R14 #0029 - 0x58300008, // 0028 LDCONST R12 K8 - 0x28381A03, // 0029 GE R14 R13 R3 - 0x783A0000, // 002A JMPF R14 #002C - 0x5C340600, // 002B MOVE R13 R3 - 0x5C2C1800, // 002C MOVE R11 R12 - 0x1438160D, // 002D LT R14 R11 R13 - 0x783A0013, // 002E JMPF R14 #0043 - 0xB83A1600, // 002F GETNGBL R14 K11 - 0x8C381D0C, // 0030 GETMET R14 R14 K12 - 0x5C401600, // 0031 MOVE R16 R11 - 0x04440A06, // 0032 SUB R17 R5 R6 - 0x0444230D, // 0033 SUB R17 R17 K13 - 0x5C480A00, // 0034 MOVE R18 R5 - 0x544E00FE, // 0035 LDINT R19 255 - 0x58500008, // 0036 LDCONST R20 K8 - 0x7C380C00, // 0037 CALL R14 6 - 0x8C3C030E, // 0038 GETMET R15 R1 K14 - 0x5C440800, // 0039 MOVE R17 R4 - 0x5C481000, // 003A MOVE R18 R8 - 0x5C4C1C00, // 003B MOVE R19 R14 - 0x7C3C0800, // 003C CALL R15 4 - 0x8C40030F, // 003D GETMET R16 R1 K15 - 0x5C481600, // 003E MOVE R18 R11 - 0x5C4C1E00, // 003F MOVE R19 R15 - 0x7C400600, // 0040 CALL R16 3 - 0x002C170D, // 0041 ADD R11 R11 K13 - 0x7001FFE9, // 0042 JMP #002D - 0x00380A07, // 0043 ADD R14 R5 R7 - 0x003C0A07, // 0044 ADD R15 R5 R7 - 0x003C1E06, // 0045 ADD R15 R15 R6 - 0x14401D08, // 0046 LT R16 R14 K8 - 0x78420000, // 0047 JMPF R16 #0049 - 0x58380008, // 0048 LDCONST R14 K8 - 0x28401E03, // 0049 GE R16 R15 R3 - 0x78420000, // 004A JMPF R16 #004C - 0x5C3C0600, // 004B MOVE R15 R3 - 0x5C2C1C00, // 004C MOVE R11 R14 - 0x1440160F, // 004D LT R16 R11 R15 - 0x78420014, // 004E JMPF R16 #0064 - 0xB8421600, // 004F GETNGBL R16 K11 - 0x8C40210C, // 0050 GETMET R16 R16 K12 - 0x5C481600, // 0051 MOVE R18 R11 - 0x004C0A07, // 0052 ADD R19 R5 R7 - 0x044C270D, // 0053 SUB R19 R19 K13 - 0x00500A07, // 0054 ADD R20 R5 R7 - 0x00502806, // 0055 ADD R20 R20 R6 - 0x58540008, // 0056 LDCONST R21 K8 - 0x545A00FE, // 0057 LDINT R22 255 - 0x7C400C00, // 0058 CALL R16 6 - 0x8C44030E, // 0059 GETMET R17 R1 K14 - 0x5C4C0800, // 005A MOVE R19 R4 - 0x5C501000, // 005B MOVE R20 R8 - 0x5C542000, // 005C MOVE R21 R16 - 0x7C440800, // 005D CALL R17 4 - 0x8C48030F, // 005E GETMET R18 R1 K15 - 0x5C501600, // 005F MOVE R20 R11 - 0x5C542200, // 0060 MOVE R21 R17 - 0x7C480600, // 0061 CALL R18 3 - 0x002C170D, // 0062 ADD R11 R11 K13 - 0x7001FFE8, // 0063 JMP #004D - 0x50300200, // 0064 LDBOOL R12 1 0 - 0x80041800, // 0065 RET 1 R12 + ( &(const binstruction[97]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x881C0103, // 0003 GETMBR R7 R0 K3 + 0x88200104, // 0004 GETMBR R8 R0 K4 + 0x20240905, // 0005 NE R9 R4 K5 + 0x78260006, // 0006 JMPF R9 #000E + 0x2C240905, // 0007 AND R9 R4 K5 + 0x20241306, // 0008 NE R9 R9 K6 + 0x78260003, // 0009 JMPF R9 #000E + 0x8C240307, // 000A GETMET R9 R1 K7 + 0x882C0308, // 000B GETMBR R11 R1 K8 + 0x5C300800, // 000C MOVE R12 R4 + 0x7C240600, // 000D CALL R9 3 + 0x5C240A00, // 000E MOVE R9 R5 + 0x00280A07, // 000F ADD R10 R5 R7 + 0x142C1306, // 0010 LT R11 R9 K6 + 0x782E0000, // 0011 JMPF R11 #0013 + 0x58240006, // 0012 LDCONST R9 K6 + 0x282C1403, // 0013 GE R11 R10 R3 + 0x782E0000, // 0014 JMPF R11 #0016 + 0x5C280600, // 0015 MOVE R10 R3 + 0x8C2C0307, // 0016 GETMET R11 R1 K7 + 0x88340308, // 0017 GETMBR R13 R1 K8 + 0x5C381000, // 0018 MOVE R14 R8 + 0x5C3C1200, // 0019 MOVE R15 R9 + 0x5C401400, // 001A MOVE R16 R10 + 0x7C2C0A00, // 001B CALL R11 5 + 0x4C2C0000, // 001C LDNIL R11 + 0x24300D06, // 001D GT R12 R6 K6 + 0x7832003F, // 001E JMPF R12 #005F + 0x04300A06, // 001F SUB R12 R5 R6 + 0x5C340A00, // 0020 MOVE R13 R5 + 0x14381906, // 0021 LT R14 R12 K6 + 0x783A0000, // 0022 JMPF R14 #0024 + 0x58300006, // 0023 LDCONST R12 K6 + 0x28381A03, // 0024 GE R14 R13 R3 + 0x783A0000, // 0025 JMPF R14 #0027 + 0x5C340600, // 0026 MOVE R13 R3 + 0x5C2C1800, // 0027 MOVE R11 R12 + 0x1438160D, // 0028 LT R14 R11 R13 + 0x783A0013, // 0029 JMPF R14 #003E + 0xB83A1200, // 002A GETNGBL R14 K9 + 0x8C381D0A, // 002B GETMET R14 R14 K10 + 0x5C401600, // 002C MOVE R16 R11 + 0x04440A06, // 002D SUB R17 R5 R6 + 0x0444230B, // 002E SUB R17 R17 K11 + 0x5C480A00, // 002F MOVE R18 R5 + 0x544E00FE, // 0030 LDINT R19 255 + 0x58500006, // 0031 LDCONST R20 K6 + 0x7C380C00, // 0032 CALL R14 6 + 0x8C3C030C, // 0033 GETMET R15 R1 K12 + 0x5C440800, // 0034 MOVE R17 R4 + 0x5C481000, // 0035 MOVE R18 R8 + 0x5C4C1C00, // 0036 MOVE R19 R14 + 0x7C3C0800, // 0037 CALL R15 4 + 0x8C40030D, // 0038 GETMET R16 R1 K13 + 0x5C481600, // 0039 MOVE R18 R11 + 0x5C4C1E00, // 003A MOVE R19 R15 + 0x7C400600, // 003B CALL R16 3 + 0x002C170B, // 003C ADD R11 R11 K11 + 0x7001FFE9, // 003D JMP #0028 + 0x00380A07, // 003E ADD R14 R5 R7 + 0x003C0A07, // 003F ADD R15 R5 R7 + 0x003C1E06, // 0040 ADD R15 R15 R6 + 0x14401D06, // 0041 LT R16 R14 K6 + 0x78420000, // 0042 JMPF R16 #0044 + 0x58380006, // 0043 LDCONST R14 K6 + 0x28401E03, // 0044 GE R16 R15 R3 + 0x78420000, // 0045 JMPF R16 #0047 + 0x5C3C0600, // 0046 MOVE R15 R3 + 0x5C2C1C00, // 0047 MOVE R11 R14 + 0x1440160F, // 0048 LT R16 R11 R15 + 0x78420014, // 0049 JMPF R16 #005F + 0xB8421200, // 004A GETNGBL R16 K9 + 0x8C40210A, // 004B GETMET R16 R16 K10 + 0x5C481600, // 004C MOVE R18 R11 + 0x004C0A07, // 004D ADD R19 R5 R7 + 0x044C270B, // 004E SUB R19 R19 K11 + 0x00500A07, // 004F ADD R20 R5 R7 + 0x00502806, // 0050 ADD R20 R20 R6 + 0x58540006, // 0051 LDCONST R21 K6 + 0x545A00FE, // 0052 LDINT R22 255 + 0x7C400C00, // 0053 CALL R16 6 + 0x8C44030C, // 0054 GETMET R17 R1 K12 + 0x5C4C0800, // 0055 MOVE R19 R4 + 0x5C501000, // 0056 MOVE R20 R8 + 0x5C542000, // 0057 MOVE R21 R16 + 0x7C440800, // 0058 CALL R17 4 + 0x8C48030D, // 0059 GETMET R18 R1 K13 + 0x5C501600, // 005A MOVE R20 R11 + 0x5C542200, // 005B MOVE R21 R17 + 0x7C480600, // 005C CALL R18 3 + 0x002C170B, // 005D ADD R11 R11 K11 + 0x7001FFE8, // 005E JMP #0048 + 0x50300200, // 005F LDBOOL R12 1 0 + 0x80041800, // 0060 RET 1 R12 }) ) ); @@ -14611,11 +14492,11 @@ be_local_closure(class_BeaconAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080010, // 0001 LDCONST R2 K16 - 0x880C0106, // 0002 GETMBR R3 R0 K6 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x88140105, // 0004 GETMBR R5 R0 K5 - 0x88180104, // 0005 GETMBR R6 R0 K4 + 0x5808000E, // 0001 LDCONST R2 K14 + 0x880C0104, // 0002 GETMBR R3 R0 K4 + 0x88100101, // 0003 GETMBR R4 R0 K1 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x88180102, // 0005 GETMBR R6 R0 K2 0x7C040A00, // 0006 CALL R1 5 0x80040200, // 0007 RET 1 R1 }) @@ -14838,30 +14719,57 @@ be_local_closure(noise_single_color, /* name */ ); /*******************************************************************/ +// compact class 'GradientMeterAnimation' ktab size: 27, total: 38 (saved 88 bytes) +static const bvalue be_ktab_class_GradientMeterAnimation[27] = { + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(peak_level), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(peak_time), + /* K4 */ be_nested_str_weak(_level), + /* K5 */ be_nested_str_weak(shift_period), + /* K6 */ be_nested_str_weak(peak_hold), + /* K7 */ be_nested_str_weak(level), + /* K8 */ be_nested_str_weak(update), + /* K9 */ be_nested_str_weak(get_param), + /* K10 */ be_nested_str_weak(color_source), + /* K11 */ be_nested_str_weak(start_time), + /* K12 */ be_nested_str_weak(tasmota), + /* K13 */ be_nested_str_weak(scale_uint), + /* K14 */ be_const_int(1), + /* K15 */ be_nested_str_weak(animation), + /* K16 */ be_nested_str_weak(color_provider), + /* K17 */ be_nested_str_weak(get_lut), + /* K18 */ be_nested_str_weak(LUT_FACTOR), + /* K19 */ be_nested_str_weak(pixels), + /* K20 */ be_nested_str_weak(_buffer), + /* K21 */ be_nested_str_weak(value_buffer), + /* K22 */ be_const_int(2), + /* K23 */ be_const_int(3), + /* K24 */ be_nested_str_weak(get_color_for_value), + /* K25 */ be_nested_str_weak(set_pixel_color), + /* K26 */ be_nested_str_weak(GradientMeterAnimation_X28level_X3D_X25s_X2C_X20peak_hold_X3D_X25sms_X2C_X20peak_X3D_X25s_X29), +}; -extern const bclass be_class_PaletteMeterAnimation; + +extern const bclass be_class_GradientMeterAnimation; /******************************************************************** ** Solidified function: init ********************************************************************/ -be_local_closure(class_PaletteMeterAnimation_init, /* name */ +be_local_closure(class_GradientMeterAnimation_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ - 2, /* varg */ + 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(init), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(palette_meter), - }), + &be_ktab_class_GradientMeterAnimation, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ + ( &(const binstruction[11]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 @@ -14869,7 +14777,10 @@ be_local_closure(class_PaletteMeterAnimation_init, /* name */ 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x90020302, // 0006 SETMBR R0 K1 K2 - 0x80000000, // 0007 RET 0 + 0x90020702, // 0007 SETMBR R0 K3 K2 + 0x90020902, // 0008 SETMBR R0 K4 K2 + 0x90020B02, // 0009 SETMBR R0 K5 K2 + 0x80000000, // 000A RET 0 }) ) ); @@ -14877,62 +14788,48 @@ be_local_closure(class_PaletteMeterAnimation_init, /* name */ /******************************************************************** -** Solidified function: _update_value_buffer +** Solidified function: update ********************************************************************/ -be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ +be_local_closure(class_GradientMeterAnimation_update, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 2, /* varg */ + 7, /* nstack */ + 2, /* argc */ + 10, /* 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(value_func), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(scale_uint), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(value_buffer), - /* K6 */ be_const_int(1), - }), - be_str_weak(_update_value_buffer), + &be_ktab_class_GradientMeterAnimation, /* shared constants */ + be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x4C100000, // 0001 LDNIL R4 - 0x1C100604, // 0002 EQ R4 R3 R4 - 0x78120000, // 0003 JMPF R4 #0005 - 0x80000800, // 0004 RET 0 + ( &(const binstruction[26]) { /* code */ + 0x88080106, // 0000 GETMBR R2 R0 K6 + 0x240C0502, // 0001 GT R3 R2 K2 + 0x780E000F, // 0002 JMPF R3 #0013 + 0x880C0107, // 0003 GETMBR R3 R0 K7 + 0x90020803, // 0004 SETMBR R0 K4 R3 0x88100101, // 0005 GETMBR R4 R0 K1 - 0x5C140600, // 0006 MOVE R5 R3 - 0x5C180800, // 0007 MOVE R6 R4 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x5C200000, // 0009 MOVE R8 R0 - 0x7C140600, // 000A CALL R5 3 - 0xB81A0400, // 000B GETNGBL R6 K2 - 0x8C180D03, // 000C GETMET R6 R6 K3 - 0x5C200A00, // 000D MOVE R8 R5 - 0x58240004, // 000E LDCONST R9 K4 - 0x542A00FE, // 000F LDINT R10 255 - 0x582C0004, // 0010 LDCONST R11 K4 - 0x5C300400, // 0011 MOVE R12 R2 - 0x7C180C00, // 0012 CALL R6 6 - 0x581C0004, // 0013 LDCONST R7 K4 - 0x14200E02, // 0014 LT R8 R7 R2 - 0x78220008, // 0015 JMPF R8 #001F - 0x88200105, // 0016 GETMBR R8 R0 K5 - 0x14240E06, // 0017 LT R9 R7 R6 - 0x78260001, // 0018 JMPF R9 #001B - 0x542600FE, // 0019 LDINT R9 255 - 0x70020000, // 001A JMP #001C - 0x58240004, // 001B LDCONST R9 K4 - 0x98200E09, // 001C SETIDX R8 R7 R9 - 0x001C0F06, // 001D ADD R7 R7 K6 - 0x7001FFF4, // 001E JMP #0014 - 0x80000000, // 001F RET 0 + 0x28140604, // 0006 GE R5 R3 R4 + 0x78160002, // 0007 JMPF R5 #000B + 0x90020203, // 0008 SETMBR R0 K1 R3 + 0x90020601, // 0009 SETMBR R0 K3 R1 + 0x70020007, // 000A JMP #0013 + 0x24140902, // 000B GT R5 R4 K2 + 0x78160005, // 000C JMPF R5 #0013 + 0x88140103, // 000D GETMBR R5 R0 K3 + 0x04140205, // 000E SUB R5 R1 R5 + 0x24180A02, // 000F GT R6 R5 R2 + 0x781A0001, // 0010 JMPF R6 #0013 + 0x90020203, // 0011 SETMBR R0 K1 R3 + 0x90020601, // 0012 SETMBR R0 K3 R1 + 0x600C0003, // 0013 GETGBL R3 G3 + 0x5C100000, // 0014 MOVE R4 R0 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C0C0708, // 0016 GETMET R3 R3 K8 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80000000, // 0019 RET 0 }) ) ); @@ -14940,23 +14837,197 @@ be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ /******************************************************************** -** Solidified class: PaletteMeterAnimation +** Solidified function: render +********************************************************************/ +be_local_closure(class_GradientMeterAnimation_render, /* name */ + be_nested_proto( + 21, /* nstack */ + 4, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_GradientMeterAnimation, /* shared constants */ + be_str_weak(render), + &be_const_str_solidified, + ( &(const binstruction[113]) { /* code */ + 0x8C100109, // 0000 GETMET R4 R0 K9 + 0x5818000A, // 0001 LDCONST R6 K10 + 0x7C100400, // 0002 CALL R4 2 + 0x4C140000, // 0003 LDNIL R5 + 0x1C140805, // 0004 EQ R5 R4 R5 + 0x78160001, // 0005 JMPF R5 #0008 + 0x50140000, // 0006 LDBOOL R5 0 0 + 0x80040A00, // 0007 RET 1 R5 + 0x8814010B, // 0008 GETMBR R5 R0 K11 + 0x04140405, // 0009 SUB R5 R2 R5 + 0x88180104, // 000A GETMBR R6 R0 K4 + 0x881C0106, // 000B GETMBR R7 R0 K6 + 0xB8221800, // 000C GETNGBL R8 K12 + 0x8C20110D, // 000D GETMET R8 R8 K13 + 0x5C280C00, // 000E MOVE R10 R6 + 0x582C0002, // 000F LDCONST R11 K2 + 0x543200FE, // 0010 LDINT R12 255 + 0x58340002, // 0011 LDCONST R13 K2 + 0x5C380600, // 0012 MOVE R14 R3 + 0x7C200C00, // 0013 CALL R8 6 + 0x5425FFFE, // 0014 LDINT R9 -1 + 0x24280F02, // 0015 GT R10 R7 K2 + 0x782A000C, // 0016 JMPF R10 #0024 + 0x88280101, // 0017 GETMBR R10 R0 K1 + 0x24281406, // 0018 GT R10 R10 R6 + 0x782A0009, // 0019 JMPF R10 #0024 + 0xB82A1800, // 001A GETNGBL R10 K12 + 0x8C28150D, // 001B GETMET R10 R10 K13 + 0x88300101, // 001C GETMBR R12 R0 K1 + 0x58340002, // 001D LDCONST R13 K2 + 0x543A00FE, // 001E LDINT R14 255 + 0x583C0002, // 001F LDCONST R15 K2 + 0x5C400600, // 0020 MOVE R16 R3 + 0x7C280C00, // 0021 CALL R10 6 + 0x0428150E, // 0022 SUB R10 R10 K14 + 0x5C241400, // 0023 MOVE R9 R10 + 0x4C280000, // 0024 LDNIL R10 + 0x602C000F, // 0025 GETGBL R11 G15 + 0x5C300800, // 0026 MOVE R12 R4 + 0xB8361E00, // 0027 GETNGBL R13 K15 + 0x88341B10, // 0028 GETMBR R13 R13 K16 + 0x7C2C0400, // 0029 CALL R11 2 + 0x782E0028, // 002A JMPF R11 #0054 + 0x8C2C0911, // 002B GETMET R11 R4 K17 + 0x7C2C0200, // 002C CALL R11 1 + 0x5C281600, // 002D MOVE R10 R11 + 0x4C300000, // 002E LDNIL R12 + 0x202C160C, // 002F NE R11 R11 R12 + 0x782E0022, // 0030 JMPF R11 #0054 + 0x882C0912, // 0031 GETMBR R11 R4 K18 + 0x543200FF, // 0032 LDINT R12 256 + 0x3C30180B, // 0033 SHR R12 R12 R11 + 0x58340002, // 0034 LDCONST R13 K2 + 0x88380313, // 0035 GETMBR R14 R1 K19 + 0x8C381D14, // 0036 GETMET R14 R14 K20 + 0x7C380200, // 0037 CALL R14 1 + 0x8C3C1514, // 0038 GETMET R15 R10 K20 + 0x7C3C0200, // 0039 CALL R15 1 + 0x88400115, // 003A GETMBR R16 R0 K21 + 0x8C402114, // 003B GETMET R16 R16 K20 + 0x7C400200, // 003C CALL R16 1 + 0x14441A08, // 003D LT R17 R13 R8 + 0x78460013, // 003E JMPF R17 #0053 + 0x9444200D, // 003F GETIDX R17 R16 R13 + 0x3C48220B, // 0040 SHR R18 R17 R11 + 0x544E00FE, // 0041 LDINT R19 255 + 0x1C4C2213, // 0042 EQ R19 R17 R19 + 0x784E0000, // 0043 JMPF R19 #0045 + 0x5C481800, // 0044 MOVE R18 R12 + 0x384C2516, // 0045 SHL R19 R18 K22 + 0x004C1E13, // 0046 ADD R19 R15 R19 + 0x94502702, // 0047 GETIDX R20 R19 K2 + 0x983A0414, // 0048 SETIDX R14 K2 R20 + 0x9450270E, // 0049 GETIDX R20 R19 K14 + 0x983A1C14, // 004A SETIDX R14 K14 R20 + 0x94502716, // 004B GETIDX R20 R19 K22 + 0x983A2C14, // 004C SETIDX R14 K22 R20 + 0x94502717, // 004D GETIDX R20 R19 K23 + 0x983A2E14, // 004E SETIDX R14 K23 R20 + 0x00341B0E, // 004F ADD R13 R13 K14 + 0x54520003, // 0050 LDINT R20 4 + 0x00381C14, // 0051 ADD R14 R14 R20 + 0x7001FFE9, // 0052 JMP #003D + 0x7002000E, // 0053 JMP #0063 + 0x582C0002, // 0054 LDCONST R11 K2 + 0x14301608, // 0055 LT R12 R11 R8 + 0x7832000B, // 0056 JMPF R12 #0063 + 0x88300115, // 0057 GETMBR R12 R0 K21 + 0x9430180B, // 0058 GETIDX R12 R12 R11 + 0x8C340918, // 0059 GETMET R13 R4 K24 + 0x5C3C1800, // 005A MOVE R15 R12 + 0x5C400A00, // 005B MOVE R16 R5 + 0x7C340600, // 005C CALL R13 3 + 0x8C380319, // 005D GETMET R14 R1 K25 + 0x5C401600, // 005E MOVE R16 R11 + 0x5C441A00, // 005F MOVE R17 R13 + 0x7C380600, // 0060 CALL R14 3 + 0x002C170E, // 0061 ADD R11 R11 K14 + 0x7001FFF1, // 0062 JMP #0055 + 0x282C1208, // 0063 GE R11 R9 R8 + 0x782E0009, // 0064 JMPF R11 #006F + 0x882C0115, // 0065 GETMBR R11 R0 K21 + 0x942C1609, // 0066 GETIDX R11 R11 R9 + 0x8C300918, // 0067 GETMET R12 R4 K24 + 0x5C381600, // 0068 MOVE R14 R11 + 0x5C3C0A00, // 0069 MOVE R15 R5 + 0x7C300600, // 006A CALL R12 3 + 0x8C340319, // 006B GETMET R13 R1 K25 + 0x5C3C1200, // 006C MOVE R15 R9 + 0x5C401800, // 006D MOVE R16 R12 + 0x7C340600, // 006E CALL R13 3 + 0x502C0200, // 006F LDBOOL R11 1 0 + 0x80041600, // 0070 RET 1 R11 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_GradientMeterAnimation_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_GradientMeterAnimation, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 9]) { /* code */ + 0x88040107, // 0000 GETMBR R1 R0 K7 + 0x88080106, // 0001 GETMBR R2 R0 K6 + 0x600C0018, // 0002 GETGBL R3 G24 + 0x5810001A, // 0003 LDCONST R4 K26 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x881C0101, // 0006 GETMBR R7 R0 K1 + 0x7C0C0800, // 0007 CALL R3 4 + 0x80040600, // 0008 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: GradientMeterAnimation ********************************************************************/ extern const bclass be_class_PaletteGradientAnimation; -be_local_class(PaletteMeterAnimation, - 0, +be_local_class(GradientMeterAnimation, + 3, &be_class_PaletteGradientAnimation, - be_nested_map(3, + be_nested_map(8, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, + { 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(value_func, -1), be_const_bytes_instance(0C0606) }, + { be_const_key_weak(peak_hold, -1), be_const_bytes_instance(05000001E803) }, + { be_const_key_weak(level, -1), be_const_bytes_instance(07000001FF0001FF00) }, })) ) } )) }, - { be_const_key_weak(init, -1), be_const_closure(class_PaletteMeterAnimation_init_closure) }, - { be_const_key_weak(_update_value_buffer, -1), be_const_closure(class_PaletteMeterAnimation__update_value_buffer_closure) }, + { be_const_key_weak(_level, -1), be_const_var(2) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_GradientMeterAnimation_tostring_closure) }, + { be_const_key_weak(init, 0), be_const_closure(class_GradientMeterAnimation_init_closure) }, + { be_const_key_weak(update, 1), be_const_closure(class_GradientMeterAnimation_update_closure) }, + { be_const_key_weak(render, 2), be_const_closure(class_GradientMeterAnimation_render_closure) }, + { be_const_key_weak(peak_time, -1), be_const_var(1) }, + { be_const_key_weak(peak_level, -1), be_const_var(0) }, })), - be_str_weak(PaletteMeterAnimation) + be_str_weak(GradientMeterAnimation) ); /******************************************************************** @@ -15379,20 +15450,17 @@ be_local_closure(solid, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 1]) { /* 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 */ + ( &(const binstruction[ 5]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040300, // 0001 GETMET R1 R1 K0 0x5C0C0000, // 0002 MOVE R3 R0 0x7C040400, // 0003 CALL R1 2 - 0x90060302, // 0004 SETMBR R1 K1 K2 - 0x80040200, // 0005 RET 1 R1 + 0x80040200, // 0004 RET 1 R1 }) ) ); @@ -15679,29 +15747,27 @@ be_local_class(BreatheColorProvider, })), be_str_weak(BreatheColorProvider) ); -// compact class 'CrenelPositionAnimation' ktab size: 21, total: 27 (saved 48 bytes) -static const bvalue be_ktab_class_CrenelPositionAnimation[21] = { - /* K0 */ be_nested_str_weak(is_running), - /* K1 */ be_nested_str_weak(_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_nested_str_weak(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), +// compact class 'CrenelPositionAnimation' ktab size: 19, total: 24 (saved 40 bytes) +static const bvalue be_ktab_class_CrenelPositionAnimation[19] = { + /* K0 */ be_nested_str_weak(back_color), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_nested_str_weak(pulse_size), + /* K3 */ be_nested_str_weak(low_size), + /* K4 */ be_nested_str_weak(nb_pulse), + /* K5 */ be_nested_str_weak(color), + /* K6 */ be_const_int(-16777216), + /* K7 */ be_nested_str_weak(fill_pixels), + /* K8 */ be_nested_str_weak(pixels), + /* K9 */ be_const_int(0), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(set_pixel_color), + /* K12 */ be_nested_str_weak(get_param), + /* K13 */ be_nested_str_weak(animation), + /* K14 */ be_nested_str_weak(is_value_provider), + /* K15 */ be_nested_str_weak(0x_X2508x), + /* K16 */ 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), + /* K17 */ be_nested_str_weak(priority), + /* K18 */ be_nested_str_weak(is_running), }; @@ -15713,7 +15779,7 @@ extern const bclass be_class_CrenelPositionAnimation; be_local_closure(class_CrenelPositionAnimation_render, /* name */ be_nested_proto( 16, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -15723,83 +15789,71 @@ 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 */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 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 - 0x782E0003, // 0016 JMPF R11 #001B - 0x8C2C030A, // 0017 GETMET R11 R1 K10 - 0x8834030B, // 0018 GETMBR R13 R1 K11 - 0x5C380800, // 0019 MOVE R14 R4 - 0x7C2C0600, // 001A CALL R11 3 - 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 + ( &(const binstruction[64]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x88180102, // 0002 GETMBR R6 R0 K2 + 0x881C0103, // 0003 GETMBR R7 R0 K3 + 0x88200104, // 0004 GETMBR R8 R0 K4 + 0x88240105, // 0005 GETMBR R9 R0 K5 + 0x60280009, // 0006 GETGBL R10 G9 + 0x002C0C07, // 0007 ADD R11 R6 R7 + 0x7C280200, // 0008 CALL R10 1 + 0x202C0906, // 0009 NE R11 R4 K6 + 0x782E0003, // 000A JMPF R11 #000F + 0x8C2C0307, // 000B GETMET R11 R1 K7 + 0x88340308, // 000C GETMBR R13 R1 K8 + 0x5C380800, // 000D MOVE R14 R4 + 0x7C2C0600, // 000E CALL R11 3 + 0x182C1509, // 000F LE R11 R10 K9 + 0x782E0000, // 0010 JMPF R11 #0012 + 0x5828000A, // 0011 LDCONST R10 K10 + 0x1C2C1109, // 0012 EQ R11 R8 K9 + 0x782E0001, // 0013 JMPF R11 #0016 + 0x502C0200, // 0014 LDBOOL R11 1 0 + 0x80041600, // 0015 RET 1 R11 + 0x142C1109, // 0016 LT R11 R8 K9 + 0x782E0006, // 0017 JMPF R11 #001F + 0x002C0A06, // 0018 ADD R11 R5 R6 + 0x042C170A, // 0019 SUB R11 R11 K10 + 0x102C160A, // 001A MOD R11 R11 R10 + 0x042C1606, // 001B SUB R11 R11 R6 + 0x002C170A, // 001C ADD R11 R11 K10 + 0x5C141600, // 001D MOVE R5 R11 + 0x70020007, // 001E JMP #0027 + 0x442C1400, // 001F NEG R11 R10 + 0x142C0A0B, // 0020 LT R11 R5 R11 + 0x782E0004, // 0021 JMPF R11 #0027 + 0x202C1109, // 0022 NE R11 R8 K9 + 0x782E0002, // 0023 JMPF R11 #0027 + 0x00140A0A, // 0024 ADD R5 R5 R10 + 0x0420110A, // 0025 SUB R8 R8 K10 + 0x7001FFF7, // 0026 JMP #001F + 0x142C0A03, // 0027 LT R11 R5 R3 + 0x782E0014, // 0028 JMPF R11 #003E + 0x202C1109, // 0029 NE R11 R8 K9 + 0x782E0012, // 002A JMPF R11 #003E + 0x582C0009, // 002B LDCONST R11 K9 + 0x14300B09, // 002C LT R12 R5 K9 + 0x78320001, // 002D JMPF R12 #0030 + 0x44300A00, // 002E NEG R12 R5 + 0x5C2C1800, // 002F MOVE R11 R12 + 0x14301606, // 0030 LT R12 R11 R6 + 0x78320008, // 0031 JMPF R12 #003B + 0x00300A0B, // 0032 ADD R12 R5 R11 + 0x14301803, // 0033 LT R12 R12 R3 + 0x78320005, // 0034 JMPF R12 #003B + 0x8C30030B, // 0035 GETMET R12 R1 K11 + 0x00380A0B, // 0036 ADD R14 R5 R11 + 0x5C3C1200, // 0037 MOVE R15 R9 + 0x7C300600, // 0038 CALL R12 3 + 0x002C170A, // 0039 ADD R11 R11 K10 + 0x7001FFF4, // 003A JMP #0030 + 0x00140A0A, // 003B ADD R5 R5 R10 + 0x0420110A, // 003C SUB R8 R8 K10 + 0x7001FFE8, // 003D JMP #0027 + 0x502C0200, // 003E LDBOOL R11 1 0 + 0x80041600, // 003F RET 1 R11 }) ) ); @@ -15824,11 +15878,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 - 0x58100008, // 0002 LDCONST R4 K8 + 0x8C08010C, // 0001 GETMET R2 R0 K12 + 0x58100005, // 0002 LDCONST R4 K5 0x7C080400, // 0003 CALL R2 2 - 0xB80E2000, // 0004 GETNGBL R3 K16 - 0x8C0C0711, // 0005 GETMET R3 R3 K17 + 0xB80E1A00, // 0004 GETNGBL R3 K13 + 0x8C0C070E, // 0005 GETMET R3 R3 K14 0x5C140400, // 0006 MOVE R5 R2 0x7C0C0400, // 0007 CALL R3 2 0x780E0004, // 0008 JMPF R3 #000E @@ -15838,19 +15892,19 @@ 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 - 0x88140108, // 0010 GETMBR R5 R0 K8 + 0x5810000F, // 000F LDCONST R4 K15 + 0x88140105, // 0010 GETMBR R5 R0 K5 0x7C0C0400, // 0011 CALL R3 2 0x5C040600, // 0012 MOVE R1 R3 0x600C0018, // 0013 GETGBL R3 G24 - 0x58100013, // 0014 LDCONST R4 K19 + 0x58100010, // 0014 LDCONST R4 K16 0x5C140200, // 0015 MOVE R5 R1 - 0x88180104, // 0016 GETMBR R6 R0 K4 - 0x881C0105, // 0017 GETMBR R7 R0 K5 - 0x88200106, // 0018 GETMBR R8 R0 K6 - 0x88240107, // 0019 GETMBR R9 R0 K7 - 0x88280114, // 001A GETMBR R10 R0 K20 - 0x882C0100, // 001B GETMBR R11 R0 K0 + 0x88180101, // 0016 GETMBR R6 R0 K1 + 0x881C0102, // 0017 GETMBR R7 R0 K2 + 0x88200103, // 0018 GETMBR R8 R0 K3 + 0x88240104, // 0019 GETMBR R9 R0 K4 + 0x88280111, // 001A GETMBR R10 R0 K17 + 0x882C0112, // 001B GETMBR R11 R0 K18 0x7C0C1000, // 001C CALL R3 8 0x80040600, // 001D RET 1 R3 }) @@ -16039,12 +16093,12 @@ static const bvalue be_ktab_class_ParameterizedObject[59] = { /* K37 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20above_X20maximum_X20_X25s), /* K38 */ be_nested_str_weak(enum), /* K39 */ be_nested_str_weak(_X27_X25s_X27_X20value_X20_X25s_X20is_X20not_X20in_X20allowed_X20values_X20_X25s), - /* K40 */ be_nested_str_weak(is_running), - /* K41 */ be_nested_str_weak(values), - /* K42 */ be_nested_str_weak(contains), - /* K43 */ be_nested_str_weak(resolve_value), - /* K44 */ be_nested_str_weak(engine), - /* K45 */ be_nested_str_weak(time_ms), + /* K40 */ be_nested_str_weak(values), + /* K41 */ be_nested_str_weak(contains), + /* K42 */ be_nested_str_weak(resolve_value), + /* K43 */ be_nested_str_weak(engine), + /* K44 */ be_nested_str_weak(time_ms), + /* K45 */ be_nested_str_weak(is_running), /* K46 */ be_nested_str_weak(start_time), /* K47 */ be_nested_str_weak(introspect), /* K48 */ be_nested_str_weak(PARAMS), @@ -16627,7 +16681,7 @@ be_local_closure(class_ParameterizedObject__validate_param, /* name */ ********************************************************************/ be_local_closure(class_ParameterizedObject_update, /* name */ be_nested_proto( - 3, /* nstack */ + 2, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16638,9 +16692,8 @@ be_local_closure(class_ParameterizedObject_update, /* name */ &be_ktab_class_ParameterizedObject, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88080128, // 0000 GETMBR R2 R0 K40 - 0x80040400, // 0001 RET 1 R2 + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 }) ) ); @@ -16664,8 +16717,8 @@ be_local_closure(class_ParameterizedObject__resolve_parameter_value, /* name * be_str_weak(_resolve_parameter_value), &be_const_str_solidified, ( &(const binstruction[31]) { /* code */ - 0x880C0129, // 0000 GETMBR R3 R0 K41 - 0x8C0C072A, // 0001 GETMET R3 R3 K42 + 0x880C0128, // 0000 GETMBR R3 R0 K40 + 0x8C0C0729, // 0001 GETMET R3 R3 K41 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x740E0011, // 0004 JMPT R3 #0017 @@ -16687,9 +16740,9 @@ be_local_closure(class_ParameterizedObject__resolve_parameter_value, /* name * 0x80040800, // 0014 RET 1 R4 0x4C100000, // 0015 LDNIL R4 0x80040800, // 0016 RET 1 R4 - 0x880C0129, // 0017 GETMBR R3 R0 K41 + 0x880C0128, // 0017 GETMBR R3 R0 K40 0x940C0601, // 0018 GETIDX R3 R3 R1 - 0x8C10012B, // 0019 GETMET R4 R0 K43 + 0x8C10012A, // 0019 GETMET R4 R0 K42 0x5C180600, // 001A MOVE R6 R3 0x5C1C0200, // 001B MOVE R7 R1 0x5C200400, // 001C MOVE R8 R2 @@ -16761,57 +16814,65 @@ be_local_closure(class_ParameterizedObject_member, /* name */ &be_ktab_class_ParameterizedObject, /* shared constants */ be_str_weak(member), &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x88080129, // 0000 GETMBR R2 R0 K41 - 0x8C08052A, // 0001 GETMET R2 R2 K42 + ( &(const binstruction[58]) { /* code */ + 0x88080128, // 0000 GETMBR R2 R0 K40 + 0x8C080504, // 0001 GETMET R2 R2 K4 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 - 0x780A000F, // 0004 JMPF R2 #0015 - 0x88080129, // 0005 GETMBR R2 R0 K41 - 0x94080401, // 0006 GETIDX R2 R2 R1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E000D, // 0006 JMPF R3 #0015 0x600C0004, // 0007 GETGBL R3 G4 0x5C100400, // 0008 MOVE R4 R2 0x7C0C0200, // 0009 CALL R3 1 0x200C0720, // 000A NE R3 R3 K32 0x780E0000, // 000B JMPF R3 #000D 0x80040400, // 000C RET 1 R2 - 0x8C0C012B, // 000D GETMET R3 R0 K43 + 0x8C0C012A, // 000D GETMET R3 R0 K42 0x5C140400, // 000E MOVE R5 R2 0x5C180200, // 000F MOVE R6 R1 - 0x881C012C, // 0010 GETMBR R7 R0 K44 - 0x881C0F2D, // 0011 GETMBR R7 R7 K45 + 0x881C012B, // 0010 GETMBR R7 R0 K43 + 0x881C0F2C, // 0011 GETMBR R7 R7 K44 0x7C0C0800, // 0012 CALL R3 4 0x80040600, // 0013 RET 1 R3 - 0x7002001B, // 0014 JMP #0031 - 0x8C08010C, // 0015 GETMET R2 R0 K12 - 0x5C100200, // 0016 MOVE R4 R1 - 0x7C080400, // 0017 CALL R2 2 - 0x4C0C0000, // 0018 LDNIL R3 - 0x200C0403, // 0019 NE R3 R2 R3 - 0x780E000D, // 001A JMPF R3 #0029 - 0x8C0C010F, // 001B GETMET R3 R0 K15 - 0x5C140400, // 001C MOVE R5 R2 - 0x58180011, // 001D LDCONST R6 K17 - 0x7C0C0600, // 001E CALL R3 3 - 0x780E0005, // 001F JMPF R3 #0026 - 0x8C0C0112, // 0020 GETMET R3 R0 K18 - 0x5C140400, // 0021 MOVE R5 R2 - 0x58180011, // 0022 LDCONST R6 K17 - 0x7C0C0600, // 0023 CALL R3 3 - 0x80040600, // 0024 RET 1 R3 - 0x70020001, // 0025 JMP #0028 - 0x4C0C0000, // 0026 LDNIL R3 - 0x80040600, // 0027 RET 1 R3 - 0x70020007, // 0028 JMP #0031 - 0x600C0018, // 0029 GETGBL R3 G24 - 0x5810000A, // 002A LDCONST R4 K10 - 0x60140005, // 002B GETGBL R5 G5 - 0x5C180000, // 002C MOVE R6 R0 - 0x7C140200, // 002D CALL R5 1 - 0x5C180200, // 002E MOVE R6 R1 - 0x7C0C0600, // 002F CALL R3 3 - 0xB0061603, // 0030 RAISE 1 K11 R3 - 0x80000000, // 0031 RET 0 + 0x70020023, // 0014 JMP #0039 + 0x880C0128, // 0015 GETMBR R3 R0 K40 + 0x8C0C0729, // 0016 GETMET R3 R3 K41 + 0x5C140200, // 0017 MOVE R5 R1 + 0x7C0C0400, // 0018 CALL R3 2 + 0x780E0002, // 0019 JMPF R3 #001D + 0x4C0C0000, // 001A LDNIL R3 + 0x80040600, // 001B RET 1 R3 + 0x7002001B, // 001C JMP #0039 + 0x8C0C010C, // 001D GETMET R3 R0 K12 + 0x5C140200, // 001E MOVE R5 R1 + 0x7C0C0400, // 001F CALL R3 2 + 0x4C100000, // 0020 LDNIL R4 + 0x20100604, // 0021 NE R4 R3 R4 + 0x7812000D, // 0022 JMPF R4 #0031 + 0x8C10010F, // 0023 GETMET R4 R0 K15 + 0x5C180600, // 0024 MOVE R6 R3 + 0x581C0011, // 0025 LDCONST R7 K17 + 0x7C100600, // 0026 CALL R4 3 + 0x78120005, // 0027 JMPF R4 #002E + 0x8C100112, // 0028 GETMET R4 R0 K18 + 0x5C180600, // 0029 MOVE R6 R3 + 0x581C0011, // 002A LDCONST R7 K17 + 0x7C100600, // 002B CALL R4 3 + 0x80040800, // 002C RET 1 R4 + 0x70020001, // 002D JMP #0030 + 0x4C100000, // 002E LDNIL R4 + 0x80040800, // 002F RET 1 R4 + 0x70020007, // 0030 JMP #0039 + 0x60100018, // 0031 GETGBL R4 G24 + 0x5814000A, // 0032 LDCONST R5 K10 + 0x60180005, // 0033 GETGBL R6 G5 + 0x5C1C0000, // 0034 MOVE R7 R0 + 0x7C180200, // 0035 CALL R6 1 + 0x5C1C0200, // 0036 MOVE R7 R1 + 0x7C100600, // 0037 CALL R4 3 + 0xB0061604, // 0038 RAISE 1 K11 R4 + 0x80000000, // 0039 RET 0 }) ) ); @@ -16838,10 +16899,10 @@ be_local_closure(class_ParameterizedObject_start, /* name */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808012C, // 0003 GETMBR R2 R0 K44 - 0x8804052D, // 0004 GETMBR R1 R2 K45 + 0x8808012B, // 0003 GETMBR R2 R0 K43 + 0x8804052C, // 0004 GETMBR R1 R2 K44 0x50080200, // 0005 LDBOOL R2 1 0 - 0x90025002, // 0006 SETMBR R0 K40 R2 + 0x90025A02, // 0006 SETMBR R0 K45 R2 0x8808012E, // 0007 GETMBR R2 R0 K46 0x4C0C0000, // 0008 LDNIL R3 0x20080403, // 0009 NE R2 R2 R3 @@ -16872,7 +16933,7 @@ be_local_closure(class_ParameterizedObject_stop, /* name */ &be_const_str_solidified, ( &(const binstruction[ 3]) { /* code */ 0x50040000, // 0000 LDBOOL R1 0 0 - 0x90025001, // 0001 SETMBR R0 K40 R1 + 0x90025A01, // 0001 SETMBR R0 K45 R1 0x80040000, // 0002 RET 1 R0 }) ) @@ -16904,7 +16965,7 @@ be_local_closure(class_ParameterizedObject__init_parameter_values, /* name */ 0x4C0C0000, // 0004 LDNIL R3 0x200C0403, // 0005 NE R3 R2 R3 0x780E0026, // 0006 JMPF R3 #002E - 0x8C0C032A, // 0007 GETMET R3 R1 K42 + 0x8C0C0329, // 0007 GETMET R3 R1 K41 0x5C140400, // 0008 MOVE R5 R2 0x58180030, // 0009 LDCONST R6 K48 0x7C0C0600, // 000A CALL R3 3 @@ -16917,8 +16978,8 @@ be_local_closure(class_ParameterizedObject__init_parameter_values, /* name */ 0xA8020013, // 0011 EXBLK 0 #0026 0x5C140800, // 0012 MOVE R5 R4 0x7C140000, // 0013 CALL R5 0 - 0x88180129, // 0014 GETMBR R6 R0 K41 - 0x8C180D2A, // 0015 GETMET R6 R6 K42 + 0x88180128, // 0014 GETMBR R6 R0 K40 + 0x8C180D29, // 0015 GETMET R6 R6 K41 0x5C200A00, // 0016 MOVE R8 R5 0x7C180400, // 0017 CALL R6 2 0x741A000B, // 0018 JMPT R6 #0025 @@ -16928,7 +16989,7 @@ be_local_closure(class_ParameterizedObject__init_parameter_values, /* name */ 0x58280011, // 001C LDCONST R10 K17 0x7C1C0600, // 001D CALL R7 3 0x781E0005, // 001E JMPF R7 #0025 - 0x881C0129, // 001F GETMBR R7 R0 K41 + 0x881C0128, // 001F GETMBR R7 R0 K40 0x8C200112, // 0020 GETMET R8 R0 K18 0x5C280C00, // 0021 MOVE R10 R6 0x582C0011, // 0022 LDCONST R11 K17 @@ -16976,12 +17037,12 @@ be_local_closure(class_ParameterizedObject_init, /* name */ 0x20080520, // 0006 NE R2 R2 K32 0x780A0000, // 0007 JMPF R2 #0009 0xB0062933, // 0008 RAISE 1 K20 K51 - 0x90025801, // 0009 SETMBR R0 K44 R1 + 0x90025601, // 0009 SETMBR R0 K43 R1 0x60080013, // 000A GETGBL R2 G19 0x7C080000, // 000B CALL R2 0 - 0x90025202, // 000C SETMBR R0 K41 R2 + 0x90025002, // 000C SETMBR R0 K40 R2 0x50080000, // 000D LDBOOL R2 0 0 - 0x90025002, // 000E SETMBR R0 K40 R2 + 0x90025A02, // 000E SETMBR R0 K45 R2 0x8C080134, // 000F GETMET R2 R0 K52 0x7C080200, // 0010 CALL R2 1 0x80000000, // 0011 RET 0 @@ -17011,8 +17072,8 @@ be_local_closure(class_ParameterizedObject__fix_time_ms, /* name */ 0x4C080000, // 0000 LDNIL R2 0x1C080202, // 0001 EQ R2 R1 R2 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808012C, // 0003 GETMBR R2 R0 K44 - 0x8804052D, // 0004 GETMBR R1 R2 K45 + 0x8808012B, // 0003 GETMBR R2 R0 K43 + 0x8804052C, // 0004 GETMBR R1 R2 K44 0x8808012E, // 0005 GETMBR R2 R0 K46 0x4C0C0000, // 0006 LDNIL R3 0x1C080403, // 0007 EQ R2 R2 R3 @@ -17212,7 +17273,7 @@ be_local_closure(class_ParameterizedObject__set_parameter_value, /* name */ 0x5C180400, // 0007 MOVE R6 R2 0x7C0C0600, // 0008 CALL R3 3 0x5C080600, // 0009 MOVE R2 R3 - 0x880C0129, // 000A GETMBR R3 R0 K41 + 0x880C0128, // 000A GETMBR R3 R0 K40 0x980C0202, // 000B SETIDX R3 R1 R2 0x8C0C0137, // 000C GETMET R3 R0 K55 0x5C140200, // 000D MOVE R5 R1 @@ -17272,7 +17333,7 @@ be_local_closure(class_ParameterizedObject_tostring, /* name */ 0x600C0005, // 0002 GETGBL R3 G5 0x5C100000, // 0003 MOVE R4 R0 0x7C0C0200, // 0004 CALL R3 1 - 0x88100128, // 0005 GETMBR R4 R0 K40 + 0x8810012D, // 0005 GETMBR R4 R0 K45 0x7C040600, // 0006 CALL R1 3 0x80040200, // 0007 RET 1 R1 }) @@ -17389,13 +17450,13 @@ be_local_closure(class_ParameterizedObject__get_param_def, /* name */ 0x4C100000, // 0004 LDNIL R4 0x20100604, // 0005 NE R4 R3 R4 0x78120010, // 0006 JMPF R4 #0018 - 0x8C10052A, // 0007 GETMET R4 R2 K42 + 0x8C100529, // 0007 GETMET R4 R2 K41 0x5C180600, // 0008 MOVE R6 R3 0x581C0030, // 0009 LDCONST R7 K48 0x7C100600, // 000A CALL R4 3 0x78120006, // 000B JMPF R4 #0013 0x88100730, // 000C GETMBR R4 R3 K48 - 0x8C14092A, // 000D GETMET R5 R4 K42 + 0x8C140929, // 000D GETMET R5 R4 K41 0x5C1C0200, // 000E MOVE R7 R1 0x7C140400, // 000F CALL R5 2 0x78160001, // 0010 JMPF R5 #0013 @@ -17431,12 +17492,12 @@ be_local_closure(class_ParameterizedObject_get_param, /* name */ be_str_weak(get_param), &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ - 0x880C0129, // 0000 GETMBR R3 R0 K41 - 0x8C0C072A, // 0001 GETMET R3 R3 K42 + 0x880C0128, // 0000 GETMBR R3 R0 K40 + 0x8C0C0729, // 0001 GETMET R3 R3 K41 0x5C140200, // 0002 MOVE R5 R1 0x7C0C0400, // 0003 CALL R3 2 0x780E0002, // 0004 JMPF R3 #0008 - 0x880C0129, // 0005 GETMBR R3 R0 K41 + 0x880C0128, // 0005 GETMBR R3 R0 K40 0x940C0601, // 0006 GETIDX R3 R3 R1 0x80040600, // 0007 RET 1 R3 0x8C0C010C, // 0008 GETMET R3 R0 K12 @@ -17661,8 +17722,8 @@ be_local_closure(twinkle_classic, /* name */ ); /*******************************************************************/ -// compact class 'GradientAnimation' ktab size: 45, total: 84 (saved 312 bytes) -static const bvalue be_ktab_class_GradientAnimation[45] = { +// compact class 'GradientAnimation' ktab size: 44, total: 80 (saved 288 bytes) +static const bvalue be_ktab_class_GradientAnimation[44] = { /* K0 */ be_nested_str_weak(update), /* K1 */ be_nested_str_weak(movement_speed), /* K2 */ be_const_int(0), @@ -17685,29 +17746,28 @@ static const bvalue be_ktab_class_GradientAnimation[45] = { /* 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(_fix_time_ms), - /* K23 */ be_nested_str_weak(engine), - /* K24 */ be_nested_str_weak(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), + /* K22 */ be_nested_str_weak(width), + /* K23 */ be_nested_str_weak(current_colors), + /* K24 */ be_nested_str_weak(set_pixel_color), + /* K25 */ be_nested_str_weak(on_param_changed), + /* K26 */ be_nested_str_weak(engine), + /* K27 */ be_nested_str_weak(strip_length), + /* K28 */ be_nested_str_weak(resize), + /* K29 */ be_const_int(-16777216), + /* K30 */ be_nested_str_weak(_calculate_linear_position), + /* K31 */ be_nested_str_weak(_calculate_radial_position), + /* K32 */ be_nested_str_weak(light_state), + /* K33 */ be_const_int(3), + /* K34 */ be_nested_str_weak(HsToRgb), + /* K35 */ be_nested_str_weak(r), + /* K36 */ be_nested_str_weak(g), + /* K37 */ be_nested_str_weak(b), + /* K38 */ be_nested_str_weak(is_color_provider), + /* K39 */ be_nested_str_weak(get_color_for_value), + /* K40 */ be_nested_str_weak(resolve_value), + /* K41 */ be_nested_str_weak(int), + /* K42 */ be_nested_str_weak(init), + /* K43 */ be_nested_str_weak(center_pos), }; @@ -17729,42 +17789,38 @@ be_local_closure(class_GradientAnimation_update, /* name */ &be_ktab_class_GradientAnimation, /* shared constants */ be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ + ( &(const binstruction[31]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 0x8C080500, // 0003 GETMET R2 R2 K0 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x740A0001, // 0006 JMPT R2 #0009 - 0x50080000, // 0007 LDBOOL R2 0 0 - 0x80040400, // 0008 RET 1 R2 - 0x88080101, // 0009 GETMBR R2 R0 K1 - 0x240C0502, // 000A GT R3 R2 K2 - 0x780E0011, // 000B JMPF R3 #001E - 0x880C0103, // 000C GETMBR R3 R0 K3 - 0x040C0203, // 000D SUB R3 R1 R3 - 0xB8120800, // 000E GETNGBL R4 K4 - 0x8C100905, // 000F GETMET R4 R4 K5 - 0x5C180400, // 0010 MOVE R6 R2 - 0x581C0002, // 0011 LDCONST R7 K2 - 0x542200FE, // 0012 LDINT R8 255 - 0x58240002, // 0013 LDCONST R9 K2 - 0x542A0009, // 0014 LDINT R10 10 - 0x7C100C00, // 0015 CALL R4 6 - 0x24140902, // 0016 GT R5 R4 K2 - 0x78160005, // 0017 JMPF R5 #001E - 0x08140604, // 0018 MUL R5 R3 R4 - 0x541A03E7, // 0019 LDINT R6 1000 - 0x0C140A06, // 001A DIV R5 R5 R6 - 0x541A00FF, // 001B LDINT R6 256 - 0x10140A06, // 001C MOD R5 R5 R6 - 0x90020C05, // 001D SETMBR R0 K6 R5 - 0x8C0C0107, // 001E GETMET R3 R0 K7 - 0x5C140200, // 001F MOVE R5 R1 - 0x7C0C0400, // 0020 CALL R3 2 - 0x500C0200, // 0021 LDBOOL R3 1 0 - 0x80040600, // 0022 RET 1 R3 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x240C0502, // 0007 GT R3 R2 K2 + 0x780E0011, // 0008 JMPF R3 #001B + 0x880C0103, // 0009 GETMBR R3 R0 K3 + 0x040C0203, // 000A SUB R3 R1 R3 + 0xB8120800, // 000B GETNGBL R4 K4 + 0x8C100905, // 000C GETMET R4 R4 K5 + 0x5C180400, // 000D MOVE R6 R2 + 0x581C0002, // 000E LDCONST R7 K2 + 0x542200FE, // 000F LDINT R8 255 + 0x58240002, // 0010 LDCONST R9 K2 + 0x542A0009, // 0011 LDINT R10 10 + 0x7C100C00, // 0012 CALL R4 6 + 0x24140902, // 0013 GT R5 R4 K2 + 0x78160005, // 0014 JMPF R5 #001B + 0x08140604, // 0015 MUL R5 R3 R4 + 0x541A03E7, // 0016 LDINT R6 1000 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x541A00FF, // 0018 LDINT R6 256 + 0x10140A06, // 0019 MOD R5 R5 R6 + 0x90020C05, // 001A SETMBR R0 K6 R5 + 0x8C0C0107, // 001B GETMET R3 R0 K7 + 0x5C140200, // 001C MOVE R5 R1 + 0x7C0C0400, // 001D CALL R3 2 + 0x80000000, // 001E RET 0 }) ) ); @@ -17912,7 +17968,7 @@ be_local_closure(class_GradientAnimation_tostring, /* name */ be_local_closure(class_GradientAnimation_render, /* name */ be_nested_proto( 9, /* nstack */ - 3, /* argc */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -17922,40 +17978,27 @@ be_local_closure(class_GradientAnimation_render, /* name */ &be_ktab_class_GradientAnimation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x880C0115, // 0000 GETMBR R3 R0 K21 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0203, // 0003 EQ R3 R1 R3 - 0x780E0001, // 0004 JMPF R3 #0007 - 0x500C0000, // 0005 LDBOOL R3 0 0 - 0x80040600, // 0006 RET 1 R3 - 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 - 0x880C0718, // 000C GETMBR R3 R3 K24 - 0x58100002, // 000D LDCONST R4 K2 - 0x14140803, // 000E LT R5 R4 R3 - 0x7816000E, // 000F JMPF R5 #001F - 0x88140319, // 0010 GETMBR R5 R1 K25 - 0x14140805, // 0011 LT R5 R4 R5 - 0x7816000B, // 0012 JMPF R5 #001F - 0x6014000C, // 0013 GETGBL R5 G12 - 0x8818011A, // 0014 GETMBR R6 R0 K26 - 0x7C140200, // 0015 CALL R5 1 - 0x14140805, // 0016 LT R5 R4 R5 - 0x78160004, // 0017 JMPF R5 #001D - 0x8C14031B, // 0018 GETMET R5 R1 K27 - 0x5C1C0800, // 0019 MOVE R7 R4 - 0x8820011A, // 001A GETMBR R8 R0 K26 - 0x94201004, // 001B GETIDX R8 R8 R4 - 0x7C140600, // 001C CALL R5 3 - 0x00100908, // 001D ADD R4 R4 K8 - 0x7001FFEE, // 001E JMP #000E - 0x50140200, // 001F LDBOOL R5 1 0 - 0x80040A00, // 0020 RET 1 R5 + ( &(const binstruction[20]) { /* code */ + 0x58100002, // 0000 LDCONST R4 K2 + 0x14140803, // 0001 LT R5 R4 R3 + 0x7816000E, // 0002 JMPF R5 #0012 + 0x88140316, // 0003 GETMBR R5 R1 K22 + 0x14140805, // 0004 LT R5 R4 R5 + 0x7816000B, // 0005 JMPF R5 #0012 + 0x6014000C, // 0006 GETGBL R5 G12 + 0x88180117, // 0007 GETMBR R6 R0 K23 + 0x7C140200, // 0008 CALL R5 1 + 0x14140805, // 0009 LT R5 R4 R5 + 0x78160004, // 000A JMPF R5 #0010 + 0x8C140318, // 000B GETMET R5 R1 K24 + 0x5C1C0800, // 000C MOVE R7 R4 + 0x88200117, // 000D GETMBR R8 R0 K23 + 0x94201004, // 000E GETIDX R8 R8 R4 + 0x7C140600, // 000F CALL R5 3 + 0x00100908, // 0010 ADD R4 R4 K8 + 0x7001FFEE, // 0011 JMP #0001 + 0x50140200, // 0012 LDBOOL R5 1 0 + 0x80040A00, // 0013 RET 1 R5 }) ) ); @@ -17982,43 +18025,43 @@ be_local_closure(class_GradientAnimation_on_param_changed, /* name */ 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C071C, // 0003 GETMET R3 R3 K28 + 0x8C0C0719, // 0003 GETMET R3 R3 K25 0x5C140200, // 0004 MOVE R5 R1 0x5C180400, // 0005 MOVE R6 R2 0x7C0C0600, // 0006 CALL R3 3 - 0x880C0117, // 0007 GETMBR R3 R0 K23 - 0x880C0718, // 0008 GETMBR R3 R3 K24 + 0x880C011A, // 0007 GETMBR R3 R0 K26 + 0x880C071B, // 0008 GETMBR R3 R3 K27 0x6010000C, // 0009 GETGBL R4 G12 - 0x8814011A, // 000A GETMBR R5 R0 K26 + 0x88140117, // 000A GETMBR R5 R0 K23 0x7C100200, // 000B CALL R4 1 0x20100803, // 000C NE R4 R4 R3 0x7812001B, // 000D JMPF R4 #002A - 0x8810011A, // 000E GETMBR R4 R0 K26 - 0x8C10091D, // 000F GETMET R4 R4 K29 + 0x88100117, // 000E GETMBR R4 R0 K23 + 0x8C10091C, // 000F GETMET R4 R4 K28 0x5C180600, // 0010 MOVE R6 R3 0x7C100400, // 0011 CALL R4 2 0x6010000C, // 0012 GETGBL R4 G12 - 0x8814011A, // 0013 GETMBR R5 R0 K26 + 0x88140117, // 0013 GETMBR R5 R0 K23 0x7C100200, // 0014 CALL R4 1 0x14140803, // 0015 LT R5 R4 R3 0x78160012, // 0016 JMPF R5 #002A 0x6014000C, // 0017 GETGBL R5 G12 - 0x8818011A, // 0018 GETMBR R6 R0 K26 + 0x88180117, // 0018 GETMBR R6 R0 K23 0x7C140200, // 0019 CALL R5 1 0x28140805, // 001A GE R5 R4 R5 0x74160004, // 001B JMPT R5 #0021 - 0x8814011A, // 001C GETMBR R5 R0 K26 + 0x88140117, // 001C GETMBR R5 R0 K23 0x94140A04, // 001D GETIDX R5 R5 R4 0x4C180000, // 001E LDNIL R6 0x1C140A06, // 001F EQ R5 R5 R6 0x78160006, // 0020 JMPF R5 #0028 0x6014000C, // 0021 GETGBL R5 G12 - 0x8818011A, // 0022 GETMBR R6 R0 K26 + 0x88180117, // 0022 GETMBR R6 R0 K23 0x7C140200, // 0023 CALL R5 1 0x14140805, // 0024 LT R5 R4 R5 0x78160001, // 0025 JMPF R5 #0028 - 0x8814011A, // 0026 GETMBR R5 R0 K26 - 0x9814091E, // 0027 SETIDX R5 R4 K30 + 0x88140117, // 0026 GETMBR R5 R0 K23 + 0x9814091D, // 0027 SETIDX R5 R4 K29 0x00100908, // 0028 ADD R4 R4 K8 0x7001FFEA, // 0029 JMP #0015 0x80000000, // 002A RET 0 @@ -18047,15 +18090,15 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ ( &(const binstruction[148]) { /* code */ 0x8808010B, // 0000 GETMBR R2 R0 K11 0x880C010C, // 0001 GETMBR R3 R0 K12 - 0x88100117, // 0002 GETMBR R4 R0 K23 - 0x88100918, // 0003 GETMBR R4 R4 K24 + 0x8810011A, // 0002 GETMBR R4 R0 K26 + 0x8810091B, // 0003 GETMBR R4 R4 K27 0x6014000C, // 0004 GETGBL R5 G12 - 0x8818011A, // 0005 GETMBR R6 R0 K26 + 0x88180117, // 0005 GETMBR R6 R0 K23 0x7C140200, // 0006 CALL R5 1 0x20140A04, // 0007 NE R5 R5 R4 0x78160003, // 0008 JMPF R5 #000D - 0x8814011A, // 0009 GETMBR R5 R0 K26 - 0x8C140B1D, // 000A GETMET R5 R5 K29 + 0x88140117, // 0009 GETMBR R5 R0 K23 + 0x8C140B1C, // 000A GETMET R5 R5 K28 0x5C1C0800, // 000B MOVE R7 R4 0x7C140400, // 000C CALL R5 2 0x58140002, // 000D LDCONST R5 K2 @@ -18064,13 +18107,13 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x58180002, // 0010 LDCONST R6 K2 0x1C1C0502, // 0011 EQ R7 R2 K2 0x781E0005, // 0012 JMPF R7 #0019 - 0x8C1C011F, // 0013 GETMET R7 R0 K31 + 0x8C1C011E, // 0013 GETMET R7 R0 K30 0x5C240A00, // 0014 MOVE R9 R5 0x5C280800, // 0015 MOVE R10 R4 0x7C1C0600, // 0016 CALL R7 3 0x5C180E00, // 0017 MOVE R6 R7 0x70020004, // 0018 JMP #001E - 0x8C1C0120, // 0019 GETMET R7 R0 K32 + 0x8C1C011F, // 0019 GETMET R7 R0 K31 0x5C240A00, // 001A MOVE R9 R5 0x5C280800, // 001B MOVE R10 R4 0x7C1C0600, // 001C CALL R7 3 @@ -18080,7 +18123,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x542200FF, // 0020 LDINT R8 256 0x101C0E08, // 0021 MOD R7 R7 R8 0x5C180E00, // 0022 MOVE R6 R7 - 0x581C001E, // 0023 LDCONST R7 K30 + 0x581C001D, // 0023 LDCONST R7 K29 0x4C200000, // 0024 LDNIL R8 0x1C200608, // 0025 EQ R8 R3 R8 0x7822001B, // 0026 JMPF R8 #0043 @@ -18092,36 +18135,36 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x58340002, // 002C LDCONST R13 K2 0x543A0166, // 002D LDINT R14 359 0x7C200C00, // 002E CALL R8 6 - 0xA4264200, // 002F IMPORT R9 K33 + 0xA4264000, // 002F IMPORT R9 K32 0x5C281200, // 0030 MOVE R10 R9 - 0x582C0022, // 0031 LDCONST R11 K34 + 0x582C0021, // 0031 LDCONST R11 K33 0x7C280200, // 0032 CALL R10 1 - 0x8C2C1523, // 0033 GETMET R11 R10 K35 + 0x8C2C1522, // 0033 GETMET R11 R10 K34 0x5C341000, // 0034 MOVE R13 R8 0x543A00FE, // 0035 LDINT R14 255 0x7C2C0600, // 0036 CALL R11 3 - 0x882C1524, // 0037 GETMBR R11 R10 K36 + 0x882C1523, // 0037 GETMBR R11 R10 K35 0x5432000F, // 0038 LDINT R12 16 0x382C160C, // 0039 SHL R11 R11 R12 - 0x302E3C0B, // 003A OR R11 K30 R11 - 0x88301525, // 003B GETMBR R12 R10 K37 + 0x302E3A0B, // 003A OR R11 K29 R11 + 0x88301524, // 003B GETMBR R12 R10 K36 0x54360007, // 003C LDINT R13 8 0x3830180D, // 003D SHL R12 R12 R13 0x302C160C, // 003E OR R11 R11 R12 - 0x88301526, // 003F GETMBR R12 R10 K38 + 0x88301525, // 003F GETMBR R12 R10 K37 0x302C160C, // 0040 OR R11 R11 R12 0x5C1C1600, // 0041 MOVE R7 R11 0x7002004B, // 0042 JMP #008F 0xB8222000, // 0043 GETNGBL R8 K16 - 0x8C201127, // 0044 GETMET R8 R8 K39 + 0x8C201126, // 0044 GETMET R8 R8 K38 0x5C280600, // 0045 MOVE R10 R3 0x7C200400, // 0046 CALL R8 2 0x78220009, // 0047 JMPF R8 #0052 - 0x88200728, // 0048 GETMBR R8 R3 K40 + 0x88200727, // 0048 GETMBR R8 R3 K39 0x4C240000, // 0049 LDNIL R9 0x20201009, // 004A NE R8 R8 R9 0x78220005, // 004B JMPF R8 #0052 - 0x8C200728, // 004C GETMET R8 R3 K40 + 0x8C200727, // 004C GETMET R8 R3 K39 0x5C280C00, // 004D MOVE R10 R6 0x582C0002, // 004E LDCONST R11 K2 0x7C200600, // 004F CALL R8 3 @@ -18132,7 +18175,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x5C280600, // 0054 MOVE R10 R3 0x7C200400, // 0055 CALL R8 2 0x78220008, // 0056 JMPF R8 #0060 - 0x8C200129, // 0057 GETMET R8 R0 K41 + 0x8C200128, // 0057 GETMET R8 R0 K40 0x5C280600, // 0058 MOVE R10 R3 0x582C000C, // 0059 LDCONST R11 K12 0x54320009, // 005A LDINT R12 10 @@ -18144,7 +18187,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x60200004, // 0060 GETGBL R8 G4 0x5C240600, // 0061 MOVE R9 R3 0x7C200200, // 0062 CALL R8 1 - 0x1C20112A, // 0063 EQ R8 R8 K42 + 0x1C201129, // 0063 EQ R8 R8 K41 0x78220028, // 0064 JMPF R8 #008E 0x5C200C00, // 0065 MOVE R8 R6 0xB8260800, // 0066 GETNGBL R9 K4 @@ -18180,7 +18223,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x7C2C0C00, // 0084 CALL R11 6 0x5432000F, // 0085 LDINT R12 16 0x3830120C, // 0086 SHL R12 R9 R12 - 0x30323C0C, // 0087 OR R12 K30 R12 + 0x30323A0C, // 0087 OR R12 K29 R12 0x54360007, // 0088 LDINT R13 8 0x3834140D, // 0089 SHL R13 R10 R13 0x3030180D, // 008A OR R12 R12 R13 @@ -18188,7 +18231,7 @@ be_local_closure(class_GradientAnimation__calculate_gradient, /* name */ 0x5C1C1800, // 008C MOVE R7 R12 0x70020000, // 008D JMP #008F 0x5C1C0600, // 008E MOVE R7 R3 - 0x8820011A, // 008F GETMBR R8 R0 K26 + 0x88200117, // 008F GETMBR R8 R0 K23 0x98200A07, // 0090 SETIDX R8 R5 R7 0x00140B08, // 0091 ADD R5 R5 K8 0x7001FF7A, // 0092 JMP #000E @@ -18219,24 +18262,24 @@ be_local_closure(class_GradientAnimation_init, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052B, // 0003 GETMET R2 R2 K43 + 0x8C08052A, // 0003 GETMET R2 R2 K42 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x60080012, // 0006 GETGBL R2 G18 0x7C080000, // 0007 CALL R2 0 - 0x90023402, // 0008 SETMBR R0 K26 R2 + 0x90022E02, // 0008 SETMBR R0 K23 R2 0x90020D02, // 0009 SETMBR R0 K6 K2 - 0x88080117, // 000A GETMBR R2 R0 K23 - 0x88080518, // 000B GETMBR R2 R2 K24 - 0x880C011A, // 000C GETMBR R3 R0 K26 - 0x8C0C071D, // 000D GETMET R3 R3 K29 + 0x8808011A, // 000A GETMBR R2 R0 K26 + 0x8808051B, // 000B GETMBR R2 R2 K27 + 0x880C0117, // 000C GETMBR R3 R0 K23 + 0x8C0C071C, // 000D GETMET R3 R3 K28 0x5C140400, // 000E MOVE R5 R2 0x7C0C0400, // 000F CALL R3 2 0x580C0002, // 0010 LDCONST R3 K2 0x14100602, // 0011 LT R4 R3 R2 0x78120003, // 0012 JMPF R4 #0017 - 0x8810011A, // 0013 GETMBR R4 R0 K26 - 0x9810071E, // 0014 SETIDX R4 R3 K30 + 0x88100117, // 0013 GETMBR R4 R0 K23 + 0x9810071D, // 0014 SETIDX R4 R3 K29 0x000C0708, // 0015 ADD R3 R3 K8 0x7001FFF9, // 0016 JMP #0011 0x80000000, // 0017 RET 0 @@ -18271,7 +18314,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 - 0x8810012C, // 0008 GETMBR R4 R0 K44 + 0x8810012B, // 0008 GETMBR R4 R0 K43 0x8814010A, // 0009 GETMBR R5 R0 K10 0x58180002, // 000A LDCONST R6 K2 0x281C0604, // 000B GE R7 R3 R4 @@ -18936,33 +18979,6 @@ be_local_class(ColorProvider, extern const bclass be_class_ValueProvider; -/******************************************************************** -** Solidified function: update -********************************************************************/ -be_local_closure(class_ValueProvider_update, /* 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[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(is_running), - }), - be_str_weak(update), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x80040400, // 0001 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: produce_value ********************************************************************/ @@ -18999,9 +19015,8 @@ extern const bclass be_class_ParameterizedObject; be_local_class(ValueProvider, 0, &be_class_ParameterizedObject, - be_nested_map(2, + be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(update, -1), be_const_closure(class_ValueProvider_update_closure) }, { be_const_key_weak(produce_value, -1), be_const_closure(class_ValueProvider_produce_value_closure) }, })), be_str_weak(ValueProvider) @@ -19027,7 +19042,7 @@ be_local_module(animation, { be_const_key_weak(ELASTIC, 13), be_const_int(8) }, { be_const_key_weak(EventManager, 12), be_const_class(be_class_EventManager) }, { be_const_key_weak(strip_length, 98), be_const_class(be_class_StripLengthProvider) }, - { be_const_key_weak(palette_meter_animation, 93), be_const_class(be_class_PaletteMeterAnimation) }, + { be_const_key_weak(palette_meter_animation, 93), be_const_class(be_class_GradientMeterAnimation) }, { be_const_key_weak(color_provider, -1), be_const_class(be_class_ColorProvider) }, { be_const_key_weak(sequence_manager, -1), be_const_class(be_class_SequenceManager) }, { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, 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 bad72a1ad..15373acb3 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -4,19 +4,19 @@ \********************************************************************/ #include "be_constobj.h" extern const bclass be_class_ExpressionResult; -// compact class 'ExpressionResult' ktab size: 11, total: 28 (saved 136 bytes) +// compact class 'ExpressionResult' ktab size: 11, total: 27 (saved 128 bytes) static const bvalue be_ktab_class_ExpressionResult[11] = { /* K0 */ be_nested_str_weak(has_dynamic), - /* K1 */ be_nested_str_weak(expr), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(has_dangerous), - /* K4 */ be_nested_str_weak(has_computation), - /* K5 */ be_nested_str_weak(return_type), - /* K6 */ be_nested_str_weak(instance_for_validation), - /* K7 */ be_const_class(be_class_ExpressionResult), - /* K8 */ be_nested_str_weak(instance_X3D_X25s), - /* K9 */ be_nested_str_weak(instance_X3Dnil), - /* K10 */ be_nested_str_weak(ExpressionResult_X28expr_X3D_X27_X25s_X27_X2C_X20dynamic_X3D_X25s_X2C_X20dangerous_X3D_X25s_X2C_X20comp_X3D_X25s_X2C_X20type_X3D_X25s_X2C_X20_X25s_X29), + /* K1 */ be_const_class(be_class_ExpressionResult), + /* K2 */ be_nested_str_weak(has_dangerous), + /* K3 */ be_nested_str_weak(has_computation), + /* K4 */ be_nested_str_weak(return_type), + /* K5 */ be_nested_str_weak(instance_for_validation), + /* K6 */ be_nested_str_weak(instance_X3D_X25s), + /* K7 */ be_nested_str_weak(instance_X3Dnil), + /* K8 */ be_nested_str_weak(ExpressionResult_X28expr_X3D_X27_X25s_X27_X2C_X20dynamic_X3D_X25s_X2C_X20dangerous_X3D_X25s_X2C_X20comp_X3D_X25s_X2C_X20type_X3D_X25s_X2C_X20_X25s_X29), + /* K9 */ be_nested_str_weak(expr), + /* K10 */ be_nested_str_weak(), }; @@ -48,85 +48,9 @@ be_local_closure(class_ExpressionResult_needs_closure, /* name */ /******************************************************************** -** Solidified function: needs_function +** Solidified function: variable_ref ********************************************************************/ -be_local_closure(class_ExpressionResult_needs_function, /* 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_ExpressionResult, /* shared constants */ - be_str_weak(needs_function), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_ExpressionResult_init, /* name */ - be_nested_proto( - 9, /* nstack */ - 7, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ExpressionResult, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[28]) { /* code */ - 0x4C1C0000, // 0000 LDNIL R7 - 0x201C0207, // 0001 NE R7 R1 R7 - 0x781E0001, // 0002 JMPF R7 #0005 - 0x5C1C0200, // 0003 MOVE R7 R1 - 0x70020000, // 0004 JMP #0006 - 0x581C0002, // 0005 LDCONST R7 K2 - 0x90020207, // 0006 SETMBR R0 K1 R7 - 0x601C0017, // 0007 GETGBL R7 G23 - 0x5C200400, // 0008 MOVE R8 R2 - 0x7C1C0200, // 0009 CALL R7 1 - 0x90020007, // 000A SETMBR R0 K0 R7 - 0x601C0017, // 000B GETGBL R7 G23 - 0x5C200600, // 000C MOVE R8 R3 - 0x7C1C0200, // 000D CALL R7 1 - 0x90020607, // 000E SETMBR R0 K3 R7 - 0x601C0017, // 000F GETGBL R7 G23 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C1C0200, // 0011 CALL R7 1 - 0x90020807, // 0012 SETMBR R0 K4 R7 - 0x4C1C0000, // 0013 LDNIL R7 - 0x201C0A07, // 0014 NE R7 R5 R7 - 0x781E0001, // 0015 JMPF R7 #0018 - 0x5C1C0A00, // 0016 MOVE R7 R5 - 0x70020000, // 0017 JMP #0019 - 0x541E000B, // 0018 LDINT R7 12 - 0x90020A07, // 0019 SETMBR R0 K5 R7 - 0x90020C06, // 001A SETMBR R0 K6 R6 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: literal -********************************************************************/ -be_local_closure(class_ExpressionResult_literal, /* name */ +be_local_closure(class_ExpressionResult_variable_ref, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ @@ -137,88 +61,10 @@ be_local_closure(class_ExpressionResult_literal, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ExpressionResult, /* shared constants */ - be_str_weak(literal), + be_str_weak(variable_ref), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 - 0x5C100600, // 0001 MOVE R4 R3 - 0x5C140000, // 0002 MOVE R5 R0 - 0x50180000, // 0003 LDBOOL R6 0 0 - 0x501C0000, // 0004 LDBOOL R7 0 0 - 0x50200000, // 0005 LDBOOL R8 0 0 - 0x5C240200, // 0006 MOVE R9 R1 - 0x5C280400, // 0007 MOVE R10 R2 - 0x7C100C00, // 0008 CALL R4 6 - 0x80040800, // 0009 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: tostring -********************************************************************/ -be_local_closure(class_ExpressionResult_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_ExpressionResult, /* shared constants */ - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x4C080000, // 0001 LDNIL R2 - 0x20040202, // 0002 NE R1 R1 R2 - 0x78060006, // 0003 JMPF R1 #000B - 0x60040018, // 0004 GETGBL R1 G24 - 0x58080008, // 0005 LDCONST R2 K8 - 0x600C0005, // 0006 GETGBL R3 G5 - 0x88100106, // 0007 GETMBR R4 R0 K6 - 0x7C0C0200, // 0008 CALL R3 1 - 0x7C040400, // 0009 CALL R1 2 - 0x70020000, // 000A JMP #000C - 0x58040009, // 000B LDCONST R1 K9 - 0x60080018, // 000C GETGBL R2 G24 - 0x580C000A, // 000D LDCONST R3 K10 - 0x88100101, // 000E GETMBR R4 R0 K1 - 0x88140100, // 000F GETMBR R5 R0 K0 - 0x88180103, // 0010 GETMBR R6 R0 K3 - 0x881C0104, // 0011 GETMBR R7 R0 K4 - 0x88200105, // 0012 GETMBR R8 R0 K5 - 0x5C240200, // 0013 MOVE R9 R1 - 0x7C080E00, // 0014 CALL R2 7 - 0x80040400, // 0015 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: function_call -********************************************************************/ -be_local_closure(class_ExpressionResult_function_call, /* name */ - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 12, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_ExpressionResult, /* shared constants */ - be_str_weak(function_call), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 0x5C100600, // 0001 MOVE R4 R3 0x5C140000, // 0002 MOVE R5 R0 0x50180200, // 0003 LDBOOL R6 1 0 @@ -251,7 +97,7 @@ be_local_closure(class_ExpressionResult_combine, /* name */ be_str_weak(combine), &be_const_str_solidified, ( &(const binstruction[91]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 0x50100000, // 0001 LDBOOL R4 0 0 0x50140000, // 0002 LDBOOL R5 0 0 0x50180200, // 0003 LDBOOL R6 1 0 @@ -266,13 +112,13 @@ be_local_closure(class_ExpressionResult_combine, /* name */ 0x50200200, // 000C LDBOOL R8 1 0 0x5C101000, // 000D MOVE R4 R8 0x74160002, // 000E JMPT R5 #0012 - 0x88200303, // 000F GETMBR R8 R1 K3 + 0x88200302, // 000F GETMBR R8 R1 K2 0x74220000, // 0010 JMPT R8 #0012 0x50200001, // 0011 LDBOOL R8 0 1 0x50200200, // 0012 LDBOOL R8 1 0 0x5C141000, // 0013 MOVE R5 R8 0x741A0002, // 0014 JMPT R6 #0018 - 0x88200304, // 0015 GETMBR R8 R1 K4 + 0x88200303, // 0015 GETMBR R8 R1 K3 0x74220000, // 0016 JMPT R8 #0018 0x50200001, // 0017 LDBOOL R8 0 1 0x50200200, // 0018 LDBOOL R8 1 0 @@ -287,13 +133,13 @@ be_local_closure(class_ExpressionResult_combine, /* name */ 0x50200200, // 0021 LDBOOL R8 1 0 0x5C101000, // 0022 MOVE R4 R8 0x74160002, // 0023 JMPT R5 #0027 - 0x88200503, // 0024 GETMBR R8 R2 K3 + 0x88200502, // 0024 GETMBR R8 R2 K2 0x74220000, // 0025 JMPT R8 #0027 0x50200001, // 0026 LDBOOL R8 0 1 0x50200200, // 0027 LDBOOL R8 1 0 0x5C141000, // 0028 MOVE R5 R8 0x741A0002, // 0029 JMPT R6 #002D - 0x88200504, // 002A GETMBR R8 R2 K4 + 0x88200503, // 002A GETMBR R8 R2 K3 0x74220000, // 002B JMPT R8 #002D 0x50200001, // 002C LDBOOL R8 0 1 0x50200200, // 002D LDBOOL R8 1 0 @@ -304,15 +150,15 @@ be_local_closure(class_ExpressionResult_combine, /* name */ 0x4C200000, // 0032 LDNIL R8 0x20200408, // 0033 NE R8 R2 R8 0x7822000B, // 0034 JMPF R8 #0041 - 0x88200305, // 0035 GETMBR R8 R1 K5 - 0x88240505, // 0036 GETMBR R9 R2 K5 + 0x88200304, // 0035 GETMBR R8 R1 K4 + 0x88240504, // 0036 GETMBR R9 R2 K4 0x1C201009, // 0037 EQ R8 R8 R9 0x78220005, // 0038 JMPF R8 #003F - 0x88200305, // 0039 GETMBR R8 R1 K5 + 0x88200304, // 0039 GETMBR R8 R1 K4 0x5426000B, // 003A LDINT R9 12 0x20201009, // 003B NE R8 R8 R9 0x78220001, // 003C JMPF R8 #003F - 0x881C0305, // 003D GETMBR R7 R1 K5 + 0x881C0304, // 003D GETMBR R7 R1 K4 0x70020000, // 003E JMP #0040 0x541E000B, // 003F LDINT R7 12 0x70020010, // 0040 JMP #0052 @@ -322,7 +168,7 @@ be_local_closure(class_ExpressionResult_combine, /* name */ 0x781A0001, // 0044 JMPF R6 #0047 0x5422000B, // 0045 LDINT R8 12 0x70020000, // 0046 JMP #0048 - 0x88200305, // 0047 GETMBR R8 R1 K5 + 0x88200304, // 0047 GETMBR R8 R1 K4 0x5C1C1000, // 0048 MOVE R7 R8 0x70020007, // 0049 JMP #0052 0x4C200000, // 004A LDNIL R8 @@ -331,7 +177,7 @@ be_local_closure(class_ExpressionResult_combine, /* name */ 0x781A0001, // 004D JMPF R6 #0050 0x5422000B, // 004E LDINT R8 12 0x70020000, // 004F JMP #0051 - 0x88200505, // 0050 GETMBR R8 R2 K5 + 0x88200504, // 0050 GETMBR R8 R2 K4 0x5C1C1000, // 0051 MOVE R7 R8 0x5C200600, // 0052 MOVE R8 R3 0x5C240000, // 0053 MOVE R9 R0 @@ -349,9 +195,9 @@ be_local_closure(class_ExpressionResult_combine, /* name */ /******************************************************************** -** Solidified function: property_access +** Solidified function: function_call ********************************************************************/ -be_local_closure(class_ExpressionResult_property_access, /* name */ +be_local_closure(class_ExpressionResult_function_call, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ @@ -362,10 +208,10 @@ be_local_closure(class_ExpressionResult_property_access, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ExpressionResult, /* shared constants */ - be_str_weak(property_access), + be_str_weak(function_call), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 0x5C100600, // 0001 MOVE R4 R3 0x5C140000, // 0002 MOVE R5 R0 0x50180200, // 0003 LDBOOL R6 1 0 @@ -398,7 +244,7 @@ be_local_closure(class_ExpressionResult_constructor_call, /* name */ be_str_weak(constructor_call), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 0x5C100600, // 0001 MOVE R4 R3 0x5C140000, // 0002 MOVE R5 R0 0x50180000, // 0003 LDBOOL R6 0 0 @@ -415,9 +261,9 @@ be_local_closure(class_ExpressionResult_constructor_call, /* name */ /******************************************************************** -** Solidified function: variable_ref +** Solidified function: literal ********************************************************************/ -be_local_closure(class_ExpressionResult_variable_ref, /* name */ +be_local_closure(class_ExpressionResult_literal, /* name */ be_nested_proto( 11, /* nstack */ 3, /* argc */ @@ -428,10 +274,139 @@ be_local_closure(class_ExpressionResult_variable_ref, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_ExpressionResult, /* shared constants */ - be_str_weak(variable_ref), + be_str_weak(literal), &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ - 0x580C0007, // 0000 LDCONST R3 K7 + 0x580C0001, // 0000 LDCONST R3 K1 + 0x5C100600, // 0001 MOVE R4 R3 + 0x5C140000, // 0002 MOVE R5 R0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x501C0000, // 0004 LDBOOL R7 0 0 + 0x50200000, // 0005 LDBOOL R8 0 0 + 0x5C240200, // 0006 MOVE R9 R1 + 0x5C280400, // 0007 MOVE R10 R2 + 0x7C100C00, // 0008 CALL R4 6 + 0x80040800, // 0009 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_ExpressionResult_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_ExpressionResult, /* shared constants */ + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x88040105, // 0000 GETMBR R1 R0 K5 + 0x4C080000, // 0001 LDNIL R2 + 0x20040202, // 0002 NE R1 R1 R2 + 0x78060006, // 0003 JMPF R1 #000B + 0x60040018, // 0004 GETGBL R1 G24 + 0x58080006, // 0005 LDCONST R2 K6 + 0x600C0005, // 0006 GETGBL R3 G5 + 0x88100105, // 0007 GETMBR R4 R0 K5 + 0x7C0C0200, // 0008 CALL R3 1 + 0x7C040400, // 0009 CALL R1 2 + 0x70020000, // 000A JMP #000C + 0x58040007, // 000B LDCONST R1 K7 + 0x60080018, // 000C GETGBL R2 G24 + 0x580C0008, // 000D LDCONST R3 K8 + 0x88100109, // 000E GETMBR R4 R0 K9 + 0x88140100, // 000F GETMBR R5 R0 K0 + 0x88180102, // 0010 GETMBR R6 R0 K2 + 0x881C0103, // 0011 GETMBR R7 R0 K3 + 0x88200104, // 0012 GETMBR R8 R0 K4 + 0x5C240200, // 0013 MOVE R9 R1 + 0x7C080E00, // 0014 CALL R2 7 + 0x80040400, // 0015 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_ExpressionResult_init, /* name */ + be_nested_proto( + 9, /* nstack */ + 7, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[28]) { /* code */ + 0x4C1C0000, // 0000 LDNIL R7 + 0x201C0207, // 0001 NE R7 R1 R7 + 0x781E0001, // 0002 JMPF R7 #0005 + 0x5C1C0200, // 0003 MOVE R7 R1 + 0x70020000, // 0004 JMP #0006 + 0x581C000A, // 0005 LDCONST R7 K10 + 0x90021207, // 0006 SETMBR R0 K9 R7 + 0x601C0017, // 0007 GETGBL R7 G23 + 0x5C200400, // 0008 MOVE R8 R2 + 0x7C1C0200, // 0009 CALL R7 1 + 0x90020007, // 000A SETMBR R0 K0 R7 + 0x601C0017, // 000B GETGBL R7 G23 + 0x5C200600, // 000C MOVE R8 R3 + 0x7C1C0200, // 000D CALL R7 1 + 0x90020407, // 000E SETMBR R0 K2 R7 + 0x601C0017, // 000F GETGBL R7 G23 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C1C0200, // 0011 CALL R7 1 + 0x90020607, // 0012 SETMBR R0 K3 R7 + 0x4C1C0000, // 0013 LDNIL R7 + 0x201C0A07, // 0014 NE R7 R5 R7 + 0x781E0001, // 0015 JMPF R7 #0018 + 0x5C1C0A00, // 0016 MOVE R7 R5 + 0x70020000, // 0017 JMP #0019 + 0x541E000B, // 0018 LDINT R7 12 + 0x90020807, // 0019 SETMBR R0 K4 R7 + 0x90020A06, // 001A SETMBR R0 K5 R6 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: property_access +********************************************************************/ +be_local_closure(class_ExpressionResult_property_access, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 12, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_ExpressionResult, /* shared constants */ + be_str_weak(property_access), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x580C0001, // 0000 LDCONST R3 K1 0x5C100600, // 0001 MOVE R4 R3 0x5C140000, // 0002 MOVE R5 R0 0x50180200, // 0003 LDBOOL R6 1 0 @@ -453,24 +428,23 @@ be_local_closure(class_ExpressionResult_variable_ref, /* name */ be_local_class(ExpressionResult, 6, NULL, - be_nested_map(16, + be_nested_map(15, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(needs_closure, 7), be_const_closure(class_ExpressionResult_needs_closure_closure) }, - { be_const_key_weak(variable_ref, -1), be_const_static_closure(class_ExpressionResult_variable_ref_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(class_ExpressionResult_tostring_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_ExpressionResult_init_closure) }, + { be_const_key_weak(needs_closure, 2), be_const_closure(class_ExpressionResult_needs_closure_closure) }, + { be_const_key_weak(property_access, 5), be_const_static_closure(class_ExpressionResult_property_access_closure) }, + { be_const_key_weak(init, 7), be_const_closure(class_ExpressionResult_init_closure) }, + { be_const_key_weak(tostring, 6), be_const_closure(class_ExpressionResult_tostring_closure) }, + { be_const_key_weak(has_computation, -1), be_const_var(3) }, + { be_const_key_weak(combine, 12), be_const_static_closure(class_ExpressionResult_combine_closure) }, { be_const_key_weak(literal, -1), be_const_static_closure(class_ExpressionResult_literal_closure) }, - { be_const_key_weak(has_dynamic, 2), be_const_var(1) }, - { be_const_key_weak(function_call, -1), be_const_static_closure(class_ExpressionResult_function_call_closure) }, - { be_const_key_weak(constructor_call, -1), be_const_static_closure(class_ExpressionResult_constructor_call_closure) }, - { be_const_key_weak(instance_for_validation, 13), be_const_var(5) }, - { be_const_key_weak(property_access, -1), be_const_static_closure(class_ExpressionResult_property_access_closure) }, - { be_const_key_weak(combine, -1), be_const_static_closure(class_ExpressionResult_combine_closure) }, - { be_const_key_weak(has_computation, 9), be_const_var(3) }, + { be_const_key_weak(constructor_call, 9), be_const_static_closure(class_ExpressionResult_constructor_call_closure) }, { be_const_key_weak(has_dangerous, -1), be_const_var(2) }, + { be_const_key_weak(function_call, 13), be_const_static_closure(class_ExpressionResult_function_call_closure) }, + { be_const_key_weak(expr, 3), be_const_var(0) }, + { be_const_key_weak(has_dynamic, -1), be_const_var(1) }, { be_const_key_weak(return_type, -1), be_const_var(4) }, - { be_const_key_weak(expr, -1), be_const_var(0) }, - { be_const_key_weak(needs_function, 1), be_const_closure(class_ExpressionResult_needs_function_closure) }, + { be_const_key_weak(variable_ref, -1), be_const_static_closure(class_ExpressionResult_variable_ref_closure) }, + { be_const_key_weak(instance_for_validation, 1), be_const_var(5) }, })), be_str_weak(ExpressionResult) ); @@ -6063,6 +6037,212 @@ be_local_class(MockEngine, extern const bclass be_class_SimpleDSLTranspiler; +/******************************************************************** +** Solidified function: expect_dot +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* 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[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), + }), + be_str_weak(expect_dot), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E0020, // 0006 LDINT R3 33 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_unified +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_unified, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x681C0001, // 0004 GETUPV R7 U1 + 0x5C200000, // 0005 MOVE R8 R0 + 0x5C240200, // 0006 MOVE R9 R1 + 0x5C280400, // 0007 MOVE R10 R2 + 0x7C140A00, // 0008 CALL R5 5 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80000000, // 000A RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_process_parameters_core), + /* K2 */ be_nested_str_weak(expect_right_paren), + }), + be_str_weak(_process_named_arguments_unified), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x84100000, // 0002 CLOSURE R4 P0 + 0x8C140101, // 0003 GETMET R5 R0 K1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x5C200600, // 0005 MOVE R8 R3 + 0x5C240800, // 0006 MOVE R9 R4 + 0x7C140800, // 0007 CALL R5 4 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0xA0000000, // 000A CLOSE R0 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _create_instance_for_validation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(instance), + }), + be_str_weak(_create_instance_for_validation), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0001, // 0006 JMPF R3 #0009 + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0x70020000, // 0008 JMP #000A + 0x4C0C0000, // 0009 LDNIL R3 + 0x80040600, // 000A RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(_validate_object_reference), + /* K3 */ be_nested_str_weak(run), + /* K4 */ be_nested_str_weak(collect_inline_comment), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(comment), + }), + be_str_weak(process_run), + &be_const_str_solidified, + ( &(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 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x8C080104, // 0008 GETMET R2 R0 K4 + 0x7C080200, // 0009 CALL R2 1 + 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x8C0C0706, // 000B GETMET R3 R3 K6 + 0x60140013, // 000C GETGBL R5 G19 + 0x7C140000, // 000D CALL R5 0 + 0x98160E01, // 000E SETIDX R5 K7 R1 + 0x98161002, // 000F SETIDX R5 K8 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: _validate_template_parameter_usage ********************************************************************/ @@ -6135,6 +6315,319 @@ be_local_closure(class_SimpleDSLTranspiler__validate_template_parameter_usage, /*******************************************************************/ +/******************************************************************** +** Solidified function: expect_left_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X28_X27), + }), + be_str_weak(expect_left_paren), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E0017, // 0006 LDINT R3 24 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: validate_user_name +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(symbol_table), + /* K2 */ be_nested_str_weak(get), + /* K3 */ be_nested_str_weak(is_builtin), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(error), + /* K6 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K7 */ be_nested_str_weak(Cannot_X20redefine_X20built_X2Din_X20symbol_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K8 */ be_nested_str_weak(extern_X20function), + /* K9 */ be_nested_str_weak(Symbol_X20_X27_X25s_X27_X20is_X20already_X20defined_X2E_X20Cannot_X20redefine_X20as_X20_X25s_X2E), + /* K10 */ be_nested_str_weak(Token), + /* K11 */ be_nested_str_weak(statement_keywords), + /* K12 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K13 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(validate_user_name), + &be_const_str_solidified, + ( &(const binstruction[84]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x88100101, // 0001 GETMBR R4 R0 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x5C180200, // 0003 MOVE R6 R1 + 0x7C100400, // 0004 CALL R4 2 + 0x4C140000, // 0005 LDNIL R5 + 0x1C140805, // 0006 EQ R5 R4 R5 + 0x78160000, // 0007 JMPF R5 #0009 + 0x7002002F, // 0008 JMP #0039 + 0x88140903, // 0009 GETMBR R5 R4 K3 + 0x7816000E, // 000A JMPF R5 #001A + 0x88140904, // 000B GETMBR R5 R4 K4 + 0x541A000A, // 000C LDINT R6 11 + 0x1C140A06, // 000D EQ R5 R5 R6 + 0x7816000A, // 000E JMPF R5 #001A + 0x8C140105, // 000F GETMET R5 R0 K5 + 0x601C0018, // 0010 GETGBL R7 G24 + 0x58200006, // 0011 LDCONST R8 K6 + 0x5C240200, // 0012 MOVE R9 R1 + 0x5C280200, // 0013 MOVE R10 R1 + 0x5C2C0200, // 0014 MOVE R11 R1 + 0x7C1C0800, // 0015 CALL R7 4 + 0x7C140400, // 0016 CALL R5 2 + 0x50140000, // 0017 LDBOOL R5 0 0 + 0x80040A00, // 0018 RET 1 R5 + 0x7002001E, // 0019 JMP #0039 + 0x88140903, // 001A GETMBR R5 R4 K3 + 0x7816000A, // 001B JMPF R5 #0027 + 0x8C140105, // 001C GETMET R5 R0 K5 + 0x601C0018, // 001D GETGBL R7 G24 + 0x58200007, // 001E LDCONST R8 K7 + 0x5C240200, // 001F MOVE R9 R1 + 0x5C280200, // 0020 MOVE R10 R1 + 0x5C2C0200, // 0021 MOVE R11 R1 + 0x7C1C0800, // 0022 CALL R7 4 + 0x7C140400, // 0023 CALL R5 2 + 0x50140000, // 0024 LDBOOL R5 0 0 + 0x80040A00, // 0025 RET 1 R5 + 0x70020011, // 0026 JMP #0039 + 0x1C140508, // 0027 EQ R5 R2 K8 + 0x78160006, // 0028 JMPF R5 #0030 + 0x88140904, // 0029 GETMBR R5 R4 K4 + 0x541A0004, // 002A LDINT R6 5 + 0x1C140A06, // 002B EQ R5 R5 R6 + 0x78160002, // 002C JMPF R5 #0030 + 0x50140200, // 002D LDBOOL R5 1 0 + 0x80040A00, // 002E RET 1 R5 + 0x70020008, // 002F JMP #0039 + 0x8C140105, // 0030 GETMET R5 R0 K5 + 0x601C0018, // 0031 GETGBL R7 G24 + 0x58200009, // 0032 LDCONST R8 K9 + 0x5C240200, // 0033 MOVE R9 R1 + 0x5C280400, // 0034 MOVE R10 R2 + 0x7C1C0600, // 0035 CALL R7 3 + 0x7C140400, // 0036 CALL R5 2 + 0x50140000, // 0037 LDBOOL R5 0 0 + 0x80040A00, // 0038 RET 1 R5 + 0x60140010, // 0039 GETGBL R5 G16 + 0x8818070A, // 003A GETMBR R6 R3 K10 + 0x88180D0B, // 003B GETMBR R6 R6 K11 + 0x7C140200, // 003C CALL R5 1 + 0xA8020010, // 003D EXBLK 0 #004F + 0x5C180A00, // 003E MOVE R6 R5 + 0x7C180000, // 003F CALL R6 0 + 0x1C1C0206, // 0040 EQ R7 R1 R6 + 0x781E000B, // 0041 JMPF R7 #004E + 0x8C1C0105, // 0042 GETMET R7 R0 K5 + 0x60240018, // 0043 GETGBL R9 G24 + 0x5828000C, // 0044 LDCONST R10 K12 + 0x5C2C0200, // 0045 MOVE R11 R1 + 0x5C300400, // 0046 MOVE R12 R2 + 0x5C340200, // 0047 MOVE R13 R1 + 0x5C380200, // 0048 MOVE R14 R1 + 0x7C240A00, // 0049 CALL R9 5 + 0x7C1C0400, // 004A CALL R7 2 + 0x501C0000, // 004B LDBOOL R7 0 0 + 0xA8040001, // 004C EXBLK 1 1 + 0x80040E00, // 004D RET 1 R7 + 0x7001FFEE, // 004E JMP #003E + 0x5814000D, // 004F LDCONST R5 K13 + 0xAC140200, // 0050 CATCH R5 1 0 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x50140200, // 0052 LDBOOL R5 1 0 + 0x80040A00, // 0053 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_value_provider_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* 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(symbol_table), + /* K1 */ be_nested_str_weak(symbol_exists), + /* K2 */ be_nested_str_weak(error), + /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X20instance_X2E_X20Only_X20value_X20provider_X20instances_X20_X28like_X20oscillators_X29_X20and_X20animation_X20instances_X20can_X20be_X20restarted_X2E), + /* K7 */ 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), + &be_const_str_solidified, + ( &(const binstruction[65]) { /* code */ + 0xA8020030, // 0000 EXBLK 0 #0032 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x8C0C0701, // 0002 GETMET R3 R3 K1 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x740E0009, // 0005 JMPT R3 #0010 + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180003, // 0008 LDCONST R6 K3 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x7C140600, // 000B CALL R5 3 + 0x7C0C0400, // 000C CALL R3 2 + 0x500C0000, // 000D LDBOOL R3 0 0 + 0xA8040001, // 000E EXBLK 1 1 + 0x80040600, // 000F RET 1 R3 + 0x880C0100, // 0010 GETMBR R3 R0 K0 + 0x8C0C0704, // 0011 GETMET R3 R3 K4 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x4C100000, // 0014 LDNIL R4 + 0x20100604, // 0015 NE R4 R3 R4 + 0x78120015, // 0016 JMPF R4 #002D + 0x88100705, // 0017 GETMBR R4 R3 K5 + 0x54160006, // 0018 LDINT R5 7 + 0x1C100805, // 0019 EQ R4 R4 R5 + 0x74120003, // 001A JMPT R4 #001F + 0x88100705, // 001B GETMBR R4 R3 K5 + 0x54160008, // 001C LDINT R5 9 + 0x1C100805, // 001D EQ R4 R4 R5 + 0x78120003, // 001E JMPF R4 #0023 + 0x50100200, // 001F LDBOOL R4 1 0 + 0xA8040001, // 0020 EXBLK 1 1 + 0x80040800, // 0021 RET 1 R4 + 0x70020009, // 0022 JMP #002D + 0x8C100102, // 0023 GETMET R4 R0 K2 + 0x60180018, // 0024 GETGBL R6 G24 + 0x581C0006, // 0025 LDCONST R7 K6 + 0x5C200200, // 0026 MOVE R8 R1 + 0x5C240400, // 0027 MOVE R9 R2 + 0x7C180600, // 0028 CALL R6 3 + 0x7C100400, // 0029 CALL R4 2 + 0x50100000, // 002A LDBOOL R4 0 0 + 0xA8040001, // 002B EXBLK 1 1 + 0x80040800, // 002C RET 1 R4 + 0x50100200, // 002D LDBOOL R4 1 0 + 0xA8040001, // 002E EXBLK 1 1 + 0x80040800, // 002F RET 1 R4 + 0xA8040001, // 0030 EXBLK 1 1 + 0x7002000D, // 0031 JMP #0040 + 0xAC0C0002, // 0032 CATCH R3 0 2 + 0x7002000A, // 0033 JMP #003F + 0x8C140102, // 0034 GETMET R5 R0 K2 + 0x601C0018, // 0035 GETGBL R7 G24 + 0x58200007, // 0036 LDCONST R8 K7 + 0x5C240200, // 0037 MOVE R9 R1 + 0x5C280400, // 0038 MOVE R10 R2 + 0x5C2C0800, // 0039 MOVE R11 R4 + 0x7C1C0800, // 003A CALL R7 4 + 0x7C140400, // 003B CALL R5 2 + 0x50140000, // 003C LDBOOL R5 0 0 + 0x80040A00, // 003D RET 1 R5 + 0x70020000, // 003E JMP #0040 + 0xB0080000, // 003F RAISE 2 R0 R0 + 0x80000000, // 0040 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: warning +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_warning, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(line), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(warnings), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + }), + be_str_weak(warning), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x70020000, // 0008 JMP #000A + 0x58080002, // 0009 LDCONST R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x60140018, // 000C GETGBL R5 G24 + 0x58180005, // 000D LDCONST R6 K5 + 0x5C1C0400, // 000E MOVE R7 R2 + 0x5C200200, // 000F MOVE R8 R1 + 0x7C140600, // 0010 CALL R5 3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: _create_symbol_by_return_type ********************************************************************/ @@ -6233,31 +6726,511 @@ be_local_closure(class_SimpleDSLTranspiler__create_symbol_by_return_type, /* n /******************************************************************** -** Solidified function: _process_named_arguments_for_color_provider +** Solidified function: process_set ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 13, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(CONTEXT_COLOR_PROVIDER), + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(variable), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(process_value), + /* K7 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K8 */ be_nested_str_weak(collect_inline_comment), + /* K9 */ be_nested_str_weak(_create_symbol_by_return_type), + /* K10 */ be_nested_str_weak(return_type), + /* K11 */ be_nested_str_weak(instance_for_validation), + /* K12 */ be_nested_str_weak(get_reference), + /* K13 */ be_nested_str_weak(_X25s_), + /* K14 */ be_nested_str_weak(add), + /* K15 */ be_nested_str_weak(var_X20_X25s_X20_X3D_X20_X25s_X25s), + /* K16 */ be_nested_str_weak(expr), }), - be_str_weak(_process_named_arguments_for_color_provider), + be_str_weak(process_set), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x881C0101, // 0003 GETMBR R7 R0 K1 - 0x7C0C0800, // 0004 CALL R3 4 - 0x80000000, // 0005 RET 0 + ( &(const binstruction[43]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x88100107, // 000F GETMBR R4 R0 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x8C0C0108, // 0011 GETMET R3 R0 K8 + 0x7C0C0200, // 0012 CALL R3 1 + 0x8C100109, // 0013 GETMET R4 R0 K9 + 0x5C180200, // 0014 MOVE R6 R1 + 0x881C050A, // 0015 GETMBR R7 R2 K10 + 0x8820050B, // 0016 GETMBR R8 R2 K11 + 0x7C100800, // 0017 CALL R4 4 + 0x4C140000, // 0018 LDNIL R5 + 0x20140805, // 0019 NE R5 R4 R5 + 0x78160002, // 001A JMPF R5 #001E + 0x8C14090C, // 001B GETMET R5 R4 K12 + 0x7C140200, // 001C CALL R5 1 + 0x70020003, // 001D JMP #0022 + 0x60140018, // 001E GETGBL R5 G24 + 0x5818000D, // 001F LDCONST R6 K13 + 0x5C1C0200, // 0020 MOVE R7 R1 + 0x7C140400, // 0021 CALL R5 2 + 0x8C18010E, // 0022 GETMET R6 R0 K14 + 0x60200018, // 0023 GETGBL R8 G24 + 0x5824000F, // 0024 LDCONST R9 K15 + 0x5C280A00, // 0025 MOVE R10 R5 + 0x882C0510, // 0026 GETMBR R11 R2 K16 + 0x5C300600, // 0027 MOVE R12 R3 + 0x7C200800, // 0028 CALL R8 4 + 0x7C180400, // 0029 CALL R6 2 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(expect_dot), + /* K2 */ be_nested_str_weak(expect_assign), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K5 */ be_nested_str_weak(collect_inline_comment), + /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), + /* K7 */ be_nested_str_weak(expr), + /* 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(process_sequence_assignment_fluent), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x8C080100, // 0004 GETMET R2 R0 K0 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0103, // 0008 GETMET R3 R0 K3 + 0x88140104, // 0009 GETMBR R5 R0 K4 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C100105, // 000B GETMET R4 R0 K5 + 0x7C100200, // 000C CALL R4 1 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180006, // 000E LDCONST R6 K6 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x5C200400, // 0010 MOVE R8 R2 + 0x88240707, // 0011 GETMBR R9 R3 K7 + 0x7C140800, // 0012 CALL R5 4 + 0x8C180108, // 0013 GETMET R6 R0 K8 + 0x60200018, // 0014 GETGBL R8 G24 + 0x58240009, // 0015 LDCONST R9 K9 + 0x8C28010A, // 0016 GETMET R10 R0 K10 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C0A00, // 0018 MOVE R11 R5 + 0x5C300800, // 0019 MOVE R12 R4 + 0x7C200800, // 001A CALL R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_percentage_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* 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[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(value), + /* K3 */ be_nested_str_weak(next), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(2), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20percentage_X20value), + }), + be_str_weak(process_percentage_value), + &be_const_str_solidified, + ( &(const binstruction[47]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0013, // 0004 JMPF R2 #0019 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E0005, // 0006 LDINT R3 6 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A000F, // 0008 JMPF R2 #0019 + 0x88080302, // 0009 GETMBR R2 R1 K2 + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x600C000A, // 000C GETGBL R3 G10 + 0x5411FFFD, // 000D LDINT R4 -2 + 0x40120804, // 000E CONNECT R4 K4 R4 + 0x94100404, // 000F GETIDX R4 R2 R4 + 0x7C0C0200, // 0010 CALL R3 1 + 0x60100009, // 0011 GETGBL R4 G9 + 0x541600FE, // 0012 LDINT R5 255 + 0x08140605, // 0013 MUL R5 R3 R5 + 0x541A0063, // 0014 LDINT R6 100 + 0x0C140A06, // 0015 DIV R5 R5 R6 + 0x7C100200, // 0016 CALL R4 1 + 0x80040800, // 0017 RET 1 R4 + 0x70020014, // 0018 JMP #002E + 0x4C080000, // 0019 LDNIL R2 + 0x20080202, // 001A NE R2 R1 R2 + 0x780A000C, // 001B JMPF R2 #0029 + 0x88080301, // 001C GETMBR R2 R1 K1 + 0x1C080505, // 001D EQ R2 R2 K5 + 0x780A0009, // 001E JMPF R2 #0029 + 0x88080302, // 001F GETMBR R2 R1 K2 + 0x8C0C0103, // 0020 GETMET R3 R0 K3 + 0x7C0C0200, // 0021 CALL R3 1 + 0x600C0009, // 0022 GETGBL R3 G9 + 0x6010000A, // 0023 GETGBL R4 G10 + 0x5C140400, // 0024 MOVE R5 R2 + 0x7C100200, // 0025 CALL R4 1 + 0x7C0C0200, // 0026 CALL R3 1 + 0x80040600, // 0027 RET 1 R3 + 0x70020004, // 0028 JMP #002E + 0x8C080106, // 0029 GETMET R2 R0 K6 + 0x58100007, // 002A LDCONST R4 K7 + 0x7C080400, // 002B CALL R2 2 + 0x540A00FE, // 002C LDINT R2 255 + 0x80040400, // 002D RET 1 R2 + 0x80000000, // 002E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_standalone_log +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* 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(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(error), + /* K6 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K7 */ be_nested_str_weak(skip_statement), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(expect_right_paren), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(process_log_call), + /* K12 */ be_nested_str_weak(standalone), + /* K13 */ be_nested_str_weak(add), + }), + be_str_weak(process_standalone_log), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0002, // 0008 JMPT R2 #000C + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0x20080504, // 000A NE R2 R2 K4 + 0x780A0005, // 000B JMPF R2 #0012 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0x80000400, // 0011 RET 0 + 0x88080308, // 0012 GETMBR R2 R1 K8 + 0x8C0C0100, // 0013 GETMET R3 R0 K0 + 0x7C0C0200, // 0014 CALL R3 1 + 0x8C0C0109, // 0015 GETMET R3 R0 K9 + 0x7C0C0200, // 0016 CALL R3 1 + 0x8C0C010A, // 0017 GETMET R3 R0 K10 + 0x7C0C0200, // 0018 CALL R3 1 + 0x8C10010B, // 0019 GETMET R4 R0 K11 + 0x5C180400, // 001A MOVE R6 R2 + 0x581C000C, // 001B LDCONST R7 K12 + 0x5C200600, // 001C MOVE R8 R3 + 0x7C100800, // 001D CALL R4 4 + 0x8C14010D, // 001E GETMET R5 R0 K13 + 0x5C1C0800, // 001F MOVE R7 R4 + 0x7C140400, // 0020 CALL R5 2 + 0x80000000, // 0021 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _parse_parameter_constraints +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__parse_parameter_constraints, /* 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[23]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(expect_identifier), + /* K8 */ be_nested_str_weak(_validate_template_parameter_type), + /* K9 */ be_nested_str_weak(min), + /* K10 */ be_nested_str_weak(process_value), + /* K11 */ be_nested_str_weak(CONTEXT_GENERIC), + /* K12 */ be_nested_str_weak(expr), + /* K13 */ be_nested_str_weak(error), + /* K14 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27min_X27), + /* K15 */ be_nested_str_weak(max), + /* K16 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27max_X27), + /* K17 */ be_nested_str_weak(default), + /* K18 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27default_X27), + /* K19 */ be_nested_str_weak(nillable), + /* K20 */ be_nested_str_weak(true), + /* K21 */ be_nested_str_weak(false), + /* K22 */ be_nested_str_weak(Expected_X20_X27true_X27_X20or_X20_X27false_X27_X20after_X20_X27nillable_X27), + }), + be_str_weak(_parse_parameter_constraints), + &be_const_str_solidified, + ( &(const binstruction[166]) { /* code */ + 0x60040013, // 0000 GETGBL R1 G19 + 0x7C040000, // 0001 CALL R1 0 + 0x8C080100, // 0002 GETMET R2 R0 K0 + 0x7C080200, // 0003 CALL R2 1 + 0x740A0097, // 0004 JMPT R2 #009D + 0x8C080101, // 0005 GETMET R2 R0 K1 + 0x7C080200, // 0006 CALL R2 1 + 0x4C0C0000, // 0007 LDNIL R3 + 0x1C0C0403, // 0008 EQ R3 R2 R3 + 0x740E0007, // 0009 JMPT R3 #0012 + 0x880C0502, // 000A GETMBR R3 R2 K2 + 0x54120022, // 000B LDINT R4 35 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x740E0003, // 000D JMPT R3 #0012 + 0x880C0502, // 000E GETMBR R3 R2 K2 + 0x5412001A, // 000F LDINT R4 27 + 0x1C0C0604, // 0010 EQ R3 R3 R4 + 0x780E0000, // 0011 JMPF R3 #0013 + 0x70020089, // 0012 JMP #009D + 0x880C0502, // 0013 GETMBR R3 R2 K2 + 0x1C0C0703, // 0014 EQ R3 R3 K3 + 0x740E0002, // 0015 JMPT R3 #0019 + 0x880C0502, // 0016 GETMBR R3 R2 K2 + 0x1C0C0704, // 0017 EQ R3 R3 K4 + 0x780E0081, // 0018 JMPF R3 #009B + 0x880C0505, // 0019 GETMBR R3 R2 K5 + 0x1C0C0702, // 001A EQ R3 R3 K2 + 0x780E000B, // 001B JMPF R3 #0028 + 0x8C0C0106, // 001C GETMET R3 R0 K6 + 0x7C0C0200, // 001D CALL R3 1 + 0x8C0C0107, // 001E GETMET R3 R0 K7 + 0x7C0C0200, // 001F CALL R3 1 + 0x8C100108, // 0020 GETMET R4 R0 K8 + 0x5C180600, // 0021 MOVE R6 R3 + 0x7C100400, // 0022 CALL R4 2 + 0x74120001, // 0023 JMPT R4 #0026 + 0x4C100000, // 0024 LDNIL R4 + 0x80040800, // 0025 RET 1 R4 + 0x98060403, // 0026 SETIDX R1 K2 R3 + 0x70020071, // 0027 JMP #009A + 0x880C0505, // 0028 GETMBR R3 R2 K5 + 0x1C0C0709, // 0029 EQ R3 R3 K9 + 0x780E0014, // 002A JMPF R3 #0040 + 0x8C0C0106, // 002B GETMET R3 R0 K6 + 0x7C0C0200, // 002C CALL R3 1 + 0x8C0C010A, // 002D GETMET R3 R0 K10 + 0x8814010B, // 002E GETMBR R5 R0 K11 + 0x7C0C0400, // 002F CALL R3 2 + 0x4C100000, // 0030 LDNIL R4 + 0x20100604, // 0031 NE R4 R3 R4 + 0x78120006, // 0032 JMPF R4 #003A + 0x8810070C, // 0033 GETMBR R4 R3 K12 + 0x4C140000, // 0034 LDNIL R5 + 0x20100805, // 0035 NE R4 R4 R5 + 0x78120002, // 0036 JMPF R4 #003A + 0x8810070C, // 0037 GETMBR R4 R3 K12 + 0x98061204, // 0038 SETIDX R1 K9 R4 + 0x70020004, // 0039 JMP #003F + 0x8C10010D, // 003A GETMET R4 R0 K13 + 0x5818000E, // 003B LDCONST R6 K14 + 0x7C100400, // 003C CALL R4 2 + 0x4C100000, // 003D LDNIL R4 + 0x80040800, // 003E RET 1 R4 + 0x70020059, // 003F JMP #009A + 0x880C0505, // 0040 GETMBR R3 R2 K5 + 0x1C0C070F, // 0041 EQ R3 R3 K15 + 0x780E0014, // 0042 JMPF R3 #0058 + 0x8C0C0106, // 0043 GETMET R3 R0 K6 + 0x7C0C0200, // 0044 CALL R3 1 + 0x8C0C010A, // 0045 GETMET R3 R0 K10 + 0x8814010B, // 0046 GETMBR R5 R0 K11 + 0x7C0C0400, // 0047 CALL R3 2 + 0x4C100000, // 0048 LDNIL R4 + 0x20100604, // 0049 NE R4 R3 R4 + 0x78120006, // 004A JMPF R4 #0052 + 0x8810070C, // 004B GETMBR R4 R3 K12 + 0x4C140000, // 004C LDNIL R5 + 0x20100805, // 004D NE R4 R4 R5 + 0x78120002, // 004E JMPF R4 #0052 + 0x8810070C, // 004F GETMBR R4 R3 K12 + 0x98061E04, // 0050 SETIDX R1 K15 R4 + 0x70020004, // 0051 JMP #0057 + 0x8C10010D, // 0052 GETMET R4 R0 K13 + 0x58180010, // 0053 LDCONST R6 K16 + 0x7C100400, // 0054 CALL R4 2 + 0x4C100000, // 0055 LDNIL R4 + 0x80040800, // 0056 RET 1 R4 + 0x70020041, // 0057 JMP #009A + 0x880C0505, // 0058 GETMBR R3 R2 K5 + 0x1C0C0711, // 0059 EQ R3 R3 K17 + 0x780E0014, // 005A JMPF R3 #0070 + 0x8C0C0106, // 005B GETMET R3 R0 K6 + 0x7C0C0200, // 005C CALL R3 1 + 0x8C0C010A, // 005D GETMET R3 R0 K10 + 0x8814010B, // 005E GETMBR R5 R0 K11 + 0x7C0C0400, // 005F CALL R3 2 + 0x4C100000, // 0060 LDNIL R4 + 0x20100604, // 0061 NE R4 R3 R4 + 0x78120006, // 0062 JMPF R4 #006A + 0x8810070C, // 0063 GETMBR R4 R3 K12 + 0x4C140000, // 0064 LDNIL R5 + 0x20100805, // 0065 NE R4 R4 R5 + 0x78120002, // 0066 JMPF R4 #006A + 0x8810070C, // 0067 GETMBR R4 R3 K12 + 0x98062204, // 0068 SETIDX R1 K17 R4 + 0x70020004, // 0069 JMP #006F + 0x8C10010D, // 006A GETMET R4 R0 K13 + 0x58180012, // 006B LDCONST R6 K18 + 0x7C100400, // 006C CALL R4 2 + 0x4C100000, // 006D LDNIL R4 + 0x80040800, // 006E RET 1 R4 + 0x70020029, // 006F JMP #009A + 0x880C0505, // 0070 GETMBR R3 R2 K5 + 0x1C0C0713, // 0071 EQ R3 R3 K19 + 0x780E0025, // 0072 JMPF R3 #0099 + 0x8C0C0106, // 0073 GETMET R3 R0 K6 + 0x7C0C0200, // 0074 CALL R3 1 + 0x8C0C0101, // 0075 GETMET R3 R0 K1 + 0x7C0C0200, // 0076 CALL R3 1 + 0x4C100000, // 0077 LDNIL R4 + 0x20100604, // 0078 NE R4 R3 R4 + 0x78120018, // 0079 JMPF R4 #0093 + 0x88100702, // 007A GETMBR R4 R3 K2 + 0x1C100903, // 007B EQ R4 R4 K3 + 0x78120015, // 007C JMPF R4 #0093 + 0x88100705, // 007D GETMBR R4 R3 K5 + 0x1C100914, // 007E EQ R4 R4 K20 + 0x78120004, // 007F JMPF R4 #0085 + 0x8C100106, // 0080 GETMET R4 R0 K6 + 0x7C100200, // 0081 CALL R4 1 + 0x50100200, // 0082 LDBOOL R4 1 0 + 0x98062604, // 0083 SETIDX R1 K19 R4 + 0x7002000C, // 0084 JMP #0092 + 0x88100705, // 0085 GETMBR R4 R3 K5 + 0x1C100915, // 0086 EQ R4 R4 K21 + 0x78120004, // 0087 JMPF R4 #008D + 0x8C100106, // 0088 GETMET R4 R0 K6 + 0x7C100200, // 0089 CALL R4 1 + 0x50100000, // 008A LDBOOL R4 0 0 + 0x98062604, // 008B SETIDX R1 K19 R4 + 0x70020004, // 008C JMP #0092 + 0x8C10010D, // 008D GETMET R4 R0 K13 + 0x58180016, // 008E LDCONST R6 K22 + 0x7C100400, // 008F CALL R4 2 + 0x4C100000, // 0090 LDNIL R4 + 0x80040800, // 0091 RET 1 R4 + 0x70020004, // 0092 JMP #0098 + 0x8C10010D, // 0093 GETMET R4 R0 K13 + 0x58180016, // 0094 LDCONST R6 K22 + 0x7C100400, // 0095 CALL R4 2 + 0x4C100000, // 0096 LDNIL R4 + 0x80040800, // 0097 RET 1 R4 + 0x70020000, // 0098 JMP #009A + 0x70020002, // 0099 JMP #009D + 0x70020000, // 009A JMP #009C + 0x70020000, // 009B JMP #009D + 0x7001FF64, // 009C JMP #0002 + 0x6008000C, // 009D GETGBL R2 G12 + 0x5C0C0200, // 009E MOVE R3 R1 + 0x7C080200, // 009F CALL R2 1 + 0x24080503, // 00A0 GT R2 R2 K3 + 0x780A0001, // 00A1 JMPF R2 #00A4 + 0x5C080200, // 00A2 MOVE R2 R1 + 0x70020000, // 00A3 JMP #00A5 + 0x4C080000, // 00A4 LDNIL R2 + 0x80040400, // 00A5 RET 1 R2 }) ) ); @@ -6476,9 +7449,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* nam /******************************************************************** -** Solidified function: skip_whitespace +** Solidified function: check_right_paren ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ @@ -6488,188 +7461,25 @@ be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060011, // 0002 JMPT R1 #0015 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000A, // 0007 JMPF R2 #0013 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0x540E0022, // 0009 LDINT R3 35 - 0x1C080403, // 000A EQ R2 R2 R3 - 0x740A0003, // 000B JMPT R2 #0010 - 0x88080302, // 000C GETMBR R2 R1 K2 - 0x540E0024, // 000D LDINT R3 37 - 0x1C080403, // 000E EQ R2 R2 R3 - 0x780A0002, // 000F JMPF R2 #0013 - 0x8C080103, // 0010 GETMET R2 R0 K3 - 0x7C080200, // 0011 CALL R2 1 - 0x70020000, // 0012 JMP #0014 - 0x70020000, // 0013 JMP #0015 - 0x7001FFEA, // 0014 JMP #0000 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_array_literal -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_bracket), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_bracket), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(CONTEXT_ARRAY_ELEMENT), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(expr), - /* K7 */ be_nested_str_weak(current), - /* K8 */ be_nested_str_weak(type), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(error), - /* K11 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), - /* K12 */ be_nested_str_weak(expect_right_bracket), - /* K13 */ be_nested_str_weak(_X5B), - /* K14 */ be_const_int(0), - /* K15 */ be_const_int(1), - /* K16 */ be_nested_str_weak(_X2C_X20), - /* K17 */ be_nested_str_weak(stop_iteration), - /* K18 */ be_nested_str_weak(_X5D), - }), - be_str_weak(process_array_literal), - &be_const_str_solidified, - ( &(const binstruction[62]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A001E, // 0006 JMPT R2 #0026 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A001B, // 0009 JMPT R2 #0026 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x88100104, // 000B GETMBR R4 R0 K4 - 0x7C080400, // 000C CALL R2 2 - 0x8C0C0305, // 000D GETMET R3 R1 K5 - 0x88140506, // 000E GETMBR R5 R2 K6 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0107, // 0010 GETMET R3 R0 K7 - 0x7C0C0200, // 0011 CALL R3 1 - 0x4C100000, // 0012 LDNIL R4 - 0x200C0604, // 0013 NE R3 R3 R4 - 0x780E0008, // 0014 JMPF R3 #001E - 0x8C0C0107, // 0015 GETMET R3 R0 K7 - 0x7C0C0200, // 0016 CALL R3 1 - 0x880C0708, // 0017 GETMBR R3 R3 K8 - 0x5412001D, // 0018 LDINT R4 30 - 0x1C0C0604, // 0019 EQ R3 R3 R4 - 0x780E0002, // 001A JMPF R3 #001E - 0x8C0C0109, // 001B GETMET R3 R0 K9 - 0x7C0C0200, // 001C CALL R3 1 - 0x70020006, // 001D JMP #0025 - 0x8C0C0102, // 001E GETMET R3 R0 K2 - 0x7C0C0200, // 001F CALL R3 1 - 0x740E0003, // 0020 JMPT R3 #0025 - 0x8C0C010A, // 0021 GETMET R3 R0 K10 - 0x5814000B, // 0022 LDCONST R5 K11 - 0x7C0C0400, // 0023 CALL R3 2 - 0x70020000, // 0024 JMP #0026 - 0x7001FFDD, // 0025 JMP #0004 - 0x8C08010C, // 0026 GETMET R2 R0 K12 - 0x7C080200, // 0027 CALL R2 1 - 0x5808000D, // 0028 LDCONST R2 K13 - 0x600C0010, // 0029 GETGBL R3 G16 - 0x6010000C, // 002A GETGBL R4 G12 - 0x5C140200, // 002B MOVE R5 R1 - 0x7C100200, // 002C CALL R4 1 - 0x0410090F, // 002D SUB R4 R4 K15 - 0x40121C04, // 002E CONNECT R4 K14 R4 - 0x7C0C0200, // 002F CALL R3 1 - 0xA8020007, // 0030 EXBLK 0 #0039 - 0x5C100600, // 0031 MOVE R4 R3 - 0x7C100000, // 0032 CALL R4 0 - 0x2414090E, // 0033 GT R5 R4 K14 - 0x78160000, // 0034 JMPF R5 #0036 - 0x00080510, // 0035 ADD R2 R2 K16 - 0x94140204, // 0036 GETIDX R5 R1 R4 - 0x00080405, // 0037 ADD R2 R2 R5 - 0x7001FFF7, // 0038 JMP #0031 - 0x580C0011, // 0039 LDCONST R3 K17 - 0xAC0C0200, // 003A CATCH R3 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x00080512, // 003C ADD R2 R2 K18 - 0x80040400, // 003D RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: error -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_error, /* name */ - be_nested_proto( - 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 */ + ( &(const bvalue[ 2]) { /* constants */ /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(line), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), - /* K4 */ be_nested_str_weak(dsl_compilation_error), + /* K1 */ be_nested_str_weak(type), }), - be_str_weak(error), + be_str_weak(check_right_paren), &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 + ( &(const binstruction[12]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x70020000, // 0008 JMP #000A - 0x58080002, // 0009 LDCONST R2 K2 - 0x600C0018, // 000A GETGBL R3 G24 - 0x58100003, // 000B LDCONST R4 K3 - 0x5C140400, // 000C MOVE R5 R2 - 0x5C180200, // 000D MOVE R6 R1 - 0x7C0C0600, // 000E CALL R3 3 - 0xB0060803, // 000F RAISE 1 K4 R3 - 0x80000000, // 0010 RET 0 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E0018, // 0006 LDINT R3 25 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x740A0000, // 0008 JMPT R2 #000A + 0x50080001, // 0009 LDBOOL R2 0 1 + 0x50080200, // 000A LDBOOL R2 1 0 + 0x80040400, // 000B RET 1 R2 }) ) ); @@ -6677,589 +7487,9 @@ be_local_closure(class_SimpleDSLTranspiler_error, /* name */ /******************************************************************** -** Solidified function: _determine_function_return_type +** Solidified function: expect_assign ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__determine_function_return_type, /* name */ - be_nested_proto( - 4, /* 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(type), - /* K1 */ be_const_int(1), - /* K2 */ be_const_int(2), - }), - be_str_weak(_determine_function_return_type), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0039, // 0002 JMPF R2 #003D - 0x88080300, // 0003 GETMBR R2 R1 K0 - 0x540E0007, // 0004 LDINT R3 8 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x740A0003, // 0006 JMPT R2 #000B - 0x88080300, // 0007 GETMBR R2 R1 K0 - 0x540E0008, // 0008 LDINT R3 9 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x540A0008, // 000B LDINT R2 9 - 0x80040400, // 000C RET 1 R2 - 0x7002002E, // 000D JMP #003D - 0x88080300, // 000E GETMBR R2 R1 K0 - 0x540E0009, // 000F LDINT R3 10 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x740A0003, // 0011 JMPT R2 #0016 - 0x88080300, // 0012 GETMBR R2 R1 K0 - 0x540E000A, // 0013 LDINT R3 11 - 0x1C080403, // 0014 EQ R2 R2 R3 - 0x780A0002, // 0015 JMPF R2 #0019 - 0x540A000A, // 0016 LDINT R2 11 - 0x80040400, // 0017 RET 1 R2 - 0x70020023, // 0018 JMP #003D - 0x88080300, // 0019 GETMBR R2 R1 K0 - 0x540E0005, // 001A LDINT R3 6 - 0x1C080403, // 001B EQ R2 R2 R3 - 0x740A0003, // 001C JMPT R2 #0021 - 0x88080300, // 001D GETMBR R2 R1 K0 - 0x540E0006, // 001E LDINT R3 7 - 0x1C080403, // 001F EQ R2 R2 R3 - 0x780A0002, // 0020 JMPF R2 #0024 - 0x540A0006, // 0021 LDINT R2 7 - 0x80040400, // 0022 RET 1 R2 - 0x70020018, // 0023 JMP #003D - 0x88080300, // 0024 GETMBR R2 R1 K0 - 0x1C080501, // 0025 EQ R2 R2 K1 - 0x740A0002, // 0026 JMPT R2 #002A - 0x88080300, // 0027 GETMBR R2 R1 K0 - 0x1C080502, // 0028 EQ R2 R2 K2 - 0x780A0001, // 0029 JMPF R2 #002C - 0x80060400, // 002A RET 1 K2 - 0x70020010, // 002B JMP #003D - 0x88080300, // 002C GETMBR R2 R1 K0 - 0x540E0003, // 002D LDINT R3 4 - 0x1C080403, // 002E EQ R2 R2 R3 - 0x780A0002, // 002F JMPF R2 #0033 - 0x540A000B, // 0030 LDINT R2 12 - 0x80040400, // 0031 RET 1 R2 - 0x70020009, // 0032 JMP #003D - 0x88080300, // 0033 GETMBR R2 R1 K0 - 0x540E0004, // 0034 LDINT R3 5 - 0x1C080403, // 0035 EQ R2 R2 R3 - 0x740A0003, // 0036 JMPT R2 #003B - 0x88080300, // 0037 GETMBR R2 R1 K0 - 0x540E000D, // 0038 LDINT R3 14 - 0x1C080403, // 0039 EQ R2 R2 R3 - 0x780A0001, // 003A JMPF R2 #003D - 0x540A000B, // 003B LDINT R2 12 - 0x80040400, // 003C RET 1 R2 - 0x540A000B, // 003D LDINT R2 12 - 0x80040400, // 003E RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_named_color_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(get_reference), - }), - be_str_weak(get_named_color_value), - &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 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _unwrap_resolve -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__unwrap_resolve, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(animation_X2Eresolve_X28), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X29), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(_is_valid_identifier), - }), - be_str_weak(_unwrap_resolve), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* 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 - 0x780E0017, // 0006 JMPF R3 #001F - 0x540DFFFE, // 0007 LDINT R3 -1 - 0x940C0203, // 0008 GETIDX R3 R1 R3 - 0x1C0C0704, // 0009 EQ R3 R3 K4 - 0x780E0013, // 000A JMPF R3 #001F - 0x600C000C, // 000B GETGBL R3 G12 - 0x58100002, // 000C LDCONST R4 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x6010000C, // 000E GETGBL R4 G12 - 0x5C140200, // 000F MOVE R5 R1 - 0x7C100200, // 0010 CALL R4 1 - 0x04100905, // 0011 SUB R4 R4 K5 - 0x04140905, // 0012 SUB R5 R4 K5 - 0x40140605, // 0013 CONNECT R5 R3 R5 - 0x94140205, // 0014 GETIDX R5 R1 R5 - 0x6018000C, // 0015 GETGBL R6 G12 - 0x5C1C0A00, // 0016 MOVE R7 R5 - 0x7C180200, // 0017 CALL R6 1 - 0x24180D03, // 0018 GT R6 R6 K3 - 0x781A0004, // 0019 JMPF R6 #001F - 0x8C180106, // 001A GETMET R6 R0 K6 - 0x5C200A00, // 001B MOVE R8 R5 - 0x7C180400, // 001C CALL R6 2 - 0x781A0000, // 001D JMPF R6 #001F - 0x80040A00, // 001E RET 1 R5 - 0x4C0C0000, // 001F LDNIL R3 - 0x80040600, // 0020 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_engine_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_engine_run, /* 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[ 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_X2Erun_X28_X29), - }), - be_str_weak(generate_engine_run), - &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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_import -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ - be_nested_proto( - 9, /* 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(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_import), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: validate_user_name -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(symbol_table), - /* K2 */ be_nested_str_weak(get), - /* K3 */ be_nested_str_weak(is_builtin), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K7 */ be_nested_str_weak(Cannot_X20redefine_X20built_X2Din_X20symbol_X20_X27_X25s_X27_X20_X28type_X3A_X20_X25s_X29_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K8 */ be_nested_str_weak(Symbol_X20_X27_X25s_X27_X20is_X20already_X20defined_X20as_X20_X25s_X2E_X20Cannot_X20redefine_X20as_X20_X25s_X2E), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(statement_keywords), - /* K11 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K12 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(validate_user_name), - &be_const_str_solidified, - ( &(const binstruction[77]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x88100101, // 0001 GETMBR R4 R0 K1 - 0x8C100902, // 0002 GETMET R4 R4 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C100400, // 0004 CALL R4 2 - 0x4C140000, // 0005 LDNIL R5 - 0x1C140805, // 0006 EQ R5 R4 R5 - 0x78160000, // 0007 JMPF R5 #0009 - 0x70020028, // 0008 JMP #0032 - 0x88140903, // 0009 GETMBR R5 R4 K3 - 0x7816000E, // 000A JMPF R5 #001A - 0x88140904, // 000B GETMBR R5 R4 K4 - 0x541A000A, // 000C LDINT R6 11 - 0x1C140A06, // 000D EQ R5 R5 R6 - 0x7816000A, // 000E JMPF R5 #001A - 0x8C140105, // 000F GETMET R5 R0 K5 - 0x601C0018, // 0010 GETGBL R7 G24 - 0x58200006, // 0011 LDCONST R8 K6 - 0x5C240200, // 0012 MOVE R9 R1 - 0x5C280200, // 0013 MOVE R10 R1 - 0x5C2C0200, // 0014 MOVE R11 R1 - 0x7C1C0800, // 0015 CALL R7 4 - 0x7C140400, // 0016 CALL R5 2 - 0x50140000, // 0017 LDBOOL R5 0 0 - 0x80040A00, // 0018 RET 1 R5 - 0x70020017, // 0019 JMP #0032 - 0x88140903, // 001A GETMBR R5 R4 K3 - 0x7816000B, // 001B JMPF R5 #0028 - 0x8C140105, // 001C GETMET R5 R0 K5 - 0x601C0018, // 001D GETGBL R7 G24 - 0x58200007, // 001E LDCONST R8 K7 - 0x5C240200, // 001F MOVE R9 R1 - 0x88280904, // 0020 GETMBR R10 R4 K4 - 0x5C2C0200, // 0021 MOVE R11 R1 - 0x5C300200, // 0022 MOVE R12 R1 - 0x7C1C0A00, // 0023 CALL R7 5 - 0x7C140400, // 0024 CALL R5 2 - 0x50140000, // 0025 LDBOOL R5 0 0 - 0x80040A00, // 0026 RET 1 R5 - 0x70020009, // 0027 JMP #0032 - 0x8C140105, // 0028 GETMET R5 R0 K5 - 0x601C0018, // 0029 GETGBL R7 G24 - 0x58200008, // 002A LDCONST R8 K8 - 0x5C240200, // 002B MOVE R9 R1 - 0x88280904, // 002C GETMBR R10 R4 K4 - 0x5C2C0400, // 002D MOVE R11 R2 - 0x7C1C0800, // 002E CALL R7 4 - 0x7C140400, // 002F CALL R5 2 - 0x50140000, // 0030 LDBOOL R5 0 0 - 0x80040A00, // 0031 RET 1 R5 - 0x60140010, // 0032 GETGBL R5 G16 - 0x88180709, // 0033 GETMBR R6 R3 K9 - 0x88180D0A, // 0034 GETMBR R6 R6 K10 - 0x7C140200, // 0035 CALL R5 1 - 0xA8020010, // 0036 EXBLK 0 #0048 - 0x5C180A00, // 0037 MOVE R6 R5 - 0x7C180000, // 0038 CALL R6 0 - 0x1C1C0206, // 0039 EQ R7 R1 R6 - 0x781E000B, // 003A JMPF R7 #0047 - 0x8C1C0105, // 003B GETMET R7 R0 K5 - 0x60240018, // 003C GETGBL R9 G24 - 0x5828000B, // 003D LDCONST R10 K11 - 0x5C2C0200, // 003E MOVE R11 R1 - 0x5C300400, // 003F MOVE R12 R2 - 0x5C340200, // 0040 MOVE R13 R1 - 0x5C380200, // 0041 MOVE R14 R1 - 0x7C240A00, // 0042 CALL R9 5 - 0x7C1C0400, // 0043 CALL R7 2 - 0x501C0000, // 0044 LDBOOL R7 0 0 - 0xA8040001, // 0045 EXBLK 1 1 - 0x80040E00, // 0046 RET 1 R7 - 0x7001FFEE, // 0047 JMP #0037 - 0x5814000C, // 0048 LDCONST R5 K12 - 0xAC140200, // 0049 CATCH R5 1 0 - 0xB0080000, // 004A RAISE 2 R0 R0 - 0x50140200, // 004B LDBOOL R5 1 0 - 0x80040A00, // 004C RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_inherited_params_to_template -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__add_inherited_params_to_template, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(init_strip), - /* K3 */ be_nested_str_weak(engine_proxy), - /* K4 */ be_nested_str_weak(contains), - /* K5 */ be_nested_str_weak(PARAMS), - /* K6 */ be_nested_str_weak(keys), - /* K7 */ be_nested_str_weak(stop_iteration), - /* K8 */ be_nested_str_weak(name), - /* K9 */ be_nested_str_weak(priority), - /* K10 */ be_nested_str_weak(duration), - /* K11 */ be_nested_str_weak(loop), - /* K12 */ be_nested_str_weak(opacity), - /* K13 */ be_nested_str_weak(color), - /* K14 */ be_nested_str_weak(is_running), - }), - be_str_weak(_add_inherited_params_to_template), - &be_const_str_solidified, - ( &(const binstruction[67]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA8020026, // 0001 EXBLK 0 #0029 - 0xB80E0200, // 0002 GETNGBL R3 K1 - 0x8C0C0702, // 0003 GETMET R3 R3 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0xB8120200, // 0005 GETNGBL R4 K1 - 0x8C100903, // 0006 GETMET R4 R4 K3 - 0x5C180600, // 0007 MOVE R6 R3 - 0x7C100400, // 0008 CALL R4 2 - 0x60140006, // 0009 GETGBL R5 G6 - 0x5C180800, // 000A MOVE R6 R4 - 0x7C140200, // 000B CALL R5 1 - 0x4C180000, // 000C LDNIL R6 - 0x20180A06, // 000D NE R6 R5 R6 - 0x781A0017, // 000E JMPF R6 #0027 - 0x8C180504, // 000F GETMET R6 R2 K4 - 0x5C200A00, // 0010 MOVE R8 R5 - 0x58240005, // 0011 LDCONST R9 K5 - 0x7C180600, // 0012 CALL R6 3 - 0x781A000D, // 0013 JMPF R6 #0022 - 0x88180B05, // 0014 GETMBR R6 R5 K5 - 0x601C0010, // 0015 GETGBL R7 G16 - 0x8C200D06, // 0016 GETMET R8 R6 K6 - 0x7C200200, // 0017 CALL R8 1 - 0x7C1C0200, // 0018 CALL R7 1 - 0xA8020004, // 0019 EXBLK 0 #001F - 0x5C200E00, // 001A MOVE R8 R7 - 0x7C200000, // 001B CALL R8 0 - 0x50240200, // 001C LDBOOL R9 1 0 - 0x98041009, // 001D SETIDX R1 R8 R9 - 0x7001FFFA, // 001E JMP #001A - 0x581C0007, // 001F LDCONST R7 K7 - 0xAC1C0200, // 0020 CATCH R7 1 0 - 0xB0080000, // 0021 RAISE 2 R0 R0 - 0x60180003, // 0022 GETGBL R6 G3 - 0x5C1C0A00, // 0023 MOVE R7 R5 - 0x7C180200, // 0024 CALL R6 1 - 0x5C140C00, // 0025 MOVE R5 R6 - 0x7001FFE4, // 0026 JMP #000C - 0xA8040001, // 0027 EXBLK 1 1 - 0x70020018, // 0028 JMP #0042 - 0xAC0C0002, // 0029 CATCH R3 0 2 - 0x70020015, // 002A JMP #0041 - 0x60140012, // 002B GETGBL R5 G18 - 0x7C140000, // 002C CALL R5 0 - 0x40180B08, // 002D CONNECT R6 R5 K8 - 0x40180B09, // 002E CONNECT R6 R5 K9 - 0x40180B0A, // 002F CONNECT R6 R5 K10 - 0x40180B0B, // 0030 CONNECT R6 R5 K11 - 0x40180B0C, // 0031 CONNECT R6 R5 K12 - 0x40180B0D, // 0032 CONNECT R6 R5 K13 - 0x40180B0E, // 0033 CONNECT R6 R5 K14 - 0x60180010, // 0034 GETGBL R6 G16 - 0x5C1C0A00, // 0035 MOVE R7 R5 - 0x7C180200, // 0036 CALL R6 1 - 0xA8020004, // 0037 EXBLK 0 #003D - 0x5C1C0C00, // 0038 MOVE R7 R6 - 0x7C1C0000, // 0039 CALL R7 0 - 0x50200200, // 003A LDBOOL R8 1 0 - 0x98040E08, // 003B SETIDX R1 R7 R8 - 0x7001FFFA, // 003C JMP #0038 - 0x58180007, // 003D LDCONST R6 K7 - 0xAC180200, // 003E CATCH R6 1 0 - 0xB0080000, // 003F RAISE 2 R0 R0 - 0x70020000, // 0040 JMP #0042 - 0xB0080000, // 0041 RAISE 2 R0 R0 - 0x80000000, // 0042 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_user_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(process_function_arguments), - /* K3 */ be_nested_str_weak(), - /* K4 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K5 */ be_nested_str_weak(engine), - /* K6 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), - /* K9 */ be_nested_str_weak(nil), - }), - be_str_weak(_process_user_function_call), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0017, // 0004 JMPF R2 #001D - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x540E0017, // 0008 LDINT R3 24 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0011, // 000A JMPF R2 #001D - 0x8C080102, // 000B GETMET R2 R0 K2 - 0x50100200, // 000C LDBOOL R4 1 0 - 0x7C080400, // 000D CALL R2 2 - 0x200C0503, // 000E NE R3 R2 K3 - 0x780E0004, // 000F JMPF R3 #0015 - 0x600C0018, // 0010 GETGBL R3 G24 - 0x58100004, // 0011 LDCONST R4 K4 - 0x5C140400, // 0012 MOVE R5 R2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x70020000, // 0014 JMP #0016 - 0x580C0005, // 0015 LDCONST R3 K5 - 0x60100018, // 0016 GETGBL R4 G24 - 0x58140006, // 0017 LDCONST R5 K6 - 0x5C180200, // 0018 MOVE R6 R1 - 0x5C1C0600, // 0019 MOVE R7 R3 - 0x7C100600, // 001A CALL R4 3 - 0x80040800, // 001B RET 1 R4 - 0x70020003, // 001C JMP #0021 - 0x8C080107, // 001D GETMET R2 R0 K7 - 0x58100008, // 001E LDCONST R4 K8 - 0x7C080400, // 001F CALL R2 2 - 0x80061200, // 0020 RET 1 K9 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -7274,9 +7504,9 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(next), /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), }), - be_str_weak(expect_right_brace), + be_str_weak(expect_assign), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -7285,7 +7515,7 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ 0x20080202, // 0003 NE R2 R1 R2 0x780A0006, // 0004 JMPF R2 #000C 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001A, // 0006 LDINT R3 27 + 0x540E0007, // 0006 LDINT R3 8 0x1C080403, // 0007 EQ R2 R2 R3 0x780A0002, // 0008 JMPF R2 #000C 0x8C080102, // 0009 GETMET R2 R0 K2 @@ -7301,1650 +7531,6 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: process_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ - be_nested_proto( - 16, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 6, /* nstack */ - 2, /* 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(create_animation), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x68080000, // 0000 GETUPV R2 U0 - 0x88080500, // 0001 GETMBR R2 R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x5C100000, // 0003 MOVE R4 R0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_const_int(0), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(peek), - /* K11 */ be_nested_str_weak(value), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(_X20_X20), - /* K14 */ be_nested_str_weak(symbol_table), - /* K15 */ be_nested_str_weak(get), - /* K16 */ be_nested_str_weak(process_function_arguments), - /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K18 */ be_nested_str_weak(engine), - /* K19 */ be_nested_str_weak(add), - /* K20 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), - /* K21 */ be_nested_str_weak(create_animation), - /* K22 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), - /* K23 */ be_nested_str_weak(error), - /* K24 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), - /* K25 */ be_nested_str_weak(is_builtin), - /* K26 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K27 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_animation_X28engine_X29_X25s), - /* K28 */ be_nested_str_weak(_create_instance_for_validation), - /* K29 */ be_nested_str_weak(_process_named_arguments_for_animation), - /* K30 */ be_nested_str_weak(_X25s_), - /* K31 */ be_nested_str_weak(_process_simple_value_assignment), - /* K32 */ be_nested_str_weak(CONTEXT_ANIMATION), - }), - be_str_weak(process_animation), - &be_const_str_solidified, - ( &(const binstruction[186]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0x1C0C0708, // 0011 EQ R3 R3 K8 - 0x740E0002, // 0012 JMPT R3 #0016 - 0x880C0507, // 0013 GETMBR R3 R2 K7 - 0x1C0C0709, // 0014 EQ R3 R3 K9 - 0x780E009C, // 0015 JMPF R3 #00B3 - 0x8C0C010A, // 0016 GETMET R3 R0 K10 - 0x7C0C0200, // 0017 CALL R3 1 - 0x4C100000, // 0018 LDNIL R4 - 0x200C0604, // 0019 NE R3 R3 R4 - 0x780E0097, // 001A JMPF R3 #00B3 - 0x8C0C010A, // 001B GETMET R3 R0 K10 - 0x7C0C0200, // 001C CALL R3 1 - 0x880C0707, // 001D GETMBR R3 R3 K7 - 0x54120017, // 001E LDINT R4 24 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E0091, // 0020 JMPF R3 #00B3 - 0x880C050B, // 0021 GETMBR R3 R2 K11 - 0x8C100100, // 0022 GETMET R4 R0 K0 - 0x7C100200, // 0023 CALL R4 1 - 0x5810000C, // 0024 LDCONST R4 K12 - 0x8C140106, // 0025 GETMET R5 R0 K6 - 0x7C140200, // 0026 CALL R5 1 - 0x4C180000, // 0027 LDNIL R6 - 0x20140A06, // 0028 NE R5 R5 R6 - 0x7816000C, // 0029 JMPF R5 #0037 - 0x8C140106, // 002A GETMET R5 R0 K6 - 0x7C140200, // 002B CALL R5 1 - 0x88140B07, // 002C GETMBR R5 R5 K7 - 0x541A0024, // 002D LDINT R6 37 - 0x1C140A06, // 002E EQ R5 R5 R6 - 0x78160006, // 002F JMPF R5 #0037 - 0x8C140106, // 0030 GETMET R5 R0 K6 - 0x7C140200, // 0031 CALL R5 1 - 0x88140B0B, // 0032 GETMBR R5 R5 K11 - 0x00161A05, // 0033 ADD R5 K13 R5 - 0x5C100A00, // 0034 MOVE R4 R5 - 0x8C140100, // 0035 GETMET R5 R0 K0 - 0x7C140200, // 0036 CALL R5 1 - 0x8814010E, // 0037 GETMBR R5 R0 K14 - 0x8C140B0F, // 0038 GETMET R5 R5 K15 - 0x5C1C0600, // 0039 MOVE R7 R3 - 0x7C140400, // 003A CALL R5 2 - 0x4C180000, // 003B LDNIL R6 - 0x20180A06, // 003C NE R6 R5 R6 - 0x781A001D, // 003D JMPF R6 #005C - 0x88180B07, // 003E GETMBR R6 R5 K7 - 0x541E000D, // 003F LDINT R7 14 - 0x1C180C07, // 0040 EQ R6 R6 R7 - 0x781A0019, // 0041 JMPF R6 #005C - 0x8C180110, // 0042 GETMET R6 R0 K16 - 0x50200000, // 0043 LDBOOL R8 0 0 - 0x7C180400, // 0044 CALL R6 2 - 0x201C0D0C, // 0045 NE R7 R6 K12 - 0x781E0004, // 0046 JMPF R7 #004C - 0x601C0018, // 0047 GETGBL R7 G24 - 0x58200011, // 0048 LDCONST R8 K17 - 0x5C240C00, // 0049 MOVE R9 R6 - 0x7C1C0400, // 004A CALL R7 2 - 0x70020000, // 004B JMP #004D - 0x581C0012, // 004C LDCONST R7 K18 - 0x8C200113, // 004D GETMET R8 R0 K19 - 0x60280018, // 004E GETGBL R10 G24 - 0x582C0014, // 004F LDCONST R11 K20 - 0x5C300200, // 0050 MOVE R12 R1 - 0x5C340600, // 0051 MOVE R13 R3 - 0x5C380E00, // 0052 MOVE R14 R7 - 0x5C3C0800, // 0053 MOVE R15 R4 - 0x7C280A00, // 0054 CALL R10 5 - 0x7C200400, // 0055 CALL R8 2 - 0x8820010E, // 0056 GETMBR R8 R0 K14 - 0x8C201115, // 0057 GETMET R8 R8 K21 - 0x5C280200, // 0058 MOVE R10 R1 - 0x4C2C0000, // 0059 LDNIL R11 - 0x7C200600, // 005A CALL R8 3 - 0x70020055, // 005B JMP #00B2 - 0x4C180000, // 005C LDNIL R6 - 0x20180A06, // 005D NE R6 R5 R6 - 0x781A001D, // 005E JMPF R6 #007D - 0x88180B07, // 005F GETMBR R6 R5 K7 - 0x541E0004, // 0060 LDINT R7 5 - 0x1C180C07, // 0061 EQ R6 R6 R7 - 0x781A0019, // 0062 JMPF R6 #007D - 0x8C180110, // 0063 GETMET R6 R0 K16 - 0x50200000, // 0064 LDBOOL R8 0 0 - 0x7C180400, // 0065 CALL R6 2 - 0x201C0D0C, // 0066 NE R7 R6 K12 - 0x781E0004, // 0067 JMPF R7 #006D - 0x601C0018, // 0068 GETGBL R7 G24 - 0x58200011, // 0069 LDCONST R8 K17 - 0x5C240C00, // 006A MOVE R9 R6 - 0x7C1C0400, // 006B CALL R7 2 - 0x70020000, // 006C JMP #006E - 0x581C0012, // 006D LDCONST R7 K18 - 0x8C200113, // 006E GETMET R8 R0 K19 - 0x60280018, // 006F GETGBL R10 G24 - 0x582C0016, // 0070 LDCONST R11 K22 - 0x5C300200, // 0071 MOVE R12 R1 - 0x5C340600, // 0072 MOVE R13 R3 - 0x5C380E00, // 0073 MOVE R14 R7 - 0x5C3C0800, // 0074 MOVE R15 R4 - 0x7C280A00, // 0075 CALL R10 5 - 0x7C200400, // 0076 CALL R8 2 - 0x8820010E, // 0077 GETMBR R8 R0 K14 - 0x8C201115, // 0078 GETMET R8 R8 K21 - 0x5C280200, // 0079 MOVE R10 R1 - 0x4C2C0000, // 007A LDNIL R11 - 0x7C200600, // 007B CALL R8 3 - 0x70020034, // 007C JMP #00B2 - 0x4C180000, // 007D LDNIL R6 - 0x1C180A06, // 007E EQ R6 R5 R6 - 0x741A0003, // 007F JMPT R6 #0084 - 0x88180B07, // 0080 GETMBR R6 R5 K7 - 0x541E0007, // 0081 LDINT R7 8 - 0x20180C07, // 0082 NE R6 R6 R7 - 0x781A0008, // 0083 JMPF R6 #008D - 0x8C180117, // 0084 GETMET R6 R0 K23 - 0x60200018, // 0085 GETGBL R8 G24 - 0x58240018, // 0086 LDCONST R9 K24 - 0x5C280600, // 0087 MOVE R10 R3 - 0x7C200400, // 0088 CALL R8 2 - 0x7C180400, // 0089 CALL R6 2 - 0x8C180104, // 008A GETMET R6 R0 K4 - 0x7C180200, // 008B CALL R6 1 - 0x80000C00, // 008C RET 0 - 0x88180B19, // 008D GETMBR R6 R5 K25 - 0x781A0008, // 008E JMPF R6 #0098 - 0x8C180113, // 008F GETMET R6 R0 K19 - 0x60200018, // 0090 GETGBL R8 G24 - 0x5824001A, // 0091 LDCONST R9 K26 - 0x5C280200, // 0092 MOVE R10 R1 - 0x5C2C0600, // 0093 MOVE R11 R3 - 0x5C300800, // 0094 MOVE R12 R4 - 0x7C200800, // 0095 CALL R8 4 - 0x7C180400, // 0096 CALL R6 2 - 0x70020007, // 0097 JMP #00A0 - 0x8C180113, // 0098 GETMET R6 R0 K19 - 0x60200018, // 0099 GETGBL R8 G24 - 0x5824001B, // 009A LDCONST R9 K27 - 0x5C280200, // 009B MOVE R10 R1 - 0x5C2C0600, // 009C MOVE R11 R3 - 0x5C300800, // 009D MOVE R12 R4 - 0x7C200800, // 009E CALL R8 4 - 0x7C180400, // 009F CALL R6 2 - 0x8C18011C, // 00A0 GETMET R6 R0 K28 - 0x5C200600, // 00A1 MOVE R8 R3 - 0x7C180400, // 00A2 CALL R6 2 - 0x4C1C0000, // 00A3 LDNIL R7 - 0x201C0C07, // 00A4 NE R7 R6 R7 - 0x781E0004, // 00A5 JMPF R7 #00AB - 0x881C010E, // 00A6 GETMBR R7 R0 K14 - 0x8C1C0F15, // 00A7 GETMET R7 R7 K21 - 0x5C240200, // 00A8 MOVE R9 R1 - 0x5C280C00, // 00A9 MOVE R10 R6 - 0x7C1C0600, // 00AA CALL R7 3 - 0x8C1C011D, // 00AB GETMET R7 R0 K29 - 0x60240018, // 00AC GETGBL R9 G24 - 0x5828001E, // 00AD LDCONST R10 K30 - 0x5C2C0200, // 00AE MOVE R11 R1 - 0x7C240400, // 00AF CALL R9 2 - 0x5C280600, // 00B0 MOVE R10 R3 - 0x7C1C0600, // 00B1 CALL R7 3 - 0x70020004, // 00B2 JMP #00B8 - 0x8C0C011F, // 00B3 GETMET R3 R0 K31 - 0x5C140200, // 00B4 MOVE R5 R1 - 0x88180120, // 00B5 GETMBR R6 R0 K32 - 0x841C0000, // 00B6 CLOSURE R7 P0 - 0x7C0C0800, // 00B7 CALL R3 4 - 0xA0000000, // 00B8 CLOSE R0 - 0x80000000, // 00B9 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ - be_nested_proto( - 15, /* nstack */ - 4, /* 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(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(value), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(has_dangerous), - /* K7 */ be_nested_str_weak(expr), - /* K8 */ be_nested_str_weak(error), - /* K9 */ be_nested_str_weak(Expression_X20_X27_X25s_X27_X20cannot_X20be_X20used_X20in_X20computed_X20expressions_X2E_X20This_X20creates_X20a_X20new_X20instance_X20at_X20each_X20evaluation_X2E_X20Use_X20either_X3A_X0A_X20_X20set_X20var_name_X20_X3D_X20_X25s_X28_X29_X20_X20_X23_X20Single_X20function_X20call_X0A_X20_X20set_X20computed_X20_X3D_X20_X28existing_var_X20_X2B_X201_X29_X20_X2F_X202_X20_X20_X23_X20Computation_X20with_X20existing_X20values), - /* K10 */ be_nested_str_weak(skip_statement), - /* K11 */ be_nested_str_weak(ExpressionResult), - /* K12 */ be_nested_str_weak(literal), - /* K13 */ be_nested_str_weak(nil), - /* K14 */ be_nested_str_weak(combine), - /* K15 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* 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 - 0x7416003A, // 0007 JMPT R5 #0043 - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x20180A06, // 000B NE R6 R5 R6 - 0x781A0033, // 000C JMPF R6 #0041 - 0x88180B03, // 000D GETMBR R6 R5 K3 - 0x541E0008, // 000E LDINT R7 9 - 0x1C180C07, // 000F EQ R6 R6 R7 - 0x741A0003, // 0010 JMPT R6 #0015 - 0x88180B03, // 0011 GETMBR R6 R5 K3 - 0x541E0009, // 0012 LDINT R7 10 - 0x1C180C07, // 0013 EQ R6 R6 R7 - 0x781A002B, // 0014 JMPF R6 #0041 - 0x88180B04, // 0015 GETMBR R6 R5 K4 - 0x8C1C0105, // 0016 GETMET R7 R0 K5 - 0x7C1C0200, // 0017 CALL R7 1 - 0x8C1C0100, // 0018 GETMET R7 R0 K0 - 0x5C240200, // 0019 MOVE R9 R1 - 0x50280000, // 001A LDBOOL R10 0 0 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C1C0800, // 001C CALL R7 4 - 0x88200906, // 001D GETMBR R8 R4 K6 - 0x74220001, // 001E JMPT R8 #0021 - 0x88200F06, // 001F GETMBR R8 R7 K6 - 0x78220012, // 0020 JMPF R8 #0034 - 0x88200906, // 0021 GETMBR R8 R4 K6 - 0x78220001, // 0022 JMPF R8 #0025 - 0x88200907, // 0023 GETMBR R8 R4 K7 - 0x70020000, // 0024 JMP #0026 - 0x88200F07, // 0025 GETMBR R8 R7 K7 - 0x8C240108, // 0026 GETMET R9 R0 K8 - 0x602C0018, // 0027 GETGBL R11 G24 - 0x58300009, // 0028 LDCONST R12 K9 - 0x5C341000, // 0029 MOVE R13 R8 - 0x5C381000, // 002A MOVE R14 R8 - 0x7C2C0600, // 002B CALL R11 3 - 0x7C240400, // 002C CALL R9 2 - 0x8C24010A, // 002D GETMET R9 R0 K10 - 0x7C240200, // 002E CALL R9 1 - 0x8824010B, // 002F GETMBR R9 R0 K11 - 0x8C24130C, // 0030 GETMET R9 R9 K12 - 0x582C000D, // 0031 LDCONST R11 K13 - 0x7C240400, // 0032 CALL R9 2 - 0x80041200, // 0033 RET 1 R9 - 0x8820010B, // 0034 GETMBR R8 R0 K11 - 0x8C20110E, // 0035 GETMET R8 R8 K14 - 0x60280018, // 0036 GETGBL R10 G24 - 0x582C000F, // 0037 LDCONST R11 K15 - 0x88300907, // 0038 GETMBR R12 R4 K7 - 0x5C340C00, // 0039 MOVE R13 R6 - 0x88380F07, // 003A GETMBR R14 R7 K7 - 0x7C280800, // 003B CALL R10 4 - 0x5C2C0800, // 003C MOVE R11 R4 - 0x5C300E00, // 003D MOVE R12 R7 - 0x7C200800, // 003E CALL R8 4 - 0x5C101000, // 003F MOVE R4 R8 - 0x70020000, // 0040 JMP #0042 - 0x70020000, // 0041 JMP #0043 - 0x7001FFC1, // 0042 JMP #0005 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X28_X27), - }), - be_str_weak(expect_left_paren), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0017, // 0006 LDINT R3 24 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: collect_inline_comment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(_X20_X20), - /* K3 */ be_nested_str_weak(value), - /* K4 */ be_nested_str_weak(next), - /* K5 */ be_nested_str_weak(), - }), - be_str_weak(collect_inline_comment), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* 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 - 0x540E0024, // 0006 LDINT R3 37 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0004, // 0008 JMPF R2 #000E - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0x000A0402, // 000A ADD R2 K2 R2 - 0x8C0C0104, // 000B GETMET R3 R0 K4 - 0x7C0C0200, // 000C CALL R3 1 - 0x80040400, // 000D RET 1 R2 - 0x80060A00, // 000E RET 1 K5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _create_instance_for_validation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(get), - /* K2 */ be_nested_str_weak(instance), - }), - be_str_weak(_create_instance_for_validation), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0001, // 0006 JMPF R3 #0009 - 0x880C0502, // 0007 GETMBR R3 R2 K2 - 0x70020000, // 0008 JMP #000A - 0x4C0C0000, // 0009 LDNIL R3 - 0x80040600, // 000A RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_value_provider_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* 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(symbol_table), - /* K1 */ be_nested_str_weak(symbol_exists), - /* K2 */ be_nested_str_weak(error), - /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X20instance_X2E_X20Only_X20value_X20provider_X20instances_X20_X28like_X20oscillators_X29_X20and_X20animation_X20instances_X20can_X20be_X20restarted_X2E), - /* K7 */ 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), - &be_const_str_solidified, - ( &(const binstruction[65]) { /* code */ - 0xA8020030, // 0000 EXBLK 0 #0032 - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x8C0C0701, // 0002 GETMET R3 R3 K1 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x740E0009, // 0005 JMPT R3 #0010 - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180003, // 0008 LDCONST R6 K3 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x7C140600, // 000B CALL R5 3 - 0x7C0C0400, // 000C CALL R3 2 - 0x500C0000, // 000D LDBOOL R3 0 0 - 0xA8040001, // 000E EXBLK 1 1 - 0x80040600, // 000F RET 1 R3 - 0x880C0100, // 0010 GETMBR R3 R0 K0 - 0x8C0C0704, // 0011 GETMET R3 R3 K4 - 0x5C140200, // 0012 MOVE R5 R1 - 0x7C0C0400, // 0013 CALL R3 2 - 0x4C100000, // 0014 LDNIL R4 - 0x20100604, // 0015 NE R4 R3 R4 - 0x78120015, // 0016 JMPF R4 #002D - 0x88100705, // 0017 GETMBR R4 R3 K5 - 0x54160006, // 0018 LDINT R5 7 - 0x1C100805, // 0019 EQ R4 R4 R5 - 0x74120003, // 001A JMPT R4 #001F - 0x88100705, // 001B GETMBR R4 R3 K5 - 0x54160008, // 001C LDINT R5 9 - 0x1C100805, // 001D EQ R4 R4 R5 - 0x78120003, // 001E JMPF R4 #0023 - 0x50100200, // 001F LDBOOL R4 1 0 - 0xA8040001, // 0020 EXBLK 1 1 - 0x80040800, // 0021 RET 1 R4 - 0x70020009, // 0022 JMP #002D - 0x8C100102, // 0023 GETMET R4 R0 K2 - 0x60180018, // 0024 GETGBL R6 G24 - 0x581C0006, // 0025 LDCONST R7 K6 - 0x5C200200, // 0026 MOVE R8 R1 - 0x5C240400, // 0027 MOVE R9 R2 - 0x7C180600, // 0028 CALL R6 3 - 0x7C100400, // 0029 CALL R4 2 - 0x50100000, // 002A LDBOOL R4 0 0 - 0xA8040001, // 002B EXBLK 1 1 - 0x80040800, // 002C RET 1 R4 - 0x50100200, // 002D LDBOOL R4 1 0 - 0xA8040001, // 002E EXBLK 1 1 - 0x80040800, // 002F RET 1 R4 - 0xA8040001, // 0030 EXBLK 1 1 - 0x7002000D, // 0031 JMP #0040 - 0xAC0C0002, // 0032 CATCH R3 0 2 - 0x7002000A, // 0033 JMP #003F - 0x8C140102, // 0034 GETMET R5 R0 K2 - 0x601C0018, // 0035 GETGBL R7 G24 - 0x58200007, // 0036 LDCONST R8 K7 - 0x5C240200, // 0037 MOVE R9 R1 - 0x5C280400, // 0038 MOVE R10 R2 - 0x5C2C0800, // 0039 MOVE R11 R4 - 0x7C1C0800, // 003A CALL R7 4 - 0x7C140400, // 003B CALL R5 2 - 0x50140000, // 003C LDBOOL R5 0 0 - 0x80040A00, // 003D RET 1 R5 - 0x70020000, // 003E JMP #0040 - 0xB0080000, // 003F RAISE 2 R0 R0 - 0x80000000, // 0040 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_default_strip_initialization -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(strip_initialized), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), - /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), - /* K4 */ be_nested_str_weak(), - }), - be_str_weak(generate_default_strip_initialization), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x7C040400, // 0005 CALL R1 2 - 0x8C040101, // 0006 GETMET R1 R0 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x7C040400, // 0008 CALL R1 2 - 0x8C040101, // 0009 GETMET R1 R0 K1 - 0x580C0004, // 000A LDCONST R3 K4 - 0x7C040400, // 000B CALL R1 2 - 0x50040200, // 000C LDBOOL R1 1 0 - 0x90020001, // 000D SETMBR R0 K0 R1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(get), - }), - be_str_weak(_validate_animation_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x80040600, // 0006 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(next), - }), - be_str_weak(skip_statement), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x7406000C, // 0002 JMPT R1 #0010 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C080202, // 0006 EQ R2 R1 R2 - 0x740A0003, // 0007 JMPT R2 #000C - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0x540E0022, // 0009 LDINT R3 35 - 0x1C080403, // 000A EQ R2 R2 R3 - 0x780A0000, // 000B JMPF R2 #000D - 0x70020002, // 000C JMP #0010 - 0x8C080103, // 000D GETMET R2 R0 K3 - 0x7C080200, // 000E CALL R2 1 - 0x7001FFEF, // 000F JMP #0000 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_repeat_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_repeat_statement_fluent, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(1), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(forever), - /* K7 */ be_nested_str_weak(_X2D1), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), - /* K10 */ be_nested_str_weak(expect_keyword), - /* K11 */ be_nested_str_weak(times), - /* K12 */ be_nested_str_weak(expr), - /* K13 */ be_nested_str_weak(expect_left_brace), - /* K14 */ be_nested_str_weak(add), - /* K15 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2Esequence_manager_X28engine_X2C_X20_X25s_X29), - /* K16 */ be_nested_str_weak(get_indent), - /* K17 */ be_nested_str_weak(indent_level), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(at_end), - /* K20 */ be_nested_str_weak(check_right_brace), - /* K21 */ be_nested_str_weak(process_sequence_statement), - /* K22 */ be_nested_str_weak(expect_right_brace), - /* K23 */ be_nested_str_weak(_X25s_X29), - }), - be_str_weak(process_repeat_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[60]) { /* 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 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E0009, // 0007 JMPF R3 #0012 - 0x880C0503, // 0008 GETMBR R3 R2 K3 - 0x1C0C0704, // 0009 EQ R3 R3 K4 - 0x780E0006, // 000A JMPF R3 #0012 - 0x880C0505, // 000B GETMBR R3 R2 K5 - 0x1C0C0706, // 000C EQ R3 R3 K6 - 0x780E0003, // 000D JMPF R3 #0012 - 0x8C0C0100, // 000E GETMET R3 R0 K0 - 0x7C0C0200, // 000F CALL R3 1 - 0x58040007, // 0010 LDCONST R1 K7 - 0x70020006, // 0011 JMP #0019 - 0x8C0C0108, // 0012 GETMET R3 R0 K8 - 0x88140109, // 0013 GETMBR R5 R0 K9 - 0x7C0C0400, // 0014 CALL R3 2 - 0x8C10010A, // 0015 GETMET R4 R0 K10 - 0x5818000B, // 0016 LDCONST R6 K11 - 0x7C100400, // 0017 CALL R4 2 - 0x8804070C, // 0018 GETMBR R1 R3 K12 - 0x8C0C010D, // 0019 GETMET R3 R0 K13 - 0x7C0C0200, // 001A CALL R3 1 - 0x8C0C010E, // 001B GETMET R3 R0 K14 - 0x60140018, // 001C GETGBL R5 G24 - 0x5818000F, // 001D LDCONST R6 K15 - 0x8C1C0110, // 001E GETMET R7 R0 K16 - 0x7C1C0200, // 001F CALL R7 1 - 0x5C200200, // 0020 MOVE R8 R1 - 0x7C140600, // 0021 CALL R5 3 - 0x7C0C0400, // 0022 CALL R3 2 - 0x880C0111, // 0023 GETMBR R3 R0 K17 - 0x000C0712, // 0024 ADD R3 R3 K18 - 0x90022203, // 0025 SETMBR R0 K17 R3 - 0x8C0C0113, // 0026 GETMET R3 R0 K19 - 0x7C0C0200, // 0027 CALL R3 1 - 0x740E0005, // 0028 JMPT R3 #002F - 0x8C0C0114, // 0029 GETMET R3 R0 K20 - 0x7C0C0200, // 002A CALL R3 1 - 0x740E0002, // 002B JMPT R3 #002F - 0x8C0C0115, // 002C GETMET R3 R0 K21 - 0x7C0C0200, // 002D CALL R3 1 - 0x7001FFF6, // 002E JMP #0026 - 0x8C0C0116, // 002F GETMET R3 R0 K22 - 0x7C0C0200, // 0030 CALL R3 1 - 0x8C0C010E, // 0031 GETMET R3 R0 K14 - 0x60140018, // 0032 GETGBL R5 G24 - 0x58180017, // 0033 LDCONST R6 K23 - 0x8C1C0110, // 0034 GETMET R7 R0 K16 - 0x7C1C0200, // 0035 CALL R7 1 - 0x7C140400, // 0036 CALL R5 2 - 0x7C0C0400, // 0037 CALL R3 2 - 0x880C0111, // 0038 GETMBR R3 R0 K17 - 0x040C0712, // 0039 SUB R3 R3 K18 - 0x90022203, // 003A SETMBR R0 K17 R3 - 0x80000000, // 003B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_multiplicative_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ - be_nested_proto( - 15, /* nstack */ - 4, /* 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(process_unary_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(value), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(has_dangerous), - /* K7 */ be_nested_str_weak(expr), - /* K8 */ be_nested_str_weak(error), - /* K9 */ be_nested_str_weak(Expression_X20_X27_X25s_X27_X20cannot_X20be_X20used_X20in_X20computed_X20expressions_X2E_X20This_X20creates_X20a_X20new_X20instance_X20at_X20each_X20evaluation_X2E_X20Use_X20either_X3A_X0A_X20_X20set_X20var_name_X20_X3D_X20_X25s_X28_X29_X20_X20_X23_X20Single_X20function_X20call_X0A_X20_X20set_X20computed_X20_X3D_X20_X28existing_var_X20_X2B_X201_X29_X20_X2F_X202_X20_X20_X23_X20Computation_X20with_X20existing_X20values), - /* K10 */ be_nested_str_weak(skip_statement), - /* K11 */ be_nested_str_weak(ExpressionResult), - /* K12 */ be_nested_str_weak(literal), - /* K13 */ be_nested_str_weak(nil), - /* K14 */ be_nested_str_weak(combine), - /* K15 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_multiplicative_expression), - &be_const_str_solidified, - ( &(const binstruction[68]) { /* 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 - 0x7416003A, // 0007 JMPT R5 #0043 - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x20180A06, // 000B NE R6 R5 R6 - 0x781A0033, // 000C JMPF R6 #0041 - 0x88180B03, // 000D GETMBR R6 R5 K3 - 0x541E000A, // 000E LDINT R7 11 - 0x1C180C07, // 000F EQ R6 R6 R7 - 0x741A0003, // 0010 JMPT R6 #0015 - 0x88180B03, // 0011 GETMBR R6 R5 K3 - 0x541E000B, // 0012 LDINT R7 12 - 0x1C180C07, // 0013 EQ R6 R6 R7 - 0x781A002B, // 0014 JMPF R6 #0041 - 0x88180B04, // 0015 GETMBR R6 R5 K4 - 0x8C1C0105, // 0016 GETMET R7 R0 K5 - 0x7C1C0200, // 0017 CALL R7 1 - 0x8C1C0100, // 0018 GETMET R7 R0 K0 - 0x5C240200, // 0019 MOVE R9 R1 - 0x50280000, // 001A LDBOOL R10 0 0 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C1C0800, // 001C CALL R7 4 - 0x88200906, // 001D GETMBR R8 R4 K6 - 0x74220001, // 001E JMPT R8 #0021 - 0x88200F06, // 001F GETMBR R8 R7 K6 - 0x78220012, // 0020 JMPF R8 #0034 - 0x88200906, // 0021 GETMBR R8 R4 K6 - 0x78220001, // 0022 JMPF R8 #0025 - 0x88200907, // 0023 GETMBR R8 R4 K7 - 0x70020000, // 0024 JMP #0026 - 0x88200F07, // 0025 GETMBR R8 R7 K7 - 0x8C240108, // 0026 GETMET R9 R0 K8 - 0x602C0018, // 0027 GETGBL R11 G24 - 0x58300009, // 0028 LDCONST R12 K9 - 0x5C341000, // 0029 MOVE R13 R8 - 0x5C381000, // 002A MOVE R14 R8 - 0x7C2C0600, // 002B CALL R11 3 - 0x7C240400, // 002C CALL R9 2 - 0x8C24010A, // 002D GETMET R9 R0 K10 - 0x7C240200, // 002E CALL R9 1 - 0x8824010B, // 002F GETMBR R9 R0 K11 - 0x8C24130C, // 0030 GETMET R9 R9 K12 - 0x582C000D, // 0031 LDCONST R11 K13 - 0x7C240400, // 0032 CALL R9 2 - 0x80041200, // 0033 RET 1 R9 - 0x8820010B, // 0034 GETMBR R8 R0 K11 - 0x8C20110E, // 0035 GETMET R8 R8 K14 - 0x60280018, // 0036 GETGBL R10 G24 - 0x582C000F, // 0037 LDCONST R11 K15 - 0x88300907, // 0038 GETMBR R12 R4 K7 - 0x5C340C00, // 0039 MOVE R13 R6 - 0x88380F07, // 003A GETMBR R14 R7 K7 - 0x7C280800, // 003B CALL R10 4 - 0x5C2C0800, // 003C MOVE R11 R4 - 0x5C300E00, // 003D MOVE R12 R7 - 0x7C200800, // 003E CALL R8 4 - 0x5C101000, // 003F MOVE R4 R8 - 0x70020000, // 0040 JMP #0042 - 0x70020000, // 0041 JMP #0043 - 0x7001FFC1, // 0042 JMP #0005 - 0x80040800, // 0043 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), - }), - be_str_weak(expect_left_bracket), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001B, // 0006 LDINT R3 28 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _determine_symbol_return_type -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__determine_symbol_return_type, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* 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(type), - /* K1 */ be_const_int(2), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(3), - }), - be_str_weak(_determine_symbol_return_type), - &be_const_str_solidified, - ( &(const binstruction[71]) { /* code */ - 0x88080300, // 0000 GETMBR R2 R1 K0 - 0x540E0008, // 0001 LDINT R3 9 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x740A0003, // 0003 JMPT R2 #0008 - 0x88080300, // 0004 GETMBR R2 R1 K0 - 0x540E0007, // 0005 LDINT R3 8 - 0x1C080403, // 0006 EQ R2 R2 R3 - 0x780A0002, // 0007 JMPF R2 #000B - 0x540A0008, // 0008 LDINT R2 9 - 0x80040400, // 0009 RET 1 R2 - 0x7002003A, // 000A JMP #0046 - 0x88080300, // 000B GETMBR R2 R1 K0 - 0x540E000A, // 000C LDINT R3 11 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x740A0003, // 000E JMPT R2 #0013 - 0x88080300, // 000F GETMBR R2 R1 K0 - 0x540E0009, // 0010 LDINT R3 10 - 0x1C080403, // 0011 EQ R2 R2 R3 - 0x780A0002, // 0012 JMPF R2 #0016 - 0x540A000A, // 0013 LDINT R2 11 - 0x80040400, // 0014 RET 1 R2 - 0x7002002F, // 0015 JMP #0046 - 0x88080300, // 0016 GETMBR R2 R1 K0 - 0x540E0006, // 0017 LDINT R3 7 - 0x1C080403, // 0018 EQ R2 R2 R3 - 0x740A0003, // 0019 JMPT R2 #001E - 0x88080300, // 001A GETMBR R2 R1 K0 - 0x540E0005, // 001B LDINT R3 6 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0002, // 001D JMPF R2 #0021 - 0x540A0006, // 001E LDINT R2 7 - 0x80040400, // 001F RET 1 R2 - 0x70020024, // 0020 JMP #0046 - 0x88080300, // 0021 GETMBR R2 R1 K0 - 0x1C080501, // 0022 EQ R2 R2 K1 - 0x740A0002, // 0023 JMPT R2 #0027 - 0x88080300, // 0024 GETMBR R2 R1 K0 - 0x1C080502, // 0025 EQ R2 R2 K2 - 0x780A0001, // 0026 JMPF R2 #0029 - 0x80060200, // 0027 RET 1 K1 - 0x7002001C, // 0028 JMP #0046 - 0x88080300, // 0029 GETMBR R2 R1 K0 - 0x1C080503, // 002A EQ R2 R2 K3 - 0x780A0002, // 002B JMPF R2 #002F - 0x540A000B, // 002C LDINT R2 12 - 0x80040400, // 002D RET 1 R2 - 0x70020016, // 002E JMP #0046 - 0x88080300, // 002F GETMBR R2 R1 K0 - 0x540E000B, // 0030 LDINT R3 12 - 0x1C080403, // 0031 EQ R2 R2 R3 - 0x780A0002, // 0032 JMPF R2 #0036 - 0x540A000B, // 0033 LDINT R2 12 - 0x80040400, // 0034 RET 1 R2 - 0x7002000F, // 0035 JMP #0046 - 0x88080300, // 0036 GETMBR R2 R1 K0 - 0x540E000C, // 0037 LDINT R3 13 - 0x1C080403, // 0038 EQ R2 R2 R3 - 0x780A0002, // 0039 JMPF R2 #003D - 0x540A000C, // 003A LDINT R2 13 - 0x80040400, // 003B RET 1 R2 - 0x70020008, // 003C JMP #0046 - 0x88080300, // 003D GETMBR R2 R1 K0 - 0x540E000D, // 003E LDINT R3 14 - 0x1C080403, // 003F EQ R2 R2 R3 - 0x780A0002, // 0040 JMPF R2 #0044 - 0x540A000D, // 0041 LDINT R2 14 - 0x80040400, // 0042 RET 1 R2 - 0x70020001, // 0043 JMP #0046 - 0x540A000B, // 0044 LDINT R2 12 - 0x80040400, // 0045 RET 1 R2 - 0x80000000, // 0046 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_restart_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(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(process_restart_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* 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 - 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: can_use_as_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(color), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(startup), - /* K4 */ be_nested_str_weak(shutdown), - /* K5 */ be_nested_str_weak(button_press), - /* K6 */ be_nested_str_weak(button_hold), - /* K7 */ be_nested_str_weak(motion_detected), - /* K8 */ be_nested_str_weak(brightness_change), - /* K9 */ be_nested_str_weak(timer), - /* K10 */ be_nested_str_weak(time), - /* K11 */ be_nested_str_weak(sound_peak), - /* K12 */ be_nested_str_weak(network_message), - /* K13 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(can_use_as_identifier), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x400C0502, // 0004 CONNECT R3 R2 K2 - 0x400C0503, // 0005 CONNECT R3 R2 K3 - 0x400C0504, // 0006 CONNECT R3 R2 K4 - 0x400C0505, // 0007 CONNECT R3 R2 K5 - 0x400C0506, // 0008 CONNECT R3 R2 K6 - 0x400C0507, // 0009 CONNECT R3 R2 K7 - 0x400C0508, // 000A CONNECT R3 R2 K8 - 0x400C0509, // 000B CONNECT R3 R2 K9 - 0x400C050A, // 000C CONNECT R3 R2 K10 - 0x400C050B, // 000D CONNECT R3 R2 K11 - 0x400C050C, // 000E CONNECT R3 R2 K12 - 0x600C0010, // 000F GETGBL R3 G16 - 0x5C100400, // 0010 MOVE R4 R2 - 0x7C0C0200, // 0011 CALL R3 1 - 0xA8020007, // 0012 EXBLK 0 #001B - 0x5C100600, // 0013 MOVE R4 R3 - 0x7C100000, // 0014 CALL R4 0 - 0x1C140204, // 0015 EQ R5 R1 R4 - 0x78160002, // 0016 JMPF R5 #001A - 0x50140200, // 0017 LDBOOL R5 1 0 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040A00, // 0019 RET 1 R5 - 0x7001FFF7, // 001A JMP #0013 - 0x580C000D, // 001B LDCONST R3 K13 - 0xAC0C0200, // 001C CATCH R3 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x500C0000, // 001E LDBOOL R3 0 0 - 0x80040600, // 001F RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_single_parameter -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ - be_nested_proto( - 12, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(has_param), - /* K3 */ be_nested_str_weak(current), - /* K4 */ be_nested_str_weak(line), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), - /* K8 */ be_nested_str_weak(dsl_compilation_error), - }), - be_str_weak(_validate_single_parameter), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0xA802001F, // 0000 EXBLK 0 #0021 - 0xA4120000, // 0001 IMPORT R4 K0 - 0x4C140000, // 0002 LDNIL R5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160019, // 0004 JMPF R5 #001F - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x58200002, // 0007 LDCONST R8 K2 - 0x7C140600, // 0008 CALL R5 3 - 0x78160014, // 0009 JMPF R5 #001F - 0x8C140702, // 000A GETMET R5 R3 K2 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x7C140400, // 000C CALL R5 2 - 0x74160010, // 000D JMPT R5 #001F - 0x8C140103, // 000E GETMET R5 R0 K3 - 0x7C140200, // 000F CALL R5 1 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140103, // 0013 GETMET R5 R0 K3 - 0x7C140200, // 0014 CALL R5 1 - 0x88140B04, // 0015 GETMBR R5 R5 K4 - 0x70020000, // 0016 JMP #0018 - 0x58140005, // 0017 LDCONST R5 K5 - 0x8C180106, // 0018 GETMET R6 R0 K6 - 0x60200018, // 0019 GETGBL R8 G24 - 0x58240007, // 001A LDCONST R9 K7 - 0x5C280200, // 001B MOVE R10 R1 - 0x5C2C0400, // 001C MOVE R11 R2 - 0x7C200600, // 001D CALL R8 3 - 0x7C180400, // 001E CALL R6 2 - 0xA8040001, // 001F EXBLK 1 1 - 0x70020008, // 0020 JMP #002A - 0x58100008, // 0021 LDCONST R4 K8 - 0xAC100202, // 0022 CATCH R4 1 2 - 0x70020001, // 0023 JMP #0026 - 0xB0040805, // 0024 RAISE 1 R4 R5 - 0x70020003, // 0025 JMP #002A - 0xAC100002, // 0026 CATCH R4 0 2 - 0x70020000, // 0027 JMP #0029 - 0x70020000, // 0028 JMP #002A - 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20function_X20name), - /* K9 */ be_nested_str_weak(nil), - /* K10 */ be_nested_str_weak(symbol_table), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(process_function_arguments), - /* K13 */ be_nested_str_weak(_X25s_X28_X25s_X29), - /* K14 */ be_nested_str_weak(get_reference), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(CONTEXT_EXPRESSION), - /* K18 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K19 */ be_nested_str_weak(engine), - /* K20 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K21 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K22 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - }), - be_str_weak(process_function_call), - &be_const_str_solidified, - ( &(const binstruction[92]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x4C100000, // 0003 LDNIL R4 - 0x20100404, // 0004 NE R4 R2 R4 - 0x78120009, // 0005 JMPF R4 #0010 - 0x88100502, // 0006 GETMBR R4 R2 K2 - 0x1C100903, // 0007 EQ R4 R4 K3 - 0x74120002, // 0008 JMPT R4 #000C - 0x88100502, // 0009 GETMBR R4 R2 K2 - 0x1C100904, // 000A EQ R4 R4 K4 - 0x78120003, // 000B JMPF R4 #0010 - 0x880C0505, // 000C GETMBR R3 R2 K5 - 0x8C100106, // 000D GETMET R4 R0 K6 - 0x7C100200, // 000E CALL R4 1 - 0x70020003, // 000F JMP #0014 - 0x8C100107, // 0010 GETMET R4 R0 K7 - 0x58180008, // 0011 LDCONST R6 K8 - 0x7C100400, // 0012 CALL R4 2 - 0x80061200, // 0013 RET 1 K9 - 0x8810010A, // 0014 GETMBR R4 R0 K10 - 0x8C10090B, // 0015 GETMET R4 R4 K11 - 0x5C180600, // 0016 MOVE R6 R3 - 0x7C100400, // 0017 CALL R4 2 - 0x4C140000, // 0018 LDNIL R5 - 0x20140805, // 0019 NE R5 R4 R5 - 0x7816000D, // 001A JMPF R5 #0029 - 0x88140902, // 001B GETMBR R5 R4 K2 - 0x541A0003, // 001C LDINT R6 4 - 0x1C140A06, // 001D EQ R5 R5 R6 - 0x78160009, // 001E JMPF R5 #0029 - 0x8C14010C, // 001F GETMET R5 R0 K12 - 0x501C0000, // 0020 LDBOOL R7 0 0 - 0x7C140400, // 0021 CALL R5 2 - 0x60180018, // 0022 GETGBL R6 G24 - 0x581C000D, // 0023 LDCONST R7 K13 - 0x8C20090E, // 0024 GETMET R8 R4 K14 - 0x7C200200, // 0025 CALL R8 1 - 0x5C240A00, // 0026 MOVE R9 R5 - 0x7C180600, // 0027 CALL R6 3 - 0x80040C00, // 0028 RET 1 R6 - 0x1C14070F, // 0029 EQ R5 R3 K15 - 0x78160008, // 002A JMPF R5 #0034 - 0x8C14010C, // 002B GETMET R5 R0 K12 - 0x501C0000, // 002C LDBOOL R7 0 0 - 0x7C140400, // 002D CALL R5 2 - 0x8C180110, // 002E GETMET R6 R0 K16 - 0x5C200A00, // 002F MOVE R8 R5 - 0x88240111, // 0030 GETMBR R9 R0 K17 - 0x58280001, // 0031 LDCONST R10 K1 - 0x7C180800, // 0032 CALL R6 4 - 0x80040C00, // 0033 RET 1 R6 - 0x8C14010C, // 0034 GETMET R5 R0 K12 - 0x501C0000, // 0035 LDBOOL R7 0 0 - 0x7C140400, // 0036 CALL R5 2 - 0x4C180000, // 0037 LDNIL R6 - 0x20180806, // 0038 NE R6 R4 R6 - 0x781A0012, // 0039 JMPF R6 #004D - 0x88180902, // 003A GETMBR R6 R4 K2 - 0x541E000D, // 003B LDINT R7 14 - 0x1C180C07, // 003C EQ R6 R6 R7 - 0x781A000E, // 003D JMPF R6 #004D - 0x20180B01, // 003E NE R6 R5 K1 - 0x781A0004, // 003F JMPF R6 #0045 - 0x60180018, // 0040 GETGBL R6 G24 - 0x581C0012, // 0041 LDCONST R7 K18 - 0x5C200A00, // 0042 MOVE R8 R5 - 0x7C180400, // 0043 CALL R6 2 - 0x70020000, // 0044 JMP #0046 - 0x58180013, // 0045 LDCONST R6 K19 - 0x601C0018, // 0046 GETGBL R7 G24 - 0x58200014, // 0047 LDCONST R8 K20 - 0x5C240600, // 0048 MOVE R9 R3 - 0x5C280C00, // 0049 MOVE R10 R6 - 0x7C1C0600, // 004A CALL R7 3 - 0x80040E00, // 004B RET 1 R7 - 0x7002000D, // 004C JMP #005B - 0x20180B01, // 004D NE R6 R5 K1 - 0x781A0006, // 004E JMPF R6 #0056 - 0x60180018, // 004F GETGBL R6 G24 - 0x581C0015, // 0050 LDCONST R7 K21 - 0x5C200600, // 0051 MOVE R8 R3 - 0x5C240A00, // 0052 MOVE R9 R5 - 0x7C180600, // 0053 CALL R6 3 - 0x80040C00, // 0054 RET 1 R6 - 0x70020004, // 0055 JMP #005B - 0x60180018, // 0056 GETGBL R6 G24 - 0x581C0016, // 0057 LDCONST R7 K22 - 0x5C200600, // 0058 MOVE R8 R3 - 0x7C180400, // 0059 CALL R6 2 - 0x80040C00, // 005A RET 1 R6 - 0x80000000, // 005B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_percentage_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* 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[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(value), - /* K3 */ be_nested_str_weak(next), - /* K4 */ be_const_int(0), - /* K5 */ be_const_int(2), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20percentage_X20value), - }), - be_str_weak(process_percentage_value), - &be_const_str_solidified, - ( &(const binstruction[47]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0013, // 0004 JMPF R2 #0019 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0005, // 0006 LDINT R3 6 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A000F, // 0008 JMPF R2 #0019 - 0x88080302, // 0009 GETMBR R2 R1 K2 - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x600C000A, // 000C GETGBL R3 G10 - 0x5411FFFD, // 000D LDINT R4 -2 - 0x40120804, // 000E CONNECT R4 K4 R4 - 0x94100404, // 000F GETIDX R4 R2 R4 - 0x7C0C0200, // 0010 CALL R3 1 - 0x60100009, // 0011 GETGBL R4 G9 - 0x541600FE, // 0012 LDINT R5 255 - 0x08140605, // 0013 MUL R5 R3 R5 - 0x541A0063, // 0014 LDINT R6 100 - 0x0C140A06, // 0015 DIV R5 R5 R6 - 0x7C100200, // 0016 CALL R4 1 - 0x80040800, // 0017 RET 1 R4 - 0x70020014, // 0018 JMP #002E - 0x4C080000, // 0019 LDNIL R2 - 0x20080202, // 001A NE R2 R1 R2 - 0x780A000C, // 001B JMPF R2 #0029 - 0x88080301, // 001C GETMBR R2 R1 K1 - 0x1C080505, // 001D EQ R2 R2 K5 - 0x780A0009, // 001E JMPF R2 #0029 - 0x88080302, // 001F GETMBR R2 R1 K2 - 0x8C0C0103, // 0020 GETMET R3 R0 K3 - 0x7C0C0200, // 0021 CALL R3 1 - 0x600C0009, // 0022 GETGBL R3 G9 - 0x6010000A, // 0023 GETGBL R4 G10 - 0x5C140400, // 0024 MOVE R5 R2 - 0x7C100200, // 0025 CALL R4 1 - 0x7C0C0200, // 0026 CALL R3 1 - 0x80040600, // 0027 RET 1 R3 - 0x70020004, // 0028 JMP #002E - 0x8C080106, // 0029 GETMET R2 R0 K6 - 0x58100007, // 002A LDCONST R4 K7 - 0x7C080400, // 002B CALL R2 2 - 0x540A00FE, // 002C LDINT R2 255 - 0x80040400, // 002D RET 1 R2 - 0x80000000, // 002E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), - }), - be_str_weak(expect_right_bracket), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001C, // 0006 LDINT R3 29 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_add, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(output), - /* K1 */ be_nested_str_weak(push), - }), - be_str_weak(add), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_keyword -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(value), - /* K4 */ be_nested_str_weak(next), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), - }), - be_str_weak(expect_keyword), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x200C0403, // 0003 NE R3 R2 R3 - 0x780E0008, // 0004 JMPF R3 #000E - 0x880C0501, // 0005 GETMBR R3 R2 K1 - 0x1C0C0702, // 0006 EQ R3 R3 K2 - 0x780E0005, // 0007 JMPF R3 #000E - 0x880C0503, // 0008 GETMBR R3 R2 K3 - 0x1C0C0601, // 0009 EQ R3 R3 R1 - 0x780E0002, // 000A JMPF R3 #000E - 0x8C0C0104, // 000B GETMET R3 R0 K4 - 0x7C0C0200, // 000C CALL R3 1 - 0x70020005, // 000D JMP #0014 - 0x8C0C0105, // 000E GETMET R3 R0 K5 - 0x60140018, // 000F GETGBL R5 G24 - 0x58180006, // 0010 LDCONST R6 K6 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x7C140400, // 0012 CALL R5 2 - 0x7C0C0400, // 0013 CALL R3 2 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_sequence ********************************************************************/ @@ -9114,9 +7700,1062 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: expect_right_bracket ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_init, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), + }), + be_str_weak(expect_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001C, // 0006 LDINT R3 29 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_typed_parameter_to_symbol_table +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__add_typed_parameter_to_symbol_table, /* name */ + be_nested_proto( + 8, /* 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(color), + /* K1 */ be_nested_str_weak(create_color), + /* K2 */ be_nested_str_weak(palette), + /* K3 */ be_nested_str_weak(create_palette), + /* K4 */ be_nested_str_weak(animation), + /* K5 */ be_nested_str_weak(create_animation), + /* K6 */ be_nested_str_weak(value_provider), + /* K7 */ be_nested_str_weak(create_value_provider), + /* K8 */ be_nested_str_weak(create_variable), + }), + be_str_weak(_add_typed_parameter_to_symbol_table), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x1C100700, // 0000 EQ R4 R3 K0 + 0x78120004, // 0001 JMPF R4 #0007 + 0x8C100301, // 0002 GETMET R4 R1 K1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x4C1C0000, // 0004 LDNIL R7 + 0x7C100600, // 0005 CALL R4 3 + 0x70020017, // 0006 JMP #001F + 0x1C100702, // 0007 EQ R4 R3 K2 + 0x78120004, // 0008 JMPF R4 #000E + 0x8C100303, // 0009 GETMET R4 R1 K3 + 0x5C180400, // 000A MOVE R6 R2 + 0x4C1C0000, // 000B LDNIL R7 + 0x7C100600, // 000C CALL R4 3 + 0x70020010, // 000D JMP #001F + 0x1C100704, // 000E EQ R4 R3 K4 + 0x78120004, // 000F JMPF R4 #0015 + 0x8C100305, // 0010 GETMET R4 R1 K5 + 0x5C180400, // 0011 MOVE R6 R2 + 0x4C1C0000, // 0012 LDNIL R7 + 0x7C100600, // 0013 CALL R4 3 + 0x70020009, // 0014 JMP #001F + 0x1C100706, // 0015 EQ R4 R3 K6 + 0x78120004, // 0016 JMPF R4 #001C + 0x8C100307, // 0017 GETMET R4 R1 K7 + 0x5C180400, // 0018 MOVE R6 R2 + 0x4C1C0000, // 0019 LDNIL R7 + 0x7C100600, // 001A CALL R4 3 + 0x70020002, // 001B JMP #001F + 0x8C100308, // 001C GETMET R4 R1 K8 + 0x5C180400, // 001D MOVE R6 R2 + 0x7C100400, // 001E CALL R4 2 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_nested_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 4), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(push), + /* K1 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x5C1C0000, // 0004 MOVE R7 R0 + 0x5C200200, // 0005 MOVE R8 R1 + 0x5C240400, // 0006 MOVE R9 R2 + 0x7C140800, // 0007 CALL R5 4 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80000000, // 0009 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[32]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20function_X20name), + /* K9 */ be_nested_str_weak(nil), + /* K10 */ be_nested_str_weak(symbol_table), + /* K11 */ be_nested_str_weak(get), + /* K12 */ be_nested_str_weak(process_function_arguments), + /* K13 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K14 */ be_nested_str_weak(get_reference), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(process_log_call), + /* K17 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K18 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K19 */ be_nested_str_weak(engine), + /* K20 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K21 */ be_nested_str_weak(_validate_animation_factory_exists), + /* K22 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K23 */ be_nested_str_weak(skip_function_arguments), + /* K24 */ be_nested_str_weak(expect_left_paren), + /* K25 */ be_nested_str_weak(_process_parameters_core), + /* K26 */ be_nested_str_weak(generic), + /* K27 */ be_nested_str_weak(expect_right_paren), + /* K28 */ be_nested_str_weak(_X0A), + /* K29 */ be_nested_str_weak(stop_iteration), + /* K30 */ be_nested_str_weak(_X28def_X20_X28engine_X29_X0A_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29_X0A_X25s_X0A_X20_X20return_X20provider_X0Aend_X29_X28engine_X29), + /* K31 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_nested_function_call), + &be_const_str_solidified, + ( &(const binstruction[143]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58080001, // 0002 LDCONST R2 K1 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0203, // 0004 NE R3 R1 R3 + 0x780E0009, // 0005 JMPF R3 #0010 + 0x880C0302, // 0006 GETMBR R3 R1 K2 + 0x1C0C0703, // 0007 EQ R3 R3 K3 + 0x740E0002, // 0008 JMPT R3 #000C + 0x880C0302, // 0009 GETMBR R3 R1 K2 + 0x1C0C0704, // 000A EQ R3 R3 K4 + 0x780E0003, // 000B JMPF R3 #0010 + 0x88080305, // 000C GETMBR R2 R1 K5 + 0x8C0C0106, // 000D GETMET R3 R0 K6 + 0x7C0C0200, // 000E CALL R3 1 + 0x70020003, // 000F JMP #0014 + 0x8C0C0107, // 0010 GETMET R3 R0 K7 + 0x58140008, // 0011 LDCONST R5 K8 + 0x7C0C0400, // 0012 CALL R3 2 + 0x80061200, // 0013 RET 1 K9 + 0x880C010A, // 0014 GETMBR R3 R0 K10 + 0x8C0C070B, // 0015 GETMET R3 R3 K11 + 0x5C140400, // 0016 MOVE R5 R2 + 0x7C0C0400, // 0017 CALL R3 2 + 0x4C100000, // 0018 LDNIL R4 + 0x20100604, // 0019 NE R4 R3 R4 + 0x7812000D, // 001A JMPF R4 #0029 + 0x88100702, // 001B GETMBR R4 R3 K2 + 0x54160003, // 001C LDINT R5 4 + 0x1C100805, // 001D EQ R4 R4 R5 + 0x78120009, // 001E JMPF R4 #0029 + 0x8C10010C, // 001F GETMET R4 R0 K12 + 0x50180200, // 0020 LDBOOL R6 1 0 + 0x7C100400, // 0021 CALL R4 2 + 0x60140018, // 0022 GETGBL R5 G24 + 0x5818000D, // 0023 LDCONST R6 K13 + 0x8C1C070E, // 0024 GETMET R7 R3 K14 + 0x7C1C0200, // 0025 CALL R7 1 + 0x5C200800, // 0026 MOVE R8 R4 + 0x7C140600, // 0027 CALL R5 3 + 0x80040A00, // 0028 RET 1 R5 + 0x1C10050F, // 0029 EQ R4 R2 K15 + 0x78120008, // 002A JMPF R4 #0034 + 0x8C10010C, // 002B GETMET R4 R0 K12 + 0x50180200, // 002C LDBOOL R6 1 0 + 0x7C100400, // 002D CALL R4 2 + 0x8C140110, // 002E GETMET R5 R0 K16 + 0x5C1C0800, // 002F MOVE R7 R4 + 0x88200111, // 0030 GETMBR R8 R0 K17 + 0x58240001, // 0031 LDCONST R9 K1 + 0x7C140800, // 0032 CALL R5 4 + 0x80040A00, // 0033 RET 1 R5 + 0x4C100000, // 0034 LDNIL R4 + 0x20100604, // 0035 NE R4 R3 R4 + 0x78120015, // 0036 JMPF R4 #004D + 0x88100702, // 0037 GETMBR R4 R3 K2 + 0x5416000D, // 0038 LDINT R5 14 + 0x1C100805, // 0039 EQ R4 R4 R5 + 0x78120011, // 003A JMPF R4 #004D + 0x8C10010C, // 003B GETMET R4 R0 K12 + 0x50180200, // 003C LDBOOL R6 1 0 + 0x7C100400, // 003D CALL R4 2 + 0x20140901, // 003E NE R5 R4 K1 + 0x78160004, // 003F JMPF R5 #0045 + 0x60140018, // 0040 GETGBL R5 G24 + 0x58180012, // 0041 LDCONST R6 K18 + 0x5C1C0800, // 0042 MOVE R7 R4 + 0x7C140400, // 0043 CALL R5 2 + 0x70020000, // 0044 JMP #0046 + 0x58140013, // 0045 LDCONST R5 K19 + 0x60180018, // 0046 GETGBL R6 G24 + 0x581C0014, // 0047 LDCONST R7 K20 + 0x5C200400, // 0048 MOVE R8 R2 + 0x5C240A00, // 0049 MOVE R9 R5 + 0x7C180600, // 004A CALL R6 3 + 0x80040C00, // 004B RET 1 R6 + 0x70020040, // 004C JMP #008E + 0x8C100115, // 004D GETMET R4 R0 K21 + 0x5C180400, // 004E MOVE R6 R2 + 0x7C100400, // 004F CALL R4 2 + 0x74120008, // 0050 JMPT R4 #005A + 0x8C100107, // 0051 GETMET R4 R0 K7 + 0x60180018, // 0052 GETGBL R6 G24 + 0x581C0016, // 0053 LDCONST R7 K22 + 0x5C200400, // 0054 MOVE R8 R2 + 0x7C180400, // 0055 CALL R6 2 + 0x7C100400, // 0056 CALL R4 2 + 0x8C100117, // 0057 GETMET R4 R0 K23 + 0x7C100200, // 0058 CALL R4 1 + 0x80061200, // 0059 RET 1 K9 + 0x8C100118, // 005A GETMET R4 R0 K24 + 0x7C100200, // 005B CALL R4 1 + 0x60100012, // 005C GETGBL R4 G18 + 0x7C100000, // 005D CALL R4 0 + 0x84140000, // 005E CLOSURE R5 P0 + 0x8C180119, // 005F GETMET R6 R0 K25 + 0x5C200400, // 0060 MOVE R8 R2 + 0x5824001A, // 0061 LDCONST R9 K26 + 0x5C280A00, // 0062 MOVE R10 R5 + 0x7C180800, // 0063 CALL R6 4 + 0x8C18011B, // 0064 GETMET R6 R0 K27 + 0x7C180200, // 0065 CALL R6 1 + 0x6018000C, // 0066 GETGBL R6 G12 + 0x5C1C0800, // 0067 MOVE R7 R4 + 0x7C180200, // 0068 CALL R6 1 + 0x24180D04, // 0069 GT R6 R6 K4 + 0x781A001B, // 006A JMPF R6 #0087 + 0x58180001, // 006B LDCONST R6 K1 + 0x601C0010, // 006C GETGBL R7 G16 + 0x6020000C, // 006D GETGBL R8 G12 + 0x5C240800, // 006E MOVE R9 R4 + 0x7C200200, // 006F CALL R8 1 + 0x04201103, // 0070 SUB R8 R8 K3 + 0x40220808, // 0071 CONNECT R8 K4 R8 + 0x7C1C0200, // 0072 CALL R7 1 + 0xA8020007, // 0073 EXBLK 0 #007C + 0x5C200E00, // 0074 MOVE R8 R7 + 0x7C200000, // 0075 CALL R8 0 + 0x24241104, // 0076 GT R9 R8 K4 + 0x78260000, // 0077 JMPF R9 #0079 + 0x00180D1C, // 0078 ADD R6 R6 K28 + 0x94240808, // 0079 GETIDX R9 R4 R8 + 0x00180C09, // 007A ADD R6 R6 R9 + 0x7001FFF7, // 007B JMP #0074 + 0x581C001D, // 007C LDCONST R7 K29 + 0xAC1C0200, // 007D CATCH R7 1 0 + 0xB0080000, // 007E RAISE 2 R0 R0 + 0x601C0018, // 007F GETGBL R7 G24 + 0x5820001E, // 0080 LDCONST R8 K30 + 0x5C240400, // 0081 MOVE R9 R2 + 0x5C280C00, // 0082 MOVE R10 R6 + 0x7C1C0600, // 0083 CALL R7 3 + 0xA0000000, // 0084 CLOSE R0 + 0x80040E00, // 0085 RET 1 R7 + 0x70020005, // 0086 JMP #008D + 0x60180018, // 0087 GETGBL R6 G24 + 0x581C001F, // 0088 LDCONST R7 K31 + 0x5C200400, // 0089 MOVE R8 R2 + 0x7C180400, // 008A CALL R6 2 + 0xA0000000, // 008B CLOSE R0 + 0x80040C00, // 008C RET 1 R6 + 0xA0100000, // 008D CLOSE R4 + 0x80000000, // 008E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: join_output +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(concat), + /* K2 */ be_nested_str_weak(_X0A), + }), + be_str_weak(join_output), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x00040302, // 0004 ADD R1 R1 K2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), + }), + be_str_weak(expect_left_brace), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E0019, // 0006 LDINT R3 26 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_external_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_external_function, /* 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[21]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(value), + /* K5 */ be_nested_str_weak(function), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27function_X27_X20keyword_X20after_X20_X27extern_X27_X2E_X20Use_X3A_X20extern_X20function_X20function_name), + /* K8 */ be_nested_str_weak(skip_statement), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name_X20after_X20_X27extern_X20function_X27_X2E_X20Use_X3A_X20extern_X20function_X20function_name), + /* K11 */ be_nested_str_weak(collect_inline_comment), + /* K12 */ be_nested_str_weak(symbol_table), + /* K13 */ be_nested_str_weak(contains), + /* K14 */ be_nested_str_weak(get), + /* K15 */ be_nested_str_weak(validate_user_name), + /* K16 */ be_nested_str_weak(extern_X20function), + /* K17 */ be_nested_str_weak(register_user_function), + /* K18 */ be_nested_str_weak(add), + /* K19 */ be_nested_str_weak(_X23_X20External_X20function_X20declaration_X3A_X20_X25s_X25s), + /* K20 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X22_X25s_X22_X2C_X20_X25s_X29), + }), + be_str_weak(process_external_function), + &be_const_str_solidified, + ( &(const binstruction[81]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x740A0005, // 0006 JMPT R2 #000D + 0x88080302, // 0007 GETMBR R2 R1 K2 + 0x20080503, // 0008 NE R2 R2 K3 + 0x740A0002, // 0009 JMPT R2 #000D + 0x88080304, // 000A GETMBR R2 R1 K4 + 0x20080505, // 000B NE R2 R2 K5 + 0x780A0005, // 000C JMPF R2 #0013 + 0x8C080106, // 000D GETMET R2 R0 K6 + 0x58100007, // 000E LDCONST R4 K7 + 0x7C080400, // 000F CALL R2 2 + 0x8C080108, // 0010 GETMET R2 R0 K8 + 0x7C080200, // 0011 CALL R2 1 + 0x80000400, // 0012 RET 0 + 0x8C080100, // 0013 GETMET R2 R0 K0 + 0x7C080200, // 0014 CALL R2 1 + 0x8C080101, // 0015 GETMET R2 R0 K1 + 0x7C080200, // 0016 CALL R2 1 + 0x5C040400, // 0017 MOVE R1 R2 + 0x4C080000, // 0018 LDNIL R2 + 0x1C080202, // 0019 EQ R2 R1 R2 + 0x740A0002, // 001A JMPT R2 #001E + 0x88080302, // 001B GETMBR R2 R1 K2 + 0x20080509, // 001C NE R2 R2 K9 + 0x780A0005, // 001D JMPF R2 #0024 + 0x8C080106, // 001E GETMET R2 R0 K6 + 0x5810000A, // 001F LDCONST R4 K10 + 0x7C080400, // 0020 CALL R2 2 + 0x8C080108, // 0021 GETMET R2 R0 K8 + 0x7C080200, // 0022 CALL R2 1 + 0x80000400, // 0023 RET 0 + 0x88080304, // 0024 GETMBR R2 R1 K4 + 0x8C0C0100, // 0025 GETMET R3 R0 K0 + 0x7C0C0200, // 0026 CALL R3 1 + 0x8C0C010B, // 0027 GETMET R3 R0 K11 + 0x7C0C0200, // 0028 CALL R3 1 + 0x8810010C, // 0029 GETMBR R4 R0 K12 + 0x8C10090D, // 002A GETMET R4 R4 K13 + 0x5C180400, // 002B MOVE R6 R2 + 0x7C100400, // 002C CALL R4 2 + 0x7812000B, // 002D JMPF R4 #003A + 0x8810010C, // 002E GETMBR R4 R0 K12 + 0x8C10090E, // 002F GETMET R4 R4 K14 + 0x5C180400, // 0030 MOVE R6 R2 + 0x7C100400, // 0031 CALL R4 2 + 0x4C140000, // 0032 LDNIL R5 + 0x20140805, // 0033 NE R5 R4 R5 + 0x78160004, // 0034 JMPF R5 #003A + 0x88140902, // 0035 GETMBR R5 R4 K2 + 0x541A0004, // 0036 LDINT R6 5 + 0x1C140A06, // 0037 EQ R5 R5 R6 + 0x78160000, // 0038 JMPF R5 #003A + 0x80000A00, // 0039 RET 0 + 0x8C10010F, // 003A GETMET R4 R0 K15 + 0x5C180400, // 003B MOVE R6 R2 + 0x581C0010, // 003C LDCONST R7 K16 + 0x7C100600, // 003D CALL R4 3 + 0x8810010C, // 003E GETMBR R4 R0 K12 + 0x8C100911, // 003F GETMET R4 R4 K17 + 0x5C180400, // 0040 MOVE R6 R2 + 0x7C100400, // 0041 CALL R4 2 + 0x8C100112, // 0042 GETMET R4 R0 K18 + 0x60180018, // 0043 GETGBL R6 G24 + 0x581C0013, // 0044 LDCONST R7 K19 + 0x5C200400, // 0045 MOVE R8 R2 + 0x5C240600, // 0046 MOVE R9 R3 + 0x7C180600, // 0047 CALL R6 3 + 0x7C100400, // 0048 CALL R4 2 + 0x8C100112, // 0049 GETMET R4 R0 K18 + 0x60180018, // 004A GETGBL R6 G24 + 0x581C0014, // 004B LDCONST R7 K20 + 0x5C200400, // 004C MOVE R8 R2 + 0x5C240400, // 004D MOVE R9 R2 + 0x7C180600, // 004E CALL R6 3 + 0x7C100400, // 004F CALL R4 2 + 0x80000000, // 0050 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_warnings +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_warnings, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(warnings), + }), + be_str_weak(get_warnings), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_event_handler +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(line), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(_X7B_X7D), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(process_event_parameters), + /* K8 */ be_nested_str_weak(expect_colon), + /* K9 */ be_nested_str_weak(event_handler__X25s__X25s), + /* K10 */ be_nested_str_weak(add), + /* K11 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), + /* K12 */ be_nested_str_weak(value), + /* K13 */ be_nested_str_weak(interrupt), + /* K14 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), + /* K15 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), + /* K16 */ be_nested_str_weak(process_value), + /* K17 */ be_nested_str_weak(CONTEXT_ANIMATION), + /* K18 */ be_nested_str_weak(_X20_X20engine_X2Eadd_X28_X25s_X29), + /* K19 */ be_nested_str_weak(expr), + /* K20 */ be_nested_str_weak(end), + /* K21 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), + }), + be_str_weak(process_event_handler), + &be_const_str_solidified, + ( &(const binstruction[91]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x4C0C0000, // 0006 LDNIL R3 + 0x20080403, // 0007 NE R2 R2 R3 + 0x780A0003, // 0008 JMPF R2 #000D + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x88080503, // 000B GETMBR R2 R2 K3 + 0x70020000, // 000C JMP #000E + 0x58080004, // 000D LDCONST R2 K4 + 0x580C0005, // 000E LDCONST R3 K5 + 0x8C100102, // 000F GETMET R4 R0 K2 + 0x7C100200, // 0010 CALL R4 1 + 0x4C140000, // 0011 LDNIL R5 + 0x20100805, // 0012 NE R4 R4 R5 + 0x78120008, // 0013 JMPF R4 #001D + 0x8C100102, // 0014 GETMET R4 R0 K2 + 0x7C100200, // 0015 CALL R4 1 + 0x88100906, // 0016 GETMBR R4 R4 K6 + 0x54160017, // 0017 LDINT R5 24 + 0x1C100805, // 0018 EQ R4 R4 R5 + 0x78120002, // 0019 JMPF R4 #001D + 0x8C100107, // 001A GETMET R4 R0 K7 + 0x7C100200, // 001B CALL R4 1 + 0x5C0C0800, // 001C MOVE R3 R4 + 0x8C100108, // 001D GETMET R4 R0 K8 + 0x7C100200, // 001E CALL R4 1 + 0x60100018, // 001F GETGBL R4 G24 + 0x58140009, // 0020 LDCONST R5 K9 + 0x5C180200, // 0021 MOVE R6 R1 + 0x5C1C0400, // 0022 MOVE R7 R2 + 0x7C100600, // 0023 CALL R4 3 + 0x8C14010A, // 0024 GETMET R5 R0 K10 + 0x601C0018, // 0025 GETGBL R7 G24 + 0x5820000B, // 0026 LDCONST R8 K11 + 0x5C240800, // 0027 MOVE R9 R4 + 0x7C1C0400, // 0028 CALL R7 2 + 0x7C140400, // 0029 CALL R5 2 + 0x8C140102, // 002A GETMET R5 R0 K2 + 0x7C140200, // 002B CALL R5 1 + 0x4C180000, // 002C LDNIL R6 + 0x20180A06, // 002D NE R6 R5 R6 + 0x781A001F, // 002E JMPF R6 #004F + 0x88180B06, // 002F GETMBR R6 R5 K6 + 0x1C180D04, // 0030 EQ R6 R6 K4 + 0x781A0013, // 0031 JMPF R6 #0046 + 0x88180B0C, // 0032 GETMBR R6 R5 K12 + 0x1C180D0D, // 0033 EQ R6 R6 K13 + 0x781A0010, // 0034 JMPF R6 #0046 + 0x8C180100, // 0035 GETMET R6 R0 K0 + 0x7C180200, // 0036 CALL R6 1 + 0x8C180101, // 0037 GETMET R6 R0 K1 + 0x7C180200, // 0038 CALL R6 1 + 0x1C1C0D02, // 0039 EQ R7 R6 K2 + 0x781E0003, // 003A JMPF R7 #003F + 0x8C1C010A, // 003B GETMET R7 R0 K10 + 0x5824000E, // 003C LDCONST R9 K14 + 0x7C1C0400, // 003D CALL R7 2 + 0x70020005, // 003E JMP #0045 + 0x8C1C010A, // 003F GETMET R7 R0 K10 + 0x60240018, // 0040 GETGBL R9 G24 + 0x5828000F, // 0041 LDCONST R10 K15 + 0x5C2C0C00, // 0042 MOVE R11 R6 + 0x7C240400, // 0043 CALL R9 2 + 0x7C1C0400, // 0044 CALL R7 2 + 0x70020008, // 0045 JMP #004F + 0x8C180110, // 0046 GETMET R6 R0 K16 + 0x88200111, // 0047 GETMBR R8 R0 K17 + 0x7C180400, // 0048 CALL R6 2 + 0x8C1C010A, // 0049 GETMET R7 R0 K10 + 0x60240018, // 004A GETGBL R9 G24 + 0x58280012, // 004B LDCONST R10 K18 + 0x882C0D13, // 004C GETMBR R11 R6 K19 + 0x7C240400, // 004D CALL R9 2 + 0x7C1C0400, // 004E CALL R7 2 + 0x8C18010A, // 004F GETMET R6 R0 K10 + 0x58200014, // 0050 LDCONST R8 K20 + 0x7C180400, // 0051 CALL R6 2 + 0x8C18010A, // 0052 GETMET R6 R0 K10 + 0x60200018, // 0053 GETGBL R8 G24 + 0x58240015, // 0054 LDCONST R9 K21 + 0x5C280200, // 0055 MOVE R10 R1 + 0x5C2C0800, // 0056 MOVE R11 R4 + 0x5C300600, // 0057 MOVE R12 R3 + 0x7C200800, // 0058 CALL R8 4 + 0x7C180400, // 0059 CALL R6 2 + 0x80000000, // 005A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_if_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_if_statement_fluent, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(process_additive_expression), + /* K2 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K3 */ be_nested_str_weak(expect_left_brace), + /* K4 */ be_nested_str_weak(has_dynamic), + /* K5 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20bool_X28_X25s_X29_X20end), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(bool_X28_X25s_X29), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2Esequence_manager_X28engine_X2C_X20_X25s_X29), + /* K10 */ be_nested_str_weak(get_indent), + /* K11 */ be_nested_str_weak(indent_level), + /* K12 */ be_const_int(1), + /* K13 */ be_nested_str_weak(at_end), + /* K14 */ be_nested_str_weak(check_right_brace), + /* K15 */ be_nested_str_weak(process_sequence_statement), + /* K16 */ be_nested_str_weak(expect_right_brace), + /* K17 */ be_nested_str_weak(_X25s_X29), + }), + be_str_weak(process_if_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[56]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x50100200, // 0004 LDBOOL R4 1 0 + 0x50140000, // 0005 LDBOOL R5 0 0 + 0x7C040800, // 0006 CALL R1 4 + 0x8C080103, // 0007 GETMET R2 R0 K3 + 0x7C080200, // 0008 CALL R2 1 + 0x4C080000, // 0009 LDNIL R2 + 0x880C0304, // 000A GETMBR R3 R1 K4 + 0x780E0005, // 000B JMPF R3 #0012 + 0x600C0018, // 000C GETGBL R3 G24 + 0x58100005, // 000D LDCONST R4 K5 + 0x88140306, // 000E GETMBR R5 R1 K6 + 0x7C0C0400, // 000F CALL R3 2 + 0x5C080600, // 0010 MOVE R2 R3 + 0x70020004, // 0011 JMP #0017 + 0x600C0018, // 0012 GETGBL R3 G24 + 0x58100007, // 0013 LDCONST R4 K7 + 0x88140306, // 0014 GETMBR R5 R1 K6 + 0x7C0C0400, // 0015 CALL R3 2 + 0x5C080600, // 0016 MOVE R2 R3 + 0x8C0C0108, // 0017 GETMET R3 R0 K8 + 0x60140018, // 0018 GETGBL R5 G24 + 0x58180009, // 0019 LDCONST R6 K9 + 0x8C1C010A, // 001A GETMET R7 R0 K10 + 0x7C1C0200, // 001B CALL R7 1 + 0x5C200400, // 001C MOVE R8 R2 + 0x7C140600, // 001D CALL R5 3 + 0x7C0C0400, // 001E CALL R3 2 + 0x880C010B, // 001F GETMBR R3 R0 K11 + 0x000C070C, // 0020 ADD R3 R3 K12 + 0x90021603, // 0021 SETMBR R0 K11 R3 + 0x8C0C010D, // 0022 GETMET R3 R0 K13 + 0x7C0C0200, // 0023 CALL R3 1 + 0x740E0005, // 0024 JMPT R3 #002B + 0x8C0C010E, // 0025 GETMET R3 R0 K14 + 0x7C0C0200, // 0026 CALL R3 1 + 0x740E0002, // 0027 JMPT R3 #002B + 0x8C0C010F, // 0028 GETMET R3 R0 K15 + 0x7C0C0200, // 0029 CALL R3 1 + 0x7001FFF6, // 002A JMP #0022 + 0x8C0C0110, // 002B GETMET R3 R0 K16 + 0x7C0C0200, // 002C CALL R3 1 + 0x8C0C0108, // 002D GETMET R3 R0 K8 + 0x60140018, // 002E GETGBL R5 G24 + 0x58180011, // 002F LDCONST R6 K17 + 0x8C1C010A, // 0030 GETMET R7 R0 K10 + 0x7C1C0200, // 0031 CALL R7 1 + 0x7C140400, // 0032 CALL R5 2 + 0x7C0C0400, // 0033 CALL R3 2 + 0x880C010B, // 0034 GETMBR R3 R0 K11 + 0x040C070C, // 0035 SUB R3 R3 K12 + 0x90021603, // 0036 SETMBR R0 K11 R3 + 0x80000000, // 0037 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* 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(has_warnings), + /* K7 */ be_nested_str_weak(_X23_X20Compilation_X20warnings_X3A), + /* K8 */ be_nested_str_weak(warnings), + /* K9 */ be_nested_str_weak(_X23_X20_X25s), + /* K10 */ be_nested_str_weak(stop_iteration), + /* K11 */ be_nested_str_weak(join_output), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile), + &be_const_str_solidified, + ( &(const binstruction[57]) { /* code */ + 0xA802002C, // 0000 EXBLK 0 #002E + 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 + 0x8C040106, // 000F GETMET R1 R0 K6 + 0x7C040200, // 0010 CALL R1 1 + 0x78060015, // 0011 JMPF R1 #0028 + 0x8C040100, // 0012 GETMET R1 R0 K0 + 0x580C0002, // 0013 LDCONST R3 K2 + 0x7C040400, // 0014 CALL R1 2 + 0x8C040100, // 0015 GETMET R1 R0 K0 + 0x580C0007, // 0016 LDCONST R3 K7 + 0x7C040400, // 0017 CALL R1 2 + 0x60040010, // 0018 GETGBL R1 G16 + 0x88080108, // 0019 GETMBR R2 R0 K8 + 0x7C040200, // 001A CALL R1 1 + 0xA8020008, // 001B EXBLK 0 #0025 + 0x5C080200, // 001C MOVE R2 R1 + 0x7C080000, // 001D CALL R2 0 + 0x8C0C0100, // 001E GETMET R3 R0 K0 + 0x60140018, // 001F GETGBL R5 G24 + 0x58180009, // 0020 LDCONST R6 K9 + 0x5C1C0400, // 0021 MOVE R7 R2 + 0x7C140400, // 0022 CALL R5 2 + 0x7C0C0400, // 0023 CALL R3 2 + 0x7001FFF6, // 0024 JMP #001C + 0x5804000A, // 0025 LDCONST R1 K10 + 0xAC040200, // 0026 CATCH R1 1 0 + 0xB0080000, // 0027 RAISE 2 R0 R0 + 0x8C04010B, // 0028 GETMET R1 R0 K11 + 0x7C040200, // 0029 CALL R1 1 + 0xA8040001, // 002A EXBLK 1 1 + 0x80040200, // 002B RET 1 R1 + 0xA8040001, // 002C EXBLK 1 1 + 0x70020009, // 002D JMP #0038 + 0xAC040002, // 002E CATCH R1 0 2 + 0x70020006, // 002F JMP #0037 + 0x8C0C010C, // 0030 GETMET R3 R0 K12 + 0x60140018, // 0031 GETGBL R5 G24 + 0x5818000D, // 0032 LDCONST R6 K13 + 0x5C1C0400, // 0033 MOVE R7 R2 + 0x7C140400, // 0034 CALL R5 2 + 0x7C0C0400, // 0035 CALL R3 2 + 0x70020000, // 0036 JMP #0038 + 0xB0080000, // 0037 RAISE 2 R0 R0 + 0x80000000, // 0038 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_object_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* 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(symbol_table), + /* K1 */ be_nested_str_weak(symbol_exists), + /* K2 */ be_nested_str_weak(error), + /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), + }), + be_str_weak(_validate_object_reference), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0008, // 0004 JMPT R3 #000E + 0x8C0C0102, // 0005 GETMET R3 R0 K2 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180003, // 0007 LDCONST R6 K3 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x5C200400, // 0009 MOVE R8 R2 + 0x7C140600, // 000A CALL R5 3 + 0x7C0C0400, // 000B CALL R3 2 + 0x500C0000, // 000C LDBOOL R3 0 0 + 0x80040600, // 000D RET 1 R3 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[18]) { /* constants */ + /* K0 */ be_nested_str_weak(process_additive_expression), + /* K1 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K2 */ be_nested_str_weak(CONTEXT_PROPERTY), + /* K3 */ be_nested_str_weak(needs_closure), + /* K4 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K5 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(ExpressionResult), + /* K8 */ be_nested_str_weak(function_call), + /* K9 */ be_nested_str_weak(return_type), + /* K10 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20def_X20_X28engine_X29_X20return_X20_X25s_X20end_X29), + /* K11 */ be_nested_str_weak(has_computation), + /* K12 */ be_nested_str_weak(_unwrap_resolve), + /* K13 */ be_nested_str_weak(symbol_table), + /* K14 */ be_nested_str_weak(get), + /* K15 */ be_nested_str_weak(closure_value), + /* K16 */ be_nested_str_weak(type), + /* K17 */ be_nested_str_weak(instance), + }), + be_str_weak(process_value), + &be_const_str_solidified, + ( &(const binstruction[66]) { /* 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 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x1C0C0203, // 0006 EQ R3 R1 R3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0102, // 0008 GETMBR R3 R0 K2 + 0x1C0C0203, // 0009 EQ R3 R1 R3 + 0x780E0002, // 000A JMPF R3 #000E + 0x8C0C0503, // 000B GETMET R3 R2 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x740E0005, // 000D JMPT R3 #0014 + 0x880C0104, // 000E GETMBR R3 R0 K4 + 0x1C0C0203, // 000F EQ R3 R1 R3 + 0x780E002E, // 0010 JMPF R3 #0040 + 0x8C0C0503, // 0011 GETMET R3 R2 K3 + 0x7C0C0200, // 0012 CALL R3 1 + 0x780E002B, // 0013 JMPF R3 #0040 + 0x880C0104, // 0014 GETMBR R3 R0 K4 + 0x1C0C0203, // 0015 EQ R3 R1 R3 + 0x780E000A, // 0016 JMPF R3 #0022 + 0x600C0018, // 0017 GETGBL R3 G24 + 0x58100005, // 0018 LDCONST R4 K5 + 0x88140506, // 0019 GETMBR R5 R2 K6 + 0x7C0C0400, // 001A CALL R3 2 + 0x88100107, // 001B GETMBR R4 R0 K7 + 0x8C100908, // 001C GETMET R4 R4 K8 + 0x5C180600, // 001D MOVE R6 R3 + 0x881C0509, // 001E GETMBR R7 R2 K9 + 0x7C100600, // 001F CALL R4 3 + 0x80040800, // 0020 RET 1 R4 + 0x7002001C, // 0021 JMP #003F + 0x600C0018, // 0022 GETGBL R3 G24 + 0x5810000A, // 0023 LDCONST R4 K10 + 0x88140506, // 0024 GETMBR R5 R2 K6 + 0x7C0C0400, // 0025 CALL R3 2 + 0x88100509, // 0026 GETMBR R4 R2 K9 + 0x54160008, // 0027 LDINT R5 9 + 0x1C100805, // 0028 EQ R4 R4 R5 + 0x78120002, // 0029 JMPF R4 #002D + 0x8810050B, // 002A GETMBR R4 R2 K11 + 0x74120000, // 002B JMPT R4 #002D + 0x880C0506, // 002C GETMBR R3 R2 K6 + 0x8C10010C, // 002D GETMET R4 R0 K12 + 0x88180506, // 002E GETMBR R6 R2 K6 + 0x7C100400, // 002F CALL R4 2 + 0x4C140000, // 0030 LDNIL R5 + 0x20140805, // 0031 NE R5 R4 R5 + 0x78160000, // 0032 JMPF R5 #0034 + 0x5C0C0800, // 0033 MOVE R3 R4 + 0x8814010D, // 0034 GETMBR R5 R0 K13 + 0x8C140B0E, // 0035 GETMET R5 R5 K14 + 0x581C000F, // 0036 LDCONST R7 K15 + 0x7C140400, // 0037 CALL R5 2 + 0x88180107, // 0038 GETMBR R6 R0 K7 + 0x8C180D08, // 0039 GETMET R6 R6 K8 + 0x5C200600, // 003A MOVE R8 R3 + 0x88240B10, // 003B GETMBR R9 R5 K16 + 0x88280B11, // 003C GETMBR R10 R5 K17 + 0x7C180800, // 003D CALL R6 4 + 0x80040C00, // 003E RET 1 R6 + 0x70020000, // 003F JMP #0041 + 0x80040400, // 0040 RET 1 R2 + 0x80000000, // 0041 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -9126,45 +8765,1426 @@ be_local_closure(class_SimpleDSLTranspiler_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(pull_lexer), - /* K2 */ be_nested_str_weak(output), - /* K3 */ be_nested_str_weak(warnings), - /* K4 */ be_nested_str_weak(run_statements), - /* K5 */ be_nested_str_weak(strip_initialized), - /* K6 */ be_nested_str_weak(symbol_table), - /* K7 */ be_nested_str_weak(_symbol_table), - /* K8 */ be_nested_str_weak(indent_level), - /* K9 */ be_const_int(0), - /* K10 */ be_nested_str_weak(has_template_calls), - /* K11 */ be_nested_str_weak(template_animation_params), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get), }), - be_str_weak(init), + be_str_weak(_validate_animation_factory_exists), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x80040600, // 0006 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has_warnings +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_has_warnings, /* name */ + be_nested_proto( + 3, /* 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(warnings), + /* K1 */ be_const_int(0), + }), + be_str_weak(has_warnings), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x24040301, // 0003 GT R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: at_end +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ + be_nested_proto( + 3, /* 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(pull_lexer), + /* K1 */ be_nested_str_weak(at_end), + }), + be_str_weak(at_end), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_str_weak(at_end), + /* K5 */ be_const_int(0), + }), + be_str_weak(skip_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[36]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20040202, // 0003 NE R1 R1 R2 + 0x7806001D, // 0004 JMPF R1 #0023 + 0x8C040100, // 0005 GETMET R1 R0 K0 + 0x7C040200, // 0006 CALL R1 1 + 0x88040301, // 0007 GETMBR R1 R1 K1 + 0x540A0017, // 0008 LDINT R2 24 + 0x1C040202, // 0009 EQ R1 R1 R2 + 0x78060017, // 000A JMPF R1 #0023 + 0x8C040102, // 000B GETMET R1 R0 K2 + 0x7C040200, // 000C CALL R1 1 + 0x58040003, // 000D LDCONST R1 K3 + 0x8C080104, // 000E GETMET R2 R0 K4 + 0x7C080200, // 000F CALL R2 1 + 0x740A0011, // 0010 JMPT R2 #0023 + 0x24080305, // 0011 GT R2 R1 K5 + 0x780A000F, // 0012 JMPF R2 #0023 + 0x8C080100, // 0013 GETMET R2 R0 K0 + 0x7C080200, // 0014 CALL R2 1 + 0x880C0501, // 0015 GETMBR R3 R2 K1 + 0x54120017, // 0016 LDINT R4 24 + 0x1C0C0604, // 0017 EQ R3 R3 R4 + 0x780E0001, // 0018 JMPF R3 #001B + 0x00040303, // 0019 ADD R1 R1 K3 + 0x70020004, // 001A JMP #0020 + 0x880C0501, // 001B GETMBR R3 R2 K1 + 0x54120018, // 001C LDINT R4 25 + 0x1C0C0604, // 001D EQ R3 R3 R4 + 0x780E0000, // 001E JMPF R3 #0020 + 0x04040303, // 001F SUB R1 R1 K3 + 0x8C0C0102, // 0020 GETMET R3 R0 K2 + 0x7C0C0200, // 0021 CALL R3 1 + 0x7001FFEA, // 0022 JMP #000E + 0x80000000, // 0023 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: collect_inline_comment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(_X20_X20), + /* K3 */ be_nested_str_weak(value), + /* K4 */ be_nested_str_weak(next), + /* K5 */ be_nested_str_weak(), + }), + be_str_weak(collect_inline_comment), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* 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 + 0x540E0024, // 0006 LDINT R3 37 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0004, // 0008 JMPF R2 #000E + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0x000A0402, // 000A ADD R2 K2 R2 + 0x8C0C0104, // 000B GETMET R3 R0 K4 + 0x7C0C0200, // 000C CALL R3 1 + 0x80040400, // 000D RET 1 R2 + 0x80060A00, // 000E RET 1 K5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_comma +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* 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[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), + }), + be_str_weak(expect_comma), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001D, // 0006 LDINT R3 30 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_additive_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ + be_nested_proto( + 15, /* nstack */ + 4, /* 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(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(value), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(has_dangerous), + /* K7 */ be_nested_str_weak(expr), + /* K8 */ be_nested_str_weak(error), + /* K9 */ be_nested_str_weak(Expression_X20_X27_X25s_X27_X20cannot_X20be_X20used_X20in_X20computed_X20expressions_X2E_X20This_X20creates_X20a_X20new_X20instance_X20at_X20each_X20evaluation_X2E_X20Use_X20either_X3A_X0A_X20_X20set_X20var_name_X20_X3D_X20_X25s_X28_X29_X20_X20_X23_X20Single_X20function_X20call_X0A_X20_X20set_X20computed_X20_X3D_X20_X28existing_var_X20_X2B_X201_X29_X20_X2F_X202_X20_X20_X23_X20Computation_X20with_X20existing_X20values), + /* K10 */ be_nested_str_weak(skip_statement), + /* K11 */ be_nested_str_weak(ExpressionResult), + /* K12 */ be_nested_str_weak(literal), + /* K13 */ be_nested_str_weak(nil), + /* K14 */ be_nested_str_weak(combine), + /* K15 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + }), + be_str_weak(process_additive_expression), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* 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 + 0x7416003A, // 0007 JMPT R5 #0043 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A0033, // 000C JMPF R6 #0041 + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0x541E0008, // 000E LDINT R7 9 + 0x1C180C07, // 000F EQ R6 R6 R7 + 0x741A0003, // 0010 JMPT R6 #0015 + 0x88180B03, // 0011 GETMBR R6 R5 K3 + 0x541E0009, // 0012 LDINT R7 10 + 0x1C180C07, // 0013 EQ R6 R6 R7 + 0x781A002B, // 0014 JMPF R6 #0041 + 0x88180B04, // 0015 GETMBR R6 R5 K4 + 0x8C1C0105, // 0016 GETMET R7 R0 K5 + 0x7C1C0200, // 0017 CALL R7 1 + 0x8C1C0100, // 0018 GETMET R7 R0 K0 + 0x5C240200, // 0019 MOVE R9 R1 + 0x50280000, // 001A LDBOOL R10 0 0 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C1C0800, // 001C CALL R7 4 + 0x88200906, // 001D GETMBR R8 R4 K6 + 0x74220001, // 001E JMPT R8 #0021 + 0x88200F06, // 001F GETMBR R8 R7 K6 + 0x78220012, // 0020 JMPF R8 #0034 + 0x88200906, // 0021 GETMBR R8 R4 K6 + 0x78220001, // 0022 JMPF R8 #0025 + 0x88200907, // 0023 GETMBR R8 R4 K7 + 0x70020000, // 0024 JMP #0026 + 0x88200F07, // 0025 GETMBR R8 R7 K7 + 0x8C240108, // 0026 GETMET R9 R0 K8 + 0x602C0018, // 0027 GETGBL R11 G24 + 0x58300009, // 0028 LDCONST R12 K9 + 0x5C341000, // 0029 MOVE R13 R8 + 0x5C381000, // 002A MOVE R14 R8 + 0x7C2C0600, // 002B CALL R11 3 + 0x7C240400, // 002C CALL R9 2 + 0x8C24010A, // 002D GETMET R9 R0 K10 + 0x7C240200, // 002E CALL R9 1 + 0x8824010B, // 002F GETMBR R9 R0 K11 + 0x8C24130C, // 0030 GETMET R9 R9 K12 + 0x582C000D, // 0031 LDCONST R11 K13 + 0x7C240400, // 0032 CALL R9 2 + 0x80041200, // 0033 RET 1 R9 + 0x8820010B, // 0034 GETMBR R8 R0 K11 + 0x8C20110E, // 0035 GETMET R8 R8 K14 + 0x60280018, // 0036 GETGBL R10 G24 + 0x582C000F, // 0037 LDCONST R11 K15 + 0x88300907, // 0038 GETMBR R12 R4 K7 + 0x5C340C00, // 0039 MOVE R13 R6 + 0x88380F07, // 003A GETMBR R14 R7 K7 + 0x7C280800, // 003B CALL R10 4 + 0x5C2C0800, // 003C MOVE R11 R4 + 0x5C300E00, // 003D MOVE R12 R7 + 0x7C200800, // 003E CALL R8 4 + 0x5C101000, // 003F MOVE R4 R8 + 0x70020000, // 0040 JMP #0042 + 0x70020000, // 0041 JMP #0043 + 0x7001FFC1, // 0042 JMP #0005 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_template_parameter_name +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_template_parameter_name, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(error), + /* K3 */ be_nested_str_weak(Duplicate_X20parameter_X20name_X20_X27_X25s_X27_X20in_X20template_X2E_X20Each_X20parameter_X20must_X20have_X20a_X20unique_X20name_X2E), + /* K4 */ be_nested_str_weak(engine), + /* K5 */ be_nested_str_weak(self), + /* K6 */ be_nested_str_weak(animation), + /* K7 */ be_nested_str_weak(color), + /* K8 */ be_nested_str_weak(palette), + /* K9 */ be_nested_str_weak(sequence), + /* K10 */ be_nested_str_weak(template), + /* K11 */ be_nested_str_weak(import), + /* K12 */ be_nested_str_weak(def), + /* K13 */ be_nested_str_weak(end), + /* K14 */ be_nested_str_weak(class), + /* K15 */ be_nested_str_weak(var), + /* K16 */ be_nested_str_weak(if), + /* K17 */ be_nested_str_weak(else), + /* K18 */ be_nested_str_weak(while), + /* K19 */ be_nested_str_weak(for), + /* K20 */ be_nested_str_weak(true), + /* K21 */ be_nested_str_weak(false), + /* K22 */ be_nested_str_weak(nil), + /* K23 */ be_nested_str_weak(return), + /* K24 */ be_nested_str_weak(break), + /* K25 */ be_nested_str_weak(continue), + /* K26 */ be_nested_str_weak(Parameter_X20name_X20_X27_X25s_X27_X20conflicts_X20with_X20reserved_X20keyword_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_param_X27_X20or_X20_X27my__X25s_X27_X2E), + /* K27 */ be_nested_str_weak(stop_iteration), + /* K28 */ be_nested_str_weak(is_color_name), + /* K29 */ be_nested_str_weak(Parameter_X20name_X20_X27_X25s_X27_X20conflicts_X20with_X20built_X2Din_X20color_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_param_X27_X20or_X20_X27my__X25s_X27_X2E), + /* K30 */ be_nested_str_weak(name), + /* K31 */ be_nested_str_weak(is_running), + /* K32 */ be_nested_str_weak(priority), + /* K33 */ be_nested_str_weak(duration), + /* K34 */ be_nested_str_weak(loop), + /* K35 */ be_nested_str_weak(opacity), + /* K36 */ be_nested_str_weak(warning), + /* K37 */ be_nested_str_weak(Template_X20animation_X20parameter_X20_X27_X25s_X27_X20masks_X20existing_X20parameter_X20from_X20EngineProxy_X20base_X20class_X2E_X20This_X20may_X20cause_X20unexpected_X20behavior_X2E_X20Consider_X20using_X20a_X20different_X20name_X20like_X20_X27custom__X25s_X27_X20or_X20_X27_X25s_value_X27_X2E), + }), + be_str_weak(_validate_template_parameter_name), + &be_const_str_solidified, + ( &(const binstruction[109]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140501, // 0001 GETMET R5 R2 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x7C140400, // 0003 CALL R5 2 + 0x78160007, // 0004 JMPF R5 #000D + 0x8C140102, // 0005 GETMET R5 R0 K2 + 0x601C0018, // 0006 GETGBL R7 G24 + 0x58200003, // 0007 LDCONST R8 K3 + 0x5C240200, // 0008 MOVE R9 R1 + 0x7C1C0400, // 0009 CALL R7 2 + 0x7C140400, // 000A CALL R5 2 + 0x50140000, // 000B LDBOOL R5 0 0 + 0x80040A00, // 000C RET 1 R5 + 0x60140012, // 000D GETGBL R5 G18 + 0x7C140000, // 000E CALL R5 0 + 0x40180B04, // 000F CONNECT R6 R5 K4 + 0x40180B05, // 0010 CONNECT R6 R5 K5 + 0x40180B06, // 0011 CONNECT R6 R5 K6 + 0x40180B07, // 0012 CONNECT R6 R5 K7 + 0x40180B08, // 0013 CONNECT R6 R5 K8 + 0x40180B09, // 0014 CONNECT R6 R5 K9 + 0x40180B0A, // 0015 CONNECT R6 R5 K10 + 0x40180B0B, // 0016 CONNECT R6 R5 K11 + 0x40180B0C, // 0017 CONNECT R6 R5 K12 + 0x40180B0D, // 0018 CONNECT R6 R5 K13 + 0x40180B0E, // 0019 CONNECT R6 R5 K14 + 0x40180B0F, // 001A CONNECT R6 R5 K15 + 0x40180B10, // 001B CONNECT R6 R5 K16 + 0x40180B11, // 001C CONNECT R6 R5 K17 + 0x40180B12, // 001D CONNECT R6 R5 K18 + 0x40180B13, // 001E CONNECT R6 R5 K19 + 0x40180B14, // 001F CONNECT R6 R5 K20 + 0x40180B15, // 0020 CONNECT R6 R5 K21 + 0x40180B16, // 0021 CONNECT R6 R5 K22 + 0x40180B17, // 0022 CONNECT R6 R5 K23 + 0x40180B18, // 0023 CONNECT R6 R5 K24 + 0x40180B19, // 0024 CONNECT R6 R5 K25 + 0x60180010, // 0025 GETGBL R6 G16 + 0x5C1C0A00, // 0026 MOVE R7 R5 + 0x7C180200, // 0027 CALL R6 1 + 0xA802000F, // 0028 EXBLK 0 #0039 + 0x5C1C0C00, // 0029 MOVE R7 R6 + 0x7C1C0000, // 002A CALL R7 0 + 0x1C200207, // 002B EQ R8 R1 R7 + 0x7822000A, // 002C JMPF R8 #0038 + 0x8C200102, // 002D GETMET R8 R0 K2 + 0x60280018, // 002E GETGBL R10 G24 + 0x582C001A, // 002F LDCONST R11 K26 + 0x5C300200, // 0030 MOVE R12 R1 + 0x5C340200, // 0031 MOVE R13 R1 + 0x5C380200, // 0032 MOVE R14 R1 + 0x7C280800, // 0033 CALL R10 4 + 0x7C200400, // 0034 CALL R8 2 + 0x50200000, // 0035 LDBOOL R8 0 0 + 0xA8040001, // 0036 EXBLK 1 1 + 0x80041000, // 0037 RET 1 R8 + 0x7001FFEF, // 0038 JMP #0029 + 0x5818001B, // 0039 LDCONST R6 K27 + 0xAC180200, // 003A CATCH R6 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x8C18091C, // 003C GETMET R6 R4 K28 + 0x5C200200, // 003D MOVE R8 R1 + 0x7C180400, // 003E CALL R6 2 + 0x781A0009, // 003F JMPF R6 #004A + 0x8C180102, // 0040 GETMET R6 R0 K2 + 0x60200018, // 0041 GETGBL R8 G24 + 0x5824001D, // 0042 LDCONST R9 K29 + 0x5C280200, // 0043 MOVE R10 R1 + 0x5C2C0200, // 0044 MOVE R11 R1 + 0x5C300200, // 0045 MOVE R12 R1 + 0x7C200800, // 0046 CALL R8 4 + 0x7C180400, // 0047 CALL R6 2 + 0x50180000, // 0048 LDBOOL R6 0 0 + 0x80040C00, // 0049 RET 1 R6 + 0x780E001F, // 004A JMPF R3 #006B + 0x60180012, // 004B GETGBL R6 G18 + 0x7C180000, // 004C CALL R6 0 + 0x401C0D1E, // 004D CONNECT R7 R6 K30 + 0x401C0D1F, // 004E CONNECT R7 R6 K31 + 0x401C0D20, // 004F CONNECT R7 R6 K32 + 0x401C0D21, // 0050 CONNECT R7 R6 K33 + 0x401C0D22, // 0051 CONNECT R7 R6 K34 + 0x401C0D23, // 0052 CONNECT R7 R6 K35 + 0x401C0D07, // 0053 CONNECT R7 R6 K7 + 0x601C0010, // 0054 GETGBL R7 G16 + 0x5C200C00, // 0055 MOVE R8 R6 + 0x7C1C0200, // 0056 CALL R7 1 + 0xA802000F, // 0057 EXBLK 0 #0068 + 0x5C200E00, // 0058 MOVE R8 R7 + 0x7C200000, // 0059 CALL R8 0 + 0x1C240208, // 005A EQ R9 R1 R8 + 0x78260008, // 005B JMPF R9 #0065 + 0x8C240124, // 005C GETMET R9 R0 K36 + 0x602C0018, // 005D GETGBL R11 G24 + 0x58300025, // 005E LDCONST R12 K37 + 0x5C340200, // 005F MOVE R13 R1 + 0x5C380200, // 0060 MOVE R14 R1 + 0x5C3C0200, // 0061 MOVE R15 R1 + 0x7C2C0800, // 0062 CALL R11 4 + 0x7C240400, // 0063 CALL R9 2 + 0x70020000, // 0064 JMP #0066 + 0x7001FFF1, // 0065 JMP #0058 + 0xA8040001, // 0066 EXBLK 1 1 + 0x70020002, // 0067 JMP #006B + 0x581C001B, // 0068 LDCONST R7 K27 + 0xAC1C0200, // 0069 CATCH R7 1 0 + 0xB0080000, // 006A RAISE 2 R0 R0 + 0x50180200, // 006B LDBOOL R6 1 0 + 0x80040C00, // 006C RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_keyword +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(value), + /* K4 */ be_nested_str_weak(next), + /* K5 */ be_nested_str_weak(error), + /* K6 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), + }), + be_str_weak(expect_keyword), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x780E0008, // 0004 JMPF R3 #000E + 0x880C0501, // 0005 GETMBR R3 R2 K1 + 0x1C0C0702, // 0006 EQ R3 R3 K2 + 0x780E0005, // 0007 JMPF R3 #000E + 0x880C0503, // 0008 GETMBR R3 R2 K3 + 0x1C0C0601, // 0009 EQ R3 R3 R1 + 0x780E0002, // 000A JMPF R3 #000E + 0x8C0C0104, // 000B GETMET R3 R0 K4 + 0x7C0C0200, // 000C CALL R3 1 + 0x70020005, // 000D JMP #0014 + 0x8C0C0105, // 000E GETMET R3 R0 K5 + 0x60140018, // 000F GETGBL R5 G24 + 0x58180006, // 0010 LDCONST R6 K6 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x7C140400, // 0012 CALL R5 2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_berry_code_block +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_berry_code_block, /* 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[16]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_const_int(3), + /* K4 */ be_nested_str_weak(error), + /* K5 */ be_nested_str_weak(Expected_X20string_X20literal_X20after_X20_X27berry_X27_X20keyword_X2E_X20Use_X20berry_X20_X22_X22_X22_X3Ccode_X3E_X22_X22_X22_X20or_X20berry_X20_X27_X27_X27_X3Ccode_X3E_X27_X27_X27), + /* K6 */ be_nested_str_weak(skip_statement), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(collect_inline_comment), + /* K9 */ be_nested_str_weak(add), + /* K10 */ be_nested_str_weak(_X23_X20Berry_X20code_X20block_X25s), + /* K11 */ be_nested_str_weak(string), + /* K12 */ be_nested_str_weak(split), + /* K13 */ be_nested_str_weak(_X0A), + /* K14 */ be_nested_str_weak(stop_iteration), + /* K15 */ be_nested_str_weak(_X23_X20End_X20berry_X20code_X20block), + }), + be_str_weak(process_berry_code_block), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x740A0002, // 0006 JMPT R2 #000A + 0x88080302, // 0007 GETMBR R2 R1 K2 + 0x20080503, // 0008 NE R2 R2 K3 + 0x780A0005, // 0009 JMPF R2 #0010 + 0x8C080104, // 000A GETMET R2 R0 K4 + 0x58100005, // 000B LDCONST R4 K5 + 0x7C080400, // 000C CALL R2 2 + 0x8C080106, // 000D GETMET R2 R0 K6 + 0x7C080200, // 000E CALL R2 1 + 0x80000400, // 000F RET 0 + 0x88080307, // 0010 GETMBR R2 R1 K7 + 0x8C0C0100, // 0011 GETMET R3 R0 K0 + 0x7C0C0200, // 0012 CALL R3 1 + 0x8C0C0108, // 0013 GETMET R3 R0 K8 + 0x7C0C0200, // 0014 CALL R3 1 + 0x8C100109, // 0015 GETMET R4 R0 K9 + 0x60180018, // 0016 GETGBL R6 G24 + 0x581C000A, // 0017 LDCONST R7 K10 + 0x5C200600, // 0018 MOVE R8 R3 + 0x7C180400, // 0019 CALL R6 2 + 0x7C100400, // 001A CALL R4 2 + 0xA4121600, // 001B IMPORT R4 K11 + 0x8C14090C, // 001C GETMET R5 R4 K12 + 0x5C1C0400, // 001D MOVE R7 R2 + 0x5820000D, // 001E LDCONST R8 K13 + 0x7C140600, // 001F CALL R5 3 + 0x60180010, // 0020 GETGBL R6 G16 + 0x5C1C0A00, // 0021 MOVE R7 R5 + 0x7C180200, // 0022 CALL R6 1 + 0xA8020005, // 0023 EXBLK 0 #002A + 0x5C1C0C00, // 0024 MOVE R7 R6 + 0x7C1C0000, // 0025 CALL R7 0 + 0x8C200109, // 0026 GETMET R8 R0 K9 + 0x5C280E00, // 0027 MOVE R10 R7 + 0x7C200400, // 0028 CALL R8 2 + 0x7001FFF9, // 0029 JMP #0024 + 0x5818000E, // 002A LDCONST R6 K14 + 0xAC180200, // 002B CATCH R6 1 0 + 0xB0080000, // 002C RAISE 2 R0 R0 + 0x8C180109, // 002D GETMET R6 R0 K9 + 0x5820000F, // 002E LDCONST R8 K15 + 0x7C180400, // 002F CALL R6 2 + 0x80000000, // 0030 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_color_provider +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(CONTEXT_COLOR_PROVIDER), + }), + be_str_weak(_process_named_arguments_for_color_provider), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x881C0101, // 0003 GETMBR R7 R0 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _unwrap_resolve +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__unwrap_resolve, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(animation_X2Eresolve_X28), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(_X29), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(_is_valid_identifier), + }), + be_str_weak(_unwrap_resolve), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x90020201, // 0001 SETMBR R0 K1 R1 - 0x600C0012, // 0002 GETGBL R3 G18 - 0x7C0C0000, // 0003 CALL R3 0 - 0x90020403, // 0004 SETMBR R0 K2 R3 - 0x600C0012, // 0005 GETGBL R3 G18 - 0x7C0C0000, // 0006 CALL R3 0 - 0x90020603, // 0007 SETMBR R0 K3 R3 - 0x600C0012, // 0008 GETGBL R3 G18 - 0x7C0C0000, // 0009 CALL R3 0 - 0x90020803, // 000A SETMBR R0 K4 R3 - 0x500C0000, // 000B LDBOOL R3 0 0 - 0x90020A03, // 000C SETMBR R0 K5 R3 - 0x8C0C0507, // 000D GETMET R3 R2 K7 - 0x7C0C0200, // 000E CALL R3 1 - 0x90020C03, // 000F SETMBR R0 K6 R3 - 0x90021109, // 0010 SETMBR R0 K8 K9 - 0x500C0000, // 0011 LDBOOL R3 0 0 - 0x90021403, // 0012 SETMBR R0 K10 R3 - 0x4C0C0000, // 0013 LDNIL R3 - 0x90021603, // 0014 SETMBR R0 K11 R3 - 0x80000000, // 0015 RET 0 + 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 + 0x780E0017, // 0006 JMPF R3 #001F + 0x540DFFFE, // 0007 LDINT R3 -1 + 0x940C0203, // 0008 GETIDX R3 R1 R3 + 0x1C0C0704, // 0009 EQ R3 R3 K4 + 0x780E0013, // 000A JMPF R3 #001F + 0x600C000C, // 000B GETGBL R3 G12 + 0x58100002, // 000C LDCONST R4 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x6010000C, // 000E GETGBL R4 G12 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C100200, // 0010 CALL R4 1 + 0x04100905, // 0011 SUB R4 R4 K5 + 0x04140905, // 0012 SUB R5 R4 K5 + 0x40140605, // 0013 CONNECT R5 R3 R5 + 0x94140205, // 0014 GETIDX R5 R1 R5 + 0x6018000C, // 0015 GETGBL R6 G12 + 0x5C1C0A00, // 0016 MOVE R7 R5 + 0x7C180200, // 0017 CALL R6 1 + 0x24180D03, // 0018 GT R6 R6 K3 + 0x781A0004, // 0019 JMPF R6 #001F + 0x8C180106, // 001A GETMET R6 R0 K6 + 0x5C200A00, // 001B MOVE R8 R5 + 0x7C180400, // 001C CALL R6 2 + 0x781A0000, // 001D JMPF R6 #001F + 0x80040A00, // 001E RET 1 R5 + 0x4C0C0000, // 001F LDNIL R3 + 0x80040600, // 0020 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _determine_symbol_return_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__determine_symbol_return_type, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* 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(type), + /* K1 */ be_const_int(2), + /* K2 */ be_const_int(1), + /* K3 */ be_const_int(3), + }), + be_str_weak(_determine_symbol_return_type), + &be_const_str_solidified, + ( &(const binstruction[71]) { /* code */ + 0x88080300, // 0000 GETMBR R2 R1 K0 + 0x540E0008, // 0001 LDINT R3 9 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x740A0003, // 0003 JMPT R2 #0008 + 0x88080300, // 0004 GETMBR R2 R1 K0 + 0x540E0007, // 0005 LDINT R3 8 + 0x1C080403, // 0006 EQ R2 R2 R3 + 0x780A0002, // 0007 JMPF R2 #000B + 0x540A0008, // 0008 LDINT R2 9 + 0x80040400, // 0009 RET 1 R2 + 0x7002003A, // 000A JMP #0046 + 0x88080300, // 000B GETMBR R2 R1 K0 + 0x540E000A, // 000C LDINT R3 11 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x740A0003, // 000E JMPT R2 #0013 + 0x88080300, // 000F GETMBR R2 R1 K0 + 0x540E0009, // 0010 LDINT R3 10 + 0x1C080403, // 0011 EQ R2 R2 R3 + 0x780A0002, // 0012 JMPF R2 #0016 + 0x540A000A, // 0013 LDINT R2 11 + 0x80040400, // 0014 RET 1 R2 + 0x7002002F, // 0015 JMP #0046 + 0x88080300, // 0016 GETMBR R2 R1 K0 + 0x540E0006, // 0017 LDINT R3 7 + 0x1C080403, // 0018 EQ R2 R2 R3 + 0x740A0003, // 0019 JMPT R2 #001E + 0x88080300, // 001A GETMBR R2 R1 K0 + 0x540E0005, // 001B LDINT R3 6 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A0002, // 001D JMPF R2 #0021 + 0x540A0006, // 001E LDINT R2 7 + 0x80040400, // 001F RET 1 R2 + 0x70020024, // 0020 JMP #0046 + 0x88080300, // 0021 GETMBR R2 R1 K0 + 0x1C080501, // 0022 EQ R2 R2 K1 + 0x740A0002, // 0023 JMPT R2 #0027 + 0x88080300, // 0024 GETMBR R2 R1 K0 + 0x1C080502, // 0025 EQ R2 R2 K2 + 0x780A0001, // 0026 JMPF R2 #0029 + 0x80060200, // 0027 RET 1 K1 + 0x7002001C, // 0028 JMP #0046 + 0x88080300, // 0029 GETMBR R2 R1 K0 + 0x1C080503, // 002A EQ R2 R2 K3 + 0x780A0002, // 002B JMPF R2 #002F + 0x540A000B, // 002C LDINT R2 12 + 0x80040400, // 002D RET 1 R2 + 0x70020016, // 002E JMP #0046 + 0x88080300, // 002F GETMBR R2 R1 K0 + 0x540E000B, // 0030 LDINT R3 12 + 0x1C080403, // 0031 EQ R2 R2 R3 + 0x780A0002, // 0032 JMPF R2 #0036 + 0x540A000B, // 0033 LDINT R2 12 + 0x80040400, // 0034 RET 1 R2 + 0x7002000F, // 0035 JMP #0046 + 0x88080300, // 0036 GETMBR R2 R1 K0 + 0x540E000C, // 0037 LDINT R3 13 + 0x1C080403, // 0038 EQ R2 R2 R3 + 0x780A0002, // 0039 JMPF R2 #003D + 0x540A000C, // 003A LDINT R2 13 + 0x80040400, // 003B RET 1 R2 + 0x70020008, // 003C JMP #0046 + 0x88080300, // 003D GETMBR R2 R1 K0 + 0x540E000D, // 003E LDINT R3 14 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0002, // 0040 JMPF R2 #0044 + 0x540A000D, // 0041 LDINT R2 14 + 0x80040400, // 0042 RET 1 R2 + 0x70020001, // 0043 JMP #0046 + 0x540A000B, // 0044 LDINT R2 12 + 0x80040400, // 0045 RET 1 R2 + 0x80000000, // 0046 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_engine_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_engine_run, /* 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[ 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_X2Erun_X28_X29), + }), + be_str_weak(generate_engine_run), + &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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ + be_nested_proto( + 18, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 6, /* nstack */ + 2, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(create_color), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x88080500, // 0001 GETMBR R2 R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x5C100000, // 0003 MOVE R4 R0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(color), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_const_int(0), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(peek), + /* K11 */ be_nested_str_weak(value), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(_X20_X20), + /* K14 */ be_nested_str_weak(symbol_table), + /* K15 */ be_nested_str_weak(get), + /* K16 */ be_nested_str_weak(process_function_arguments), + /* K17 */ be_nested_str_weak(_split_function_arguments), + /* K18 */ be_nested_str_weak(instance), + /* K19 */ be_nested_str_weak(contains), + /* K20 */ be_nested_str_weak(params), + /* K21 */ be_nested_str_weak(find), + /* K22 */ be_nested_str_weak(param_types), + /* K23 */ be_nested_str_weak(_validate_template_call_arguments), + /* K24 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K25 */ be_nested_str_weak(engine), + /* K26 */ be_nested_str_weak(add), + /* K27 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), + /* K28 */ be_nested_str_weak(create_color), + /* K29 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), + /* K30 */ be_nested_str_weak(_validate_color_provider_factory_exists), + /* K31 */ be_nested_str_weak(error), + /* K32 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K34 */ be_nested_str_weak(_create_instance_for_validation), + /* K35 */ be_nested_str_weak(_process_named_arguments_for_color_provider), + /* K36 */ be_nested_str_weak(_X25s_), + /* K37 */ be_nested_str_weak(_process_simple_value_assignment), + /* K38 */ be_nested_str_weak(CONTEXT_COLOR), + }), + be_str_weak(process_color), + &be_const_str_solidified, + ( &(const binstruction[204]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0x1C0C0708, // 0011 EQ R3 R3 K8 + 0x740E0002, // 0012 JMPT R3 #0016 + 0x880C0507, // 0013 GETMBR R3 R2 K7 + 0x1C0C0709, // 0014 EQ R3 R3 K9 + 0x780E00AE, // 0015 JMPF R3 #00C5 + 0x8C0C010A, // 0016 GETMET R3 R0 K10 + 0x7C0C0200, // 0017 CALL R3 1 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E00A9, // 001A JMPF R3 #00C5 + 0x8C0C010A, // 001B GETMET R3 R0 K10 + 0x7C0C0200, // 001C CALL R3 1 + 0x880C0707, // 001D GETMBR R3 R3 K7 + 0x54120017, // 001E LDINT R4 24 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x780E00A3, // 0020 JMPF R3 #00C5 + 0x880C050B, // 0021 GETMBR R3 R2 K11 + 0x8C100100, // 0022 GETMET R4 R0 K0 + 0x7C100200, // 0023 CALL R4 1 + 0x5810000C, // 0024 LDCONST R4 K12 + 0x8C140106, // 0025 GETMET R5 R0 K6 + 0x7C140200, // 0026 CALL R5 1 + 0x4C180000, // 0027 LDNIL R6 + 0x20140A06, // 0028 NE R5 R5 R6 + 0x7816000C, // 0029 JMPF R5 #0037 + 0x8C140106, // 002A GETMET R5 R0 K6 + 0x7C140200, // 002B CALL R5 1 + 0x88140B07, // 002C GETMBR R5 R5 K7 + 0x541A0024, // 002D LDINT R6 37 + 0x1C140A06, // 002E EQ R5 R5 R6 + 0x78160006, // 002F JMPF R5 #0037 + 0x8C140106, // 0030 GETMET R5 R0 K6 + 0x7C140200, // 0031 CALL R5 1 + 0x88140B0B, // 0032 GETMBR R5 R5 K11 + 0x00161A05, // 0033 ADD R5 K13 R5 + 0x5C100A00, // 0034 MOVE R4 R5 + 0x8C140100, // 0035 GETMET R5 R0 K0 + 0x7C140200, // 0036 CALL R5 1 + 0x8814010E, // 0037 GETMBR R5 R0 K14 + 0x8C140B0F, // 0038 GETMET R5 R5 K15 + 0x5C1C0600, // 0039 MOVE R7 R3 + 0x7C140400, // 003A CALL R5 2 + 0x4C180000, // 003B LDNIL R6 + 0x20180A06, // 003C NE R6 R5 R6 + 0x781A003D, // 003D JMPF R6 #007C + 0x88180B07, // 003E GETMBR R6 R5 K7 + 0x541E000D, // 003F LDINT R7 14 + 0x1C180C07, // 0040 EQ R6 R6 R7 + 0x781A0039, // 0041 JMPF R6 #007C + 0x8C180110, // 0042 GETMET R6 R0 K16 + 0x50200000, // 0043 LDBOOL R8 0 0 + 0x7C180400, // 0044 CALL R6 2 + 0x201C0D0C, // 0045 NE R7 R6 K12 + 0x781E0003, // 0046 JMPF R7 #004B + 0x8C1C0111, // 0047 GETMET R7 R0 K17 + 0x5C240C00, // 0048 MOVE R9 R6 + 0x7C1C0400, // 0049 CALL R7 2 + 0x70020001, // 004A JMP #004D + 0x601C0012, // 004B GETGBL R7 G18 + 0x7C1C0000, // 004C CALL R7 0 + 0x88200B12, // 004D GETMBR R8 R5 K18 + 0x4C240000, // 004E LDNIL R9 + 0x20241009, // 004F NE R9 R8 R9 + 0x78260013, // 0050 JMPF R9 #0065 + 0x8C241113, // 0051 GETMET R9 R8 K19 + 0x582C0014, // 0052 LDCONST R11 K20 + 0x7C240400, // 0053 CALL R9 2 + 0x7826000F, // 0054 JMPF R9 #0065 + 0x94241114, // 0055 GETIDX R9 R8 K20 + 0x8C281115, // 0056 GETMET R10 R8 K21 + 0x58300016, // 0057 LDCONST R12 K22 + 0x60340013, // 0058 GETGBL R13 G19 + 0x7C340000, // 0059 CALL R13 0 + 0x7C280600, // 005A CALL R10 3 + 0x8C2C0117, // 005B GETMET R11 R0 K23 + 0x5C340600, // 005C MOVE R13 R3 + 0x5C380E00, // 005D MOVE R14 R7 + 0x5C3C1200, // 005E MOVE R15 R9 + 0x5C401400, // 005F MOVE R16 R10 + 0x7C2C0A00, // 0060 CALL R11 5 + 0x742E0002, // 0061 JMPT R11 #0065 + 0x8C2C0104, // 0062 GETMET R11 R0 K4 + 0x7C2C0200, // 0063 CALL R11 1 + 0x80001600, // 0064 RET 0 + 0x20240D0C, // 0065 NE R9 R6 K12 + 0x78260004, // 0066 JMPF R9 #006C + 0x60240018, // 0067 GETGBL R9 G24 + 0x58280018, // 0068 LDCONST R10 K24 + 0x5C2C0C00, // 0069 MOVE R11 R6 + 0x7C240400, // 006A CALL R9 2 + 0x70020000, // 006B JMP #006D + 0x58240019, // 006C LDCONST R9 K25 + 0x8C28011A, // 006D GETMET R10 R0 K26 + 0x60300018, // 006E GETGBL R12 G24 + 0x5834001B, // 006F LDCONST R13 K27 + 0x5C380200, // 0070 MOVE R14 R1 + 0x5C3C0600, // 0071 MOVE R15 R3 + 0x5C401200, // 0072 MOVE R16 R9 + 0x5C440800, // 0073 MOVE R17 R4 + 0x7C300A00, // 0074 CALL R12 5 + 0x7C280400, // 0075 CALL R10 2 + 0x8828010E, // 0076 GETMBR R10 R0 K14 + 0x8C28151C, // 0077 GETMET R10 R10 K28 + 0x5C300200, // 0078 MOVE R12 R1 + 0x4C340000, // 0079 LDNIL R13 + 0x7C280600, // 007A CALL R10 3 + 0x70020047, // 007B JMP #00C4 + 0x4C180000, // 007C LDNIL R6 + 0x20180A06, // 007D NE R6 R5 R6 + 0x781A001D, // 007E JMPF R6 #009D + 0x88180B07, // 007F GETMBR R6 R5 K7 + 0x541E0004, // 0080 LDINT R7 5 + 0x1C180C07, // 0081 EQ R6 R6 R7 + 0x781A0019, // 0082 JMPF R6 #009D + 0x8C180110, // 0083 GETMET R6 R0 K16 + 0x50200000, // 0084 LDBOOL R8 0 0 + 0x7C180400, // 0085 CALL R6 2 + 0x201C0D0C, // 0086 NE R7 R6 K12 + 0x781E0004, // 0087 JMPF R7 #008D + 0x601C0018, // 0088 GETGBL R7 G24 + 0x58200018, // 0089 LDCONST R8 K24 + 0x5C240C00, // 008A MOVE R9 R6 + 0x7C1C0400, // 008B CALL R7 2 + 0x70020000, // 008C JMP #008E + 0x581C0019, // 008D LDCONST R7 K25 + 0x8C20011A, // 008E GETMET R8 R0 K26 + 0x60280018, // 008F GETGBL R10 G24 + 0x582C001D, // 0090 LDCONST R11 K29 + 0x5C300200, // 0091 MOVE R12 R1 + 0x5C340600, // 0092 MOVE R13 R3 + 0x5C380E00, // 0093 MOVE R14 R7 + 0x5C3C0800, // 0094 MOVE R15 R4 + 0x7C280A00, // 0095 CALL R10 5 + 0x7C200400, // 0096 CALL R8 2 + 0x8820010E, // 0097 GETMBR R8 R0 K14 + 0x8C20111C, // 0098 GETMET R8 R8 K28 + 0x5C280200, // 0099 MOVE R10 R1 + 0x4C2C0000, // 009A LDNIL R11 + 0x7C200600, // 009B CALL R8 3 + 0x70020026, // 009C JMP #00C4 + 0x8C18011E, // 009D GETMET R6 R0 K30 + 0x5C200600, // 009E MOVE R8 R3 + 0x7C180400, // 009F CALL R6 2 + 0x741A0008, // 00A0 JMPT R6 #00AA + 0x8C18011F, // 00A1 GETMET R6 R0 K31 + 0x60200018, // 00A2 GETGBL R8 G24 + 0x58240020, // 00A3 LDCONST R9 K32 + 0x5C280600, // 00A4 MOVE R10 R3 + 0x7C200400, // 00A5 CALL R8 2 + 0x7C180400, // 00A6 CALL R6 2 + 0x8C180104, // 00A7 GETMET R6 R0 K4 + 0x7C180200, // 00A8 CALL R6 1 + 0x80000C00, // 00A9 RET 0 + 0x8C18011A, // 00AA GETMET R6 R0 K26 + 0x60200018, // 00AB GETGBL R8 G24 + 0x58240021, // 00AC LDCONST R9 K33 + 0x5C280200, // 00AD MOVE R10 R1 + 0x5C2C0600, // 00AE MOVE R11 R3 + 0x5C300800, // 00AF MOVE R12 R4 + 0x7C200800, // 00B0 CALL R8 4 + 0x7C180400, // 00B1 CALL R6 2 + 0x8C180122, // 00B2 GETMET R6 R0 K34 + 0x5C200600, // 00B3 MOVE R8 R3 + 0x7C180400, // 00B4 CALL R6 2 + 0x4C1C0000, // 00B5 LDNIL R7 + 0x201C0C07, // 00B6 NE R7 R6 R7 + 0x781E0004, // 00B7 JMPF R7 #00BD + 0x881C010E, // 00B8 GETMBR R7 R0 K14 + 0x8C1C0F1C, // 00B9 GETMET R7 R7 K28 + 0x5C240200, // 00BA MOVE R9 R1 + 0x5C280C00, // 00BB MOVE R10 R6 + 0x7C1C0600, // 00BC CALL R7 3 + 0x8C1C0123, // 00BD GETMET R7 R0 K35 + 0x60240018, // 00BE GETGBL R9 G24 + 0x58280024, // 00BF LDCONST R10 K36 + 0x5C2C0200, // 00C0 MOVE R11 R1 + 0x7C240400, // 00C1 CALL R9 2 + 0x5C280600, // 00C2 MOVE R10 R3 + 0x7C1C0600, // 00C3 CALL R7 3 + 0x70020004, // 00C4 JMP #00CA + 0x8C0C0125, // 00C5 GETMET R3 R0 K37 + 0x5C140200, // 00C6 MOVE R5 R1 + 0x88180126, // 00C7 GETMBR R6 R0 K38 + 0x841C0000, // 00C8 CLOSURE R7 P0 + 0x7C0C0800, // 00C9 CALL R3 4 + 0xA0000000, // 00CA CLOSE R0 + 0x80000000, // 00CB RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_const_int(1), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20function_X20name), + /* K9 */ be_nested_str_weak(nil), + /* K10 */ be_nested_str_weak(symbol_table), + /* K11 */ be_nested_str_weak(get), + /* K12 */ be_nested_str_weak(process_function_arguments), + /* K13 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K14 */ be_nested_str_weak(get_reference), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(process_log_call), + /* K17 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K18 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K19 */ be_nested_str_weak(engine), + /* K20 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K21 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K22 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_function_call), + &be_const_str_solidified, + ( &(const binstruction[92]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x4C100000, // 0003 LDNIL R4 + 0x20100404, // 0004 NE R4 R2 R4 + 0x78120009, // 0005 JMPF R4 #0010 + 0x88100502, // 0006 GETMBR R4 R2 K2 + 0x1C100903, // 0007 EQ R4 R4 K3 + 0x74120002, // 0008 JMPT R4 #000C + 0x88100502, // 0009 GETMBR R4 R2 K2 + 0x1C100904, // 000A EQ R4 R4 K4 + 0x78120003, // 000B JMPF R4 #0010 + 0x880C0505, // 000C GETMBR R3 R2 K5 + 0x8C100106, // 000D GETMET R4 R0 K6 + 0x7C100200, // 000E CALL R4 1 + 0x70020003, // 000F JMP #0014 + 0x8C100107, // 0010 GETMET R4 R0 K7 + 0x58180008, // 0011 LDCONST R6 K8 + 0x7C100400, // 0012 CALL R4 2 + 0x80061200, // 0013 RET 1 K9 + 0x8810010A, // 0014 GETMBR R4 R0 K10 + 0x8C10090B, // 0015 GETMET R4 R4 K11 + 0x5C180600, // 0016 MOVE R6 R3 + 0x7C100400, // 0017 CALL R4 2 + 0x4C140000, // 0018 LDNIL R5 + 0x20140805, // 0019 NE R5 R4 R5 + 0x7816000D, // 001A JMPF R5 #0029 + 0x88140902, // 001B GETMBR R5 R4 K2 + 0x541A0003, // 001C LDINT R6 4 + 0x1C140A06, // 001D EQ R5 R5 R6 + 0x78160009, // 001E JMPF R5 #0029 + 0x8C14010C, // 001F GETMET R5 R0 K12 + 0x501C0000, // 0020 LDBOOL R7 0 0 + 0x7C140400, // 0021 CALL R5 2 + 0x60180018, // 0022 GETGBL R6 G24 + 0x581C000D, // 0023 LDCONST R7 K13 + 0x8C20090E, // 0024 GETMET R8 R4 K14 + 0x7C200200, // 0025 CALL R8 1 + 0x5C240A00, // 0026 MOVE R9 R5 + 0x7C180600, // 0027 CALL R6 3 + 0x80040C00, // 0028 RET 1 R6 + 0x1C14070F, // 0029 EQ R5 R3 K15 + 0x78160008, // 002A JMPF R5 #0034 + 0x8C14010C, // 002B GETMET R5 R0 K12 + 0x501C0000, // 002C LDBOOL R7 0 0 + 0x7C140400, // 002D CALL R5 2 + 0x8C180110, // 002E GETMET R6 R0 K16 + 0x5C200A00, // 002F MOVE R8 R5 + 0x88240111, // 0030 GETMBR R9 R0 K17 + 0x58280001, // 0031 LDCONST R10 K1 + 0x7C180800, // 0032 CALL R6 4 + 0x80040C00, // 0033 RET 1 R6 + 0x8C14010C, // 0034 GETMET R5 R0 K12 + 0x501C0000, // 0035 LDBOOL R7 0 0 + 0x7C140400, // 0036 CALL R5 2 + 0x4C180000, // 0037 LDNIL R6 + 0x20180806, // 0038 NE R6 R4 R6 + 0x781A0012, // 0039 JMPF R6 #004D + 0x88180902, // 003A GETMBR R6 R4 K2 + 0x541E000D, // 003B LDINT R7 14 + 0x1C180C07, // 003C EQ R6 R6 R7 + 0x781A000E, // 003D JMPF R6 #004D + 0x20180B01, // 003E NE R6 R5 K1 + 0x781A0004, // 003F JMPF R6 #0045 + 0x60180018, // 0040 GETGBL R6 G24 + 0x581C0012, // 0041 LDCONST R7 K18 + 0x5C200A00, // 0042 MOVE R8 R5 + 0x7C180400, // 0043 CALL R6 2 + 0x70020000, // 0044 JMP #0046 + 0x58180013, // 0045 LDCONST R6 K19 + 0x601C0018, // 0046 GETGBL R7 G24 + 0x58200014, // 0047 LDCONST R8 K20 + 0x5C240600, // 0048 MOVE R9 R3 + 0x5C280C00, // 0049 MOVE R10 R6 + 0x7C1C0600, // 004A CALL R7 3 + 0x80040E00, // 004B RET 1 R7 + 0x7002000D, // 004C JMP #005B + 0x20180B01, // 004D NE R6 R5 K1 + 0x781A0006, // 004E JMPF R6 #0056 + 0x60180018, // 004F GETGBL R6 G24 + 0x581C0015, // 0050 LDCONST R7 K21 + 0x5C200600, // 0051 MOVE R8 R3 + 0x5C240A00, // 0052 MOVE R9 R5 + 0x7C180600, // 0053 CALL R6 3 + 0x80040C00, // 0054 RET 1 R6 + 0x70020004, // 0055 JMP #005B + 0x60180018, // 0056 GETGBL R6 G24 + 0x581C0016, // 0057 LDCONST R7 K22 + 0x5C200600, // 0058 MOVE R8 R3 + 0x7C180400, // 0059 CALL R6 2 + 0x80040C00, // 005A RET 1 R6 + 0x80000000, // 005B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_single_parameter +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(has_param), + /* K3 */ be_nested_str_weak(current), + /* K4 */ be_nested_str_weak(line), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), + /* K8 */ be_nested_str_weak(dsl_compilation_error), + }), + be_str_weak(_validate_single_parameter), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0xA802001F, // 0000 EXBLK 0 #0021 + 0xA4120000, // 0001 IMPORT R4 K0 + 0x4C140000, // 0002 LDNIL R5 + 0x20140605, // 0003 NE R5 R3 R5 + 0x78160019, // 0004 JMPF R5 #001F + 0x8C140901, // 0005 GETMET R5 R4 K1 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x58200002, // 0007 LDCONST R8 K2 + 0x7C140600, // 0008 CALL R5 3 + 0x78160014, // 0009 JMPF R5 #001F + 0x8C140702, // 000A GETMET R5 R3 K2 + 0x5C1C0400, // 000B MOVE R7 R2 + 0x7C140400, // 000C CALL R5 2 + 0x74160010, // 000D JMPT R5 #001F + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x7C140200, // 000F CALL R5 1 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140103, // 0013 GETMET R5 R0 K3 + 0x7C140200, // 0014 CALL R5 1 + 0x88140B04, // 0015 GETMBR R5 R5 K4 + 0x70020000, // 0016 JMP #0018 + 0x58140005, // 0017 LDCONST R5 K5 + 0x8C180106, // 0018 GETMET R6 R0 K6 + 0x60200018, // 0019 GETGBL R8 G24 + 0x58240007, // 001A LDCONST R9 K7 + 0x5C280200, // 001B MOVE R10 R1 + 0x5C2C0400, // 001C MOVE R11 R2 + 0x7C200600, // 001D CALL R8 3 + 0x7C180400, // 001E CALL R6 2 + 0xA8040001, // 001F EXBLK 1 1 + 0x70020008, // 0020 JMP #002A + 0x58100008, // 0021 LDCONST R4 K8 + 0xAC100202, // 0022 CATCH R4 1 2 + 0x70020001, // 0023 JMP #0026 + 0xB0040805, // 0024 RAISE 1 R4 R5 + 0x70020003, // 0025 JMP #002A + 0xAC100002, // 0026 CATCH R4 0 2 + 0x70020000, // 0027 JMP #0029 + 0x70020000, // 0028 JMP #002A + 0xB0080000, // 0029 RAISE 2 R0 R0 + 0x80000000, // 002A RET 0 }) ) ); @@ -9571,6 +10591,1562 @@ be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: process_play_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_play_statement_fluent, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(peek), + /* K7 */ be_nested_str_weak(process_nested_function_call), + /* K8 */ be_nested_str_weak(expect_identifier), + /* K9 */ be_nested_str_weak(_validate_object_reference), + /* K10 */ be_nested_str_weak(sequence_X20play), + /* K11 */ be_nested_str_weak(_X25s_), + /* K12 */ be_nested_str_weak(nil), + /* K13 */ be_nested_str_weak(value), + /* K14 */ be_nested_str_weak(for), + /* K15 */ be_const_int(2), + /* K16 */ be_nested_str_weak(process_time_value), + /* K17 */ be_nested_str_weak(self_X2E), + /* K18 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), + /* K22 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_play_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[111]) { /* 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 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E0014, // 0007 JMPF R3 #001D + 0x880C0503, // 0008 GETMBR R3 R2 K3 + 0x1C0C0704, // 0009 EQ R3 R3 K4 + 0x740E0002, // 000A JMPT R3 #000E + 0x880C0503, // 000B GETMBR R3 R2 K3 + 0x1C0C0705, // 000C EQ R3 R3 K5 + 0x780E000E, // 000D JMPF R3 #001D + 0x8C0C0106, // 000E GETMET R3 R0 K6 + 0x7C0C0200, // 000F CALL R3 1 + 0x4C100000, // 0010 LDNIL R4 + 0x200C0604, // 0011 NE R3 R3 R4 + 0x780E0009, // 0012 JMPF R3 #001D + 0x8C0C0106, // 0013 GETMET R3 R0 K6 + 0x7C0C0200, // 0014 CALL R3 1 + 0x880C0703, // 0015 GETMBR R3 R3 K3 + 0x54120017, // 0016 LDINT R4 24 + 0x1C0C0604, // 0017 EQ R3 R3 R4 + 0x780E0003, // 0018 JMPF R3 #001D + 0x8C0C0107, // 0019 GETMET R3 R0 K7 + 0x7C0C0200, // 001A CALL R3 1 + 0x5C040600, // 001B MOVE R1 R3 + 0x7002000A, // 001C JMP #0028 + 0x8C0C0108, // 001D GETMET R3 R0 K8 + 0x7C0C0200, // 001E CALL R3 1 + 0x8C100109, // 001F GETMET R4 R0 K9 + 0x5C180600, // 0020 MOVE R6 R3 + 0x581C000A, // 0021 LDCONST R7 K10 + 0x7C100600, // 0022 CALL R4 3 + 0x60100018, // 0023 GETGBL R4 G24 + 0x5814000B, // 0024 LDCONST R5 K11 + 0x5C180600, // 0025 MOVE R6 R3 + 0x7C100400, // 0026 CALL R4 2 + 0x5C040800, // 0027 MOVE R1 R4 + 0x580C000C, // 0028 LDCONST R3 K12 + 0x8C100102, // 0029 GETMET R4 R0 K2 + 0x7C100200, // 002A CALL R4 1 + 0x4C140000, // 002B LDNIL R5 + 0x20100805, // 002C NE R4 R4 R5 + 0x78120033, // 002D JMPF R4 #0062 + 0x8C100102, // 002E GETMET R4 R0 K2 + 0x7C100200, // 002F CALL R4 1 + 0x88100903, // 0030 GETMBR R4 R4 K3 + 0x1C100905, // 0031 EQ R4 R4 K5 + 0x7812002E, // 0032 JMPF R4 #0062 + 0x8C100102, // 0033 GETMET R4 R0 K2 + 0x7C100200, // 0034 CALL R4 1 + 0x8810090D, // 0035 GETMBR R4 R4 K13 + 0x1C10090E, // 0036 EQ R4 R4 K14 + 0x78120029, // 0037 JMPF R4 #0062 + 0x8C100100, // 0038 GETMET R4 R0 K0 + 0x7C100200, // 0039 CALL R4 1 + 0x8C100102, // 003A GETMET R4 R0 K2 + 0x7C100200, // 003B CALL R4 1 + 0x4C140000, // 003C LDNIL R5 + 0x20140805, // 003D NE R5 R4 R5 + 0x7816000A, // 003E JMPF R5 #004A + 0x88140903, // 003F GETMBR R5 R4 K3 + 0x541A0004, // 0040 LDINT R6 5 + 0x1C140A06, // 0041 EQ R5 R5 R6 + 0x74160002, // 0042 JMPT R5 #0046 + 0x88140903, // 0043 GETMBR R5 R4 K3 + 0x1C140B0F, // 0044 EQ R5 R5 K15 + 0x78160003, // 0045 JMPF R5 #004A + 0x8C140110, // 0046 GETMET R5 R0 K16 + 0x7C140200, // 0047 CALL R5 1 + 0x5C0C0A00, // 0048 MOVE R3 R5 + 0x70020017, // 0049 JMP #0062 + 0x4C140000, // 004A LDNIL R5 + 0x20140805, // 004B NE R5 R4 R5 + 0x78160011, // 004C JMPF R5 #005F + 0x88140903, // 004D GETMBR R5 R4 K3 + 0x1C140B04, // 004E EQ R5 R5 K4 + 0x7816000E, // 004F JMPF R5 #005F + 0x8C140110, // 0050 GETMET R5 R0 K16 + 0x7C140200, // 0051 CALL R5 1 + 0x541A0003, // 0052 LDINT R6 4 + 0x401A0A06, // 0053 CONNECT R6 K5 R6 + 0x94180A06, // 0054 GETIDX R6 R5 R6 + 0x1C180D11, // 0055 EQ R6 R6 K17 + 0x781A0005, // 0056 JMPF R6 #005D + 0x60180018, // 0057 GETGBL R6 G24 + 0x581C0012, // 0058 LDCONST R7 K18 + 0x5C200A00, // 0059 MOVE R8 R5 + 0x7C180400, // 005A CALL R6 2 + 0x5C0C0C00, // 005B MOVE R3 R6 + 0x70020000, // 005C JMP #005E + 0x5C0C0A00, // 005D MOVE R3 R5 + 0x70020002, // 005E JMP #0062 + 0x8C140110, // 005F GETMET R5 R0 K16 + 0x7C140200, // 0060 CALL R5 1 + 0x5C0C0A00, // 0061 MOVE R3 R5 + 0x8C100113, // 0062 GETMET R4 R0 K19 + 0x7C100200, // 0063 CALL R4 1 + 0x8C140114, // 0064 GETMET R5 R0 K20 + 0x601C0018, // 0065 GETGBL R7 G24 + 0x58200015, // 0066 LDCONST R8 K21 + 0x8C240116, // 0067 GETMET R9 R0 K22 + 0x7C240200, // 0068 CALL R9 1 + 0x5C280200, // 0069 MOVE R10 R1 + 0x5C2C0600, // 006A MOVE R11 R3 + 0x5C300800, // 006B MOVE R12 R4 + 0x7C1C0A00, // 006C CALL R7 5 + 0x7C140400, // 006D CALL R5 2 + 0x80000000, // 006E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: current +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_current, /* name */ + be_nested_proto( + 3, /* 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(pull_lexer), + /* K1 */ be_nested_str_weak(peek_token), + }), + be_str_weak(current), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: peek +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pull_lexer), + /* K1 */ be_nested_str_weak(peek_ahead), + /* K2 */ be_const_int(2), + }), + be_str_weak(peek), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x580C0002, // 0002 LDCONST R3 K2 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _is_valid_identifier +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__is_valid_identifier, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(a), + /* K3 */ be_nested_str_weak(z), + /* K4 */ be_nested_str_weak(A), + /* K5 */ be_nested_str_weak(Z), + /* K6 */ be_nested_str_weak(_), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(0), + /* K9 */ be_nested_str_weak(9), + /* K10 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_is_valid_identifier), + &be_const_str_solidified, + ( &(const binstruction[61]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x1C0C0701, // 0004 EQ R3 R3 K1 + 0x780E0001, // 0005 JMPF R3 #0008 + 0x500C0000, // 0006 LDBOOL R3 0 0 + 0x80040600, // 0007 RET 1 R3 + 0x940C0301, // 0008 GETIDX R3 R1 K1 + 0x28100702, // 0009 GE R4 R3 K2 + 0x78120001, // 000A JMPF R4 #000D + 0x18100703, // 000B LE R4 R3 K3 + 0x74120006, // 000C JMPT R4 #0014 + 0x28100704, // 000D GE R4 R3 K4 + 0x78120001, // 000E JMPF R4 #0011 + 0x18100705, // 000F LE R4 R3 K5 + 0x74120002, // 0010 JMPT R4 #0014 + 0x1C100706, // 0011 EQ R4 R3 K6 + 0x74120000, // 0012 JMPT R4 #0014 + 0x50100001, // 0013 LDBOOL R4 0 1 + 0x50100200, // 0014 LDBOOL R4 1 0 + 0x74120001, // 0015 JMPT R4 #0018 + 0x50100000, // 0016 LDBOOL R4 0 0 + 0x80040800, // 0017 RET 1 R4 + 0x60100010, // 0018 GETGBL R4 G16 + 0x6014000C, // 0019 GETGBL R5 G12 + 0x5C180200, // 001A MOVE R6 R1 + 0x7C140200, // 001B CALL R5 1 + 0x04140B07, // 001C SUB R5 R5 K7 + 0x40160E05, // 001D CONNECT R5 K7 R5 + 0x7C100200, // 001E CALL R4 1 + 0xA8020017, // 001F EXBLK 0 #0038 + 0x5C140800, // 0020 MOVE R5 R4 + 0x7C140000, // 0021 CALL R5 0 + 0x94180205, // 0022 GETIDX R6 R1 R5 + 0x281C0D02, // 0023 GE R7 R6 K2 + 0x781E0001, // 0024 JMPF R7 #0027 + 0x181C0D03, // 0025 LE R7 R6 K3 + 0x741E000A, // 0026 JMPT R7 #0032 + 0x281C0D04, // 0027 GE R7 R6 K4 + 0x781E0001, // 0028 JMPF R7 #002B + 0x181C0D05, // 0029 LE R7 R6 K5 + 0x741E0006, // 002A JMPT R7 #0032 + 0x281C0D08, // 002B GE R7 R6 K8 + 0x781E0001, // 002C JMPF R7 #002F + 0x181C0D09, // 002D LE R7 R6 K9 + 0x741E0002, // 002E JMPT R7 #0032 + 0x1C1C0D06, // 002F EQ R7 R6 K6 + 0x741E0000, // 0030 JMPT R7 #0032 + 0x501C0001, // 0031 LDBOOL R7 0 1 + 0x501C0200, // 0032 LDBOOL R7 1 0 + 0x741E0002, // 0033 JMPT R7 #0037 + 0x501C0000, // 0034 LDBOOL R7 0 0 + 0xA8040001, // 0035 EXBLK 1 1 + 0x80040E00, // 0036 RET 1 R7 + 0x7001FFE7, // 0037 JMP #0020 + 0x5810000A, // 0038 LDCONST R4 K10 + 0xAC100200, // 0039 CATCH R4 1 0 + 0xB0080000, // 003A RAISE 2 R0 R0 + 0x50100200, // 003B LDBOOL R4 1 0 + 0x80040800, // 003C RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(CONTEXT_ANIMATION), + }), + be_str_weak(_process_named_arguments_for_animation), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x881C0101, // 0003 GETMBR R7 R0 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 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: 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_array_literal +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_bracket), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_bracket), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(CONTEXT_ARRAY_ELEMENT), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(current), + /* K8 */ be_nested_str_weak(type), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(error), + /* K11 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), + /* K12 */ be_nested_str_weak(expect_right_bracket), + /* K13 */ be_nested_str_weak(_X5B), + /* K14 */ be_const_int(0), + /* K15 */ be_const_int(1), + /* K16 */ be_nested_str_weak(_X2C_X20), + /* K17 */ be_nested_str_weak(stop_iteration), + /* K18 */ be_nested_str_weak(_X5D), + }), + be_str_weak(process_array_literal), + &be_const_str_solidified, + ( &(const binstruction[62]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A001E, // 0006 JMPT R2 #0026 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A001B, // 0009 JMPT R2 #0026 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x88100104, // 000B GETMBR R4 R0 K4 + 0x7C080400, // 000C CALL R2 2 + 0x8C0C0305, // 000D GETMET R3 R1 K5 + 0x88140506, // 000E GETMBR R5 R2 K6 + 0x7C0C0400, // 000F CALL R3 2 + 0x8C0C0107, // 0010 GETMET R3 R0 K7 + 0x7C0C0200, // 0011 CALL R3 1 + 0x4C100000, // 0012 LDNIL R4 + 0x200C0604, // 0013 NE R3 R3 R4 + 0x780E0008, // 0014 JMPF R3 #001E + 0x8C0C0107, // 0015 GETMET R3 R0 K7 + 0x7C0C0200, // 0016 CALL R3 1 + 0x880C0708, // 0017 GETMBR R3 R3 K8 + 0x5412001D, // 0018 LDINT R4 30 + 0x1C0C0604, // 0019 EQ R3 R3 R4 + 0x780E0002, // 001A JMPF R3 #001E + 0x8C0C0109, // 001B GETMET R3 R0 K9 + 0x7C0C0200, // 001C CALL R3 1 + 0x70020006, // 001D JMP #0025 + 0x8C0C0102, // 001E GETMET R3 R0 K2 + 0x7C0C0200, // 001F CALL R3 1 + 0x740E0003, // 0020 JMPT R3 #0025 + 0x8C0C010A, // 0021 GETMET R3 R0 K10 + 0x5814000B, // 0022 LDCONST R5 K11 + 0x7C0C0400, // 0023 CALL R3 2 + 0x70020000, // 0024 JMP #0026 + 0x7001FFDD, // 0025 JMP #0004 + 0x8C08010C, // 0026 GETMET R2 R0 K12 + 0x7C080200, // 0027 CALL R2 1 + 0x5808000D, // 0028 LDCONST R2 K13 + 0x600C0010, // 0029 GETGBL R3 G16 + 0x6010000C, // 002A GETGBL R4 G12 + 0x5C140200, // 002B MOVE R5 R1 + 0x7C100200, // 002C CALL R4 1 + 0x0410090F, // 002D SUB R4 R4 K15 + 0x40121C04, // 002E CONNECT R4 K14 R4 + 0x7C0C0200, // 002F CALL R3 1 + 0xA8020007, // 0030 EXBLK 0 #0039 + 0x5C100600, // 0031 MOVE R4 R3 + 0x7C100000, // 0032 CALL R4 0 + 0x2414090E, // 0033 GT R5 R4 K14 + 0x78160000, // 0034 JMPF R5 #0036 + 0x00080510, // 0035 ADD R2 R2 K16 + 0x94140204, // 0036 GETIDX R5 R1 R4 + 0x00080405, // 0037 ADD R2 R2 R5 + 0x7001FFF7, // 0038 JMP #0031 + 0x580C0011, // 0039 LDCONST R3 K17 + 0xAC0C0200, // 003A CATCH R3 1 0 + 0xB0080000, // 003B RAISE 2 R0 R0 + 0x00080512, // 003C ADD R2 R2 K18 + 0x80040400, // 003D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_repeat_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_repeat_statement_fluent, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(1), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(forever), + /* K7 */ be_nested_str_weak(_X2D1), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), + /* K10 */ be_nested_str_weak(expect_keyword), + /* K11 */ be_nested_str_weak(times), + /* K12 */ be_nested_str_weak(expr), + /* K13 */ be_nested_str_weak(expect_left_brace), + /* K14 */ be_nested_str_weak(add), + /* K15 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2Esequence_manager_X28engine_X2C_X20_X25s_X29), + /* K16 */ be_nested_str_weak(get_indent), + /* K17 */ be_nested_str_weak(indent_level), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(at_end), + /* K20 */ be_nested_str_weak(check_right_brace), + /* K21 */ be_nested_str_weak(process_sequence_statement), + /* K22 */ be_nested_str_weak(expect_right_brace), + /* K23 */ be_nested_str_weak(_X25s_X29), + }), + be_str_weak(process_repeat_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[60]) { /* 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 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E0009, // 0007 JMPF R3 #0012 + 0x880C0503, // 0008 GETMBR R3 R2 K3 + 0x1C0C0704, // 0009 EQ R3 R3 K4 + 0x780E0006, // 000A JMPF R3 #0012 + 0x880C0505, // 000B GETMBR R3 R2 K5 + 0x1C0C0706, // 000C EQ R3 R3 K6 + 0x780E0003, // 000D JMPF R3 #0012 + 0x8C0C0100, // 000E GETMET R3 R0 K0 + 0x7C0C0200, // 000F CALL R3 1 + 0x58040007, // 0010 LDCONST R1 K7 + 0x70020006, // 0011 JMP #0019 + 0x8C0C0108, // 0012 GETMET R3 R0 K8 + 0x88140109, // 0013 GETMBR R5 R0 K9 + 0x7C0C0400, // 0014 CALL R3 2 + 0x8C10010A, // 0015 GETMET R4 R0 K10 + 0x5818000B, // 0016 LDCONST R6 K11 + 0x7C100400, // 0017 CALL R4 2 + 0x8804070C, // 0018 GETMBR R1 R3 K12 + 0x8C0C010D, // 0019 GETMET R3 R0 K13 + 0x7C0C0200, // 001A CALL R3 1 + 0x8C0C010E, // 001B GETMET R3 R0 K14 + 0x60140018, // 001C GETGBL R5 G24 + 0x5818000F, // 001D LDCONST R6 K15 + 0x8C1C0110, // 001E GETMET R7 R0 K16 + 0x7C1C0200, // 001F CALL R7 1 + 0x5C200200, // 0020 MOVE R8 R1 + 0x7C140600, // 0021 CALL R5 3 + 0x7C0C0400, // 0022 CALL R3 2 + 0x880C0111, // 0023 GETMBR R3 R0 K17 + 0x000C0712, // 0024 ADD R3 R3 K18 + 0x90022203, // 0025 SETMBR R0 K17 R3 + 0x8C0C0113, // 0026 GETMET R3 R0 K19 + 0x7C0C0200, // 0027 CALL R3 1 + 0x740E0005, // 0028 JMPT R3 #002F + 0x8C0C0114, // 0029 GETMET R3 R0 K20 + 0x7C0C0200, // 002A CALL R3 1 + 0x740E0002, // 002B JMPT R3 #002F + 0x8C0C0115, // 002C GETMET R3 R0 K21 + 0x7C0C0200, // 002D CALL R3 1 + 0x7001FFF6, // 002E JMP #0026 + 0x8C0C0116, // 002F GETMET R3 R0 K22 + 0x7C0C0200, // 0030 CALL R3 1 + 0x8C0C010E, // 0031 GETMET R3 R0 K14 + 0x60140018, // 0032 GETGBL R5 G24 + 0x58180017, // 0033 LDCONST R6 K23 + 0x8C1C0110, // 0034 GETMET R7 R0 K16 + 0x7C1C0200, // 0035 CALL R7 1 + 0x7C140400, // 0036 CALL R5 2 + 0x7C0C0400, // 0037 CALL R3 2 + 0x880C0111, // 0038 GETMBR R3 R0 K17 + 0x040C0712, // 0039 SUB R3 R3 K18 + 0x90022203, // 003A SETMBR R0 K17 R3 + 0x80000000, // 003B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: next +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_next, /* name */ + be_nested_proto( + 3, /* 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(pull_lexer), + /* K1 */ be_nested_str_weak(next_token), + }), + be_str_weak(next), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_import +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ + be_nested_proto( + 9, /* 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(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_import), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_simple_value_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_simple_value_assignment, /* name */ + be_nested_proto( + 16, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_const_int(1), + /* K3 */ be_nested_str_weak(peek), + /* K4 */ be_nested_str_weak(value), + /* K5 */ be_nested_str_weak(process_value), + /* K6 */ be_nested_str_weak(collect_inline_comment), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K9 */ be_nested_str_weak(expr), + /* K10 */ be_nested_str_weak(symbol_table), + /* K11 */ be_nested_str_weak(contains), + /* K12 */ be_nested_str_weak(get), + /* K13 */ be_nested_str_weak(instance), + }), + be_str_weak(_process_simple_value_assignment), + &be_const_str_solidified, + ( &(const binstruction[73]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x20140805, // 0003 NE R5 R4 R5 + 0x7816000D, // 0004 JMPF R5 #0013 + 0x88140901, // 0005 GETMBR R5 R4 K1 + 0x1C140B02, // 0006 EQ R5 R5 K2 + 0x7816000A, // 0007 JMPF R5 #0013 + 0x8C140103, // 0008 GETMET R5 R0 K3 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x1C140A06, // 000B EQ R5 R5 R6 + 0x74160006, // 000C JMPT R5 #0014 + 0x8C140103, // 000D GETMET R5 R0 K3 + 0x7C140200, // 000E CALL R5 1 + 0x88140B01, // 000F GETMBR R5 R5 K1 + 0x541A0017, // 0010 LDINT R6 24 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x74160000, // 0012 JMPT R5 #0014 + 0x50140001, // 0013 LDBOOL R5 0 1 + 0x50140200, // 0014 LDBOOL R5 1 0 + 0x78160001, // 0015 JMPF R5 #0018 + 0x88180904, // 0016 GETMBR R6 R4 K4 + 0x70020000, // 0017 JMP #0019 + 0x4C180000, // 0018 LDNIL R6 + 0x8C1C0105, // 0019 GETMET R7 R0 K5 + 0x5C240400, // 001A MOVE R9 R2 + 0x7C1C0400, // 001B CALL R7 2 + 0x8C200106, // 001C GETMET R8 R0 K6 + 0x7C200200, // 001D CALL R8 1 + 0x8C240107, // 001E GETMET R9 R0 K7 + 0x602C0018, // 001F GETGBL R11 G24 + 0x58300008, // 0020 LDCONST R12 K8 + 0x5C340200, // 0021 MOVE R13 R1 + 0x88380F09, // 0022 GETMBR R14 R7 K9 + 0x5C3C1000, // 0023 MOVE R15 R8 + 0x7C2C0800, // 0024 CALL R11 4 + 0x7C240400, // 0025 CALL R9 2 + 0x7816001C, // 0026 JMPF R5 #0044 + 0x4C240000, // 0027 LDNIL R9 + 0x20240C09, // 0028 NE R9 R6 R9 + 0x78260019, // 0029 JMPF R9 #0044 + 0x8824010A, // 002A GETMBR R9 R0 K10 + 0x8C24130B, // 002B GETMET R9 R9 K11 + 0x5C2C0C00, // 002C MOVE R11 R6 + 0x7C240400, // 002D CALL R9 2 + 0x78260014, // 002E JMPF R9 #0044 + 0x8824010A, // 002F GETMBR R9 R0 K10 + 0x8C24130C, // 0030 GETMET R9 R9 K12 + 0x5C2C0C00, // 0031 MOVE R11 R6 + 0x7C240400, // 0032 CALL R9 2 + 0x4C280000, // 0033 LDNIL R10 + 0x2028120A, // 0034 NE R10 R9 R10 + 0x782A0008, // 0035 JMPF R10 #003F + 0x8828130D, // 0036 GETMBR R10 R9 K13 + 0x4C2C0000, // 0037 LDNIL R11 + 0x2028140B, // 0038 NE R10 R10 R11 + 0x782A0004, // 0039 JMPF R10 #003F + 0x5C280600, // 003A MOVE R10 R3 + 0x5C2C0200, // 003B MOVE R11 R1 + 0x8830130D, // 003C GETMBR R12 R9 K13 + 0x7C280400, // 003D CALL R10 2 + 0x70020003, // 003E JMP #0043 + 0x5C280600, // 003F MOVE R10 R3 + 0x5C2C0200, // 0040 MOVE R11 R1 + 0x4C300000, // 0041 LDNIL R12 + 0x7C280400, // 0042 CALL R10 2 + 0x70020003, // 0043 JMP #0048 + 0x5C240600, // 0044 MOVE R9 R3 + 0x5C280200, // 0045 MOVE R10 R1 + 0x4C2C0000, // 0046 LDNIL R11 + 0x7C240400, // 0047 CALL R9 2 + 0x80000000, // 0048 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_left_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), + }), + be_str_weak(expect_left_bracket), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001B, // 0006 LDINT R3 28 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _register_template_animation_constructor +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__register_template_animation_constructor, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 2), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x68080000, // 0001 GETUPV R2 U0 + 0x7C040200, // 0002 CALL R1 1 + 0xA8020007, // 0003 EXBLK 0 #000C + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x1C0C0400, // 0006 EQ R3 R2 R0 + 0x780E0002, // 0007 JMPF R3 #000B + 0x500C0200, // 0008 LDBOOL R3 1 0 + 0xA8040001, // 0009 EXBLK 1 1 + 0x80040600, // 000A RET 1 R3 + 0x7001FFF7, // 000B JMP #0004 + 0x58040000, // 000C LDCONST R1 K0 + 0xAC040200, // 000D CATCH R1 1 0 + 0xB0080000, // 000E RAISE 2 R0 R0 + 0x50040000, // 000F LDBOOL R1 0 0 + 0x80040200, // 0010 RET 1 R1 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(_params), + /* K2 */ be_nested_str_weak(has_param), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(symbol_table), + /* K5 */ be_nested_str_weak(entries), + /* K6 */ be_nested_str_weak(find), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(instance), + /* K9 */ be_nested_str_weak(takes_args), + /* K10 */ be_nested_str_weak(arg_type), + /* K11 */ be_nested_str_weak(named), + }), + be_str_weak(_register_template_animation_constructor), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x60140013, // 0001 GETGBL R5 G19 + 0x7C140000, // 0002 CALL R5 0 + 0x60180013, // 0003 GETGBL R6 G19 + 0x7C180000, // 0004 CALL R6 0 + 0x98160206, // 0005 SETIDX R5 K1 R6 + 0x84180000, // 0006 CLOSURE R6 P0 + 0x98160406, // 0007 SETIDX R5 K2 R6 + 0x60180010, // 0008 GETGBL R6 G16 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C180200, // 000A CALL R6 1 + 0xA8020005, // 000B EXBLK 0 #0012 + 0x5C1C0C00, // 000C MOVE R7 R6 + 0x7C1C0000, // 000D CALL R7 0 + 0x94200B01, // 000E GETIDX R8 R5 K1 + 0x50240200, // 000F LDBOOL R9 1 0 + 0x98200E09, // 0010 SETIDX R8 R7 R9 + 0x7001FFF9, // 0011 JMP #000C + 0x58180003, // 0012 LDCONST R6 K3 + 0xAC180200, // 0013 CATCH R6 1 0 + 0xB0080000, // 0014 RAISE 2 R0 R0 + 0x88180104, // 0015 GETMBR R6 R0 K4 + 0x88180D05, // 0016 GETMBR R6 R6 K5 + 0x8C180D06, // 0017 GETMET R6 R6 K6 + 0x5C200200, // 0018 MOVE R8 R1 + 0x7C180400, // 0019 CALL R6 2 + 0x4C1C0000, // 001A LDNIL R7 + 0x201C0C07, // 001B NE R7 R6 R7 + 0x781E0005, // 001C JMPF R7 #0023 + 0x541E0007, // 001D LDINT R7 8 + 0x901A0E07, // 001E SETMBR R6 K7 R7 + 0x901A1005, // 001F SETMBR R6 K8 R5 + 0x501C0200, // 0020 LDBOOL R7 1 0 + 0x901A1207, // 0021 SETMBR R6 K9 R7 + 0x901A150B, // 0022 SETMBR R6 K10 K11 + 0xA0000000, // 0023 CLOSE R0 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_color_provider_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* 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(symbol_table), + /* K1 */ be_nested_str_weak(get), + /* K2 */ be_nested_str_weak(type), + }), + be_str_weak(_validate_color_provider_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0403, // 0005 NE R3 R2 R3 + 0x780E0003, // 0006 JMPF R3 #000B + 0x880C0502, // 0007 GETMBR R3 R2 K2 + 0x54120009, // 0008 LDINT R4 10 + 0x1C0C0604, // 0009 EQ R3 R3 R4 + 0x740E0000, // 000A JMPT R3 #000C + 0x500C0001, // 000B LDBOOL R3 0 1 + 0x500C0200, // 000C LDBOOL R3 1 0 + 0x80040600, // 000D RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_restart_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(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(process_restart_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* 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 + 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_unary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ + be_nested_proto( + 14, /* nstack */ + 4, /* 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(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(ExpressionResult), + /* K4 */ be_nested_str_weak(literal), + /* K5 */ be_nested_str_weak(nil), + /* K6 */ be_nested_str_weak(type), + /* K7 */ be_nested_str_weak(next), + /* K8 */ be_nested_str_weak(process_unary_expression), + /* K9 */ be_nested_str_weak(_X28_X2D_X25s_X29), + /* K10 */ be_nested_str_weak(expr), + /* K11 */ be_nested_str_weak(has_dynamic), + /* K12 */ be_nested_str_weak(has_dangerous), + /* K13 */ be_nested_str_weak(return_type), + /* K14 */ be_nested_str_weak(instance_for_validation), + /* K15 */ be_nested_str_weak(process_primary_expression), + }), + be_str_weak(process_unary_expression), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x1C140805, // 0003 EQ R5 R4 R5 + 0x78160007, // 0004 JMPF R5 #000D + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x581C0002, // 0006 LDCONST R7 K2 + 0x7C140400, // 0007 CALL R5 2 + 0x88140103, // 0008 GETMBR R5 R0 K3 + 0x8C140B04, // 0009 GETMET R5 R5 K4 + 0x581C0005, // 000A LDCONST R7 K5 + 0x7C140400, // 000B CALL R5 2 + 0x80040A00, // 000C RET 1 R5 + 0x88140906, // 000D GETMBR R5 R4 K6 + 0x541A0009, // 000E LDINT R6 10 + 0x1C140A06, // 000F EQ R5 R5 R6 + 0x78160012, // 0010 JMPF R5 #0024 + 0x8C140107, // 0011 GETMET R5 R0 K7 + 0x7C140200, // 0012 CALL R5 1 + 0x8C140108, // 0013 GETMET R5 R0 K8 + 0x5C1C0200, // 0014 MOVE R7 R1 + 0x50200000, // 0015 LDBOOL R8 0 0 + 0x5C240600, // 0016 MOVE R9 R3 + 0x7C140800, // 0017 CALL R5 4 + 0x8C180103, // 0018 GETMET R6 R0 K3 + 0x60200018, // 0019 GETGBL R8 G24 + 0x58240009, // 001A LDCONST R9 K9 + 0x88280B0A, // 001B GETMBR R10 R5 K10 + 0x7C200400, // 001C CALL R8 2 + 0x88240B0B, // 001D GETMBR R9 R5 K11 + 0x88280B0C, // 001E GETMBR R10 R5 K12 + 0x502C0200, // 001F LDBOOL R11 1 0 + 0x88300B0D, // 0020 GETMBR R12 R5 K13 + 0x88340B0E, // 0021 GETMBR R13 R5 K14 + 0x7C180E00, // 0022 CALL R6 7 + 0x80040C00, // 0023 RET 1 R6 + 0x88140906, // 0024 GETMBR R5 R4 K6 + 0x541A0008, // 0025 LDINT R6 9 + 0x1C140A06, // 0026 EQ R5 R5 R6 + 0x78160007, // 0027 JMPF R5 #0030 + 0x8C140107, // 0028 GETMET R5 R0 K7 + 0x7C140200, // 0029 CALL R5 1 + 0x8C140108, // 002A GETMET R5 R0 K8 + 0x5C1C0200, // 002B MOVE R7 R1 + 0x50200000, // 002C LDBOOL R8 0 0 + 0x5C240600, // 002D MOVE R9 R3 + 0x7C140800, // 002E CALL R5 4 + 0x80040A00, // 002F RET 1 R5 + 0x8C14010F, // 0030 GETMET R5 R0 K15 + 0x5C1C0200, // 0031 MOVE R7 R1 + 0x5C200400, // 0032 MOVE R8 R2 + 0x5C240600, // 0033 MOVE R9 R3 + 0x7C140800, // 0034 CALL R5 4 + 0x80040A00, // 0035 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_log_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* 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(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(error), + /* K6 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K7 */ be_nested_str_weak(skip_statement), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(expect_right_paren), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(process_log_call), + /* K12 */ be_nested_str_weak(fluent), + /* K13 */ be_nested_str_weak(add), + }), + be_str_weak(process_log_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[34]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0002, // 0008 JMPT R2 #000C + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0x20080504, // 000A NE R2 R2 K4 + 0x780A0005, // 000B JMPF R2 #0012 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x58100006, // 000D LDCONST R4 K6 + 0x7C080400, // 000E CALL R2 2 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x7C080200, // 0010 CALL R2 1 + 0x80000400, // 0011 RET 0 + 0x88080308, // 0012 GETMBR R2 R1 K8 + 0x8C0C0100, // 0013 GETMET R3 R0 K0 + 0x7C0C0200, // 0014 CALL R3 1 + 0x8C0C0109, // 0015 GETMET R3 R0 K9 + 0x7C0C0200, // 0016 CALL R3 1 + 0x8C0C010A, // 0017 GETMET R3 R0 K10 + 0x7C0C0200, // 0018 CALL R3 1 + 0x8C10010B, // 0019 GETMET R4 R0 K11 + 0x5C180400, // 001A MOVE R6 R2 + 0x581C000C, // 001B LDCONST R7 K12 + 0x5C200600, // 001C MOVE R8 R3 + 0x7C100800, // 001D CALL R4 4 + 0x8C14010D, // 001E GETMET R5 R0 K13 + 0x5C1C0800, // 001F MOVE R7 R4 + 0x7C140400, // 0020 CALL R5 2 + 0x80000000, // 0021 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[15]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(value), + /* K3 */ be_nested_str_weak(next), + /* K4 */ be_nested_str_weak(convert_time_to_ms), + /* K5 */ be_const_int(2), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(_validate_object_reference), + /* K8 */ be_nested_str_weak(duration), + /* K9 */ be_nested_str_weak(process_primary_expression), + /* K10 */ be_nested_str_weak(CONTEXT_TIME), + /* K11 */ be_nested_str_weak(expr), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Expected_X20time_X20value), + /* K14 */ be_nested_str_weak(1000), + }), + be_str_weak(process_time_value), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* 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 + 0x540E0004, // 0006 LDINT R3 5 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0009, // 0008 JMPF R2 #0013 + 0x88080302, // 0009 GETMBR R2 R1 K2 + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x600C0008, // 000C GETGBL R3 G8 + 0x8C100104, // 000D GETMET R4 R0 K4 + 0x5C180400, // 000E MOVE R6 R2 + 0x7C100400, // 000F CALL R4 2 + 0x7C0C0200, // 0010 CALL R3 1 + 0x80040600, // 0011 RET 1 R3 + 0x7002002A, // 0012 JMP #003E + 0x4C080000, // 0013 LDNIL R2 + 0x20080202, // 0014 NE R2 R1 R2 + 0x780A0010, // 0015 JMPF R2 #0027 + 0x88080301, // 0016 GETMBR R2 R1 K1 + 0x1C080505, // 0017 EQ R2 R2 K5 + 0x780A000D, // 0018 JMPF R2 #0027 + 0x88080302, // 0019 GETMBR R2 R1 K2 + 0x8C0C0103, // 001A GETMET R3 R0 K3 + 0x7C0C0200, // 001B CALL R3 1 + 0x600C0008, // 001C GETGBL R3 G8 + 0x60100009, // 001D GETGBL R4 G9 + 0x6014000A, // 001E GETGBL R5 G10 + 0x5C180400, // 001F MOVE R6 R2 + 0x7C140200, // 0020 CALL R5 1 + 0x7C100200, // 0021 CALL R4 1 + 0x541603E7, // 0022 LDINT R5 1000 + 0x08100805, // 0023 MUL R4 R4 R5 + 0x7C0C0200, // 0024 CALL R3 1 + 0x80040600, // 0025 RET 1 R3 + 0x70020016, // 0026 JMP #003E + 0x4C080000, // 0027 LDNIL R2 + 0x20080202, // 0028 NE R2 R1 R2 + 0x780A000F, // 0029 JMPF R2 #003A + 0x88080301, // 002A GETMBR R2 R1 K1 + 0x1C080506, // 002B EQ R2 R2 K6 + 0x780A000C, // 002C JMPF R2 #003A + 0x88080302, // 002D GETMBR R2 R1 K2 + 0x8C0C0107, // 002E GETMET R3 R0 K7 + 0x5C140400, // 002F MOVE R5 R2 + 0x58180008, // 0030 LDCONST R6 K8 + 0x7C0C0600, // 0031 CALL R3 3 + 0x8C0C0109, // 0032 GETMET R3 R0 K9 + 0x8814010A, // 0033 GETMBR R5 R0 K10 + 0x50180200, // 0034 LDBOOL R6 1 0 + 0x501C0000, // 0035 LDBOOL R7 0 0 + 0x7C0C0800, // 0036 CALL R3 4 + 0x8810070B, // 0037 GETMBR R4 R3 K11 + 0x80040800, // 0038 RET 1 R4 + 0x70020003, // 0039 JMP #003E + 0x8C08010C, // 003A GETMET R2 R0 K12 + 0x5810000D, // 003B LDCONST R4 K13 + 0x7C080400, // 003C CALL R2 2 + 0x80061C00, // 003D RET 1 K14 + 0x80000000, // 003E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* 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[26]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(add), + /* K3 */ be_nested_str_weak(get_indent), + /* K4 */ be_nested_str_weak(value), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_const_int(0), + /* K7 */ be_nested_str_weak(play), + /* K8 */ be_nested_str_weak(process_play_statement_fluent), + /* K9 */ be_nested_str_weak(wait), + /* K10 */ be_nested_str_weak(process_wait_statement_fluent), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(log), + /* K13 */ be_nested_str_weak(process_log_statement_fluent), + /* K14 */ be_nested_str_weak(restart), + /* K15 */ be_nested_str_weak(process_restart_statement_fluent), + /* K16 */ be_nested_str_weak(repeat), + /* K17 */ be_nested_str_weak(process_repeat_statement_fluent), + /* K18 */ be_nested_str_weak(if), + /* K19 */ be_nested_str_weak(process_if_statement_fluent), + /* K20 */ be_nested_str_weak(peek), + /* K21 */ be_nested_str_weak(process_sequence_assignment_fluent), + /* K22 */ be_nested_str_weak(error), + /* K23 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20if_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), + /* K24 */ be_nested_str_weak(skip_statement), + /* K25 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20if_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), + }), + be_str_weak(process_sequence_statement), + &be_const_str_solidified, + ( &(const binstruction[114]) { /* 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 + 0x80000400, // 0005 RET 0 + 0x88080301, // 0006 GETMBR R2 R1 K1 + 0x540E0024, // 0007 LDINT R3 37 + 0x1C080403, // 0008 EQ R2 R2 R3 + 0x780A0008, // 0009 JMPF R2 #0013 + 0x8C080102, // 000A GETMET R2 R0 K2 + 0x8C100103, // 000B GETMET R4 R0 K3 + 0x7C100200, // 000C CALL R4 1 + 0x88140304, // 000D GETMBR R5 R1 K4 + 0x00100805, // 000E ADD R4 R4 R5 + 0x7C080400, // 000F CALL R2 2 + 0x8C080105, // 0010 GETMET R2 R0 K5 + 0x7C080200, // 0011 CALL R2 1 + 0x80000400, // 0012 RET 0 + 0x88080301, // 0013 GETMBR R2 R1 K1 + 0x540E0022, // 0014 LDINT R3 35 + 0x1C080403, // 0015 EQ R2 R2 R3 + 0x780A0002, // 0016 JMPF R2 #001A + 0x8C080105, // 0017 GETMET R2 R0 K5 + 0x7C080200, // 0018 CALL R2 1 + 0x80000400, // 0019 RET 0 + 0x88080301, // 001A GETMBR R2 R1 K1 + 0x1C080506, // 001B EQ R2 R2 K6 + 0x780A0005, // 001C JMPF R2 #0023 + 0x88080304, // 001D GETMBR R2 R1 K4 + 0x1C080507, // 001E EQ R2 R2 K7 + 0x780A0002, // 001F JMPF R2 #0023 + 0x8C080108, // 0020 GETMET R2 R0 K8 + 0x7C080200, // 0021 CALL R2 1 + 0x7002004D, // 0022 JMP #0071 + 0x88080301, // 0023 GETMBR R2 R1 K1 + 0x1C080506, // 0024 EQ R2 R2 K6 + 0x780A0005, // 0025 JMPF R2 #002C + 0x88080304, // 0026 GETMBR R2 R1 K4 + 0x1C080509, // 0027 EQ R2 R2 K9 + 0x780A0002, // 0028 JMPF R2 #002C + 0x8C08010A, // 0029 GETMET R2 R0 K10 + 0x7C080200, // 002A CALL R2 1 + 0x70020044, // 002B JMP #0071 + 0x88080301, // 002C GETMBR R2 R1 K1 + 0x1C08050B, // 002D EQ R2 R2 K11 + 0x780A0005, // 002E JMPF R2 #0035 + 0x88080304, // 002F GETMBR R2 R1 K4 + 0x1C08050C, // 0030 EQ R2 R2 K12 + 0x780A0002, // 0031 JMPF R2 #0035 + 0x8C08010D, // 0032 GETMET R2 R0 K13 + 0x7C080200, // 0033 CALL R2 1 + 0x7002003B, // 0034 JMP #0071 + 0x88080301, // 0035 GETMBR R2 R1 K1 + 0x1C080506, // 0036 EQ R2 R2 K6 + 0x780A0005, // 0037 JMPF R2 #003E + 0x88080304, // 0038 GETMBR R2 R1 K4 + 0x1C08050E, // 0039 EQ R2 R2 K14 + 0x780A0002, // 003A JMPF R2 #003E + 0x8C08010F, // 003B GETMET R2 R0 K15 + 0x7C080200, // 003C CALL R2 1 + 0x70020032, // 003D JMP #0071 + 0x88080301, // 003E GETMBR R2 R1 K1 + 0x1C080506, // 003F EQ R2 R2 K6 + 0x780A0005, // 0040 JMPF R2 #0047 + 0x88080304, // 0041 GETMBR R2 R1 K4 + 0x1C080510, // 0042 EQ R2 R2 K16 + 0x780A0002, // 0043 JMPF R2 #0047 + 0x8C080111, // 0044 GETMET R2 R0 K17 + 0x7C080200, // 0045 CALL R2 1 + 0x70020029, // 0046 JMP #0071 + 0x88080301, // 0047 GETMBR R2 R1 K1 + 0x1C080506, // 0048 EQ R2 R2 K6 + 0x780A0005, // 0049 JMPF R2 #0050 + 0x88080304, // 004A GETMBR R2 R1 K4 + 0x1C080512, // 004B EQ R2 R2 K18 + 0x780A0002, // 004C JMPF R2 #0050 + 0x8C080113, // 004D GETMET R2 R0 K19 + 0x7C080200, // 004E CALL R2 1 + 0x70020020, // 004F JMP #0071 + 0x88080301, // 0050 GETMBR R2 R1 K1 + 0x1C08050B, // 0051 EQ R2 R2 K11 + 0x780A0016, // 0052 JMPF R2 #006A + 0x8C080114, // 0053 GETMET R2 R0 K20 + 0x7C080200, // 0054 CALL R2 1 + 0x4C0C0000, // 0055 LDNIL R3 + 0x20080403, // 0056 NE R2 R2 R3 + 0x780A0008, // 0057 JMPF R2 #0061 + 0x8C080114, // 0058 GETMET R2 R0 K20 + 0x7C080200, // 0059 CALL R2 1 + 0x88080501, // 005A GETMBR R2 R2 K1 + 0x540E0020, // 005B LDINT R3 33 + 0x1C080403, // 005C EQ R2 R2 R3 + 0x780A0002, // 005D JMPF R2 #0061 + 0x8C080115, // 005E GETMET R2 R0 K21 + 0x7C080200, // 005F CALL R2 1 + 0x70020007, // 0060 JMP #0069 + 0x8C080116, // 0061 GETMET R2 R0 K22 + 0x60100018, // 0062 GETGBL R4 G24 + 0x58140017, // 0063 LDCONST R5 K23 + 0x88180304, // 0064 GETMBR R6 R1 K4 + 0x7C100400, // 0065 CALL R4 2 + 0x7C080400, // 0066 CALL R2 2 + 0x8C080118, // 0067 GETMET R2 R0 K24 + 0x7C080200, // 0068 CALL R2 1 + 0x70020006, // 0069 JMP #0071 + 0x8C080116, // 006A GETMET R2 R0 K22 + 0x60100018, // 006B GETGBL R4 G24 + 0x58140019, // 006C LDCONST R5 K25 + 0x7C100200, // 006D CALL R4 1 + 0x7C080400, // 006E CALL R2 2 + 0x8C080118, // 006F GETMET R2 R0 K24 + 0x7C080200, // 0070 CALL R2 1 + 0x80000000, // 0071 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_primary_expression ********************************************************************/ @@ -10170,6 +12746,233 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /*******************************************************************/ +/******************************************************************** +** Solidified function: generate_default_strip_initialization +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(strip_initialized), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), + /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), + /* K4 */ be_nested_str_weak(), + }), + be_str_weak(generate_default_strip_initialization), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x7C040400, // 0005 CALL R1 2 + 0x8C040101, // 0006 GETMET R1 R0 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x7C040400, // 0008 CALL R1 2 + 0x8C040101, // 0009 GETMET R1 R0 K1 + 0x580C0004, // 000A LDCONST R3 K4 + 0x7C040400, // 000B CALL R1 2 + 0x50040200, // 000C LDBOOL R1 1 0 + 0x90020001, // 000D SETMBR R0 K0 R1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_log_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(fluent), + /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), + /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K3 */ be_nested_str_weak(get_indent), + /* K4 */ be_nested_str_weak(CONTEXT_EXPRESSION), + /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), + /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), + }), + be_str_weak(process_log_call), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x1C100500, // 0000 EQ R4 R2 K0 + 0x7812000C, // 0001 JMPF R4 #000F + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140001, // 0003 LDCONST R5 K1 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x8C1C0103, // 0008 GETMET R7 R0 K3 + 0x7C1C0200, // 0009 CALL R7 1 + 0x5C200800, // 000A MOVE R8 R4 + 0x5C240600, // 000B MOVE R9 R3 + 0x7C140800, // 000C CALL R5 4 + 0x80040A00, // 000D RET 1 R5 + 0x7002000E, // 000E JMP #001E + 0x88100104, // 000F GETMBR R4 R0 K4 + 0x1C100404, // 0010 EQ R4 R2 R4 + 0x78120005, // 0011 JMPF R4 #0018 + 0x60100018, // 0012 GETGBL R4 G24 + 0x58140005, // 0013 LDCONST R5 K5 + 0x5C180200, // 0014 MOVE R6 R1 + 0x7C100400, // 0015 CALL R4 2 + 0x80040800, // 0016 RET 1 R4 + 0x70020005, // 0017 JMP #001E + 0x60100018, // 0018 GETGBL R4 G24 + 0x58140006, // 0019 LDCONST R5 K6 + 0x5C180200, // 001A MOVE R6 R1 + 0x5C1C0600, // 001B MOVE R7 R3 + 0x7C100600, // 001C CALL R4 3 + 0x80040800, // 001D RET 1 R4 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_template_call_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_template_call_arguments, /* name */ + be_nested_proto( + 13, /* nstack */ + 5, /* 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(error), + /* K1 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20expects_X20_X25s_X20arguments_X20but_X20_X25s_X20were_X20provided_X2E_X20Expected_X20parameters_X3A_X20_X25s), + }), + be_str_weak(_validate_template_call_arguments), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x6014000C, // 0000 GETGBL R5 G12 + 0x5C180400, // 0001 MOVE R6 R2 + 0x7C140200, // 0002 CALL R5 1 + 0x6018000C, // 0003 GETGBL R6 G12 + 0x5C1C0600, // 0004 MOVE R7 R3 + 0x7C180200, // 0005 CALL R6 1 + 0x20140A06, // 0006 NE R5 R5 R6 + 0x7816000E, // 0007 JMPF R5 #0017 + 0x8C140100, // 0008 GETMET R5 R0 K0 + 0x601C0018, // 0009 GETGBL R7 G24 + 0x58200001, // 000A LDCONST R8 K1 + 0x5C240200, // 000B MOVE R9 R1 + 0x6028000C, // 000C GETGBL R10 G12 + 0x5C2C0600, // 000D MOVE R11 R3 + 0x7C280200, // 000E CALL R10 1 + 0x602C000C, // 000F GETGBL R11 G12 + 0x5C300400, // 0010 MOVE R12 R2 + 0x7C2C0200, // 0011 CALL R11 1 + 0x5C300600, // 0012 MOVE R12 R3 + 0x7C1C0A00, // 0013 CALL R7 5 + 0x7C140400, // 0014 CALL R5 2 + 0x50140000, // 0015 LDBOOL R5 0 0 + 0x80040A00, // 0016 RET 1 R5 + 0x50140200, // 0017 LDBOOL R5 1 0 + 0x80040A00, // 0018 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: can_use_as_identifier +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(color), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(palette), + /* K3 */ be_nested_str_weak(startup), + /* K4 */ be_nested_str_weak(shutdown), + /* K5 */ be_nested_str_weak(button_press), + /* K6 */ be_nested_str_weak(button_hold), + /* K7 */ be_nested_str_weak(motion_detected), + /* K8 */ be_nested_str_weak(brightness_change), + /* K9 */ be_nested_str_weak(timer), + /* K10 */ be_nested_str_weak(time), + /* K11 */ be_nested_str_weak(sound_peak), + /* K12 */ be_nested_str_weak(network_message), + /* K13 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(can_use_as_identifier), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x400C0502, // 0004 CONNECT R3 R2 K2 + 0x400C0503, // 0005 CONNECT R3 R2 K3 + 0x400C0504, // 0006 CONNECT R3 R2 K4 + 0x400C0505, // 0007 CONNECT R3 R2 K5 + 0x400C0506, // 0008 CONNECT R3 R2 K6 + 0x400C0507, // 0009 CONNECT R3 R2 K7 + 0x400C0508, // 000A CONNECT R3 R2 K8 + 0x400C0509, // 000B CONNECT R3 R2 K9 + 0x400C050A, // 000C CONNECT R3 R2 K10 + 0x400C050B, // 000D CONNECT R3 R2 K11 + 0x400C050C, // 000E CONNECT R3 R2 K12 + 0x600C0010, // 000F GETGBL R3 G16 + 0x5C100400, // 0010 MOVE R4 R2 + 0x7C0C0200, // 0011 CALL R3 1 + 0xA8020007, // 0012 EXBLK 0 #001B + 0x5C100600, // 0013 MOVE R4 R3 + 0x7C100000, // 0014 CALL R4 0 + 0x1C140204, // 0015 EQ R5 R1 R4 + 0x78160002, // 0016 JMPF R5 #001A + 0x50140200, // 0017 LDBOOL R5 1 0 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040A00, // 0019 RET 1 R5 + 0x7001FFF7, // 001A JMP #0013 + 0x580C000D, // 001B LDCONST R3 K13 + 0xAC0C0200, // 001C CATCH R3 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x500C0000, // 001E LDBOOL R3 0 0 + 0x80040600, // 001F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: convert_time_to_ms ********************************************************************/ @@ -10265,6 +13068,1260 @@ be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: skip_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(next), + }), + be_str_weak(skip_statement), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x7406000C, // 0002 JMPT R1 #0010 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C080202, // 0006 EQ R2 R1 R2 + 0x740A0003, // 0007 JMPT R2 #000C + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x540E0022, // 0009 LDINT R3 35 + 0x1C080403, // 000A EQ R2 R2 R3 + 0x780A0000, // 000B JMPF R2 #000D + 0x70020002, // 000C JMP #0010 + 0x8C080103, // 000D GETMET R2 R0 K3 + 0x7C080200, // 000E CALL R2 1 + 0x7001FFEF, // 000F JMP #0000 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _determine_function_return_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__determine_function_return_type, /* name */ + be_nested_proto( + 4, /* 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(type), + /* K1 */ be_const_int(1), + /* K2 */ be_const_int(2), + }), + be_str_weak(_determine_function_return_type), + &be_const_str_solidified, + ( &(const binstruction[63]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0039, // 0002 JMPF R2 #003D + 0x88080300, // 0003 GETMBR R2 R1 K0 + 0x540E0007, // 0004 LDINT R3 8 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x740A0003, // 0006 JMPT R2 #000B + 0x88080300, // 0007 GETMBR R2 R1 K0 + 0x540E0008, // 0008 LDINT R3 9 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x540A0008, // 000B LDINT R2 9 + 0x80040400, // 000C RET 1 R2 + 0x7002002E, // 000D JMP #003D + 0x88080300, // 000E GETMBR R2 R1 K0 + 0x540E0009, // 000F LDINT R3 10 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x740A0003, // 0011 JMPT R2 #0016 + 0x88080300, // 0012 GETMBR R2 R1 K0 + 0x540E000A, // 0013 LDINT R3 11 + 0x1C080403, // 0014 EQ R2 R2 R3 + 0x780A0002, // 0015 JMPF R2 #0019 + 0x540A000A, // 0016 LDINT R2 11 + 0x80040400, // 0017 RET 1 R2 + 0x70020023, // 0018 JMP #003D + 0x88080300, // 0019 GETMBR R2 R1 K0 + 0x540E0005, // 001A LDINT R3 6 + 0x1C080403, // 001B EQ R2 R2 R3 + 0x740A0003, // 001C JMPT R2 #0021 + 0x88080300, // 001D GETMBR R2 R1 K0 + 0x540E0006, // 001E LDINT R3 7 + 0x1C080403, // 001F EQ R2 R2 R3 + 0x780A0002, // 0020 JMPF R2 #0024 + 0x540A0006, // 0021 LDINT R2 7 + 0x80040400, // 0022 RET 1 R2 + 0x70020018, // 0023 JMP #003D + 0x88080300, // 0024 GETMBR R2 R1 K0 + 0x1C080501, // 0025 EQ R2 R2 K1 + 0x740A0002, // 0026 JMPT R2 #002A + 0x88080300, // 0027 GETMBR R2 R1 K0 + 0x1C080502, // 0028 EQ R2 R2 K2 + 0x780A0001, // 0029 JMPF R2 #002C + 0x80060400, // 002A RET 1 K2 + 0x70020010, // 002B JMP #003D + 0x88080300, // 002C GETMBR R2 R1 K0 + 0x540E0003, // 002D LDINT R3 4 + 0x1C080403, // 002E EQ R2 R2 R3 + 0x780A0002, // 002F JMPF R2 #0033 + 0x540A000B, // 0030 LDINT R2 12 + 0x80040400, // 0031 RET 1 R2 + 0x70020009, // 0032 JMP #003D + 0x88080300, // 0033 GETMBR R2 R1 K0 + 0x540E0004, // 0034 LDINT R3 5 + 0x1C080403, // 0035 EQ R2 R2 R3 + 0x740A0003, // 0036 JMPT R2 #003B + 0x88080300, // 0037 GETMBR R2 R1 K0 + 0x540E000D, // 0038 LDINT R3 14 + 0x1C080403, // 0039 EQ R2 R2 R3 + 0x780A0001, // 003A JMPF R2 #003D + 0x540A000B, // 003B LDINT R2 12 + 0x80040400, // 003C RET 1 R2 + 0x540A000B, // 003D LDINT R2 12 + 0x80040400, // 003E RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_identifier +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_const_int(1), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(can_use_as_identifier), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20identifier), + /* K9 */ be_nested_str_weak(unknown), + }), + be_str_weak(expect_identifier), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0012, // 0004 JMPF R2 #0018 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x1C080502, // 0006 EQ R2 R2 K2 + 0x740A000A, // 0007 JMPT R2 #0013 + 0x88080301, // 0008 GETMBR R2 R1 K1 + 0x540E0003, // 0009 LDINT R3 4 + 0x1C080403, // 000A EQ R2 R2 R3 + 0x740A0006, // 000B JMPT R2 #0013 + 0x88080301, // 000C GETMBR R2 R1 K1 + 0x1C080503, // 000D EQ R2 R2 K3 + 0x780A0008, // 000E JMPF R2 #0018 + 0x8C080104, // 000F GETMET R2 R0 K4 + 0x88100305, // 0010 GETMBR R4 R1 K5 + 0x7C080400, // 0011 CALL R2 2 + 0x780A0004, // 0012 JMPF R2 #0018 + 0x88080305, // 0013 GETMBR R2 R1 K5 + 0x8C0C0106, // 0014 GETMET R3 R0 K6 + 0x7C0C0200, // 0015 CALL R3 1 + 0x80040400, // 0016 RET 1 R2 + 0x70020003, // 0017 JMP #001C + 0x8C080107, // 0018 GETMET R2 R0 K7 + 0x58100008, // 0019 LDCONST R4 K8 + 0x7C080400, // 001A CALL R2 2 + 0x80061200, // 001B RET 1 K9 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* 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[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060011, // 0002 JMPT R1 #0015 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000A, // 0007 JMPF R2 #0013 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x540E0022, // 0009 LDINT R3 35 + 0x1C080403, // 000A EQ R2 R2 R3 + 0x740A0003, // 000B JMPT R2 #0010 + 0x88080302, // 000C GETMBR R2 R1 K2 + 0x540E0024, // 000D LDINT R3 37 + 0x1C080403, // 000E EQ R2 R2 R3 + 0x780A0002, // 000F JMPF R2 #0013 + 0x8C080103, // 0010 GETMET R2 R0 K3 + 0x7C080200, // 0011 CALL R2 1 + 0x70020000, // 0012 JMP #0014 + 0x70020000, // 0013 JMP #0015 + 0x7001FFEA, // 0014 JMP #0000 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _split_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__split_function_arguments, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(split), + /* K3 */ be_nested_str_weak(_X2C), + /* K4 */ be_nested_str_weak(strip), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_split_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x1C0C0301, // 0001 EQ R3 R1 K1 + 0x740E0002, // 0002 JMPT R3 #0006 + 0x4C0C0000, // 0003 LDNIL R3 + 0x1C0C0203, // 0004 EQ R3 R1 R3 + 0x780E0002, // 0005 JMPF R3 #0009 + 0x600C0012, // 0006 GETGBL R3 G18 + 0x7C0C0000, // 0007 CALL R3 0 + 0x80040600, // 0008 RET 1 R3 + 0x8C0C0502, // 0009 GETMET R3 R2 K2 + 0x5C140200, // 000A MOVE R5 R1 + 0x58180003, // 000B LDCONST R6 K3 + 0x7C0C0600, // 000C CALL R3 3 + 0x60100012, // 000D GETGBL R4 G18 + 0x7C100000, // 000E CALL R4 0 + 0x60140010, // 000F GETGBL R5 G16 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C140200, // 0011 CALL R5 1 + 0xA802000D, // 0012 EXBLK 0 #0021 + 0x5C180A00, // 0013 MOVE R6 R5 + 0x7C180000, // 0014 CALL R6 0 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x5C240C00, // 0016 MOVE R9 R6 + 0x7C1C0400, // 0017 CALL R7 2 + 0x6020000C, // 0018 GETGBL R8 G12 + 0x5C240E00, // 0019 MOVE R9 R7 + 0x7C200200, // 001A CALL R8 1 + 0x24201105, // 001B GT R8 R8 K5 + 0x78220002, // 001C JMPF R8 #0020 + 0x8C200906, // 001D GETMET R8 R4 K6 + 0x5C280E00, // 001E MOVE R10 R7 + 0x7C200400, // 001F CALL R8 2 + 0x7001FFF1, // 0020 JMP #0013 + 0x58140007, // 0021 LDCONST R5 K7 + 0xAC140200, // 0022 CATCH R5 1 0 + 0xB0080000, // 0023 RAISE 2 R0 R0 + 0x80040800, // 0024 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace_including_newlines +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace_including_newlines), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060011, // 0002 JMPT R1 #0015 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000A, // 0007 JMPF R2 #0013 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0x540E0024, // 0009 LDINT R3 37 + 0x1C080403, // 000A EQ R2 R2 R3 + 0x740A0003, // 000B JMPT R2 #0010 + 0x88080302, // 000C GETMBR R2 R1 K2 + 0x540E0022, // 000D LDINT R3 35 + 0x1C080403, // 000E EQ R2 R2 R3 + 0x780A0002, // 000F JMPF R2 #0013 + 0x8C080103, // 0010 GETMET R2 R0 K3 + 0x7C080200, // 0011 CALL R2 1 + 0x70020000, // 0012 JMP #0014 + 0x70020000, // 0013 JMP #0015 + 0x7001FFEA, // 0014 JMP #0000 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_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[12]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(pull_lexer), + /* K2 */ be_nested_str_weak(output), + /* K3 */ be_nested_str_weak(warnings), + /* K4 */ be_nested_str_weak(run_statements), + /* K5 */ be_nested_str_weak(strip_initialized), + /* K6 */ be_nested_str_weak(symbol_table), + /* K7 */ be_nested_str_weak(_symbol_table), + /* K8 */ be_nested_str_weak(indent_level), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(has_template_calls), + /* K11 */ be_nested_str_weak(template_animation_params), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x90020201, // 0001 SETMBR R0 K1 R1 + 0x600C0012, // 0002 GETGBL R3 G18 + 0x7C0C0000, // 0003 CALL R3 0 + 0x90020403, // 0004 SETMBR R0 K2 R3 + 0x600C0012, // 0005 GETGBL R3 G18 + 0x7C0C0000, // 0006 CALL R3 0 + 0x90020603, // 0007 SETMBR R0 K3 R3 + 0x600C0012, // 0008 GETGBL R3 G18 + 0x7C0C0000, // 0009 CALL R3 0 + 0x90020803, // 000A SETMBR R0 K4 R3 + 0x500C0000, // 000B LDBOOL R3 0 0 + 0x90020A03, // 000C SETMBR R0 K5 R3 + 0x8C0C0507, // 000D GETMET R3 R2 K7 + 0x7C0C0200, // 000E CALL R3 1 + 0x90020C03, // 000F SETMBR R0 K6 R3 + 0x90021109, // 0010 SETMBR R0 K8 K9 + 0x500C0000, // 0011 LDBOOL R3 0 0 + 0x90021403, // 0012 SETMBR R0 K10 R3 + 0x4C0C0000, // 0013 LDNIL R3 + 0x90021603, // 0014 SETMBR R0 K11 R3 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_add, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(push), + }), + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_error_report +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(has_warnings), + /* K2 */ be_nested_str_weak(Compilation_X20warnings_X3A_X0A), + /* K3 */ be_nested_str_weak(warnings), + /* K4 */ be_nested_str_weak(_X20_X20), + /* K5 */ be_nested_str_weak(_X0A), + /* K6 */ be_nested_str_weak(stop_iteration), + /* K7 */ be_nested_str_weak(No_X20compilation_X20warnings), + }), + be_str_weak(get_error_report), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x8C080101, // 0001 GETMET R2 R0 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x780A000D, // 0003 JMPF R2 #0012 + 0x00040302, // 0004 ADD R1 R1 K2 + 0x60080010, // 0005 GETGBL R2 G16 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x00120803, // 000B ADD R4 K4 R3 + 0x00100905, // 000C ADD R4 R4 K5 + 0x00040204, // 000D ADD R1 R1 R4 + 0x7001FFF9, // 000E JMP #0009 + 0x58080006, // 000F LDCONST R2 K6 + 0xAC080200, // 0010 CATCH R2 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x1C080300, // 0012 EQ R2 R1 K0 + 0x780A0000, // 0013 JMPF R2 #0015 + 0x80060E00, // 0014 RET 1 K7 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile_template_animation_body +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile_template_animation_body, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(process_statement), + /* K6 */ be_nested_str_weak(run_statements), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(comment), + /* K9 */ be_nested_str_weak(add), + /* K10 */ be_nested_str_weak(self_X2Eadd_X28_X25s__X29_X25s), + /* K11 */ be_nested_str_weak(stop_iteration), + /* K12 */ be_nested_str_weak(join_output), + /* K13 */ be_nested_str_weak(error), + /* K14 */ be_nested_str_weak(Template_X20animation_X20body_X20transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile_template_animation_body), + &be_const_str_solidified, + ( &(const binstruction[78]) { /* code */ + 0xA8020041, // 0000 EXBLK 0 #0043 + 0x58040000, // 0001 LDCONST R1 K0 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x740A001F, // 0004 JMPT R2 #0025 + 0x8C080102, // 0005 GETMET R2 R0 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x4C0C0000, // 0007 LDNIL R3 + 0x200C0403, // 0008 NE R3 R2 R3 + 0x780E0006, // 0009 JMPF R3 #0011 + 0x880C0503, // 000A GETMBR R3 R2 K3 + 0x5412001A, // 000B LDINT R4 27 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x780E0002, // 000D JMPF R3 #0011 + 0x1C0C0300, // 000E EQ R3 R1 K0 + 0x780E0000, // 000F JMPF R3 #0011 + 0x70020013, // 0010 JMP #0025 + 0x4C0C0000, // 0011 LDNIL R3 + 0x200C0403, // 0012 NE R3 R2 R3 + 0x780E0005, // 0013 JMPF R3 #001A + 0x880C0503, // 0014 GETMBR R3 R2 K3 + 0x54120019, // 0015 LDINT R4 26 + 0x1C0C0604, // 0016 EQ R3 R3 R4 + 0x780E0001, // 0017 JMPF R3 #001A + 0x00040304, // 0018 ADD R1 R1 K4 + 0x70020007, // 0019 JMP #0022 + 0x4C0C0000, // 001A LDNIL R3 + 0x200C0403, // 001B NE R3 R2 R3 + 0x780E0004, // 001C JMPF R3 #0022 + 0x880C0503, // 001D GETMBR R3 R2 K3 + 0x5412001A, // 001E LDINT R4 27 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x780E0000, // 0020 JMPF R3 #0022 + 0x04040304, // 0021 SUB R1 R1 K4 + 0x8C0C0105, // 0022 GETMET R3 R0 K5 + 0x7C0C0200, // 0023 CALL R3 1 + 0x7001FFDC, // 0024 JMP #0002 + 0x6008000C, // 0025 GETGBL R2 G12 + 0x880C0106, // 0026 GETMBR R3 R0 K6 + 0x7C080200, // 0027 CALL R2 1 + 0x24080500, // 0028 GT R2 R2 K0 + 0x780A0012, // 0029 JMPF R2 #003D + 0x60080010, // 002A GETGBL R2 G16 + 0x880C0106, // 002B GETMBR R3 R0 K6 + 0x7C080200, // 002C CALL R2 1 + 0xA802000B, // 002D EXBLK 0 #003A + 0x5C0C0400, // 002E MOVE R3 R2 + 0x7C0C0000, // 002F CALL R3 0 + 0x94100707, // 0030 GETIDX R4 R3 K7 + 0x94140708, // 0031 GETIDX R5 R3 K8 + 0x8C180109, // 0032 GETMET R6 R0 K9 + 0x60200018, // 0033 GETGBL R8 G24 + 0x5824000A, // 0034 LDCONST R9 K10 + 0x5C280800, // 0035 MOVE R10 R4 + 0x5C2C0A00, // 0036 MOVE R11 R5 + 0x7C200600, // 0037 CALL R8 3 + 0x7C180400, // 0038 CALL R6 2 + 0x7001FFF3, // 0039 JMP #002E + 0x5808000B, // 003A LDCONST R2 K11 + 0xAC080200, // 003B CATCH R2 1 0 + 0xB0080000, // 003C RAISE 2 R0 R0 + 0x8C08010C, // 003D GETMET R2 R0 K12 + 0x7C080200, // 003E CALL R2 1 + 0xA8040001, // 003F EXBLK 1 1 + 0x80040400, // 0040 RET 1 R2 + 0xA8040001, // 0041 EXBLK 1 1 + 0x70020009, // 0042 JMP #004D + 0xAC040002, // 0043 CATCH R1 0 2 + 0x70020006, // 0044 JMP #004C + 0x8C0C010D, // 0045 GETMET R3 R0 K13 + 0x60140018, // 0046 GETGBL R5 G24 + 0x5818000E, // 0047 LDCONST R6 K14 + 0x5C1C0400, // 0048 MOVE R7 R2 + 0x7C140400, // 0049 CALL R5 2 + 0x7C0C0400, // 004A CALL R3 2 + 0x70020000, // 004B JMP #004D + 0xB0080000, // 004C RAISE 2 R0 R0 + 0x80000000, // 004D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_template_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_template_animation, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* 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(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(template_X20animation), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_left_brace), + /* K6 */ be_nested_str_weak(at_end), + /* K7 */ be_nested_str_weak(check_right_brace), + /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K9 */ be_nested_str_weak(current), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_const_int(0), + /* K12 */ be_nested_str_weak(value), + /* K13 */ be_nested_str_weak(param), + /* K14 */ be_nested_str_weak(_validate_template_parameter_name), + /* K15 */ be_nested_str_weak(_parse_parameter_constraints), + /* K16 */ be_nested_str_weak(push), + /* K17 */ be_nested_str_weak(generate_template_animation_class), + /* K18 */ be_nested_str_weak(params), + /* K19 */ be_nested_str_weak(param_types), + /* K20 */ be_nested_str_weak(symbol_table), + /* K21 */ be_nested_str_weak(create_template), + /* K22 */ be_nested_str_weak(_register_template_animation_constructor), + }), + be_str_weak(process_template_animation), + &be_const_str_solidified, + ( &(const binstruction[110]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040100, // 0002 GETMET R1 R0 K0 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040101, // 0004 GETMET R1 R0 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x8C080102, // 0006 GETMET R2 R0 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x58140003, // 0008 LDCONST R5 K3 + 0x7C080600, // 0009 CALL R2 3 + 0x740A0002, // 000A JMPT R2 #000E + 0x8C080104, // 000B GETMET R2 R0 K4 + 0x7C080200, // 000C CALL R2 1 + 0x80000400, // 000D RET 0 + 0x8C080105, // 000E GETMET R2 R0 K5 + 0x7C080200, // 000F CALL R2 1 + 0x60080012, // 0010 GETGBL R2 G18 + 0x7C080000, // 0011 CALL R2 0 + 0x600C0013, // 0012 GETGBL R3 G19 + 0x7C0C0000, // 0013 CALL R3 0 + 0x60100013, // 0014 GETGBL R4 G19 + 0x7C100000, // 0015 CALL R4 0 + 0x8C140106, // 0016 GETMET R5 R0 K6 + 0x7C140200, // 0017 CALL R5 1 + 0x74160040, // 0018 JMPT R5 #005A + 0x8C140107, // 0019 GETMET R5 R0 K7 + 0x7C140200, // 001A CALL R5 1 + 0x7416003D, // 001B JMPT R5 #005A + 0x8C140108, // 001C GETMET R5 R0 K8 + 0x7C140200, // 001D CALL R5 1 + 0x8C140107, // 001E GETMET R5 R0 K7 + 0x7C140200, // 001F CALL R5 1 + 0x78160000, // 0020 JMPF R5 #0022 + 0x70020037, // 0021 JMP #005A + 0x8C140109, // 0022 GETMET R5 R0 K9 + 0x7C140200, // 0023 CALL R5 1 + 0x4C180000, // 0024 LDNIL R6 + 0x20180A06, // 0025 NE R6 R5 R6 + 0x781A0030, // 0026 JMPF R6 #0058 + 0x88180B0A, // 0027 GETMBR R6 R5 K10 + 0x1C180D0B, // 0028 EQ R6 R6 K11 + 0x781A002D, // 0029 JMPF R6 #0058 + 0x88180B0C, // 002A GETMBR R6 R5 K12 + 0x1C180D0D, // 002B EQ R6 R6 K13 + 0x781A002A, // 002C JMPF R6 #0058 + 0x8C180100, // 002D GETMET R6 R0 K0 + 0x7C180200, // 002E CALL R6 1 + 0x8C180101, // 002F GETMET R6 R0 K1 + 0x7C180200, // 0030 CALL R6 1 + 0x8C1C010E, // 0031 GETMET R7 R0 K14 + 0x5C240C00, // 0032 MOVE R9 R6 + 0x5C280800, // 0033 MOVE R10 R4 + 0x502C0200, // 0034 LDBOOL R11 1 0 + 0x7C1C0800, // 0035 CALL R7 4 + 0x741E0002, // 0036 JMPT R7 #003A + 0x8C1C0104, // 0037 GETMET R7 R0 K4 + 0x7C1C0200, // 0038 CALL R7 1 + 0x80000E00, // 0039 RET 0 + 0x8C1C010F, // 003A GETMET R7 R0 K15 + 0x7C1C0200, // 003B CALL R7 1 + 0x8C200510, // 003C GETMET R8 R2 K16 + 0x5C280C00, // 003D MOVE R10 R6 + 0x7C200400, // 003E CALL R8 2 + 0x50200200, // 003F LDBOOL R8 1 0 + 0x98100C08, // 0040 SETIDX R4 R6 R8 + 0x4C200000, // 0041 LDNIL R8 + 0x20200E08, // 0042 NE R8 R7 R8 + 0x78220005, // 0043 JMPF R8 #004A + 0x6020000C, // 0044 GETGBL R8 G12 + 0x5C240E00, // 0045 MOVE R9 R7 + 0x7C200200, // 0046 CALL R8 1 + 0x2420110B, // 0047 GT R8 R8 K11 + 0x78220000, // 0048 JMPF R8 #004A + 0x980C0C07, // 0049 SETIDX R3 R6 R7 + 0x8C200109, // 004A GETMET R8 R0 K9 + 0x7C200200, // 004B CALL R8 1 + 0x4C240000, // 004C LDNIL R9 + 0x20201009, // 004D NE R8 R8 R9 + 0x78220007, // 004E JMPF R8 #0057 + 0x8C200109, // 004F GETMET R8 R0 K9 + 0x7C200200, // 0050 CALL R8 1 + 0x8820110A, // 0051 GETMBR R8 R8 K10 + 0x54260022, // 0052 LDINT R9 35 + 0x1C201009, // 0053 EQ R8 R8 R9 + 0x78220001, // 0054 JMPF R8 #0057 + 0x8C200100, // 0055 GETMET R8 R0 K0 + 0x7C200200, // 0056 CALL R8 1 + 0x70020000, // 0057 JMP #0059 + 0x70020000, // 0058 JMP #005A + 0x7001FFBB, // 0059 JMP #0016 + 0x8C140111, // 005A GETMET R5 R0 K17 + 0x5C1C0200, // 005B MOVE R7 R1 + 0x5C200400, // 005C MOVE R8 R2 + 0x5C240600, // 005D MOVE R9 R3 + 0x7C140800, // 005E CALL R5 4 + 0x60140013, // 005F GETGBL R5 G19 + 0x7C140000, // 0060 CALL R5 0 + 0x98162402, // 0061 SETIDX R5 K18 R2 + 0x98162603, // 0062 SETIDX R5 K19 R3 + 0x88180114, // 0063 GETMBR R6 R0 K20 + 0x8C180D15, // 0064 GETMET R6 R6 K21 + 0x5C200200, // 0065 MOVE R8 R1 + 0x5C240A00, // 0066 MOVE R9 R5 + 0x7C180600, // 0067 CALL R6 3 + 0x8C180116, // 0068 GETMET R6 R0 K22 + 0x5C200200, // 0069 MOVE R8 R1 + 0x5C240400, // 006A MOVE R9 R2 + 0x5C280600, // 006B MOVE R10 R3 + 0x7C180800, // 006C CALL R6 4 + 0x80000000, // 006D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), + }), + be_str_weak(expect_right_brace), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001A, // 0006 LDINT R3 27 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_multiplicative_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ + be_nested_proto( + 15, /* nstack */ + 4, /* 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(process_unary_expression), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(value), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(has_dangerous), + /* K7 */ be_nested_str_weak(expr), + /* K8 */ be_nested_str_weak(error), + /* K9 */ be_nested_str_weak(Expression_X20_X27_X25s_X27_X20cannot_X20be_X20used_X20in_X20computed_X20expressions_X2E_X20This_X20creates_X20a_X20new_X20instance_X20at_X20each_X20evaluation_X2E_X20Use_X20either_X3A_X0A_X20_X20set_X20var_name_X20_X3D_X20_X25s_X28_X29_X20_X20_X23_X20Single_X20function_X20call_X0A_X20_X20set_X20computed_X20_X3D_X20_X28existing_var_X20_X2B_X201_X29_X20_X2F_X202_X20_X20_X23_X20Computation_X20with_X20existing_X20values), + /* K10 */ be_nested_str_weak(skip_statement), + /* K11 */ be_nested_str_weak(ExpressionResult), + /* K12 */ be_nested_str_weak(literal), + /* K13 */ be_nested_str_weak(nil), + /* K14 */ be_nested_str_weak(combine), + /* K15 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + }), + be_str_weak(process_multiplicative_expression), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* 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 + 0x7416003A, // 0007 JMPT R5 #0043 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A0033, // 000C JMPF R6 #0041 + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0x541E000A, // 000E LDINT R7 11 + 0x1C180C07, // 000F EQ R6 R6 R7 + 0x741A0003, // 0010 JMPT R6 #0015 + 0x88180B03, // 0011 GETMBR R6 R5 K3 + 0x541E000B, // 0012 LDINT R7 12 + 0x1C180C07, // 0013 EQ R6 R6 R7 + 0x781A002B, // 0014 JMPF R6 #0041 + 0x88180B04, // 0015 GETMBR R6 R5 K4 + 0x8C1C0105, // 0016 GETMET R7 R0 K5 + 0x7C1C0200, // 0017 CALL R7 1 + 0x8C1C0100, // 0018 GETMET R7 R0 K0 + 0x5C240200, // 0019 MOVE R9 R1 + 0x50280000, // 001A LDBOOL R10 0 0 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C1C0800, // 001C CALL R7 4 + 0x88200906, // 001D GETMBR R8 R4 K6 + 0x74220001, // 001E JMPT R8 #0021 + 0x88200F06, // 001F GETMBR R8 R7 K6 + 0x78220012, // 0020 JMPF R8 #0034 + 0x88200906, // 0021 GETMBR R8 R4 K6 + 0x78220001, // 0022 JMPF R8 #0025 + 0x88200907, // 0023 GETMBR R8 R4 K7 + 0x70020000, // 0024 JMP #0026 + 0x88200F07, // 0025 GETMBR R8 R7 K7 + 0x8C240108, // 0026 GETMET R9 R0 K8 + 0x602C0018, // 0027 GETGBL R11 G24 + 0x58300009, // 0028 LDCONST R12 K9 + 0x5C341000, // 0029 MOVE R13 R8 + 0x5C381000, // 002A MOVE R14 R8 + 0x7C2C0600, // 002B CALL R11 3 + 0x7C240400, // 002C CALL R9 2 + 0x8C24010A, // 002D GETMET R9 R0 K10 + 0x7C240200, // 002E CALL R9 1 + 0x8824010B, // 002F GETMBR R9 R0 K11 + 0x8C24130C, // 0030 GETMET R9 R9 K12 + 0x582C000D, // 0031 LDCONST R11 K13 + 0x7C240400, // 0032 CALL R9 2 + 0x80041200, // 0033 RET 1 R9 + 0x8820010B, // 0034 GETMBR R8 R0 K11 + 0x8C20110E, // 0035 GETMET R8 R8 K14 + 0x60280018, // 0036 GETGBL R10 G24 + 0x582C000F, // 0037 LDCONST R11 K15 + 0x88300907, // 0038 GETMBR R12 R4 K7 + 0x5C340C00, // 0039 MOVE R13 R6 + 0x88380F07, // 003A GETMBR R14 R7 K7 + 0x7C280800, // 003B CALL R10 4 + 0x5C2C0800, // 003C MOVE R11 R4 + 0x5C300E00, // 003D MOVE R12 R7 + 0x7C200800, // 003E CALL R8 4 + 0x5C101000, // 003F MOVE R4 R8 + 0x70020000, // 0040 JMP #0042 + 0x70020000, // 0041 JMP #0043 + 0x7001FFC1, // 0042 JMP #0005 + 0x80040800, // 0043 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_colon +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), + }), + be_str_weak(expect_colon), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0006, // 0004 JMPF R2 #000C + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001F, // 0006 LDINT R3 32 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x780A0002, // 0008 JMPF R2 #000C + 0x8C080102, // 0009 GETMET R2 R0 K2 + 0x7C080200, // 000A CALL R2 1 + 0x70020002, // 000B JMP #000F + 0x8C080103, // 000C GETMET R2 R0 K3 + 0x58100004, // 000D LDCONST R4 K4 + 0x7C080400, // 000E CALL R2 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + }), + be_str_weak(check_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001C, // 0006 LDINT R3 29 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x740A0000, // 0008 JMPT R2 #000A + 0x50080001, // 0009 LDBOOL R2 0 1 + 0x50080200, // 000A LDBOOL R2 1 0 + 0x80040400, // 000B RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_statement, /* 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[42]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(add), + /* K3 */ be_nested_str_weak(value), + /* K4 */ be_nested_str_weak(next), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(strip), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), + /* K9 */ be_nested_str_weak(skip_statement), + /* K10 */ be_nested_str_weak(template), + /* K11 */ be_nested_str_weak(peek), + /* K12 */ be_nested_str_weak(animation), + /* K13 */ be_nested_str_weak(process_template_animation), + /* K14 */ be_nested_str_weak(Simple_X20_X27template_X27_X20is_X20not_X20supported_X2E_X20Use_X20_X27template_X20animation_X27_X20instead_X20to_X20create_X20reusable_X20animation_X20classes_X2E), + /* K15 */ be_nested_str_weak(strip_initialized), + /* K16 */ be_nested_str_weak(generate_default_strip_initialization), + /* K17 */ be_nested_str_weak(color), + /* K18 */ be_nested_str_weak(process_color), + /* K19 */ be_nested_str_weak(palette), + /* K20 */ be_nested_str_weak(process_palette), + /* K21 */ be_nested_str_weak(process_animation), + /* K22 */ be_nested_str_weak(set), + /* K23 */ be_nested_str_weak(process_set), + /* K24 */ be_nested_str_weak(sequence), + /* K25 */ be_nested_str_weak(process_sequence), + /* K26 */ be_nested_str_weak(run), + /* K27 */ be_nested_str_weak(process_run), + /* K28 */ be_nested_str_weak(import), + /* K29 */ be_nested_str_weak(process_import), + /* K30 */ be_nested_str_weak(on), + /* K31 */ be_nested_str_weak(process_event_handler), + /* K32 */ be_nested_str_weak(berry), + /* K33 */ be_nested_str_weak(process_berry_code_block), + /* K34 */ be_nested_str_weak(extern), + /* K35 */ be_nested_str_weak(process_external_function), + /* K36 */ be_nested_str_weak(Unknown_X20keyword_X20_X27_X25s_X27_X2E), + /* K37 */ be_const_int(1), + /* K38 */ be_nested_str_weak(log), + /* K39 */ be_nested_str_weak(process_standalone_log), + /* K40 */ be_nested_str_weak(process_property_assignment), + /* K41 */ be_nested_str_weak(Unexpected_X20token_X20_X27_X25s_X27_X2E), + }), + be_str_weak(process_statement), + &be_const_str_solidified, + ( &(const binstruction[168]) { /* 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 + 0x80000400, // 0005 RET 0 + 0x88080301, // 0006 GETMBR R2 R1 K1 + 0x540E0024, // 0007 LDINT R3 37 + 0x1C080403, // 0008 EQ R2 R2 R3 + 0x780A0005, // 0009 JMPF R2 #0010 + 0x8C080102, // 000A GETMET R2 R0 K2 + 0x88100303, // 000B GETMBR R4 R1 K3 + 0x7C080400, // 000C CALL R2 2 + 0x8C080104, // 000D GETMET R2 R0 K4 + 0x7C080200, // 000E CALL R2 1 + 0x80000400, // 000F RET 0 + 0x88080301, // 0010 GETMBR R2 R1 K1 + 0x540E0022, // 0011 LDINT R3 35 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080104, // 0014 GETMET R2 R0 K4 + 0x7C080200, // 0015 CALL R2 1 + 0x80000400, // 0016 RET 0 + 0x88080301, // 0017 GETMBR R2 R1 K1 + 0x1C080505, // 0018 EQ R2 R2 K5 + 0x780A0069, // 0019 JMPF R2 #0084 + 0x88080303, // 001A GETMBR R2 R1 K3 + 0x1C080506, // 001B EQ R2 R2 K6 + 0x780A0006, // 001C JMPF R2 #0024 + 0x8C080107, // 001D GETMET R2 R0 K7 + 0x58100008, // 001E LDCONST R4 K8 + 0x7C080400, // 001F CALL R2 2 + 0x8C080109, // 0020 GETMET R2 R0 K9 + 0x7C080200, // 0021 CALL R2 1 + 0x80000400, // 0022 RET 0 + 0x7002005E, // 0023 JMP #0083 + 0x88080303, // 0024 GETMBR R2 R1 K3 + 0x1C08050A, // 0025 EQ R2 R2 K10 + 0x780A0013, // 0026 JMPF R2 #003B + 0x8C08010B, // 0027 GETMET R2 R0 K11 + 0x7C080200, // 0028 CALL R2 1 + 0x4C0C0000, // 0029 LDNIL R3 + 0x200C0403, // 002A NE R3 R2 R3 + 0x780E0008, // 002B JMPF R3 #0035 + 0x880C0501, // 002C GETMBR R3 R2 K1 + 0x1C0C0705, // 002D EQ R3 R3 K5 + 0x780E0005, // 002E JMPF R3 #0035 + 0x880C0503, // 002F GETMBR R3 R2 K3 + 0x1C0C070C, // 0030 EQ R3 R3 K12 + 0x780E0002, // 0031 JMPF R3 #0035 + 0x8C0C010D, // 0032 GETMET R3 R0 K13 + 0x7C0C0200, // 0033 CALL R3 1 + 0x70020004, // 0034 JMP #003A + 0x8C0C0107, // 0035 GETMET R3 R0 K7 + 0x5814000E, // 0036 LDCONST R5 K14 + 0x7C0C0400, // 0037 CALL R3 2 + 0x8C0C0109, // 0038 GETMET R3 R0 K9 + 0x7C0C0200, // 0039 CALL R3 1 + 0x70020047, // 003A JMP #0083 + 0x8808010F, // 003B GETMBR R2 R0 K15 + 0x740A0001, // 003C JMPT R2 #003F + 0x8C080110, // 003D GETMET R2 R0 K16 + 0x7C080200, // 003E CALL R2 1 + 0x88080303, // 003F GETMBR R2 R1 K3 + 0x1C080511, // 0040 EQ R2 R2 K17 + 0x780A0002, // 0041 JMPF R2 #0045 + 0x8C080112, // 0042 GETMET R2 R0 K18 + 0x7C080200, // 0043 CALL R2 1 + 0x7002003D, // 0044 JMP #0083 + 0x88080303, // 0045 GETMBR R2 R1 K3 + 0x1C080513, // 0046 EQ R2 R2 K19 + 0x780A0002, // 0047 JMPF R2 #004B + 0x8C080114, // 0048 GETMET R2 R0 K20 + 0x7C080200, // 0049 CALL R2 1 + 0x70020037, // 004A JMP #0083 + 0x88080303, // 004B GETMBR R2 R1 K3 + 0x1C08050C, // 004C EQ R2 R2 K12 + 0x780A0002, // 004D JMPF R2 #0051 + 0x8C080115, // 004E GETMET R2 R0 K21 + 0x7C080200, // 004F CALL R2 1 + 0x70020031, // 0050 JMP #0083 + 0x88080303, // 0051 GETMBR R2 R1 K3 + 0x1C080516, // 0052 EQ R2 R2 K22 + 0x780A0002, // 0053 JMPF R2 #0057 + 0x8C080117, // 0054 GETMET R2 R0 K23 + 0x7C080200, // 0055 CALL R2 1 + 0x7002002B, // 0056 JMP #0083 + 0x88080303, // 0057 GETMBR R2 R1 K3 + 0x1C080518, // 0058 EQ R2 R2 K24 + 0x780A0002, // 0059 JMPF R2 #005D + 0x8C080119, // 005A GETMET R2 R0 K25 + 0x7C080200, // 005B CALL R2 1 + 0x70020025, // 005C JMP #0083 + 0x88080303, // 005D GETMBR R2 R1 K3 + 0x1C08051A, // 005E EQ R2 R2 K26 + 0x780A0002, // 005F JMPF R2 #0063 + 0x8C08011B, // 0060 GETMET R2 R0 K27 + 0x7C080200, // 0061 CALL R2 1 + 0x7002001F, // 0062 JMP #0083 + 0x88080303, // 0063 GETMBR R2 R1 K3 + 0x1C08051C, // 0064 EQ R2 R2 K28 + 0x780A0002, // 0065 JMPF R2 #0069 + 0x8C08011D, // 0066 GETMET R2 R0 K29 + 0x7C080200, // 0067 CALL R2 1 + 0x70020019, // 0068 JMP #0083 + 0x88080303, // 0069 GETMBR R2 R1 K3 + 0x1C08051E, // 006A EQ R2 R2 K30 + 0x780A0002, // 006B JMPF R2 #006F + 0x8C08011F, // 006C GETMET R2 R0 K31 + 0x7C080200, // 006D CALL R2 1 + 0x70020013, // 006E JMP #0083 + 0x88080303, // 006F GETMBR R2 R1 K3 + 0x1C080520, // 0070 EQ R2 R2 K32 + 0x780A0002, // 0071 JMPF R2 #0075 + 0x8C080121, // 0072 GETMET R2 R0 K33 + 0x7C080200, // 0073 CALL R2 1 + 0x7002000D, // 0074 JMP #0083 + 0x88080303, // 0075 GETMBR R2 R1 K3 + 0x1C080522, // 0076 EQ R2 R2 K34 + 0x780A0002, // 0077 JMPF R2 #007B + 0x8C080123, // 0078 GETMET R2 R0 K35 + 0x7C080200, // 0079 CALL R2 1 + 0x70020007, // 007A JMP #0083 + 0x8C080107, // 007B GETMET R2 R0 K7 + 0x60100018, // 007C GETGBL R4 G24 + 0x58140024, // 007D LDCONST R5 K36 + 0x88180303, // 007E GETMBR R6 R1 K3 + 0x7C100400, // 007F CALL R4 2 + 0x7C080400, // 0080 CALL R2 2 + 0x8C080109, // 0081 GETMET R2 R0 K9 + 0x7C080200, // 0082 CALL R2 1 + 0x70020022, // 0083 JMP #00A7 + 0x88080301, // 0084 GETMBR R2 R1 K1 + 0x1C080525, // 0085 EQ R2 R2 K37 + 0x780A0017, // 0086 JMPF R2 #009F + 0x8808010F, // 0087 GETMBR R2 R0 K15 + 0x740A0001, // 0088 JMPT R2 #008B + 0x8C080110, // 0089 GETMET R2 R0 K16 + 0x7C080200, // 008A CALL R2 1 + 0x88080303, // 008B GETMBR R2 R1 K3 + 0x1C080526, // 008C EQ R2 R2 K38 + 0x780A000D, // 008D JMPF R2 #009C + 0x8C08010B, // 008E GETMET R2 R0 K11 + 0x7C080200, // 008F CALL R2 1 + 0x4C0C0000, // 0090 LDNIL R3 + 0x20080403, // 0091 NE R2 R2 R3 + 0x780A0008, // 0092 JMPF R2 #009C + 0x8C08010B, // 0093 GETMET R2 R0 K11 + 0x7C080200, // 0094 CALL R2 1 + 0x88080501, // 0095 GETMBR R2 R2 K1 + 0x540E0017, // 0096 LDINT R3 24 + 0x1C080403, // 0097 EQ R2 R2 R3 + 0x780A0002, // 0098 JMPF R2 #009C + 0x8C080127, // 0099 GETMET R2 R0 K39 + 0x7C080200, // 009A CALL R2 1 + 0x70020001, // 009B JMP #009E + 0x8C080128, // 009C GETMET R2 R0 K40 + 0x7C080200, // 009D CALL R2 1 + 0x70020007, // 009E JMP #00A7 + 0x8C080107, // 009F GETMET R2 R0 K7 + 0x60100018, // 00A0 GETGBL R4 G24 + 0x58140029, // 00A1 LDCONST R5 K41 + 0x88180303, // 00A2 GETMBR R6 R1 K3 + 0x7C100400, // 00A3 CALL R4 2 + 0x7C080400, // 00A4 CALL R2 2 + 0x8C080109, // 00A5 GETMET R2 R0 K9 + 0x7C080200, // 00A6 CALL R2 1 + 0x80000000, // 00A7 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_event_parameters ********************************************************************/ @@ -10342,169 +14399,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name * /******************************************************************** -** Solidified function: process_play_statement_fluent +** Solidified function: get_named_color_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_play_statement_fluent, /* name */ +be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(1), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(peek), - /* K7 */ be_nested_str_weak(process_nested_function_call), - /* K8 */ be_nested_str_weak(expect_identifier), - /* K9 */ be_nested_str_weak(_validate_object_reference), - /* K10 */ be_nested_str_weak(sequence_X20play), - /* K11 */ be_nested_str_weak(_X25s_), - /* K12 */ be_nested_str_weak(nil), - /* K13 */ be_nested_str_weak(value), - /* K14 */ be_nested_str_weak(for), - /* K15 */ be_const_int(2), - /* K16 */ be_nested_str_weak(process_time_value), - /* K17 */ be_nested_str_weak(self_X2E), - /* K18 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), - /* K22 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_play_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[111]) { /* 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 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E0014, // 0007 JMPF R3 #001D - 0x880C0503, // 0008 GETMBR R3 R2 K3 - 0x1C0C0704, // 0009 EQ R3 R3 K4 - 0x740E0002, // 000A JMPT R3 #000E - 0x880C0503, // 000B GETMBR R3 R2 K3 - 0x1C0C0705, // 000C EQ R3 R3 K5 - 0x780E000E, // 000D JMPF R3 #001D - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0x4C100000, // 0010 LDNIL R4 - 0x200C0604, // 0011 NE R3 R3 R4 - 0x780E0009, // 0012 JMPF R3 #001D - 0x8C0C0106, // 0013 GETMET R3 R0 K6 - 0x7C0C0200, // 0014 CALL R3 1 - 0x880C0703, // 0015 GETMBR R3 R3 K3 - 0x54120017, // 0016 LDINT R4 24 - 0x1C0C0604, // 0017 EQ R3 R3 R4 - 0x780E0003, // 0018 JMPF R3 #001D - 0x8C0C0107, // 0019 GETMET R3 R0 K7 - 0x7C0C0200, // 001A CALL R3 1 - 0x5C040600, // 001B MOVE R1 R3 - 0x7002000A, // 001C JMP #0028 - 0x8C0C0108, // 001D GETMET R3 R0 K8 - 0x7C0C0200, // 001E CALL R3 1 - 0x8C100109, // 001F GETMET R4 R0 K9 - 0x5C180600, // 0020 MOVE R6 R3 - 0x581C000A, // 0021 LDCONST R7 K10 - 0x7C100600, // 0022 CALL R4 3 - 0x60100018, // 0023 GETGBL R4 G24 - 0x5814000B, // 0024 LDCONST R5 K11 - 0x5C180600, // 0025 MOVE R6 R3 - 0x7C100400, // 0026 CALL R4 2 - 0x5C040800, // 0027 MOVE R1 R4 - 0x580C000C, // 0028 LDCONST R3 K12 - 0x8C100102, // 0029 GETMET R4 R0 K2 - 0x7C100200, // 002A CALL R4 1 - 0x4C140000, // 002B LDNIL R5 - 0x20100805, // 002C NE R4 R4 R5 - 0x78120033, // 002D JMPF R4 #0062 - 0x8C100102, // 002E GETMET R4 R0 K2 - 0x7C100200, // 002F CALL R4 1 - 0x88100903, // 0030 GETMBR R4 R4 K3 - 0x1C100905, // 0031 EQ R4 R4 K5 - 0x7812002E, // 0032 JMPF R4 #0062 - 0x8C100102, // 0033 GETMET R4 R0 K2 - 0x7C100200, // 0034 CALL R4 1 - 0x8810090D, // 0035 GETMBR R4 R4 K13 - 0x1C10090E, // 0036 EQ R4 R4 K14 - 0x78120029, // 0037 JMPF R4 #0062 - 0x8C100100, // 0038 GETMET R4 R0 K0 - 0x7C100200, // 0039 CALL R4 1 - 0x8C100102, // 003A GETMET R4 R0 K2 - 0x7C100200, // 003B CALL R4 1 - 0x4C140000, // 003C LDNIL R5 - 0x20140805, // 003D NE R5 R4 R5 - 0x7816000A, // 003E JMPF R5 #004A - 0x88140903, // 003F GETMBR R5 R4 K3 - 0x541A0004, // 0040 LDINT R6 5 - 0x1C140A06, // 0041 EQ R5 R5 R6 - 0x74160002, // 0042 JMPT R5 #0046 - 0x88140903, // 0043 GETMBR R5 R4 K3 - 0x1C140B0F, // 0044 EQ R5 R5 K15 - 0x78160003, // 0045 JMPF R5 #004A - 0x8C140110, // 0046 GETMET R5 R0 K16 - 0x7C140200, // 0047 CALL R5 1 - 0x5C0C0A00, // 0048 MOVE R3 R5 - 0x70020017, // 0049 JMP #0062 - 0x4C140000, // 004A LDNIL R5 - 0x20140805, // 004B NE R5 R4 R5 - 0x78160011, // 004C JMPF R5 #005F - 0x88140903, // 004D GETMBR R5 R4 K3 - 0x1C140B04, // 004E EQ R5 R5 K4 - 0x7816000E, // 004F JMPF R5 #005F - 0x8C140110, // 0050 GETMET R5 R0 K16 - 0x7C140200, // 0051 CALL R5 1 - 0x541A0003, // 0052 LDINT R6 4 - 0x401A0A06, // 0053 CONNECT R6 K5 R6 - 0x94180A06, // 0054 GETIDX R6 R5 R6 - 0x1C180D11, // 0055 EQ R6 R6 K17 - 0x781A0005, // 0056 JMPF R6 #005D - 0x60180018, // 0057 GETGBL R6 G24 - 0x581C0012, // 0058 LDCONST R7 K18 - 0x5C200A00, // 0059 MOVE R8 R5 - 0x7C180400, // 005A CALL R6 2 - 0x5C0C0C00, // 005B MOVE R3 R6 - 0x70020000, // 005C JMP #005E - 0x5C0C0A00, // 005D MOVE R3 R5 - 0x70020002, // 005E JMP #0062 - 0x8C140110, // 005F GETMET R5 R0 K16 - 0x7C140200, // 0060 CALL R5 1 - 0x5C0C0A00, // 0061 MOVE R3 R5 - 0x8C100113, // 0062 GETMET R4 R0 K19 - 0x7C100200, // 0063 CALL R4 1 - 0x8C140114, // 0064 GETMET R5 R0 K20 - 0x601C0018, // 0065 GETGBL R7 G24 - 0x58200015, // 0066 LDCONST R8 K21 - 0x8C240116, // 0067 GETMET R9 R0 K22 - 0x7C240200, // 0068 CALL R9 1 - 0x5C280200, // 0069 MOVE R10 R1 - 0x5C2C0600, // 006A MOVE R11 R3 - 0x5C300800, // 006B MOVE R12 R4 - 0x7C1C0A00, // 006C CALL R7 5 - 0x7C140400, // 006D CALL R5 2 - 0x80000000, // 006E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ - be_nested_proto( - 11, /* nstack */ + 5, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -10512,96 +14411,18 @@ be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(process_additive_expression), - /* K1 */ be_nested_str_weak(CONTEXT_VARIABLE), - /* K2 */ be_nested_str_weak(CONTEXT_PROPERTY), - /* K3 */ be_nested_str_weak(needs_closure), - /* K4 */ be_nested_str_weak(CONTEXT_REPEAT_COUNT), - /* K5 */ be_nested_str_weak(needs_function), - /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), - /* K7 */ be_nested_str_weak(expr), - /* K8 */ be_nested_str_weak(ExpressionResult), - /* K9 */ be_nested_str_weak(function_call), - /* K10 */ be_nested_str_weak(return_type), - /* K11 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20def_X20_X28engine_X29_X20return_X20_X25s_X20end_X29), - /* K12 */ be_nested_str_weak(has_computation), - /* K13 */ be_nested_str_weak(_unwrap_resolve), - /* K14 */ be_nested_str_weak(symbol_table), - /* K15 */ be_nested_str_weak(get), - /* K16 */ be_nested_str_weak(closure_value), - /* K17 */ be_nested_str_weak(type), - /* K18 */ be_nested_str_weak(instance), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(get_reference), }), - be_str_weak(process_value), + be_str_weak(get_named_color_value), &be_const_str_solidified, - ( &(const binstruction[66]) { /* 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 - 0x880C0101, // 0005 GETMBR R3 R0 K1 - 0x1C0C0203, // 0006 EQ R3 R1 R3 - 0x740E0002, // 0007 JMPT R3 #000B - 0x880C0102, // 0008 GETMBR R3 R0 K2 - 0x1C0C0203, // 0009 EQ R3 R1 R3 - 0x780E0002, // 000A JMPF R3 #000E - 0x8C0C0503, // 000B GETMET R3 R2 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x740E0005, // 000D JMPT R3 #0014 - 0x880C0104, // 000E GETMBR R3 R0 K4 - 0x1C0C0203, // 000F EQ R3 R1 R3 - 0x780E002E, // 0010 JMPF R3 #0040 - 0x8C0C0505, // 0011 GETMET R3 R2 K5 - 0x7C0C0200, // 0012 CALL R3 1 - 0x780E002B, // 0013 JMPF R3 #0040 - 0x880C0104, // 0014 GETMBR R3 R0 K4 - 0x1C0C0203, // 0015 EQ R3 R1 R3 - 0x780E000A, // 0016 JMPF R3 #0022 - 0x600C0018, // 0017 GETGBL R3 G24 - 0x58100006, // 0018 LDCONST R4 K6 - 0x88140507, // 0019 GETMBR R5 R2 K7 - 0x7C0C0400, // 001A CALL R3 2 - 0x88100108, // 001B GETMBR R4 R0 K8 - 0x8C100909, // 001C GETMET R4 R4 K9 - 0x5C180600, // 001D MOVE R6 R3 - 0x881C050A, // 001E GETMBR R7 R2 K10 - 0x7C100600, // 001F CALL R4 3 - 0x80040800, // 0020 RET 1 R4 - 0x7002001C, // 0021 JMP #003F - 0x600C0018, // 0022 GETGBL R3 G24 - 0x5810000B, // 0023 LDCONST R4 K11 - 0x88140507, // 0024 GETMBR R5 R2 K7 - 0x7C0C0400, // 0025 CALL R3 2 - 0x8810050A, // 0026 GETMBR R4 R2 K10 - 0x54160008, // 0027 LDINT R5 9 - 0x1C100805, // 0028 EQ R4 R4 R5 - 0x78120002, // 0029 JMPF R4 #002D - 0x8810050C, // 002A GETMBR R4 R2 K12 - 0x74120000, // 002B JMPT R4 #002D - 0x880C0507, // 002C GETMBR R3 R2 K7 - 0x8C10010D, // 002D GETMET R4 R0 K13 - 0x88180507, // 002E GETMBR R6 R2 K7 - 0x7C100400, // 002F CALL R4 2 - 0x4C140000, // 0030 LDNIL R5 - 0x20140805, // 0031 NE R5 R4 R5 - 0x78160000, // 0032 JMPF R5 #0034 - 0x5C0C0800, // 0033 MOVE R3 R4 - 0x8814010E, // 0034 GETMBR R5 R0 K14 - 0x8C140B0F, // 0035 GETMET R5 R5 K15 - 0x581C0010, // 0036 LDCONST R7 K16 - 0x7C140400, // 0037 CALL R5 2 - 0x88180108, // 0038 GETMBR R6 R0 K8 - 0x8C180D09, // 0039 GETMET R6 R6 K9 - 0x5C200600, // 003A MOVE R8 R3 - 0x88240B11, // 003B GETMBR R9 R5 K17 - 0x88280B12, // 003C GETMBR R10 R5 K18 - 0x7C180800, // 003D CALL R6 4 - 0x80040C00, // 003E RET 1 R6 - 0x70020000, // 003F JMP #0041 - 0x80040400, // 0040 RET 1 R2 - 0x80000000, // 0041 RET 0 + ( &(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 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -10609,9 +14430,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ /******************************************************************** -** Solidified function: expect_assign +** Solidified function: expect_number ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -10621,32 +14442,37 @@ be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(value), + /* K4 */ be_nested_str_weak(next), + /* K5 */ be_nested_str_weak(error), + /* K6 */ be_nested_str_weak(Expected_X20number), + /* K7 */ be_nested_str_weak(0), }), - be_str_weak(expect_assign), + be_str_weak(expect_number), &be_const_str_solidified, - ( &(const binstruction[16]) { /* 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 - 0x780A0006, // 0004 JMPF R2 #000C + 0x780A0007, // 0004 JMPF R2 #000D 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0007, // 0006 LDINT R3 8 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 + 0x1C080502, // 0006 EQ R2 R2 K2 + 0x780A0004, // 0007 JMPF R2 #000D + 0x88080303, // 0008 GETMBR R2 R1 K3 + 0x8C0C0104, // 0009 GETMET R3 R0 K4 + 0x7C0C0200, // 000A CALL R3 1 + 0x80040400, // 000B RET 1 R2 + 0x70020003, // 000C JMP #0011 + 0x8C080105, // 000D GETMET R2 R0 K5 + 0x58100006, // 000E LDCONST R4 K6 + 0x7C080400, // 000F CALL R2 2 + 0x80060E00, // 0010 RET 1 K7 + 0x80000000, // 0011 RET 0 }) ) ); @@ -10654,43 +14480,105 @@ be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ /******************************************************************** -** Solidified function: _validate_object_reference +** Solidified function: _add_inherited_params_to_template ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ +be_local_closure(class_SimpleDSLTranspiler__add_inherited_params_to_template, /* name */ be_nested_proto( - 9, /* nstack */ - 3, /* argc */ + 10, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(symbol_exists), - /* K2 */ be_nested_str_weak(error), - /* K3 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(init_strip), + /* K3 */ be_nested_str_weak(engine_proxy), + /* K4 */ be_nested_str_weak(contains), + /* K5 */ be_nested_str_weak(PARAMS), + /* K6 */ be_nested_str_weak(keys), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(name), + /* K9 */ be_nested_str_weak(priority), + /* K10 */ be_nested_str_weak(duration), + /* K11 */ be_nested_str_weak(loop), + /* K12 */ be_nested_str_weak(opacity), + /* K13 */ be_nested_str_weak(color), + /* K14 */ be_nested_str_weak(is_running), }), - be_str_weak(_validate_object_reference), + be_str_weak(_add_inherited_params_to_template), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x8C0C0701, // 0001 GETMET R3 R3 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x740E0008, // 0004 JMPT R3 #000E - 0x8C0C0102, // 0005 GETMET R3 R0 K2 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180003, // 0007 LDCONST R6 K3 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x5C200400, // 0009 MOVE R8 R2 - 0x7C140600, // 000A CALL R5 3 - 0x7C0C0400, // 000B CALL R3 2 - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x80040600, // 000D RET 1 R3 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x80040600, // 000F RET 1 R3 + ( &(const binstruction[67]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA8020026, // 0001 EXBLK 0 #0029 + 0xB80E0200, // 0002 GETNGBL R3 K1 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x7C0C0200, // 0004 CALL R3 1 + 0xB8120200, // 0005 GETNGBL R4 K1 + 0x8C100903, // 0006 GETMET R4 R4 K3 + 0x5C180600, // 0007 MOVE R6 R3 + 0x7C100400, // 0008 CALL R4 2 + 0x60140006, // 0009 GETGBL R5 G6 + 0x5C180800, // 000A MOVE R6 R4 + 0x7C140200, // 000B CALL R5 1 + 0x4C180000, // 000C LDNIL R6 + 0x20180A06, // 000D NE R6 R5 R6 + 0x781A0017, // 000E JMPF R6 #0027 + 0x8C180504, // 000F GETMET R6 R2 K4 + 0x5C200A00, // 0010 MOVE R8 R5 + 0x58240005, // 0011 LDCONST R9 K5 + 0x7C180600, // 0012 CALL R6 3 + 0x781A000D, // 0013 JMPF R6 #0022 + 0x88180B05, // 0014 GETMBR R6 R5 K5 + 0x601C0010, // 0015 GETGBL R7 G16 + 0x8C200D06, // 0016 GETMET R8 R6 K6 + 0x7C200200, // 0017 CALL R8 1 + 0x7C1C0200, // 0018 CALL R7 1 + 0xA8020004, // 0019 EXBLK 0 #001F + 0x5C200E00, // 001A MOVE R8 R7 + 0x7C200000, // 001B CALL R8 0 + 0x50240200, // 001C LDBOOL R9 1 0 + 0x98041009, // 001D SETIDX R1 R8 R9 + 0x7001FFFA, // 001E JMP #001A + 0x581C0007, // 001F LDCONST R7 K7 + 0xAC1C0200, // 0020 CATCH R7 1 0 + 0xB0080000, // 0021 RAISE 2 R0 R0 + 0x60180003, // 0022 GETGBL R6 G3 + 0x5C1C0A00, // 0023 MOVE R7 R5 + 0x7C180200, // 0024 CALL R6 1 + 0x5C140C00, // 0025 MOVE R5 R6 + 0x7001FFE4, // 0026 JMP #000C + 0xA8040001, // 0027 EXBLK 1 1 + 0x70020018, // 0028 JMP #0042 + 0xAC0C0002, // 0029 CATCH R3 0 2 + 0x70020015, // 002A JMP #0041 + 0x60140012, // 002B GETGBL R5 G18 + 0x7C140000, // 002C CALL R5 0 + 0x40180B08, // 002D CONNECT R6 R5 K8 + 0x40180B09, // 002E CONNECT R6 R5 K9 + 0x40180B0A, // 002F CONNECT R6 R5 K10 + 0x40180B0B, // 0030 CONNECT R6 R5 K11 + 0x40180B0C, // 0031 CONNECT R6 R5 K12 + 0x40180B0D, // 0032 CONNECT R6 R5 K13 + 0x40180B0E, // 0033 CONNECT R6 R5 K14 + 0x60180010, // 0034 GETGBL R6 G16 + 0x5C1C0A00, // 0035 MOVE R7 R5 + 0x7C180200, // 0036 CALL R6 1 + 0xA8020004, // 0037 EXBLK 0 #003D + 0x5C1C0C00, // 0038 MOVE R7 R6 + 0x7C1C0000, // 0039 CALL R7 0 + 0x50200200, // 003A LDBOOL R8 1 0 + 0x98040E08, // 003B SETIDX R1 R7 R8 + 0x7001FFFA, // 003C JMP #0038 + 0x58180007, // 003D LDCONST R6 K7 + 0xAC180200, // 003E CATCH R6 1 0 + 0xB0080000, // 003F RAISE 2 R0 R0 + 0x70020000, // 0040 JMP #0042 + 0xB0080000, // 0041 RAISE 2 R0 R0 + 0x80000000, // 0042 RET 0 }) ) ); @@ -10698,11 +14586,136 @@ be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name /******************************************************************** -** Solidified function: process_if_statement_fluent +** Solidified function: process_function_arguments ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_if_statement_fluent, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ be_nested_proto( 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[20]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_paren), + /* K3 */ be_nested_str_weak(skip_whitespace), + /* K4 */ be_nested_str_weak(process_additive_expression), + /* K5 */ be_nested_str_weak(CONTEXT_ARGUMENT), + /* K6 */ be_nested_str_weak(expr), + /* K7 */ be_nested_str_weak(process_value), + /* K8 */ be_nested_str_weak(push), + /* K9 */ be_nested_str_weak(current), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(next), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K14 */ be_nested_str_weak(expect_right_paren), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_const_int(0), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(_X2C_X20), + /* K19 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(process_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[81]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x60080012, // 0002 GETGBL R2 G18 + 0x7C080000, // 0003 CALL R2 0 + 0x8C0C0101, // 0004 GETMET R3 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E0032, // 0006 JMPT R3 #003A + 0x8C0C0102, // 0007 GETMET R3 R0 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x740E002F, // 0009 JMPT R3 #003A + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x8C0C0102, // 000C GETMET R3 R0 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0000, // 000E JMPF R3 #0010 + 0x70020029, // 000F JMP #003A + 0x4C0C0000, // 0010 LDNIL R3 + 0x78060006, // 0011 JMPF R1 #0019 + 0x8C100104, // 0012 GETMET R4 R0 K4 + 0x88180105, // 0013 GETMBR R6 R0 K5 + 0x501C0200, // 0014 LDBOOL R7 1 0 + 0x50200200, // 0015 LDBOOL R8 1 0 + 0x7C100800, // 0016 CALL R4 4 + 0x880C0906, // 0017 GETMBR R3 R4 K6 + 0x70020003, // 0018 JMP #001D + 0x8C100107, // 0019 GETMET R4 R0 K7 + 0x88180105, // 001A GETMBR R6 R0 K5 + 0x7C100400, // 001B CALL R4 2 + 0x880C0906, // 001C GETMBR R3 R4 K6 + 0x8C100508, // 001D GETMET R4 R2 K8 + 0x5C180600, // 001E MOVE R6 R3 + 0x7C100400, // 001F CALL R4 2 + 0x8C100103, // 0020 GETMET R4 R0 K3 + 0x7C100200, // 0021 CALL R4 1 + 0x8C100109, // 0022 GETMET R4 R0 K9 + 0x7C100200, // 0023 CALL R4 1 + 0x4C140000, // 0024 LDNIL R5 + 0x20100805, // 0025 NE R4 R4 R5 + 0x7812000A, // 0026 JMPF R4 #0032 + 0x8C100109, // 0027 GETMET R4 R0 K9 + 0x7C100200, // 0028 CALL R4 1 + 0x8810090A, // 0029 GETMBR R4 R4 K10 + 0x5416001D, // 002A LDINT R5 30 + 0x1C100805, // 002B EQ R4 R4 R5 + 0x78120004, // 002C JMPF R4 #0032 + 0x8C10010B, // 002D GETMET R4 R0 K11 + 0x7C100200, // 002E CALL R4 1 + 0x8C100103, // 002F GETMET R4 R0 K3 + 0x7C100200, // 0030 CALL R4 1 + 0x70020006, // 0031 JMP #0039 + 0x8C100102, // 0032 GETMET R4 R0 K2 + 0x7C100200, // 0033 CALL R4 1 + 0x74120003, // 0034 JMPT R4 #0039 + 0x8C10010C, // 0035 GETMET R4 R0 K12 + 0x5818000D, // 0036 LDCONST R6 K13 + 0x7C100400, // 0037 CALL R4 2 + 0x70020000, // 0038 JMP #003A + 0x7001FFC9, // 0039 JMP #0004 + 0x8C0C010E, // 003A GETMET R3 R0 K14 + 0x7C0C0200, // 003B CALL R3 1 + 0x580C000F, // 003C LDCONST R3 K15 + 0x60100010, // 003D GETGBL R4 G16 + 0x6014000C, // 003E GETGBL R5 G12 + 0x5C180400, // 003F MOVE R6 R2 + 0x7C140200, // 0040 CALL R5 1 + 0x04140B11, // 0041 SUB R5 R5 K17 + 0x40162005, // 0042 CONNECT R5 K16 R5 + 0x7C100200, // 0043 CALL R4 1 + 0xA8020007, // 0044 EXBLK 0 #004D + 0x5C140800, // 0045 MOVE R5 R4 + 0x7C140000, // 0046 CALL R5 0 + 0x24180B10, // 0047 GT R6 R5 K16 + 0x781A0000, // 0048 JMPF R6 #004A + 0x000C0712, // 0049 ADD R3 R3 K18 + 0x94180405, // 004A GETIDX R6 R2 R5 + 0x000C0606, // 004B ADD R3 R3 R6 + 0x7001FFF7, // 004C JMP #0045 + 0x58100013, // 004D LDCONST R4 K19 + 0xAC100200, // 004E CATCH R4 1 0 + 0xB0080000, // 004F RAISE 2 R0 R0 + 0x80040600, // 0050 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 */ @@ -10710,85 +14723,25 @@ be_local_closure(class_SimpleDSLTranspiler_process_if_statement_fluent, /* nam 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[18]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(process_additive_expression), - /* K2 */ be_nested_str_weak(CONTEXT_EXPRESSION), - /* K3 */ be_nested_str_weak(expect_left_brace), - /* K4 */ be_nested_str_weak(has_dynamic), - /* K5 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20bool_X28_X25s_X29_X20end), - /* K6 */ be_nested_str_weak(expr), - /* K7 */ be_nested_str_weak(bool_X28_X25s_X29), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(_X25s_X2Epush_repeat_subsequence_X28animation_X2Esequence_manager_X28engine_X2C_X20_X25s_X29), - /* K10 */ be_nested_str_weak(get_indent), - /* K11 */ be_nested_str_weak(indent_level), - /* K12 */ be_const_int(1), - /* K13 */ be_nested_str_weak(at_end), - /* K14 */ be_nested_str_weak(check_right_brace), - /* K15 */ be_nested_str_weak(process_sequence_statement), - /* K16 */ be_nested_str_weak(expect_right_brace), - /* K17 */ be_nested_str_weak(_X25s_X29), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), }), - be_str_weak(process_if_statement_fluent), + be_str_weak(check_right_brace), &be_const_str_solidified, - ( &(const binstruction[56]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x50100200, // 0004 LDBOOL R4 1 0 - 0x50140000, // 0005 LDBOOL R5 0 0 - 0x7C040800, // 0006 CALL R1 4 - 0x8C080103, // 0007 GETMET R2 R0 K3 - 0x7C080200, // 0008 CALL R2 1 - 0x4C080000, // 0009 LDNIL R2 - 0x880C0304, // 000A GETMBR R3 R1 K4 - 0x780E0005, // 000B JMPF R3 #0012 - 0x600C0018, // 000C GETGBL R3 G24 - 0x58100005, // 000D LDCONST R4 K5 - 0x88140306, // 000E GETMBR R5 R1 K6 - 0x7C0C0400, // 000F CALL R3 2 - 0x5C080600, // 0010 MOVE R2 R3 - 0x70020004, // 0011 JMP #0017 - 0x600C0018, // 0012 GETGBL R3 G24 - 0x58100007, // 0013 LDCONST R4 K7 - 0x88140306, // 0014 GETMBR R5 R1 K6 - 0x7C0C0400, // 0015 CALL R3 2 - 0x5C080600, // 0016 MOVE R2 R3 - 0x8C0C0108, // 0017 GETMET R3 R0 K8 - 0x60140018, // 0018 GETGBL R5 G24 - 0x58180009, // 0019 LDCONST R6 K9 - 0x8C1C010A, // 001A GETMET R7 R0 K10 - 0x7C1C0200, // 001B CALL R7 1 - 0x5C200400, // 001C MOVE R8 R2 - 0x7C140600, // 001D CALL R5 3 - 0x7C0C0400, // 001E CALL R3 2 - 0x880C010B, // 001F GETMBR R3 R0 K11 - 0x000C070C, // 0020 ADD R3 R3 K12 - 0x90021603, // 0021 SETMBR R0 K11 R3 - 0x8C0C010D, // 0022 GETMET R3 R0 K13 - 0x7C0C0200, // 0023 CALL R3 1 - 0x740E0005, // 0024 JMPT R3 #002B - 0x8C0C010E, // 0025 GETMET R3 R0 K14 - 0x7C0C0200, // 0026 CALL R3 1 - 0x740E0002, // 0027 JMPT R3 #002B - 0x8C0C010F, // 0028 GETMET R3 R0 K15 - 0x7C0C0200, // 0029 CALL R3 1 - 0x7001FFF6, // 002A JMP #0022 - 0x8C0C0110, // 002B GETMET R3 R0 K16 - 0x7C0C0200, // 002C CALL R3 1 - 0x8C0C0108, // 002D GETMET R3 R0 K8 - 0x60140018, // 002E GETGBL R5 G24 - 0x58180011, // 002F LDCONST R6 K17 - 0x8C1C010A, // 0030 GETMET R7 R0 K10 - 0x7C1C0200, // 0031 CALL R7 1 - 0x7C140400, // 0032 CALL R5 2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x880C010B, // 0034 GETMBR R3 R0 K11 - 0x040C070C, // 0035 SUB R3 R3 K12 - 0x90021603, // 0036 SETMBR R0 K11 R3 - 0x80000000, // 0037 RET 0 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0x540E001A, // 0006 LDINT R3 27 + 0x1C080403, // 0007 EQ R2 R2 R3 + 0x740A0000, // 0008 JMPT R2 #000A + 0x50080001, // 0009 LDBOOL R2 0 1 + 0x50080200, // 000A LDBOOL R2 1 0 + 0x80040400, // 000B RET 1 R2 }) ) ); @@ -10796,212 +14749,142 @@ be_local_closure(class_SimpleDSLTranspiler_process_if_statement_fluent, /* nam /******************************************************************** -** Solidified function: _parse_parameter_constraints +** Solidified function: _process_parameters_core ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__parse_parameter_constraints, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ be_nested_proto( - 7, /* 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[23]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_const_int(0), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(expect_identifier), - /* K8 */ be_nested_str_weak(_validate_template_parameter_type), - /* K9 */ be_nested_str_weak(min), - /* K10 */ be_nested_str_weak(process_value), - /* K11 */ be_nested_str_weak(CONTEXT_GENERIC), - /* K12 */ be_nested_str_weak(expr), - /* K13 */ be_nested_str_weak(error), - /* K14 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27min_X27), - /* K15 */ be_nested_str_weak(max), - /* K16 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27max_X27), - /* K17 */ be_nested_str_weak(default), - /* K18 */ be_nested_str_weak(Expected_X20value_X20after_X20_X27default_X27), - /* K19 */ be_nested_str_weak(nillable), - /* K20 */ be_nested_str_weak(true), - /* K21 */ be_nested_str_weak(false), - /* K22 */ be_nested_str_weak(Expected_X20_X27true_X27_X20or_X20_X27false_X27_X20after_X20_X27nillable_X27), + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(_create_instance_for_validation), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K5 */ be_nested_str_weak(expect_identifier), + /* K6 */ be_nested_str_weak(_validate_single_parameter), + /* K7 */ be_nested_str_weak(expect_assign), + /* K8 */ be_nested_str_weak(process_value), + /* K9 */ be_nested_str_weak(CONTEXT_VARIABLE), + /* K10 */ be_nested_str_weak(collect_inline_comment), + /* K11 */ be_nested_str_weak(expr), + /* K12 */ be_nested_str_weak(current), + /* K13 */ be_nested_str_weak(type), + /* K14 */ be_nested_str_weak(next), + /* K15 */ be_nested_str_weak(error), + /* K16 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), }), - be_str_weak(_parse_parameter_constraints), + be_str_weak(_process_parameters_core), &be_const_str_solidified, - ( &(const binstruction[166]) { /* code */ - 0x60040013, // 0000 GETGBL R1 G19 - 0x7C040000, // 0001 CALL R1 0 - 0x8C080100, // 0002 GETMET R2 R0 K0 - 0x7C080200, // 0003 CALL R2 1 - 0x740A0097, // 0004 JMPT R2 #009D - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x740E0007, // 0009 JMPT R3 #0012 - 0x880C0502, // 000A GETMBR R3 R2 K2 - 0x54120022, // 000B LDINT R4 35 - 0x1C0C0604, // 000C EQ R3 R3 R4 - 0x740E0003, // 000D JMPT R3 #0012 - 0x880C0502, // 000E GETMBR R3 R2 K2 - 0x5412001A, // 000F LDINT R4 27 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0000, // 0011 JMPF R3 #0013 - 0x70020089, // 0012 JMP #009D - 0x880C0502, // 0013 GETMBR R3 R2 K2 - 0x1C0C0703, // 0014 EQ R3 R3 K3 - 0x740E0002, // 0015 JMPT R3 #0019 - 0x880C0502, // 0016 GETMBR R3 R2 K2 - 0x1C0C0704, // 0017 EQ R3 R3 K4 - 0x780E0081, // 0018 JMPF R3 #009B - 0x880C0505, // 0019 GETMBR R3 R2 K5 - 0x1C0C0702, // 001A EQ R3 R3 K2 - 0x780E000B, // 001B JMPF R3 #0028 - 0x8C0C0106, // 001C GETMET R3 R0 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0x8C0C0107, // 001E GETMET R3 R0 K7 - 0x7C0C0200, // 001F CALL R3 1 - 0x8C100108, // 0020 GETMET R4 R0 K8 - 0x5C180600, // 0021 MOVE R6 R3 - 0x7C100400, // 0022 CALL R4 2 - 0x74120001, // 0023 JMPT R4 #0026 - 0x4C100000, // 0024 LDNIL R4 - 0x80040800, // 0025 RET 1 R4 - 0x98060403, // 0026 SETIDX R1 K2 R3 - 0x70020071, // 0027 JMP #009A - 0x880C0505, // 0028 GETMBR R3 R2 K5 - 0x1C0C0709, // 0029 EQ R3 R3 K9 - 0x780E0014, // 002A JMPF R3 #0040 - 0x8C0C0106, // 002B GETMET R3 R0 K6 - 0x7C0C0200, // 002C CALL R3 1 - 0x8C0C010A, // 002D GETMET R3 R0 K10 - 0x8814010B, // 002E GETMBR R5 R0 K11 - 0x7C0C0400, // 002F CALL R3 2 - 0x4C100000, // 0030 LDNIL R4 - 0x20100604, // 0031 NE R4 R3 R4 - 0x78120006, // 0032 JMPF R4 #003A - 0x8810070C, // 0033 GETMBR R4 R3 K12 - 0x4C140000, // 0034 LDNIL R5 - 0x20100805, // 0035 NE R4 R4 R5 - 0x78120002, // 0036 JMPF R4 #003A - 0x8810070C, // 0037 GETMBR R4 R3 K12 - 0x98061204, // 0038 SETIDX R1 K9 R4 - 0x70020004, // 0039 JMP #003F - 0x8C10010D, // 003A GETMET R4 R0 K13 - 0x5818000E, // 003B LDCONST R6 K14 - 0x7C100400, // 003C CALL R4 2 - 0x4C100000, // 003D LDNIL R4 - 0x80040800, // 003E RET 1 R4 - 0x70020059, // 003F JMP #009A - 0x880C0505, // 0040 GETMBR R3 R2 K5 - 0x1C0C070F, // 0041 EQ R3 R3 K15 - 0x780E0014, // 0042 JMPF R3 #0058 - 0x8C0C0106, // 0043 GETMET R3 R0 K6 - 0x7C0C0200, // 0044 CALL R3 1 - 0x8C0C010A, // 0045 GETMET R3 R0 K10 - 0x8814010B, // 0046 GETMBR R5 R0 K11 - 0x7C0C0400, // 0047 CALL R3 2 - 0x4C100000, // 0048 LDNIL R4 - 0x20100604, // 0049 NE R4 R3 R4 - 0x78120006, // 004A JMPF R4 #0052 - 0x8810070C, // 004B GETMBR R4 R3 K12 - 0x4C140000, // 004C LDNIL R5 - 0x20100805, // 004D NE R4 R4 R5 - 0x78120002, // 004E JMPF R4 #0052 - 0x8810070C, // 004F GETMBR R4 R3 K12 - 0x98061E04, // 0050 SETIDX R1 K15 R4 - 0x70020004, // 0051 JMP #0057 - 0x8C10010D, // 0052 GETMET R4 R0 K13 - 0x58180010, // 0053 LDCONST R6 K16 - 0x7C100400, // 0054 CALL R4 2 - 0x4C100000, // 0055 LDNIL R4 - 0x80040800, // 0056 RET 1 R4 - 0x70020041, // 0057 JMP #009A - 0x880C0505, // 0058 GETMBR R3 R2 K5 - 0x1C0C0711, // 0059 EQ R3 R3 K17 - 0x780E0014, // 005A JMPF R3 #0070 - 0x8C0C0106, // 005B GETMET R3 R0 K6 - 0x7C0C0200, // 005C CALL R3 1 - 0x8C0C010A, // 005D GETMET R3 R0 K10 - 0x8814010B, // 005E GETMBR R5 R0 K11 - 0x7C0C0400, // 005F CALL R3 2 - 0x4C100000, // 0060 LDNIL R4 - 0x20100604, // 0061 NE R4 R3 R4 - 0x78120006, // 0062 JMPF R4 #006A - 0x8810070C, // 0063 GETMBR R4 R3 K12 - 0x4C140000, // 0064 LDNIL R5 - 0x20100805, // 0065 NE R4 R4 R5 - 0x78120002, // 0066 JMPF R4 #006A - 0x8810070C, // 0067 GETMBR R4 R3 K12 - 0x98062204, // 0068 SETIDX R1 K17 R4 - 0x70020004, // 0069 JMP #006F - 0x8C10010D, // 006A GETMET R4 R0 K13 - 0x58180012, // 006B LDCONST R6 K18 - 0x7C100400, // 006C CALL R4 2 - 0x4C100000, // 006D LDNIL R4 - 0x80040800, // 006E RET 1 R4 - 0x70020029, // 006F JMP #009A - 0x880C0505, // 0070 GETMBR R3 R2 K5 - 0x1C0C0713, // 0071 EQ R3 R3 K19 - 0x780E0025, // 0072 JMPF R3 #0099 - 0x8C0C0106, // 0073 GETMET R3 R0 K6 - 0x7C0C0200, // 0074 CALL R3 1 - 0x8C0C0101, // 0075 GETMET R3 R0 K1 - 0x7C0C0200, // 0076 CALL R3 1 - 0x4C100000, // 0077 LDNIL R4 - 0x20100604, // 0078 NE R4 R3 R4 - 0x78120018, // 0079 JMPF R4 #0093 - 0x88100702, // 007A GETMBR R4 R3 K2 - 0x1C100903, // 007B EQ R4 R4 K3 - 0x78120015, // 007C JMPF R4 #0093 - 0x88100705, // 007D GETMBR R4 R3 K5 - 0x1C100914, // 007E EQ R4 R4 K20 - 0x78120004, // 007F JMPF R4 #0085 - 0x8C100106, // 0080 GETMET R4 R0 K6 - 0x7C100200, // 0081 CALL R4 1 - 0x50100200, // 0082 LDBOOL R4 1 0 - 0x98062604, // 0083 SETIDX R1 K19 R4 - 0x7002000C, // 0084 JMP #0092 - 0x88100705, // 0085 GETMBR R4 R3 K5 - 0x1C100915, // 0086 EQ R4 R4 K21 - 0x78120004, // 0087 JMPF R4 #008D - 0x8C100106, // 0088 GETMET R4 R0 K6 - 0x7C100200, // 0089 CALL R4 1 - 0x50100000, // 008A LDBOOL R4 0 0 - 0x98062604, // 008B SETIDX R1 K19 R4 - 0x70020004, // 008C JMP #0092 - 0x8C10010D, // 008D GETMET R4 R0 K13 - 0x58180016, // 008E LDCONST R6 K22 - 0x7C100400, // 008F CALL R4 2 - 0x4C100000, // 0090 LDNIL R4 - 0x80040800, // 0091 RET 1 R4 - 0x70020004, // 0092 JMP #0098 - 0x8C10010D, // 0093 GETMET R4 R0 K13 - 0x58180016, // 0094 LDCONST R6 K22 - 0x7C100400, // 0095 CALL R4 2 - 0x4C100000, // 0096 LDNIL R4 - 0x80040800, // 0097 RET 1 R4 - 0x70020000, // 0098 JMP #009A - 0x70020002, // 0099 JMP #009D - 0x70020000, // 009A JMP #009C - 0x70020000, // 009B JMP #009D - 0x7001FF64, // 009C JMP #0002 - 0x6008000C, // 009D GETGBL R2 G12 - 0x5C0C0200, // 009E MOVE R3 R1 - 0x7C080200, // 009F CALL R2 1 - 0x24080503, // 00A0 GT R2 R2 K3 - 0x780A0001, // 00A1 JMPF R2 #00A4 - 0x5C080200, // 00A2 MOVE R2 R1 - 0x70020000, // 00A3 JMP #00A5 - 0x4C080000, // 00A4 LDNIL R2 - 0x80040400, // 00A5 RET 1 R2 + ( &(const binstruction[102]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x5C140200, // 0001 MOVE R5 R1 + 0x20180B00, // 0002 NE R6 R5 K0 + 0x781A0003, // 0003 JMPF R6 #0008 + 0x8C180101, // 0004 GETMET R6 R0 K1 + 0x5C200A00, // 0005 MOVE R8 R5 + 0x7C180400, // 0006 CALL R6 2 + 0x5C100C00, // 0007 MOVE R4 R6 + 0x8C180102, // 0008 GETMET R6 R0 K2 + 0x7C180200, // 0009 CALL R6 1 + 0x741A0059, // 000A JMPT R6 #0065 + 0x8C180103, // 000B GETMET R6 R0 K3 + 0x7C180200, // 000C CALL R6 1 + 0x741A0056, // 000D JMPT R6 #0065 + 0x8C180104, // 000E GETMET R6 R0 K4 + 0x7C180200, // 000F CALL R6 1 + 0x8C180103, // 0010 GETMET R6 R0 K3 + 0x7C180200, // 0011 CALL R6 1 + 0x781A0000, // 0012 JMPF R6 #0014 + 0x70020050, // 0013 JMP #0065 + 0x8C180105, // 0014 GETMET R6 R0 K5 + 0x7C180200, // 0015 CALL R6 1 + 0x4C1C0000, // 0016 LDNIL R7 + 0x201C0807, // 0017 NE R7 R4 R7 + 0x781E0006, // 0018 JMPF R7 #0020 + 0x201C0B00, // 0019 NE R7 R5 K0 + 0x781E0004, // 001A JMPF R7 #0020 + 0x8C1C0106, // 001B GETMET R7 R0 K6 + 0x5C240A00, // 001C MOVE R9 R5 + 0x5C280C00, // 001D MOVE R10 R6 + 0x5C2C0800, // 001E MOVE R11 R4 + 0x7C1C0800, // 001F CALL R7 4 + 0x8C1C0107, // 0020 GETMET R7 R0 K7 + 0x7C1C0200, // 0021 CALL R7 1 + 0x8C1C0108, // 0022 GETMET R7 R0 K8 + 0x88240109, // 0023 GETMBR R9 R0 K9 + 0x7C1C0400, // 0024 CALL R7 2 + 0x8C20010A, // 0025 GETMET R8 R0 K10 + 0x7C200200, // 0026 CALL R8 1 + 0x5C240600, // 0027 MOVE R9 R3 + 0x5C280C00, // 0028 MOVE R10 R6 + 0x882C0F0B, // 0029 GETMBR R11 R7 K11 + 0x5C301000, // 002A MOVE R12 R8 + 0x7C240600, // 002B CALL R9 3 + 0x8C240102, // 002C GETMET R9 R0 K2 + 0x7C240200, // 002D CALL R9 1 + 0x7426000D, // 002E JMPT R9 #003D + 0x8C24010C, // 002F GETMET R9 R0 K12 + 0x7C240200, // 0030 CALL R9 1 + 0x4C280000, // 0031 LDNIL R10 + 0x2028120A, // 0032 NE R10 R9 R10 + 0x782A0006, // 0033 JMPF R10 #003B + 0x8828130D, // 0034 GETMBR R10 R9 K13 + 0x542E0024, // 0035 LDINT R11 37 + 0x1C28140B, // 0036 EQ R10 R10 R11 + 0x782A0002, // 0037 JMPF R10 #003B + 0x8C28010E, // 0038 GETMET R10 R0 K14 + 0x7C280200, // 0039 CALL R10 1 + 0x70020000, // 003A JMP #003C + 0x70020000, // 003B JMP #003D + 0x7001FFEE, // 003C JMP #002C + 0x8C24010C, // 003D GETMET R9 R0 K12 + 0x7C240200, // 003E CALL R9 1 + 0x4C280000, // 003F LDNIL R10 + 0x2024120A, // 0040 NE R9 R9 R10 + 0x7826000A, // 0041 JMPF R9 #004D + 0x8C24010C, // 0042 GETMET R9 R0 K12 + 0x7C240200, // 0043 CALL R9 1 + 0x8824130D, // 0044 GETMBR R9 R9 K13 + 0x542A001D, // 0045 LDINT R10 30 + 0x1C24120A, // 0046 EQ R9 R9 R10 + 0x78260004, // 0047 JMPF R9 #004D + 0x8C24010E, // 0048 GETMET R9 R0 K14 + 0x7C240200, // 0049 CALL R9 1 + 0x8C240104, // 004A GETMET R9 R0 K4 + 0x7C240200, // 004B CALL R9 1 + 0x70020016, // 004C JMP #0064 + 0x8C24010C, // 004D GETMET R9 R0 K12 + 0x7C240200, // 004E CALL R9 1 + 0x4C280000, // 004F LDNIL R10 + 0x2024120A, // 0050 NE R9 R9 R10 + 0x7826000A, // 0051 JMPF R9 #005D + 0x8C24010C, // 0052 GETMET R9 R0 K12 + 0x7C240200, // 0053 CALL R9 1 + 0x8824130D, // 0054 GETMBR R9 R9 K13 + 0x542A0022, // 0055 LDINT R10 35 + 0x1C24120A, // 0056 EQ R9 R9 R10 + 0x78260004, // 0057 JMPF R9 #005D + 0x8C24010E, // 0058 GETMET R9 R0 K14 + 0x7C240200, // 0059 CALL R9 1 + 0x8C240104, // 005A GETMET R9 R0 K4 + 0x7C240200, // 005B CALL R9 1 + 0x70020006, // 005C JMP #0064 + 0x8C240103, // 005D GETMET R9 R0 K3 + 0x7C240200, // 005E CALL R9 1 + 0x74260003, // 005F JMPT R9 #0064 + 0x8C24010F, // 0060 GETMET R9 R0 K15 + 0x582C0010, // 0061 LDCONST R11 K16 + 0x7C240400, // 0062 CALL R9 2 + 0x70020000, // 0063 JMP #0065 + 0x7001FFA2, // 0064 JMP #0008 + 0x80000000, // 0065 RET 0 }) ) ); @@ -11009,94 +14892,399 @@ be_local_closure(class_SimpleDSLTranspiler__parse_parameter_constraints, /* na /******************************************************************** -** Solidified function: transpile +** Solidified function: generate_template_animation_class ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ +be_local_closure(class_SimpleDSLTranspiler_generate_template_animation_class, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 20, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(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(has_warnings), - /* K7 */ be_nested_str_weak(_X23_X20Compilation_X20warnings_X3A), - /* K8 */ be_nested_str_weak(warnings), - /* K9 */ be_nested_str_weak(_X23_X20_X25s), - /* K10 */ be_nested_str_weak(stop_iteration), - /* K11 */ be_nested_str_weak(join_output), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), + ( &(const bvalue[56]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(add), + /* K3 */ be_nested_str_weak(_X23_X20Template_X20animation_X20class_X3A_X20_X25s), + /* K4 */ be_nested_str_weak(class_X20_X25s_animation_X20_X3A_X20animation_X2Eengine_proxy), + /* K5 */ be_nested_str_weak(_X20_X20static_X20var_X20PARAMS_X20_X3D_X20animation_X2Eenc_params_X28_X7B), + /* K6 */ be_const_int(0), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_str_weak(find), + /* K9 */ be_nested_str_weak(_X2C), + /* K10 */ be_nested_str_weak(), + /* K11 */ be_nested_str_weak(instance), + /* K12 */ be_nested_str_weak(map), + /* K13 */ be_nested_str_weak(contains), + /* K14 */ be_nested_str_weak(type), + /* K15 */ be_nested_str_weak(push), + /* K16 */ be_nested_str_weak(_X22type_X22_X3A_X20_X22_X25s_X22), + /* K17 */ be_nested_str_weak(min), + /* K18 */ be_nested_str_weak(_X22min_X22_X3A_X20_X25s), + /* K19 */ be_nested_str_weak(max), + /* K20 */ be_nested_str_weak(_X22max_X22_X3A_X20_X25s), + /* K21 */ be_nested_str_weak(default), + /* K22 */ be_nested_str_weak(_X22default_X22_X3A_X20_X25s), + /* K23 */ be_nested_str_weak(nillable), + /* K24 */ be_nested_str_weak(_X22nillable_X22_X3A_X20_X25s), + /* K25 */ be_nested_str_weak(_X2C_X20), + /* K26 */ be_nested_str_weak(stop_iteration), + /* K27 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X25s_X7D_X25s), + /* K28 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X22type_X22_X3A_X20_X22_X25s_X22_X7D_X25s), + /* K29 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X7D_X25s), + /* K30 */ be_nested_str_weak(_X20_X20_X7D_X29), + /* K31 */ be_nested_str_weak(_X20_X20_X23_X20Template_X20setup_X20method_X20_X2D_X20overrides_X20EngineProxy_X20placeholder), + /* K32 */ be_nested_str_weak(_X20_X20def_X20setup_template_X28_X29), + /* K33 */ be_nested_str_weak(_X20_X20_X20_X20var_X20engine_X20_X3D_X20self_X20_X20_X20_X23_X20using_X20_X27self_X27_X20as_X20a_X20proxy_X20to_X20engine_X20object_X20_X28instead_X20of_X20_X27self_X2Eengine_X27_X29), + /* K34 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K35 */ be_nested_str_weak(pull_lexer), + /* K36 */ be_nested_str_weak(symbol_table), + /* K37 */ be_nested_str_weak(_symbol_table), + /* K38 */ be_nested_str_weak(strip_initialized), + /* K39 */ be_nested_str_weak(indent_level), + /* K40 */ be_const_int(2), + /* K41 */ be_nested_str_weak(template_animation_params), + /* K42 */ be_nested_str_weak(_add_inherited_params_to_template), + /* K43 */ be_nested_str_weak(_add_typed_parameter_to_symbol_table), + /* K44 */ be_nested_str_weak(create_variable), + /* K45 */ be_nested_str_weak(transpile_template_animation_body), + /* K46 */ be_nested_str_weak(split), + /* K47 */ be_nested_str_weak(_X0A), + /* K48 */ be_nested_str_weak(_X20_X20_X20_X20_X25s), + /* K49 */ be_nested_str_weak(_validate_template_parameter_usage), + /* K50 */ be_nested_str_weak(errors), + /* K51 */ be_nested_str_weak(error), + /* K52 */ be_nested_str_weak(Template_X20animation_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), + /* K53 */ be_nested_str_weak(expect_right_brace), + /* K54 */ be_nested_str_weak(_X20_X20end), + /* K55 */ be_nested_str_weak(end), }), - be_str_weak(transpile), + be_str_weak(generate_template_animation_class), &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ - 0xA802002C, // 0000 EXBLK 0 #002E - 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 - 0x8C040106, // 000F GETMET R1 R0 K6 - 0x7C040200, // 0010 CALL R1 1 - 0x78060015, // 0011 JMPF R1 #0028 - 0x8C040100, // 0012 GETMET R1 R0 K0 - 0x580C0002, // 0013 LDCONST R3 K2 - 0x7C040400, // 0014 CALL R1 2 - 0x8C040100, // 0015 GETMET R1 R0 K0 - 0x580C0007, // 0016 LDCONST R3 K7 - 0x7C040400, // 0017 CALL R1 2 - 0x60040010, // 0018 GETGBL R1 G16 - 0x88080108, // 0019 GETMBR R2 R0 K8 - 0x7C040200, // 001A CALL R1 1 - 0xA8020008, // 001B EXBLK 0 #0025 - 0x5C080200, // 001C MOVE R2 R1 - 0x7C080000, // 001D CALL R2 0 - 0x8C0C0100, // 001E GETMET R3 R0 K0 - 0x60140018, // 001F GETGBL R5 G24 - 0x58180009, // 0020 LDCONST R6 K9 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 - 0x7C0C0400, // 0023 CALL R3 2 - 0x7001FFF6, // 0024 JMP #001C - 0x5804000A, // 0025 LDCONST R1 K10 - 0xAC040200, // 0026 CATCH R1 1 0 - 0xB0080000, // 0027 RAISE 2 R0 R0 - 0x8C04010B, // 0028 GETMET R1 R0 K11 - 0x7C040200, // 0029 CALL R1 1 - 0xA8040001, // 002A EXBLK 1 1 - 0x80040200, // 002B RET 1 R1 - 0xA8040001, // 002C EXBLK 1 1 - 0x70020009, // 002D JMP #0038 - 0xAC040002, // 002E CATCH R1 0 2 - 0x70020006, // 002F JMP #0037 - 0x8C0C010C, // 0030 GETMET R3 R0 K12 - 0x60140018, // 0031 GETGBL R5 G24 - 0x5818000D, // 0032 LDCONST R6 K13 - 0x5C1C0400, // 0033 MOVE R7 R2 - 0x7C140400, // 0034 CALL R5 2 - 0x7C0C0400, // 0035 CALL R3 2 - 0x70020000, // 0036 JMP #0038 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80000000, // 0038 RET 0 + ( &(const binstruction[320]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0xA4160200, // 0001 IMPORT R5 K1 + 0x8C180102, // 0002 GETMET R6 R0 K2 + 0x60200018, // 0003 GETGBL R8 G24 + 0x58240003, // 0004 LDCONST R9 K3 + 0x5C280200, // 0005 MOVE R10 R1 + 0x7C200400, // 0006 CALL R8 2 + 0x7C180400, // 0007 CALL R6 2 + 0x8C180102, // 0008 GETMET R6 R0 K2 + 0x60200018, // 0009 GETGBL R8 G24 + 0x58240004, // 000A LDCONST R9 K4 + 0x5C280200, // 000B MOVE R10 R1 + 0x7C200400, // 000C CALL R8 2 + 0x7C180400, // 000D CALL R6 2 + 0x8C180102, // 000E GETMET R6 R0 K2 + 0x58200005, // 000F LDCONST R8 K5 + 0x7C180400, // 0010 CALL R6 2 + 0x60180010, // 0011 GETGBL R6 G16 + 0x601C000C, // 0012 GETGBL R7 G12 + 0x5C200400, // 0013 MOVE R8 R2 + 0x7C1C0200, // 0014 CALL R7 1 + 0x041C0F07, // 0015 SUB R7 R7 K7 + 0x401E0C07, // 0016 CONNECT R7 K6 R7 + 0x7C180200, // 0017 CALL R6 1 + 0xA8020081, // 0018 EXBLK 0 #009B + 0x5C1C0C00, // 0019 MOVE R7 R6 + 0x7C1C0000, // 001A CALL R7 0 + 0x94200407, // 001B GETIDX R8 R2 R7 + 0x8C240708, // 001C GETMET R9 R3 K8 + 0x5C2C1000, // 001D MOVE R11 R8 + 0x7C240400, // 001E CALL R9 2 + 0x6028000C, // 001F GETGBL R10 G12 + 0x5C2C0400, // 0020 MOVE R11 R2 + 0x7C280200, // 0021 CALL R10 1 + 0x04281507, // 0022 SUB R10 R10 K7 + 0x14280E0A, // 0023 LT R10 R7 R10 + 0x782A0001, // 0024 JMPF R10 #0027 + 0x58280009, // 0025 LDCONST R10 K9 + 0x70020000, // 0026 JMP #0028 + 0x5828000A, // 0027 LDCONST R10 K10 + 0x4C2C0000, // 0028 LDNIL R11 + 0x202C120B, // 0029 NE R11 R9 R11 + 0x782E0067, // 002A JMPF R11 #0093 + 0x602C0004, // 002B GETGBL R11 G4 + 0x5C301200, // 002C MOVE R12 R9 + 0x7C2C0200, // 002D CALL R11 1 + 0x1C2C170B, // 002E EQ R11 R11 K11 + 0x782E0059, // 002F JMPF R11 #008A + 0x602C0005, // 0030 GETGBL R11 G5 + 0x5C301200, // 0031 MOVE R12 R9 + 0x7C2C0200, // 0032 CALL R11 1 + 0x1C2C170C, // 0033 EQ R11 R11 K12 + 0x782E0054, // 0034 JMPF R11 #008A + 0x602C0012, // 0035 GETGBL R11 G18 + 0x7C2C0000, // 0036 CALL R11 0 + 0x8C30130D, // 0037 GETMET R12 R9 K13 + 0x5838000E, // 0038 LDCONST R14 K14 + 0x7C300400, // 0039 CALL R12 2 + 0x78320005, // 003A JMPF R12 #0041 + 0x8C30170F, // 003B GETMET R12 R11 K15 + 0x60380018, // 003C GETGBL R14 G24 + 0x583C0010, // 003D LDCONST R15 K16 + 0x9440130E, // 003E GETIDX R16 R9 K14 + 0x7C380400, // 003F CALL R14 2 + 0x7C300400, // 0040 CALL R12 2 + 0x8C30130D, // 0041 GETMET R12 R9 K13 + 0x58380011, // 0042 LDCONST R14 K17 + 0x7C300400, // 0043 CALL R12 2 + 0x78320005, // 0044 JMPF R12 #004B + 0x8C30170F, // 0045 GETMET R12 R11 K15 + 0x60380018, // 0046 GETGBL R14 G24 + 0x583C0012, // 0047 LDCONST R15 K18 + 0x94401311, // 0048 GETIDX R16 R9 K17 + 0x7C380400, // 0049 CALL R14 2 + 0x7C300400, // 004A CALL R12 2 + 0x8C30130D, // 004B GETMET R12 R9 K13 + 0x58380013, // 004C LDCONST R14 K19 + 0x7C300400, // 004D CALL R12 2 + 0x78320005, // 004E JMPF R12 #0055 + 0x8C30170F, // 004F GETMET R12 R11 K15 + 0x60380018, // 0050 GETGBL R14 G24 + 0x583C0014, // 0051 LDCONST R15 K20 + 0x94401313, // 0052 GETIDX R16 R9 K19 + 0x7C380400, // 0053 CALL R14 2 + 0x7C300400, // 0054 CALL R12 2 + 0x8C30130D, // 0055 GETMET R12 R9 K13 + 0x58380015, // 0056 LDCONST R14 K21 + 0x7C300400, // 0057 CALL R12 2 + 0x78320005, // 0058 JMPF R12 #005F + 0x8C30170F, // 0059 GETMET R12 R11 K15 + 0x60380018, // 005A GETGBL R14 G24 + 0x583C0016, // 005B LDCONST R15 K22 + 0x94401315, // 005C GETIDX R16 R9 K21 + 0x7C380400, // 005D CALL R14 2 + 0x7C300400, // 005E CALL R12 2 + 0x8C30130D, // 005F GETMET R12 R9 K13 + 0x58380017, // 0060 LDCONST R14 K23 + 0x7C300400, // 0061 CALL R12 2 + 0x78320005, // 0062 JMPF R12 #0069 + 0x8C30170F, // 0063 GETMET R12 R11 K15 + 0x60380018, // 0064 GETGBL R14 G24 + 0x583C0018, // 0065 LDCONST R15 K24 + 0x94401317, // 0066 GETIDX R16 R9 K23 + 0x7C380400, // 0067 CALL R14 2 + 0x7C300400, // 0068 CALL R12 2 + 0x5830000A, // 0069 LDCONST R12 K10 + 0x60340010, // 006A GETGBL R13 G16 + 0x6038000C, // 006B GETGBL R14 G12 + 0x5C3C1600, // 006C MOVE R15 R11 + 0x7C380200, // 006D CALL R14 1 + 0x04381D07, // 006E SUB R14 R14 K7 + 0x403A0C0E, // 006F CONNECT R14 K6 R14 + 0x7C340200, // 0070 CALL R13 1 + 0xA802000B, // 0071 EXBLK 0 #007E + 0x5C381A00, // 0072 MOVE R14 R13 + 0x7C380000, // 0073 CALL R14 0 + 0x943C160E, // 0074 GETIDX R15 R11 R14 + 0x0030180F, // 0075 ADD R12 R12 R15 + 0x603C000C, // 0076 GETGBL R15 G12 + 0x5C401600, // 0077 MOVE R16 R11 + 0x7C3C0200, // 0078 CALL R15 1 + 0x043C1F07, // 0079 SUB R15 R15 K7 + 0x143C1C0F, // 007A LT R15 R14 R15 + 0x783E0000, // 007B JMPF R15 #007D + 0x00301919, // 007C ADD R12 R12 K25 + 0x7001FFF3, // 007D JMP #0072 + 0x5834001A, // 007E LDCONST R13 K26 + 0xAC340200, // 007F CATCH R13 1 0 + 0xB0080000, // 0080 RAISE 2 R0 R0 + 0x8C340102, // 0081 GETMET R13 R0 K2 + 0x603C0018, // 0082 GETGBL R15 G24 + 0x5840001B, // 0083 LDCONST R16 K27 + 0x5C441000, // 0084 MOVE R17 R8 + 0x5C481800, // 0085 MOVE R18 R12 + 0x5C4C1400, // 0086 MOVE R19 R10 + 0x7C3C0800, // 0087 CALL R15 4 + 0x7C340400, // 0088 CALL R13 2 + 0x70020007, // 0089 JMP #0092 + 0x8C2C0102, // 008A GETMET R11 R0 K2 + 0x60340018, // 008B GETGBL R13 G24 + 0x5838001C, // 008C LDCONST R14 K28 + 0x5C3C1000, // 008D MOVE R15 R8 + 0x5C401200, // 008E MOVE R16 R9 + 0x5C441400, // 008F MOVE R17 R10 + 0x7C340800, // 0090 CALL R13 4 + 0x7C2C0400, // 0091 CALL R11 2 + 0x70020006, // 0092 JMP #009A + 0x8C2C0102, // 0093 GETMET R11 R0 K2 + 0x60340018, // 0094 GETGBL R13 G24 + 0x5838001D, // 0095 LDCONST R14 K29 + 0x5C3C1000, // 0096 MOVE R15 R8 + 0x5C401400, // 0097 MOVE R16 R10 + 0x7C340600, // 0098 CALL R13 3 + 0x7C2C0400, // 0099 CALL R11 2 + 0x7001FF7D, // 009A JMP #0019 + 0x5818001A, // 009B LDCONST R6 K26 + 0xAC180200, // 009C CATCH R6 1 0 + 0xB0080000, // 009D RAISE 2 R0 R0 + 0x8C180102, // 009E GETMET R6 R0 K2 + 0x5820001E, // 009F LDCONST R8 K30 + 0x7C180400, // 00A0 CALL R6 2 + 0x8C180102, // 00A1 GETMET R6 R0 K2 + 0x5820000A, // 00A2 LDCONST R8 K10 + 0x7C180400, // 00A3 CALL R6 2 + 0x8C180102, // 00A4 GETMET R6 R0 K2 + 0x5820001F, // 00A5 LDCONST R8 K31 + 0x7C180400, // 00A6 CALL R6 2 + 0x8C180102, // 00A7 GETMET R6 R0 K2 + 0x58200020, // 00A8 LDCONST R8 K32 + 0x7C180400, // 00A9 CALL R6 2 + 0x8C180102, // 00AA GETMET R6 R0 K2 + 0x58200021, // 00AB LDCONST R8 K33 + 0x7C180400, // 00AC CALL R6 2 + 0x8C180102, // 00AD GETMET R6 R0 K2 + 0x5820000A, // 00AE LDCONST R8 K10 + 0x7C180400, // 00AF CALL R6 2 + 0x8C180922, // 00B0 GETMET R6 R4 K34 + 0x88200123, // 00B1 GETMBR R8 R0 K35 + 0x7C180400, // 00B2 CALL R6 2 + 0x8C1C0925, // 00B3 GETMET R7 R4 K37 + 0x7C1C0200, // 00B4 CALL R7 1 + 0x901A4807, // 00B5 SETMBR R6 K36 R7 + 0x501C0200, // 00B6 LDBOOL R7 1 0 + 0x901A4C07, // 00B7 SETMBR R6 K38 R7 + 0x901A4F28, // 00B8 SETMBR R6 K39 K40 + 0x601C0013, // 00B9 GETGBL R7 G19 + 0x7C1C0000, // 00BA CALL R7 0 + 0x901A5207, // 00BB SETMBR R6 K41 R7 + 0x601C0010, // 00BC GETGBL R7 G16 + 0x5C200400, // 00BD MOVE R8 R2 + 0x7C1C0200, // 00BE CALL R7 1 + 0xA8020005, // 00BF EXBLK 0 #00C6 + 0x5C200E00, // 00C0 MOVE R8 R7 + 0x7C200000, // 00C1 CALL R8 0 + 0x88240D29, // 00C2 GETMBR R9 R6 K41 + 0x50280200, // 00C3 LDBOOL R10 1 0 + 0x9824100A, // 00C4 SETIDX R9 R8 R10 + 0x7001FFF9, // 00C5 JMP #00C0 + 0x581C001A, // 00C6 LDCONST R7 K26 + 0xAC1C0200, // 00C7 CATCH R7 1 0 + 0xB0080000, // 00C8 RAISE 2 R0 R0 + 0x8C1C012A, // 00C9 GETMET R7 R0 K42 + 0x88240D29, // 00CA GETMBR R9 R6 K41 + 0x7C1C0400, // 00CB CALL R7 2 + 0x601C0010, // 00CC GETGBL R7 G16 + 0x5C200400, // 00CD MOVE R8 R2 + 0x7C1C0200, // 00CE CALL R7 1 + 0xA802002B, // 00CF EXBLK 0 #00FC + 0x5C200E00, // 00D0 MOVE R8 R7 + 0x7C200000, // 00D1 CALL R8 0 + 0x8C240708, // 00D2 GETMET R9 R3 K8 + 0x5C2C1000, // 00D3 MOVE R11 R8 + 0x7C240400, // 00D4 CALL R9 2 + 0x4C280000, // 00D5 LDNIL R10 + 0x2028120A, // 00D6 NE R10 R9 R10 + 0x782A001E, // 00D7 JMPF R10 #00F7 + 0x4C280000, // 00D8 LDNIL R10 + 0x602C0004, // 00D9 GETGBL R11 G4 + 0x5C301200, // 00DA MOVE R12 R9 + 0x7C2C0200, // 00DB CALL R11 1 + 0x1C2C170B, // 00DC EQ R11 R11 K11 + 0x782E0009, // 00DD JMPF R11 #00E8 + 0x602C0005, // 00DE GETGBL R11 G5 + 0x5C301200, // 00DF MOVE R12 R9 + 0x7C2C0200, // 00E0 CALL R11 1 + 0x1C2C170C, // 00E1 EQ R11 R11 K12 + 0x782E0004, // 00E2 JMPF R11 #00E8 + 0x8C2C1308, // 00E3 GETMET R11 R9 K8 + 0x5834000E, // 00E4 LDCONST R13 K14 + 0x7C2C0400, // 00E5 CALL R11 2 + 0x5C281600, // 00E6 MOVE R10 R11 + 0x70020000, // 00E7 JMP #00E9 + 0x5C281200, // 00E8 MOVE R10 R9 + 0x4C2C0000, // 00E9 LDNIL R11 + 0x202C140B, // 00EA NE R11 R10 R11 + 0x782E0005, // 00EB JMPF R11 #00F2 + 0x8C2C012B, // 00EC GETMET R11 R0 K43 + 0x88340D24, // 00ED GETMBR R13 R6 K36 + 0x5C381000, // 00EE MOVE R14 R8 + 0x5C3C1400, // 00EF MOVE R15 R10 + 0x7C2C0800, // 00F0 CALL R11 4 + 0x70020003, // 00F1 JMP #00F6 + 0x882C0D24, // 00F2 GETMBR R11 R6 K36 + 0x8C2C172C, // 00F3 GETMET R11 R11 K44 + 0x5C341000, // 00F4 MOVE R13 R8 + 0x7C2C0400, // 00F5 CALL R11 2 + 0x70020003, // 00F6 JMP #00FB + 0x88280D24, // 00F7 GETMBR R10 R6 K36 + 0x8C28152C, // 00F8 GETMET R10 R10 K44 + 0x5C301000, // 00F9 MOVE R12 R8 + 0x7C280400, // 00FA CALL R10 2 + 0x7001FFD3, // 00FB JMP #00D0 + 0x581C001A, // 00FC LDCONST R7 K26 + 0xAC1C0200, // 00FD CATCH R7 1 0 + 0xB0080000, // 00FE RAISE 2 R0 R0 + 0x8C1C0D2D, // 00FF GETMET R7 R6 K45 + 0x7C1C0200, // 0100 CALL R7 1 + 0x4C200000, // 0101 LDNIL R8 + 0x20200E08, // 0102 NE R8 R7 R8 + 0x7822001E, // 0103 JMPF R8 #0123 + 0x8C200B2E, // 0104 GETMET R8 R5 K46 + 0x5C280E00, // 0105 MOVE R10 R7 + 0x582C002F, // 0106 LDCONST R11 K47 + 0x7C200600, // 0107 CALL R8 3 + 0x60240010, // 0108 GETGBL R9 G16 + 0x5C281000, // 0109 MOVE R10 R8 + 0x7C240200, // 010A CALL R9 1 + 0xA802000D, // 010B EXBLK 0 #011A + 0x5C281200, // 010C MOVE R10 R9 + 0x7C280000, // 010D CALL R10 0 + 0x602C000C, // 010E GETGBL R11 G12 + 0x5C301400, // 010F MOVE R12 R10 + 0x7C2C0200, // 0110 CALL R11 1 + 0x242C1706, // 0111 GT R11 R11 K6 + 0x782E0005, // 0112 JMPF R11 #0119 + 0x8C2C0102, // 0113 GETMET R11 R0 K2 + 0x60340018, // 0114 GETGBL R13 G24 + 0x58380030, // 0115 LDCONST R14 K48 + 0x5C3C1400, // 0116 MOVE R15 R10 + 0x7C340400, // 0117 CALL R13 2 + 0x7C2C0400, // 0118 CALL R11 2 + 0x7001FFF1, // 0119 JMP #010C + 0x5824001A, // 011A LDCONST R9 K26 + 0xAC240200, // 011B CATCH R9 1 0 + 0xB0080000, // 011C RAISE 2 R0 R0 + 0x8C240131, // 011D GETMET R9 R0 K49 + 0x5C2C0200, // 011E MOVE R11 R1 + 0x5C300400, // 011F MOVE R12 R2 + 0x5C340E00, // 0120 MOVE R13 R7 + 0x7C240800, // 0121 CALL R9 4 + 0x70020010, // 0122 JMP #0134 + 0x60200010, // 0123 GETGBL R8 G16 + 0x88240D32, // 0124 GETMBR R9 R6 K50 + 0x7C200200, // 0125 CALL R8 1 + 0xA8020009, // 0126 EXBLK 0 #0131 + 0x5C241000, // 0127 MOVE R9 R8 + 0x7C240000, // 0128 CALL R9 0 + 0x8C280133, // 0129 GETMET R10 R0 K51 + 0x60300018, // 012A GETGBL R12 G24 + 0x58340034, // 012B LDCONST R13 K52 + 0x5C380200, // 012C MOVE R14 R1 + 0x5C3C1200, // 012D MOVE R15 R9 + 0x7C300600, // 012E CALL R12 3 + 0x7C280400, // 012F CALL R10 2 + 0x7001FFF5, // 0130 JMP #0127 + 0x5820001A, // 0131 LDCONST R8 K26 + 0xAC200200, // 0132 CATCH R8 1 0 + 0xB0080000, // 0133 RAISE 2 R0 R0 + 0x8C200135, // 0134 GETMET R8 R0 K53 + 0x7C200200, // 0135 CALL R8 1 + 0x8C200102, // 0136 GETMET R8 R0 K2 + 0x58280036, // 0137 LDCONST R10 K54 + 0x7C200400, // 0138 CALL R8 2 + 0x8C200102, // 0139 GETMET R8 R0 K2 + 0x58280037, // 013A LDCONST R10 K55 + 0x7C200400, // 013B CALL R8 2 + 0x8C200102, // 013C GETMET R8 R0 K2 + 0x5828000A, // 013D LDCONST R10 K10 + 0x7C200400, // 013E CALL R8 2 + 0x80000000, // 013F RET 0 }) ) ); @@ -11565,1086 +15753,6 @@ be_local_closure(class_SimpleDSLTranspiler_get_symbol_table_report, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: process_sequence_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* 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[26]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(add), - /* K3 */ be_nested_str_weak(get_indent), - /* K4 */ be_nested_str_weak(value), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_const_int(0), - /* K7 */ be_nested_str_weak(play), - /* K8 */ be_nested_str_weak(process_play_statement_fluent), - /* K9 */ be_nested_str_weak(wait), - /* K10 */ be_nested_str_weak(process_wait_statement_fluent), - /* K11 */ be_const_int(1), - /* K12 */ be_nested_str_weak(log), - /* K13 */ be_nested_str_weak(process_log_statement_fluent), - /* K14 */ be_nested_str_weak(restart), - /* K15 */ be_nested_str_weak(process_restart_statement_fluent), - /* K16 */ be_nested_str_weak(repeat), - /* K17 */ be_nested_str_weak(process_repeat_statement_fluent), - /* K18 */ be_nested_str_weak(if), - /* K19 */ be_nested_str_weak(process_if_statement_fluent), - /* K20 */ be_nested_str_weak(peek), - /* K21 */ be_nested_str_weak(process_sequence_assignment_fluent), - /* K22 */ be_nested_str_weak(error), - /* K23 */ be_nested_str_weak(Unknown_X20command_X20_X27_X25s_X27_X20in_X20sequence_X2E_X20Valid_X20sequence_X20commands_X20are_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20if_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments_X20_X28object_X2Eproperty_X20_X3D_X20value_X29), - /* K24 */ be_nested_str_weak(skip_statement), - /* K25 */ be_nested_str_weak(Invalid_X20statement_X20in_X20sequence_X2E_X20Expected_X3A_X20play_X2C_X20wait_X2C_X20repeat_X2C_X20if_X2C_X20restart_X2C_X20log_X2C_X20or_X20property_X20assignments), - }), - be_str_weak(process_sequence_statement), - &be_const_str_solidified, - ( &(const binstruction[114]) { /* 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 - 0x80000400, // 0005 RET 0 - 0x88080301, // 0006 GETMBR R2 R1 K1 - 0x540E0024, // 0007 LDINT R3 37 - 0x1C080403, // 0008 EQ R2 R2 R3 - 0x780A0008, // 0009 JMPF R2 #0013 - 0x8C080102, // 000A GETMET R2 R0 K2 - 0x8C100103, // 000B GETMET R4 R0 K3 - 0x7C100200, // 000C CALL R4 1 - 0x88140304, // 000D GETMBR R5 R1 K4 - 0x00100805, // 000E ADD R4 R4 R5 - 0x7C080400, // 000F CALL R2 2 - 0x8C080105, // 0010 GETMET R2 R0 K5 - 0x7C080200, // 0011 CALL R2 1 - 0x80000400, // 0012 RET 0 - 0x88080301, // 0013 GETMBR R2 R1 K1 - 0x540E0022, // 0014 LDINT R3 35 - 0x1C080403, // 0015 EQ R2 R2 R3 - 0x780A0002, // 0016 JMPF R2 #001A - 0x8C080105, // 0017 GETMET R2 R0 K5 - 0x7C080200, // 0018 CALL R2 1 - 0x80000400, // 0019 RET 0 - 0x88080301, // 001A GETMBR R2 R1 K1 - 0x1C080506, // 001B EQ R2 R2 K6 - 0x780A0005, // 001C JMPF R2 #0023 - 0x88080304, // 001D GETMBR R2 R1 K4 - 0x1C080507, // 001E EQ R2 R2 K7 - 0x780A0002, // 001F JMPF R2 #0023 - 0x8C080108, // 0020 GETMET R2 R0 K8 - 0x7C080200, // 0021 CALL R2 1 - 0x7002004D, // 0022 JMP #0071 - 0x88080301, // 0023 GETMBR R2 R1 K1 - 0x1C080506, // 0024 EQ R2 R2 K6 - 0x780A0005, // 0025 JMPF R2 #002C - 0x88080304, // 0026 GETMBR R2 R1 K4 - 0x1C080509, // 0027 EQ R2 R2 K9 - 0x780A0002, // 0028 JMPF R2 #002C - 0x8C08010A, // 0029 GETMET R2 R0 K10 - 0x7C080200, // 002A CALL R2 1 - 0x70020044, // 002B JMP #0071 - 0x88080301, // 002C GETMBR R2 R1 K1 - 0x1C08050B, // 002D EQ R2 R2 K11 - 0x780A0005, // 002E JMPF R2 #0035 - 0x88080304, // 002F GETMBR R2 R1 K4 - 0x1C08050C, // 0030 EQ R2 R2 K12 - 0x780A0002, // 0031 JMPF R2 #0035 - 0x8C08010D, // 0032 GETMET R2 R0 K13 - 0x7C080200, // 0033 CALL R2 1 - 0x7002003B, // 0034 JMP #0071 - 0x88080301, // 0035 GETMBR R2 R1 K1 - 0x1C080506, // 0036 EQ R2 R2 K6 - 0x780A0005, // 0037 JMPF R2 #003E - 0x88080304, // 0038 GETMBR R2 R1 K4 - 0x1C08050E, // 0039 EQ R2 R2 K14 - 0x780A0002, // 003A JMPF R2 #003E - 0x8C08010F, // 003B GETMET R2 R0 K15 - 0x7C080200, // 003C CALL R2 1 - 0x70020032, // 003D JMP #0071 - 0x88080301, // 003E GETMBR R2 R1 K1 - 0x1C080506, // 003F EQ R2 R2 K6 - 0x780A0005, // 0040 JMPF R2 #0047 - 0x88080304, // 0041 GETMBR R2 R1 K4 - 0x1C080510, // 0042 EQ R2 R2 K16 - 0x780A0002, // 0043 JMPF R2 #0047 - 0x8C080111, // 0044 GETMET R2 R0 K17 - 0x7C080200, // 0045 CALL R2 1 - 0x70020029, // 0046 JMP #0071 - 0x88080301, // 0047 GETMBR R2 R1 K1 - 0x1C080506, // 0048 EQ R2 R2 K6 - 0x780A0005, // 0049 JMPF R2 #0050 - 0x88080304, // 004A GETMBR R2 R1 K4 - 0x1C080512, // 004B EQ R2 R2 K18 - 0x780A0002, // 004C JMPF R2 #0050 - 0x8C080113, // 004D GETMET R2 R0 K19 - 0x7C080200, // 004E CALL R2 1 - 0x70020020, // 004F JMP #0071 - 0x88080301, // 0050 GETMBR R2 R1 K1 - 0x1C08050B, // 0051 EQ R2 R2 K11 - 0x780A0016, // 0052 JMPF R2 #006A - 0x8C080114, // 0053 GETMET R2 R0 K20 - 0x7C080200, // 0054 CALL R2 1 - 0x4C0C0000, // 0055 LDNIL R3 - 0x20080403, // 0056 NE R2 R2 R3 - 0x780A0008, // 0057 JMPF R2 #0061 - 0x8C080114, // 0058 GETMET R2 R0 K20 - 0x7C080200, // 0059 CALL R2 1 - 0x88080501, // 005A GETMBR R2 R2 K1 - 0x540E0020, // 005B LDINT R3 33 - 0x1C080403, // 005C EQ R2 R2 R3 - 0x780A0002, // 005D JMPF R2 #0061 - 0x8C080115, // 005E GETMET R2 R0 K21 - 0x7C080200, // 005F CALL R2 1 - 0x70020007, // 0060 JMP #0069 - 0x8C080116, // 0061 GETMET R2 R0 K22 - 0x60100018, // 0062 GETGBL R4 G24 - 0x58140017, // 0063 LDCONST R5 K23 - 0x88180304, // 0064 GETMBR R6 R1 K4 - 0x7C100400, // 0065 CALL R4 2 - 0x7C080400, // 0066 CALL R2 2 - 0x8C080118, // 0067 GETMET R2 R0 K24 - 0x7C080200, // 0068 CALL R2 1 - 0x70020006, // 0069 JMP #0071 - 0x8C080116, // 006A GETMET R2 R0 K22 - 0x60100018, // 006B GETGBL R4 G24 - 0x58140019, // 006C LDCONST R5 K25 - 0x7C100200, // 006D CALL R4 1 - 0x7C080400, // 006E CALL R2 2 - 0x8C080118, // 006F GETMET R2 R0 K24 - 0x7C080200, // 0070 CALL R2 1 - 0x80000000, // 0071 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - }), - be_str_weak(check_right_brace), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001A, // 0006 LDINT R3 27 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x740A0000, // 0008 JMPT R2 #000A - 0x50080001, // 0009 LDBOOL R2 0 1 - 0x50080200, // 000A LDBOOL R2 1 0 - 0x80040400, // 000B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_template_parameter_name -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_template_parameter_name, /* name */ - be_nested_proto( - 16, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(error), - /* K3 */ be_nested_str_weak(Duplicate_X20parameter_X20name_X20_X27_X25s_X27_X20in_X20template_X2E_X20Each_X20parameter_X20must_X20have_X20a_X20unique_X20name_X2E), - /* K4 */ be_nested_str_weak(engine), - /* K5 */ be_nested_str_weak(self), - /* K6 */ be_nested_str_weak(animation), - /* K7 */ be_nested_str_weak(color), - /* K8 */ be_nested_str_weak(palette), - /* K9 */ be_nested_str_weak(sequence), - /* K10 */ be_nested_str_weak(template), - /* K11 */ be_nested_str_weak(import), - /* K12 */ be_nested_str_weak(def), - /* K13 */ be_nested_str_weak(end), - /* K14 */ be_nested_str_weak(class), - /* K15 */ be_nested_str_weak(var), - /* K16 */ be_nested_str_weak(if), - /* K17 */ be_nested_str_weak(else), - /* K18 */ be_nested_str_weak(while), - /* K19 */ be_nested_str_weak(for), - /* K20 */ be_nested_str_weak(true), - /* K21 */ be_nested_str_weak(false), - /* K22 */ be_nested_str_weak(nil), - /* K23 */ be_nested_str_weak(return), - /* K24 */ be_nested_str_weak(break), - /* K25 */ be_nested_str_weak(continue), - /* K26 */ be_nested_str_weak(Parameter_X20name_X20_X27_X25s_X27_X20conflicts_X20with_X20reserved_X20keyword_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_param_X27_X20or_X20_X27my__X25s_X27_X2E), - /* K27 */ be_nested_str_weak(stop_iteration), - /* K28 */ be_nested_str_weak(is_color_name), - /* K29 */ be_nested_str_weak(Parameter_X20name_X20_X27_X25s_X27_X20conflicts_X20with_X20built_X2Din_X20color_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_param_X27_X20or_X20_X27my__X25s_X27_X2E), - /* K30 */ be_nested_str_weak(name), - /* K31 */ be_nested_str_weak(is_running), - /* K32 */ be_nested_str_weak(priority), - /* K33 */ be_nested_str_weak(duration), - /* K34 */ be_nested_str_weak(loop), - /* K35 */ be_nested_str_weak(opacity), - /* K36 */ be_nested_str_weak(warning), - /* K37 */ be_nested_str_weak(Template_X20animation_X20parameter_X20_X27_X25s_X27_X20masks_X20existing_X20parameter_X20from_X20EngineProxy_X20base_X20class_X2E_X20This_X20may_X20cause_X20unexpected_X20behavior_X2E_X20Consider_X20using_X20a_X20different_X20name_X20like_X20_X27custom__X25s_X27_X20or_X20_X27_X25s_value_X27_X2E), - }), - be_str_weak(_validate_template_parameter_name), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140501, // 0001 GETMET R5 R2 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x7C140400, // 0003 CALL R5 2 - 0x78160007, // 0004 JMPF R5 #000D - 0x8C140102, // 0005 GETMET R5 R0 K2 - 0x601C0018, // 0006 GETGBL R7 G24 - 0x58200003, // 0007 LDCONST R8 K3 - 0x5C240200, // 0008 MOVE R9 R1 - 0x7C1C0400, // 0009 CALL R7 2 - 0x7C140400, // 000A CALL R5 2 - 0x50140000, // 000B LDBOOL R5 0 0 - 0x80040A00, // 000C RET 1 R5 - 0x60140012, // 000D GETGBL R5 G18 - 0x7C140000, // 000E CALL R5 0 - 0x40180B04, // 000F CONNECT R6 R5 K4 - 0x40180B05, // 0010 CONNECT R6 R5 K5 - 0x40180B06, // 0011 CONNECT R6 R5 K6 - 0x40180B07, // 0012 CONNECT R6 R5 K7 - 0x40180B08, // 0013 CONNECT R6 R5 K8 - 0x40180B09, // 0014 CONNECT R6 R5 K9 - 0x40180B0A, // 0015 CONNECT R6 R5 K10 - 0x40180B0B, // 0016 CONNECT R6 R5 K11 - 0x40180B0C, // 0017 CONNECT R6 R5 K12 - 0x40180B0D, // 0018 CONNECT R6 R5 K13 - 0x40180B0E, // 0019 CONNECT R6 R5 K14 - 0x40180B0F, // 001A CONNECT R6 R5 K15 - 0x40180B10, // 001B CONNECT R6 R5 K16 - 0x40180B11, // 001C CONNECT R6 R5 K17 - 0x40180B12, // 001D CONNECT R6 R5 K18 - 0x40180B13, // 001E CONNECT R6 R5 K19 - 0x40180B14, // 001F CONNECT R6 R5 K20 - 0x40180B15, // 0020 CONNECT R6 R5 K21 - 0x40180B16, // 0021 CONNECT R6 R5 K22 - 0x40180B17, // 0022 CONNECT R6 R5 K23 - 0x40180B18, // 0023 CONNECT R6 R5 K24 - 0x40180B19, // 0024 CONNECT R6 R5 K25 - 0x60180010, // 0025 GETGBL R6 G16 - 0x5C1C0A00, // 0026 MOVE R7 R5 - 0x7C180200, // 0027 CALL R6 1 - 0xA802000F, // 0028 EXBLK 0 #0039 - 0x5C1C0C00, // 0029 MOVE R7 R6 - 0x7C1C0000, // 002A CALL R7 0 - 0x1C200207, // 002B EQ R8 R1 R7 - 0x7822000A, // 002C JMPF R8 #0038 - 0x8C200102, // 002D GETMET R8 R0 K2 - 0x60280018, // 002E GETGBL R10 G24 - 0x582C001A, // 002F LDCONST R11 K26 - 0x5C300200, // 0030 MOVE R12 R1 - 0x5C340200, // 0031 MOVE R13 R1 - 0x5C380200, // 0032 MOVE R14 R1 - 0x7C280800, // 0033 CALL R10 4 - 0x7C200400, // 0034 CALL R8 2 - 0x50200000, // 0035 LDBOOL R8 0 0 - 0xA8040001, // 0036 EXBLK 1 1 - 0x80041000, // 0037 RET 1 R8 - 0x7001FFEF, // 0038 JMP #0029 - 0x5818001B, // 0039 LDCONST R6 K27 - 0xAC180200, // 003A CATCH R6 1 0 - 0xB0080000, // 003B RAISE 2 R0 R0 - 0x8C18091C, // 003C GETMET R6 R4 K28 - 0x5C200200, // 003D MOVE R8 R1 - 0x7C180400, // 003E CALL R6 2 - 0x781A0009, // 003F JMPF R6 #004A - 0x8C180102, // 0040 GETMET R6 R0 K2 - 0x60200018, // 0041 GETGBL R8 G24 - 0x5824001D, // 0042 LDCONST R9 K29 - 0x5C280200, // 0043 MOVE R10 R1 - 0x5C2C0200, // 0044 MOVE R11 R1 - 0x5C300200, // 0045 MOVE R12 R1 - 0x7C200800, // 0046 CALL R8 4 - 0x7C180400, // 0047 CALL R6 2 - 0x50180000, // 0048 LDBOOL R6 0 0 - 0x80040C00, // 0049 RET 1 R6 - 0x780E001F, // 004A JMPF R3 #006B - 0x60180012, // 004B GETGBL R6 G18 - 0x7C180000, // 004C CALL R6 0 - 0x401C0D1E, // 004D CONNECT R7 R6 K30 - 0x401C0D1F, // 004E CONNECT R7 R6 K31 - 0x401C0D20, // 004F CONNECT R7 R6 K32 - 0x401C0D21, // 0050 CONNECT R7 R6 K33 - 0x401C0D22, // 0051 CONNECT R7 R6 K34 - 0x401C0D23, // 0052 CONNECT R7 R6 K35 - 0x401C0D07, // 0053 CONNECT R7 R6 K7 - 0x601C0010, // 0054 GETGBL R7 G16 - 0x5C200C00, // 0055 MOVE R8 R6 - 0x7C1C0200, // 0056 CALL R7 1 - 0xA802000F, // 0057 EXBLK 0 #0068 - 0x5C200E00, // 0058 MOVE R8 R7 - 0x7C200000, // 0059 CALL R8 0 - 0x1C240208, // 005A EQ R9 R1 R8 - 0x78260008, // 005B JMPF R9 #0065 - 0x8C240124, // 005C GETMET R9 R0 K36 - 0x602C0018, // 005D GETGBL R11 G24 - 0x58300025, // 005E LDCONST R12 K37 - 0x5C340200, // 005F MOVE R13 R1 - 0x5C380200, // 0060 MOVE R14 R1 - 0x5C3C0200, // 0061 MOVE R15 R1 - 0x7C2C0800, // 0062 CALL R11 4 - 0x7C240400, // 0063 CALL R9 2 - 0x70020000, // 0064 JMP #0066 - 0x7001FFF1, // 0065 JMP #0058 - 0xA8040001, // 0066 EXBLK 1 1 - 0x70020002, // 0067 JMP #006B - 0x581C001B, // 0068 LDCONST R7 K27 - 0xAC1C0200, // 0069 CATCH R7 1 0 - 0xB0080000, // 006A RAISE 2 R0 R0 - 0x50180200, // 006B LDBOOL R6 1 0 - 0x80040C00, // 006C RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_unified), - /* K1 */ be_nested_str_weak(CONTEXT_ANIMATION), - }), - be_str_weak(_process_named_arguments_for_animation), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x881C0101, // 0003 GETMBR R7 R0 K1 - 0x7C0C0800, // 0004 CALL R3 4 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_unified -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_unified, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 11, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x60140018, // 0002 GETGBL R5 G24 - 0x58180001, // 0003 LDCONST R6 K1 - 0x681C0001, // 0004 GETUPV R7 U1 - 0x5C200000, // 0005 MOVE R8 R0 - 0x5C240200, // 0006 MOVE R9 R1 - 0x5C280400, // 0007 MOVE R10 R2 - 0x7C140A00, // 0008 CALL R5 5 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80000000, // 000A RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_process_parameters_core), - /* K2 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_unified), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x84100000, // 0002 CLOSURE R4 P0 - 0x8C140101, // 0003 GETMET R5 R0 K1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x5C200600, // 0005 MOVE R8 R3 - 0x5C240800, // 0006 MOVE R9 R4 - 0x7C140800, // 0007 CALL R5 4 - 0x8C140102, // 0008 GETMET R5 R0 K2 - 0x7C140200, // 0009 CALL R5 1 - 0xA0000000, // 000A CLOSE R0 - 0x80000000, // 000B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_parameters_core -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* 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[17]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(_create_instance_for_validation), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K5 */ be_nested_str_weak(expect_identifier), - /* K6 */ be_nested_str_weak(_validate_single_parameter), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(CONTEXT_VARIABLE), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(expr), - /* K12 */ be_nested_str_weak(current), - /* K13 */ be_nested_str_weak(type), - /* K14 */ be_nested_str_weak(next), - /* K15 */ be_nested_str_weak(error), - /* K16 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - }), - be_str_weak(_process_parameters_core), - &be_const_str_solidified, - ( &(const binstruction[102]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x5C140200, // 0001 MOVE R5 R1 - 0x20180B00, // 0002 NE R6 R5 K0 - 0x781A0003, // 0003 JMPF R6 #0008 - 0x8C180101, // 0004 GETMET R6 R0 K1 - 0x5C200A00, // 0005 MOVE R8 R5 - 0x7C180400, // 0006 CALL R6 2 - 0x5C100C00, // 0007 MOVE R4 R6 - 0x8C180102, // 0008 GETMET R6 R0 K2 - 0x7C180200, // 0009 CALL R6 1 - 0x741A0059, // 000A JMPT R6 #0065 - 0x8C180103, // 000B GETMET R6 R0 K3 - 0x7C180200, // 000C CALL R6 1 - 0x741A0056, // 000D JMPT R6 #0065 - 0x8C180104, // 000E GETMET R6 R0 K4 - 0x7C180200, // 000F CALL R6 1 - 0x8C180103, // 0010 GETMET R6 R0 K3 - 0x7C180200, // 0011 CALL R6 1 - 0x781A0000, // 0012 JMPF R6 #0014 - 0x70020050, // 0013 JMP #0065 - 0x8C180105, // 0014 GETMET R6 R0 K5 - 0x7C180200, // 0015 CALL R6 1 - 0x4C1C0000, // 0016 LDNIL R7 - 0x201C0807, // 0017 NE R7 R4 R7 - 0x781E0006, // 0018 JMPF R7 #0020 - 0x201C0B00, // 0019 NE R7 R5 K0 - 0x781E0004, // 001A JMPF R7 #0020 - 0x8C1C0106, // 001B GETMET R7 R0 K6 - 0x5C240A00, // 001C MOVE R9 R5 - 0x5C280C00, // 001D MOVE R10 R6 - 0x5C2C0800, // 001E MOVE R11 R4 - 0x7C1C0800, // 001F CALL R7 4 - 0x8C1C0107, // 0020 GETMET R7 R0 K7 - 0x7C1C0200, // 0021 CALL R7 1 - 0x8C1C0108, // 0022 GETMET R7 R0 K8 - 0x88240109, // 0023 GETMBR R9 R0 K9 - 0x7C1C0400, // 0024 CALL R7 2 - 0x8C20010A, // 0025 GETMET R8 R0 K10 - 0x7C200200, // 0026 CALL R8 1 - 0x5C240600, // 0027 MOVE R9 R3 - 0x5C280C00, // 0028 MOVE R10 R6 - 0x882C0F0B, // 0029 GETMBR R11 R7 K11 - 0x5C301000, // 002A MOVE R12 R8 - 0x7C240600, // 002B CALL R9 3 - 0x8C240102, // 002C GETMET R9 R0 K2 - 0x7C240200, // 002D CALL R9 1 - 0x7426000D, // 002E JMPT R9 #003D - 0x8C24010C, // 002F GETMET R9 R0 K12 - 0x7C240200, // 0030 CALL R9 1 - 0x4C280000, // 0031 LDNIL R10 - 0x2028120A, // 0032 NE R10 R9 R10 - 0x782A0006, // 0033 JMPF R10 #003B - 0x8828130D, // 0034 GETMBR R10 R9 K13 - 0x542E0024, // 0035 LDINT R11 37 - 0x1C28140B, // 0036 EQ R10 R10 R11 - 0x782A0002, // 0037 JMPF R10 #003B - 0x8C28010E, // 0038 GETMET R10 R0 K14 - 0x7C280200, // 0039 CALL R10 1 - 0x70020000, // 003A JMP #003C - 0x70020000, // 003B JMP #003D - 0x7001FFEE, // 003C JMP #002C - 0x8C24010C, // 003D GETMET R9 R0 K12 - 0x7C240200, // 003E CALL R9 1 - 0x4C280000, // 003F LDNIL R10 - 0x2024120A, // 0040 NE R9 R9 R10 - 0x7826000A, // 0041 JMPF R9 #004D - 0x8C24010C, // 0042 GETMET R9 R0 K12 - 0x7C240200, // 0043 CALL R9 1 - 0x8824130D, // 0044 GETMBR R9 R9 K13 - 0x542A001D, // 0045 LDINT R10 30 - 0x1C24120A, // 0046 EQ R9 R9 R10 - 0x78260004, // 0047 JMPF R9 #004D - 0x8C24010E, // 0048 GETMET R9 R0 K14 - 0x7C240200, // 0049 CALL R9 1 - 0x8C240104, // 004A GETMET R9 R0 K4 - 0x7C240200, // 004B CALL R9 1 - 0x70020016, // 004C JMP #0064 - 0x8C24010C, // 004D GETMET R9 R0 K12 - 0x7C240200, // 004E CALL R9 1 - 0x4C280000, // 004F LDNIL R10 - 0x2024120A, // 0050 NE R9 R9 R10 - 0x7826000A, // 0051 JMPF R9 #005D - 0x8C24010C, // 0052 GETMET R9 R0 K12 - 0x7C240200, // 0053 CALL R9 1 - 0x8824130D, // 0054 GETMBR R9 R9 K13 - 0x542A0022, // 0055 LDINT R10 35 - 0x1C24120A, // 0056 EQ R9 R9 R10 - 0x78260004, // 0057 JMPF R9 #005D - 0x8C24010E, // 0058 GETMET R9 R0 K14 - 0x7C240200, // 0059 CALL R9 1 - 0x8C240104, // 005A GETMET R9 R0 K4 - 0x7C240200, // 005B CALL R9 1 - 0x70020006, // 005C JMP #0064 - 0x8C240103, // 005D GETMET R9 R0 K3 - 0x7C240200, // 005E CALL R9 1 - 0x74260003, // 005F JMPT R9 #0064 - 0x8C24010F, // 0060 GETMET R9 R0 K15 - 0x582C0010, // 0061 LDCONST R11 K16 - 0x7C240400, // 0062 CALL R9 2 - 0x70020000, // 0063 JMP #0065 - 0x7001FFA2, // 0064 JMP #0008 - 0x80000000, // 0065 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(expect_dot), - /* K2 */ be_nested_str_weak(expect_assign), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(CONTEXT_PROPERTY), - /* K5 */ be_nested_str_weak(collect_inline_comment), - /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), - /* K7 */ be_nested_str_weak(expr), - /* 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(process_sequence_assignment_fluent), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x8C080100, // 0004 GETMET R2 R0 K0 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x88140104, // 0009 GETMBR R5 R0 K4 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C100105, // 000B GETMET R4 R0 K5 - 0x7C100200, // 000C CALL R4 1 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180006, // 000E LDCONST R6 K6 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x5C200400, // 0010 MOVE R8 R2 - 0x88240707, // 0011 GETMBR R9 R3 K7 - 0x7C140800, // 0012 CALL R5 4 - 0x8C180108, // 0013 GETMET R6 R0 K8 - 0x60200018, // 0014 GETGBL R8 G24 - 0x58240009, // 0015 LDCONST R9 K9 - 0x8C28010A, // 0016 GETMET R10 R0 K10 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C0A00, // 0018 MOVE R11 R5 - 0x5C300800, // 0019 MOVE R12 R4 - 0x7C200800, // 001A CALL R8 4 - 0x7C180400, // 001B CALL R6 2 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: current -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_current, /* name */ - be_nested_proto( - 3, /* 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(pull_lexer), - /* K1 */ be_nested_str_weak(peek_token), - }), - be_str_weak(current), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_nested_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 4), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(push), - /* K1 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x60140018, // 0002 GETGBL R5 G24 - 0x58180001, // 0003 LDCONST R6 K1 - 0x5C1C0000, // 0004 MOVE R7 R0 - 0x5C200200, // 0005 MOVE R8 R1 - 0x5C240400, // 0006 MOVE R9 R2 - 0x7C140800, // 0007 CALL R5 4 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80000000, // 0009 RET 0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[32]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_const_int(1), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20function_X20name), - /* K9 */ be_nested_str_weak(nil), - /* K10 */ be_nested_str_weak(symbol_table), - /* K11 */ be_nested_str_weak(get), - /* K12 */ be_nested_str_weak(process_function_arguments), - /* K13 */ be_nested_str_weak(_X25s_X28_X25s_X29), - /* K14 */ be_nested_str_weak(get_reference), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(CONTEXT_EXPRESSION), - /* K18 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K19 */ be_nested_str_weak(engine), - /* K20 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K21 */ be_nested_str_weak(_validate_animation_factory_exists), - /* K22 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K23 */ be_nested_str_weak(skip_function_arguments), - /* K24 */ be_nested_str_weak(expect_left_paren), - /* K25 */ be_nested_str_weak(_process_parameters_core), - /* K26 */ be_nested_str_weak(generic), - /* K27 */ be_nested_str_weak(expect_right_paren), - /* K28 */ be_nested_str_weak(_X0A), - /* K29 */ be_nested_str_weak(stop_iteration), - /* K30 */ be_nested_str_weak(_X28def_X20_X28engine_X29_X0A_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29_X0A_X25s_X0A_X20_X20return_X20provider_X0Aend_X29_X28engine_X29), - /* K31 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - }), - be_str_weak(process_nested_function_call), - &be_const_str_solidified, - ( &(const binstruction[143]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0203, // 0004 NE R3 R1 R3 - 0x780E0009, // 0005 JMPF R3 #0010 - 0x880C0302, // 0006 GETMBR R3 R1 K2 - 0x1C0C0703, // 0007 EQ R3 R3 K3 - 0x740E0002, // 0008 JMPT R3 #000C - 0x880C0302, // 0009 GETMBR R3 R1 K2 - 0x1C0C0704, // 000A EQ R3 R3 K4 - 0x780E0003, // 000B JMPF R3 #0010 - 0x88080305, // 000C GETMBR R2 R1 K5 - 0x8C0C0106, // 000D GETMET R3 R0 K6 - 0x7C0C0200, // 000E CALL R3 1 - 0x70020003, // 000F JMP #0014 - 0x8C0C0107, // 0010 GETMET R3 R0 K7 - 0x58140008, // 0011 LDCONST R5 K8 - 0x7C0C0400, // 0012 CALL R3 2 - 0x80061200, // 0013 RET 1 K9 - 0x880C010A, // 0014 GETMBR R3 R0 K10 - 0x8C0C070B, // 0015 GETMET R3 R3 K11 - 0x5C140400, // 0016 MOVE R5 R2 - 0x7C0C0400, // 0017 CALL R3 2 - 0x4C100000, // 0018 LDNIL R4 - 0x20100604, // 0019 NE R4 R3 R4 - 0x7812000D, // 001A JMPF R4 #0029 - 0x88100702, // 001B GETMBR R4 R3 K2 - 0x54160003, // 001C LDINT R5 4 - 0x1C100805, // 001D EQ R4 R4 R5 - 0x78120009, // 001E JMPF R4 #0029 - 0x8C10010C, // 001F GETMET R4 R0 K12 - 0x50180200, // 0020 LDBOOL R6 1 0 - 0x7C100400, // 0021 CALL R4 2 - 0x60140018, // 0022 GETGBL R5 G24 - 0x5818000D, // 0023 LDCONST R6 K13 - 0x8C1C070E, // 0024 GETMET R7 R3 K14 - 0x7C1C0200, // 0025 CALL R7 1 - 0x5C200800, // 0026 MOVE R8 R4 - 0x7C140600, // 0027 CALL R5 3 - 0x80040A00, // 0028 RET 1 R5 - 0x1C10050F, // 0029 EQ R4 R2 K15 - 0x78120008, // 002A JMPF R4 #0034 - 0x8C10010C, // 002B GETMET R4 R0 K12 - 0x50180200, // 002C LDBOOL R6 1 0 - 0x7C100400, // 002D CALL R4 2 - 0x8C140110, // 002E GETMET R5 R0 K16 - 0x5C1C0800, // 002F MOVE R7 R4 - 0x88200111, // 0030 GETMBR R8 R0 K17 - 0x58240001, // 0031 LDCONST R9 K1 - 0x7C140800, // 0032 CALL R5 4 - 0x80040A00, // 0033 RET 1 R5 - 0x4C100000, // 0034 LDNIL R4 - 0x20100604, // 0035 NE R4 R3 R4 - 0x78120015, // 0036 JMPF R4 #004D - 0x88100702, // 0037 GETMBR R4 R3 K2 - 0x5416000D, // 0038 LDINT R5 14 - 0x1C100805, // 0039 EQ R4 R4 R5 - 0x78120011, // 003A JMPF R4 #004D - 0x8C10010C, // 003B GETMET R4 R0 K12 - 0x50180200, // 003C LDBOOL R6 1 0 - 0x7C100400, // 003D CALL R4 2 - 0x20140901, // 003E NE R5 R4 K1 - 0x78160004, // 003F JMPF R5 #0045 - 0x60140018, // 0040 GETGBL R5 G24 - 0x58180012, // 0041 LDCONST R6 K18 - 0x5C1C0800, // 0042 MOVE R7 R4 - 0x7C140400, // 0043 CALL R5 2 - 0x70020000, // 0044 JMP #0046 - 0x58140013, // 0045 LDCONST R5 K19 - 0x60180018, // 0046 GETGBL R6 G24 - 0x581C0014, // 0047 LDCONST R7 K20 - 0x5C200400, // 0048 MOVE R8 R2 - 0x5C240A00, // 0049 MOVE R9 R5 - 0x7C180600, // 004A CALL R6 3 - 0x80040C00, // 004B RET 1 R6 - 0x70020040, // 004C JMP #008E - 0x8C100115, // 004D GETMET R4 R0 K21 - 0x5C180400, // 004E MOVE R6 R2 - 0x7C100400, // 004F CALL R4 2 - 0x74120008, // 0050 JMPT R4 #005A - 0x8C100107, // 0051 GETMET R4 R0 K7 - 0x60180018, // 0052 GETGBL R6 G24 - 0x581C0016, // 0053 LDCONST R7 K22 - 0x5C200400, // 0054 MOVE R8 R2 - 0x7C180400, // 0055 CALL R6 2 - 0x7C100400, // 0056 CALL R4 2 - 0x8C100117, // 0057 GETMET R4 R0 K23 - 0x7C100200, // 0058 CALL R4 1 - 0x80061200, // 0059 RET 1 K9 - 0x8C100118, // 005A GETMET R4 R0 K24 - 0x7C100200, // 005B CALL R4 1 - 0x60100012, // 005C GETGBL R4 G18 - 0x7C100000, // 005D CALL R4 0 - 0x84140000, // 005E CLOSURE R5 P0 - 0x8C180119, // 005F GETMET R6 R0 K25 - 0x5C200400, // 0060 MOVE R8 R2 - 0x5824001A, // 0061 LDCONST R9 K26 - 0x5C280A00, // 0062 MOVE R10 R5 - 0x7C180800, // 0063 CALL R6 4 - 0x8C18011B, // 0064 GETMET R6 R0 K27 - 0x7C180200, // 0065 CALL R6 1 - 0x6018000C, // 0066 GETGBL R6 G12 - 0x5C1C0800, // 0067 MOVE R7 R4 - 0x7C180200, // 0068 CALL R6 1 - 0x24180D04, // 0069 GT R6 R6 K4 - 0x781A001B, // 006A JMPF R6 #0087 - 0x58180001, // 006B LDCONST R6 K1 - 0x601C0010, // 006C GETGBL R7 G16 - 0x6020000C, // 006D GETGBL R8 G12 - 0x5C240800, // 006E MOVE R9 R4 - 0x7C200200, // 006F CALL R8 1 - 0x04201103, // 0070 SUB R8 R8 K3 - 0x40220808, // 0071 CONNECT R8 K4 R8 - 0x7C1C0200, // 0072 CALL R7 1 - 0xA8020007, // 0073 EXBLK 0 #007C - 0x5C200E00, // 0074 MOVE R8 R7 - 0x7C200000, // 0075 CALL R8 0 - 0x24241104, // 0076 GT R9 R8 K4 - 0x78260000, // 0077 JMPF R9 #0079 - 0x00180D1C, // 0078 ADD R6 R6 K28 - 0x94240808, // 0079 GETIDX R9 R4 R8 - 0x00180C09, // 007A ADD R6 R6 R9 - 0x7001FFF7, // 007B JMP #0074 - 0x581C001D, // 007C LDCONST R7 K29 - 0xAC1C0200, // 007D CATCH R7 1 0 - 0xB0080000, // 007E RAISE 2 R0 R0 - 0x601C0018, // 007F GETGBL R7 G24 - 0x5820001E, // 0080 LDCONST R8 K30 - 0x5C240400, // 0081 MOVE R9 R2 - 0x5C280C00, // 0082 MOVE R10 R6 - 0x7C1C0600, // 0083 CALL R7 3 - 0xA0000000, // 0084 CLOSE R0 - 0x80040E00, // 0085 RET 1 R7 - 0x70020005, // 0086 JMP #008D - 0x60180018, // 0087 GETGBL R6 G24 - 0x581C001F, // 0088 LDCONST R7 K31 - 0x5C200400, // 0089 MOVE R8 R2 - 0x7C180400, // 008A CALL R6 2 - 0xA0000000, // 008B CLOSE R0 - 0x80040C00, // 008C RET 1 R6 - 0xA0100000, // 008D CLOSE R4 - 0x80000000, // 008E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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: next -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_next, /* name */ - be_nested_proto( - 3, /* 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(pull_lexer), - /* K1 */ be_nested_str_weak(next_token), - }), - be_str_weak(next), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), - }), - be_str_weak(expect_left_brace), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0019, // 0006 LDINT R3 26 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: at_end -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ - be_nested_proto( - 3, /* 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(pull_lexer), - /* K1 */ be_nested_str_weak(at_end), - }), - be_str_weak(at_end), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: expect_right_paren ********************************************************************/ @@ -12691,374 +15799,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ /******************************************************************** -** Solidified function: expect_number +** Solidified function: process_wait_statement_fluent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(value), - /* K4 */ be_nested_str_weak(next), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(Expected_X20number), - /* K7 */ be_nested_str_weak(0), - }), - be_str_weak(expect_number), - &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 - 0x780A0007, // 0004 JMPF R2 #000D - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x1C080502, // 0006 EQ R2 R2 K2 - 0x780A0004, // 0007 JMPF R2 #000D - 0x88080303, // 0008 GETMBR R2 R1 K3 - 0x8C0C0104, // 0009 GETMET R3 R0 K4 - 0x7C0C0200, // 000A CALL R3 1 - 0x80040400, // 000B RET 1 R2 - 0x70020003, // 000C JMP #0011 - 0x8C080105, // 000D GETMET R2 R0 K5 - 0x58100006, // 000E LDCONST R4 K6 - 0x7C080400, // 000F CALL R2 2 - 0x80060E00, // 0010 RET 1 K7 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _split_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__split_function_arguments, /* name */ - be_nested_proto( - 11, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(split), - /* K3 */ be_nested_str_weak(_X2C), - /* K4 */ be_nested_str_weak(strip), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_split_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x1C0C0301, // 0001 EQ R3 R1 K1 - 0x740E0002, // 0002 JMPT R3 #0006 - 0x4C0C0000, // 0003 LDNIL R3 - 0x1C0C0203, // 0004 EQ R3 R1 R3 - 0x780E0002, // 0005 JMPF R3 #0009 - 0x600C0012, // 0006 GETGBL R3 G18 - 0x7C0C0000, // 0007 CALL R3 0 - 0x80040600, // 0008 RET 1 R3 - 0x8C0C0502, // 0009 GETMET R3 R2 K2 - 0x5C140200, // 000A MOVE R5 R1 - 0x58180003, // 000B LDCONST R6 K3 - 0x7C0C0600, // 000C CALL R3 3 - 0x60100012, // 000D GETGBL R4 G18 - 0x7C100000, // 000E CALL R4 0 - 0x60140010, // 000F GETGBL R5 G16 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C140200, // 0011 CALL R5 1 - 0xA802000D, // 0012 EXBLK 0 #0021 - 0x5C180A00, // 0013 MOVE R6 R5 - 0x7C180000, // 0014 CALL R6 0 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x5C240C00, // 0016 MOVE R9 R6 - 0x7C1C0400, // 0017 CALL R7 2 - 0x6020000C, // 0018 GETGBL R8 G12 - 0x5C240E00, // 0019 MOVE R9 R7 - 0x7C200200, // 001A CALL R8 1 - 0x24201105, // 001B GT R8 R8 K5 - 0x78220002, // 001C JMPF R8 #0020 - 0x8C200906, // 001D GETMET R8 R4 K6 - 0x5C280E00, // 001E MOVE R10 R7 - 0x7C200400, // 001F CALL R8 2 - 0x7001FFF1, // 0020 JMP #0013 - 0x58140007, // 0021 LDCONST R5 K7 - 0xAC140200, // 0022 CATCH R5 1 0 - 0xB0080000, // 0023 RAISE 2 R0 R0 - 0x80040800, // 0024 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: join_output -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_join_output, /* 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[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(output), - /* K2 */ be_nested_str_weak(_X0A), - /* K3 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(join_output), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0xA8020004, // 0004 EXBLK 0 #000A - 0x5C0C0400, // 0005 MOVE R3 R2 - 0x7C0C0000, // 0006 CALL R3 0 - 0x00100702, // 0007 ADD R4 R3 K2 - 0x00040204, // 0008 ADD R1 R1 R4 - 0x7001FFFA, // 0009 JMP #0005 - 0x58080003, // 000A LDCONST R2 K3 - 0xAC080200, // 000B CATCH R2 1 0 - 0xB0080000, // 000C RAISE 2 R0 R0 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_dot -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* 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[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), - }), - be_str_weak(expect_dot), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0020, // 0006 LDINT R3 33 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pull_lexer), - /* K1 */ be_nested_str_weak(peek_ahead), - /* K2 */ be_const_int(2), - }), - be_str_weak(peek), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x580C0002, // 0002 LDCONST R3 K2 - 0x7C040400, // 0003 CALL R1 2 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(can_use_as_identifier), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20identifier), - /* K9 */ be_nested_str_weak(unknown), - }), - be_str_weak(expect_identifier), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0012, // 0004 JMPF R2 #0018 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x1C080502, // 0006 EQ R2 R2 K2 - 0x740A000A, // 0007 JMPT R2 #0013 - 0x88080301, // 0008 GETMBR R2 R1 K1 - 0x540E0003, // 0009 LDINT R3 4 - 0x1C080403, // 000A EQ R2 R2 R3 - 0x740A0006, // 000B JMPT R2 #0013 - 0x88080301, // 000C GETMBR R2 R1 K1 - 0x1C080503, // 000D EQ R2 R2 K3 - 0x780A0008, // 000E JMPF R2 #0018 - 0x8C080104, // 000F GETMET R2 R0 K4 - 0x88100305, // 0010 GETMBR R4 R1 K5 - 0x7C080400, // 0011 CALL R2 2 - 0x780A0004, // 0012 JMPF R2 #0018 - 0x88080305, // 0013 GETMBR R2 R1 K5 - 0x8C0C0106, // 0014 GETMET R3 R0 K6 - 0x7C0C0200, // 0015 CALL R3 1 - 0x80040400, // 0016 RET 1 R2 - 0x70020003, // 0017 JMP #001C - 0x8C080107, // 0018 GETMET R2 R0 K7 - 0x58100008, // 0019 LDCONST R4 K8 - 0x7C080400, // 001A CALL R2 2 - 0x80061200, // 001B RET 1 K9 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_log_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ be_nested_proto( 10, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(fluent), - /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), - /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K3 */ be_nested_str_weak(get_indent), - /* K4 */ be_nested_str_weak(CONTEXT_EXPRESSION), - /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), - /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), - }), - be_str_weak(process_log_call), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x1C100500, // 0000 EQ R4 R2 K0 - 0x7812000C, // 0001 JMPF R4 #000F - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140001, // 0003 LDCONST R5 K1 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x8C1C0103, // 0008 GETMET R7 R0 K3 - 0x7C1C0200, // 0009 CALL R7 1 - 0x5C200800, // 000A MOVE R8 R4 - 0x5C240600, // 000B MOVE R9 R3 - 0x7C140800, // 000C CALL R5 4 - 0x80040A00, // 000D RET 1 R5 - 0x7002000E, // 000E JMP #001E - 0x88100104, // 000F GETMBR R4 R0 K4 - 0x1C100404, // 0010 EQ R4 R2 R4 - 0x78120005, // 0011 JMPF R4 #0018 - 0x60100018, // 0012 GETGBL R4 G24 - 0x58140005, // 0013 LDCONST R5 K5 - 0x5C180200, // 0014 MOVE R6 R1 - 0x7C100400, // 0015 CALL R4 2 - 0x80040800, // 0016 RET 1 R4 - 0x70020005, // 0017 JMP #001E - 0x60100018, // 0018 GETGBL R4 G24 - 0x58140006, // 0019 LDCONST R5 K6 - 0x5C180200, // 001A MOVE R6 R1 - 0x5C1C0600, // 001B MOVE R7 R3 - 0x7C100600, // 001C CALL R4 3 - 0x80040800, // 001D RET 1 R4 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ - be_nested_proto( - 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -13067,52 +15812,32 @@ be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_str_weak(at_end), - /* K5 */ be_const_int(0), + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(process_time_value), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), + /* K5 */ be_nested_str_weak(get_indent), }), - be_str_weak(skip_function_arguments), + be_str_weak(process_wait_statement_fluent), &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ + ( &(const binstruction[16]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20040202, // 0003 NE R1 R1 R2 - 0x7806001D, // 0004 JMPF R1 #0023 - 0x8C040100, // 0005 GETMET R1 R0 K0 - 0x7C040200, // 0006 CALL R1 1 - 0x88040301, // 0007 GETMBR R1 R1 K1 - 0x540A0017, // 0008 LDINT R2 24 - 0x1C040202, // 0009 EQ R1 R1 R2 - 0x78060017, // 000A JMPF R1 #0023 - 0x8C040102, // 000B GETMET R1 R0 K2 - 0x7C040200, // 000C CALL R1 1 - 0x58040003, // 000D LDCONST R1 K3 - 0x8C080104, // 000E GETMET R2 R0 K4 - 0x7C080200, // 000F CALL R2 1 - 0x740A0011, // 0010 JMPT R2 #0023 - 0x24080305, // 0011 GT R2 R1 K5 - 0x780A000F, // 0012 JMPF R2 #0023 - 0x8C080100, // 0013 GETMET R2 R0 K0 - 0x7C080200, // 0014 CALL R2 1 - 0x880C0501, // 0015 GETMBR R3 R2 K1 - 0x54120017, // 0016 LDINT R4 24 - 0x1C0C0604, // 0017 EQ R3 R3 R4 - 0x780E0001, // 0018 JMPF R3 #001B - 0x00040303, // 0019 ADD R1 R1 K3 - 0x70020004, // 001A JMP #0020 - 0x880C0501, // 001B GETMBR R3 R2 K1 - 0x54120018, // 001C LDINT R4 25 - 0x1C0C0604, // 001D EQ R3 R3 R4 - 0x780E0000, // 001E JMPF R3 #0020 - 0x04040303, // 001F SUB R1 R1 K3 - 0x8C0C0102, // 0020 GETMET R3 R0 K2 - 0x7C0C0200, // 0021 CALL R3 1 - 0x7001FFEA, // 0022 JMP #000E - 0x80000000, // 0023 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 + 0x8C1C0105, // 0009 GETMET R7 R0 K5 + 0x7C1C0200, // 000A CALL R7 1 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x7C140800, // 000D CALL R5 4 + 0x7C0C0400, // 000E CALL R3 2 + 0x80000000, // 000F RET 0 }) ) ); @@ -13120,132 +15845,9 @@ be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ /******************************************************************** -** Solidified function: has_warnings +** Solidified function: _process_user_function_call ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_has_warnings, /* name */ - be_nested_proto( - 3, /* 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(warnings), - /* K1 */ be_const_int(0), - }), - be_str_weak(has_warnings), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x24040301, // 0003 GT R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_color_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* 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(symbol_table), - /* K1 */ be_nested_str_weak(get), - /* K2 */ be_nested_str_weak(type), - }), - be_str_weak(_validate_color_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x200C0403, // 0005 NE R3 R2 R3 - 0x780E0003, // 0006 JMPF R3 #000B - 0x880C0502, // 0007 GETMBR R3 R2 K2 - 0x54120009, // 0008 LDINT R4 10 - 0x1C0C0604, // 0009 EQ R3 R3 R4 - 0x740E0000, // 000A JMPT R3 #000C - 0x500C0001, // 000B LDBOOL R3 0 1 - 0x500C0200, // 000C LDBOOL R3 1 0 - 0x80040600, // 000D RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_template_call_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_template_call_arguments, /* name */ - be_nested_proto( - 13, /* nstack */ - 5, /* 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(error), - /* K1 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20expects_X20_X25s_X20arguments_X20but_X20_X25s_X20were_X20provided_X2E_X20Expected_X20parameters_X3A_X20_X25s), - }), - be_str_weak(_validate_template_call_arguments), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x6014000C, // 0000 GETGBL R5 G12 - 0x5C180400, // 0001 MOVE R6 R2 - 0x7C140200, // 0002 CALL R5 1 - 0x6018000C, // 0003 GETGBL R6 G12 - 0x5C1C0600, // 0004 MOVE R7 R3 - 0x7C180200, // 0005 CALL R6 1 - 0x20140A06, // 0006 NE R5 R5 R6 - 0x7816000E, // 0007 JMPF R5 #0017 - 0x8C140100, // 0008 GETMET R5 R0 K0 - 0x601C0018, // 0009 GETGBL R7 G24 - 0x58200001, // 000A LDCONST R8 K1 - 0x5C240200, // 000B MOVE R9 R1 - 0x6028000C, // 000C GETGBL R10 G12 - 0x5C2C0600, // 000D MOVE R11 R3 - 0x7C280200, // 000E CALL R10 1 - 0x602C000C, // 000F GETGBL R11 G12 - 0x5C300400, // 0010 MOVE R12 R2 - 0x7C2C0200, // 0011 CALL R11 1 - 0x5C300600, // 0012 MOVE R12 R3 - 0x7C1C0A00, // 0013 CALL R7 5 - 0x7C140400, // 0014 CALL R5 2 - 0x50140000, // 0015 LDBOOL R5 0 0 - 0x80040A00, // 0016 RET 1 R5 - 0x50140200, // 0017 LDBOOL R5 1 0 - 0x80040A00, // 0018 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ be_nested_proto( 8, /* nstack */ 2, /* argc */ @@ -13256,56 +15858,54 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(startswith), - /* K3 */ be_nested_str_weak(0x), - /* K4 */ be_nested_str_weak(0xFF_X25s), - /* K5 */ be_const_int(2), - /* K6 */ be_const_int(2147483647), - /* K7 */ be_nested_str_weak(is_color_name), - /* K8 */ be_nested_str_weak(get_named_color_value), - /* K9 */ be_nested_str_weak(0xFFFFFFFF), + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(process_function_arguments), + /* K3 */ be_nested_str_weak(), + /* K4 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K5 */ be_nested_str_weak(engine), + /* K6 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), + /* K9 */ be_nested_str_weak(nil), }), - be_str_weak(convert_color), + be_str_weak(_process_user_function_call), &be_const_str_solidified, - ( &(const binstruction[36]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0x8C100702, // 0002 GETMET R4 R3 K2 - 0x5C180200, // 0003 MOVE R6 R1 - 0x581C0003, // 0004 LDCONST R7 K3 - 0x7C100600, // 0005 CALL R4 3 - 0x78120013, // 0006 JMPF R4 #001B - 0x6010000C, // 0007 GETGBL R4 G12 - 0x5C140200, // 0008 MOVE R5 R1 - 0x7C100200, // 0009 CALL R4 1 - 0x54160009, // 000A LDINT R5 10 - 0x1C100805, // 000B EQ R4 R4 R5 - 0x78120001, // 000C JMPF R4 #000F - 0x80040200, // 000D RET 1 R1 - 0x7002000B, // 000E JMP #001B - 0x6010000C, // 000F GETGBL R4 G12 - 0x5C140200, // 0010 MOVE R5 R1 - 0x7C100200, // 0011 CALL R4 1 - 0x54160007, // 0012 LDINT R5 8 - 0x1C100805, // 0013 EQ R4 R4 R5 - 0x78120005, // 0014 JMPF R4 #001B - 0x60100018, // 0015 GETGBL R4 G24 - 0x58140004, // 0016 LDCONST R5 K4 - 0x401A0B06, // 0017 CONNECT R6 K5 K6 - 0x94180206, // 0018 GETIDX R6 R1 R6 - 0x7C100400, // 0019 CALL R4 2 - 0x80040800, // 001A RET 1 R4 - 0x8C100507, // 001B GETMET R4 R2 K7 - 0x5C180200, // 001C MOVE R6 R1 - 0x7C100400, // 001D CALL R4 2 - 0x78120003, // 001E JMPF R4 #0023 - 0x8C100108, // 001F GETMET R4 R0 K8 - 0x5C180200, // 0020 MOVE R6 R1 - 0x7C100400, // 0021 CALL R4 2 - 0x80040800, // 0022 RET 1 R4 - 0x80061200, // 0023 RET 1 K9 + ( &(const binstruction[34]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0017, // 0004 JMPF R2 #001D + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x540E0017, // 0008 LDINT R3 24 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0011, // 000A JMPF R2 #001D + 0x8C080102, // 000B GETMET R2 R0 K2 + 0x50100200, // 000C LDBOOL R4 1 0 + 0x7C080400, // 000D CALL R2 2 + 0x200C0503, // 000E NE R3 R2 K3 + 0x780E0004, // 000F JMPF R3 #0015 + 0x600C0018, // 0010 GETGBL R3 G24 + 0x58100004, // 0011 LDCONST R4 K4 + 0x5C140400, // 0012 MOVE R5 R2 + 0x7C0C0400, // 0013 CALL R3 2 + 0x70020000, // 0014 JMP #0016 + 0x580C0005, // 0015 LDCONST R3 K5 + 0x60100018, // 0016 GETGBL R4 G24 + 0x58140006, // 0017 LDCONST R5 K6 + 0x5C180200, // 0018 MOVE R6 R1 + 0x5C1C0600, // 0019 MOVE R7 R3 + 0x7C100600, // 001A CALL R4 3 + 0x80040800, // 001B RET 1 R4 + 0x70020003, // 001C JMP #0021 + 0x8C080107, // 001D GETMET R2 R0 K7 + 0x58100008, // 001E LDCONST R4 K8 + 0x7C080400, // 001F CALL R2 2 + 0x80061200, // 0020 RET 1 K9 + 0x80000000, // 0021 RET 0 }) ) ); @@ -13313,242 +15913,349 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ /******************************************************************** -** Solidified function: convert_to_vrgb +** Solidified function: process_animation ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(format), - /* K3 */ be_nested_str_weak(_X2502X), - /* K4 */ be_nested_str_weak(FFFFFF), - /* K5 */ be_nested_str_weak(startswith), - /* K6 */ be_nested_str_weak(0x), - /* K7 */ be_const_int(2), - }), - be_str_weak(convert_to_vrgb), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x60100009, // 0001 GETGBL R4 G9 - 0x6014000A, // 0002 GETGBL R5 G10 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x7C100200, // 0005 CALL R4 1 - 0x14140901, // 0006 LT R5 R4 K1 - 0x78160001, // 0007 JMPF R5 #000A - 0x58100001, // 0008 LDCONST R4 K1 - 0x70020003, // 0009 JMP #000E - 0x541600FE, // 000A LDINT R5 255 - 0x24140805, // 000B GT R5 R4 R5 - 0x78160000, // 000C JMPF R5 #000E - 0x541200FE, // 000D LDINT R4 255 - 0x8C140702, // 000E GETMET R5 R3 K2 - 0x581C0003, // 000F LDCONST R7 K3 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x60180008, // 0012 GETGBL R6 G8 - 0x5C1C0400, // 0013 MOVE R7 R2 - 0x7C180200, // 0014 CALL R6 1 - 0x581C0004, // 0015 LDCONST R7 K4 - 0x8C200705, // 0016 GETMET R8 R3 K5 - 0x5C280C00, // 0017 MOVE R10 R6 - 0x582C0006, // 0018 LDCONST R11 K6 - 0x7C200600, // 0019 CALL R8 3 - 0x7822000A, // 001A JMPF R8 #0026 - 0x6020000C, // 001B GETGBL R8 G12 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C200200, // 001D CALL R8 1 - 0x54260009, // 001E LDINT R9 10 - 0x28201009, // 001F GE R8 R8 R9 - 0x78220004, // 0020 JMPF R8 #0026 - 0x54220003, // 0021 LDINT R8 4 - 0x54260008, // 0022 LDINT R9 9 - 0x40201009, // 0023 CONNECT R8 R8 R9 - 0x941C0C08, // 0024 GETIDX R7 R6 R8 - 0x7002000D, // 0025 JMP #0034 - 0x8C200705, // 0026 GETMET R8 R3 K5 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x7C200600, // 0029 CALL R8 3 - 0x78220008, // 002A JMPF R8 #0034 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240C00, // 002C MOVE R9 R6 - 0x7C200200, // 002D CALL R8 1 - 0x54260007, // 002E LDINT R9 8 - 0x1C201009, // 002F EQ R8 R8 R9 - 0x78220002, // 0030 JMPF R8 #0034 - 0x54220006, // 0031 LDINT R8 7 - 0x40220E08, // 0032 CONNECT R8 K7 R8 - 0x941C0C08, // 0033 GETIDX R7 R6 R8 - 0x00200A07, // 0034 ADD R8 R5 R7 - 0x80041000, // 0035 RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_template_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_template_animation, /* name */ - be_nested_proto( - 12, /* nstack */ + 16, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 6, /* nstack */ + 2, /* 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[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_table), + /* K1 */ be_nested_str_weak(create_animation), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x88080500, // 0001 GETMBR R2 R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x5C100000, // 0003 MOVE R4 R0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C080600, // 0005 CALL R2 3 + 0x80040400, // 0006 RET 1 R2 + }) + ), + }), 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ + ( &(const bvalue[33]) { /* constants */ /* K0 */ be_nested_str_weak(next), /* K1 */ be_nested_str_weak(expect_identifier), /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(template_X20animation), + /* K3 */ be_nested_str_weak(animation), /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_left_brace), - /* K6 */ be_nested_str_weak(at_end), - /* K7 */ be_nested_str_weak(check_right_brace), - /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K9 */ be_nested_str_weak(current), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_const_int(0), - /* K12 */ be_nested_str_weak(value), - /* K13 */ be_nested_str_weak(param), - /* K14 */ be_nested_str_weak(_validate_template_parameter_name), - /* K15 */ be_nested_str_weak(_parse_parameter_constraints), - /* K16 */ be_nested_str_weak(push), - /* K17 */ be_nested_str_weak(generate_template_animation_class), - /* K18 */ be_nested_str_weak(params), - /* K19 */ be_nested_str_weak(param_types), - /* K20 */ be_nested_str_weak(symbol_table), - /* K21 */ be_nested_str_weak(create_template), - /* K22 */ be_nested_str_weak(_register_template_animation_constructor), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_const_int(0), + /* K9 */ be_const_int(1), + /* K10 */ be_nested_str_weak(peek), + /* K11 */ be_nested_str_weak(value), + /* K12 */ be_nested_str_weak(), + /* K13 */ be_nested_str_weak(_X20_X20), + /* K14 */ be_nested_str_weak(symbol_table), + /* K15 */ be_nested_str_weak(get), + /* K16 */ be_nested_str_weak(process_function_arguments), + /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(engine), + /* K19 */ be_nested_str_weak(add), + /* K20 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), + /* K21 */ be_nested_str_weak(create_animation), + /* K22 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), + /* K23 */ be_nested_str_weak(error), + /* K24 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), + /* K25 */ be_nested_str_weak(is_builtin), + /* K26 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K27 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_animation_X28engine_X29_X25s), + /* K28 */ be_nested_str_weak(_create_instance_for_validation), + /* K29 */ be_nested_str_weak(_process_named_arguments_for_animation), + /* K30 */ be_nested_str_weak(_X25s_), + /* K31 */ be_nested_str_weak(_process_simple_value_assignment), + /* K32 */ be_nested_str_weak(CONTEXT_ANIMATION), }), - be_str_weak(process_template_animation), + be_str_weak(process_animation), &be_const_str_solidified, - ( &(const binstruction[110]) { /* code */ + ( &(const binstruction[186]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x8C040100, // 0002 GETMET R1 R0 K0 + 0x8C040101, // 0002 GETMET R1 R0 K1 0x7C040200, // 0003 CALL R1 1 - 0x8C040101, // 0004 GETMET R1 R0 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x8C080102, // 0006 GETMET R2 R0 K2 - 0x5C100200, // 0007 MOVE R4 R1 - 0x58140003, // 0008 LDCONST R5 K3 - 0x7C080600, // 0009 CALL R2 3 - 0x740A0002, // 000A JMPT R2 #000E - 0x8C080104, // 000B GETMET R2 R0 K4 - 0x7C080200, // 000C CALL R2 1 - 0x80000400, // 000D RET 0 - 0x8C080105, // 000E GETMET R2 R0 K5 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 0x7C080200, // 000F CALL R2 1 - 0x60080012, // 0010 GETGBL R2 G18 - 0x7C080000, // 0011 CALL R2 0 - 0x600C0013, // 0012 GETGBL R3 G19 - 0x7C0C0000, // 0013 CALL R3 0 - 0x60100013, // 0014 GETGBL R4 G19 - 0x7C100000, // 0015 CALL R4 0 - 0x8C140106, // 0016 GETMET R5 R0 K6 - 0x7C140200, // 0017 CALL R5 1 - 0x74160040, // 0018 JMPT R5 #005A - 0x8C140107, // 0019 GETMET R5 R0 K7 - 0x7C140200, // 001A CALL R5 1 - 0x7416003D, // 001B JMPT R5 #005A - 0x8C140108, // 001C GETMET R5 R0 K8 - 0x7C140200, // 001D CALL R5 1 - 0x8C140107, // 001E GETMET R5 R0 K7 - 0x7C140200, // 001F CALL R5 1 - 0x78160000, // 0020 JMPF R5 #0022 - 0x70020037, // 0021 JMP #005A - 0x8C140109, // 0022 GETMET R5 R0 K9 - 0x7C140200, // 0023 CALL R5 1 - 0x4C180000, // 0024 LDNIL R6 - 0x20180A06, // 0025 NE R6 R5 R6 - 0x781A0030, // 0026 JMPF R6 #0058 - 0x88180B0A, // 0027 GETMBR R6 R5 K10 - 0x1C180D0B, // 0028 EQ R6 R6 K11 - 0x781A002D, // 0029 JMPF R6 #0058 - 0x88180B0C, // 002A GETMBR R6 R5 K12 - 0x1C180D0D, // 002B EQ R6 R6 K13 - 0x781A002A, // 002C JMPF R6 #0058 - 0x8C180100, // 002D GETMET R6 R0 K0 - 0x7C180200, // 002E CALL R6 1 - 0x8C180101, // 002F GETMET R6 R0 K1 - 0x7C180200, // 0030 CALL R6 1 - 0x8C1C010E, // 0031 GETMET R7 R0 K14 - 0x5C240C00, // 0032 MOVE R9 R6 - 0x5C280800, // 0033 MOVE R10 R4 - 0x502C0200, // 0034 LDBOOL R11 1 0 - 0x7C1C0800, // 0035 CALL R7 4 - 0x741E0002, // 0036 JMPT R7 #003A - 0x8C1C0104, // 0037 GETMET R7 R0 K4 - 0x7C1C0200, // 0038 CALL R7 1 - 0x80000E00, // 0039 RET 0 - 0x8C1C010F, // 003A GETMET R7 R0 K15 - 0x7C1C0200, // 003B CALL R7 1 - 0x8C200510, // 003C GETMET R8 R2 K16 - 0x5C280C00, // 003D MOVE R10 R6 - 0x7C200400, // 003E CALL R8 2 - 0x50200200, // 003F LDBOOL R8 1 0 - 0x98100C08, // 0040 SETIDX R4 R6 R8 - 0x4C200000, // 0041 LDNIL R8 - 0x20200E08, // 0042 NE R8 R7 R8 - 0x78220005, // 0043 JMPF R8 #004A - 0x6020000C, // 0044 GETGBL R8 G12 - 0x5C240E00, // 0045 MOVE R9 R7 - 0x7C200200, // 0046 CALL R8 1 - 0x2420110B, // 0047 GT R8 R8 K11 - 0x78220000, // 0048 JMPF R8 #004A - 0x980C0C07, // 0049 SETIDX R3 R6 R7 - 0x8C200109, // 004A GETMET R8 R0 K9 - 0x7C200200, // 004B CALL R8 1 - 0x4C240000, // 004C LDNIL R9 - 0x20201009, // 004D NE R8 R8 R9 - 0x78220007, // 004E JMPF R8 #0057 - 0x8C200109, // 004F GETMET R8 R0 K9 - 0x7C200200, // 0050 CALL R8 1 - 0x8820110A, // 0051 GETMBR R8 R8 K10 - 0x54260022, // 0052 LDINT R9 35 - 0x1C201009, // 0053 EQ R8 R8 R9 - 0x78220001, // 0054 JMPF R8 #0057 - 0x8C200100, // 0055 GETMET R8 R0 K0 - 0x7C200200, // 0056 CALL R8 1 - 0x70020000, // 0057 JMP #0059 - 0x70020000, // 0058 JMP #005A - 0x7001FFBB, // 0059 JMP #0016 - 0x8C140111, // 005A GETMET R5 R0 K17 - 0x5C1C0200, // 005B MOVE R7 R1 - 0x5C200400, // 005C MOVE R8 R2 - 0x5C240600, // 005D MOVE R9 R3 - 0x7C140800, // 005E CALL R5 4 - 0x60140013, // 005F GETGBL R5 G19 - 0x7C140000, // 0060 CALL R5 0 - 0x98162402, // 0061 SETIDX R5 K18 R2 - 0x98162603, // 0062 SETIDX R5 K19 R3 - 0x88180114, // 0063 GETMBR R6 R0 K20 - 0x8C180D15, // 0064 GETMET R6 R6 K21 - 0x5C200200, // 0065 MOVE R8 R1 - 0x5C240A00, // 0066 MOVE R9 R5 - 0x7C180600, // 0067 CALL R6 3 - 0x8C180116, // 0068 GETMET R6 R0 K22 - 0x5C200200, // 0069 MOVE R8 R1 - 0x5C240400, // 006A MOVE R9 R2 - 0x5C280600, // 006B MOVE R10 R3 - 0x7C180800, // 006C CALL R6 4 - 0x80000000, // 006D RET 0 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0x1C0C0708, // 0011 EQ R3 R3 K8 + 0x740E0002, // 0012 JMPT R3 #0016 + 0x880C0507, // 0013 GETMBR R3 R2 K7 + 0x1C0C0709, // 0014 EQ R3 R3 K9 + 0x780E009C, // 0015 JMPF R3 #00B3 + 0x8C0C010A, // 0016 GETMET R3 R0 K10 + 0x7C0C0200, // 0017 CALL R3 1 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E0097, // 001A JMPF R3 #00B3 + 0x8C0C010A, // 001B GETMET R3 R0 K10 + 0x7C0C0200, // 001C CALL R3 1 + 0x880C0707, // 001D GETMBR R3 R3 K7 + 0x54120017, // 001E LDINT R4 24 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x780E0091, // 0020 JMPF R3 #00B3 + 0x880C050B, // 0021 GETMBR R3 R2 K11 + 0x8C100100, // 0022 GETMET R4 R0 K0 + 0x7C100200, // 0023 CALL R4 1 + 0x5810000C, // 0024 LDCONST R4 K12 + 0x8C140106, // 0025 GETMET R5 R0 K6 + 0x7C140200, // 0026 CALL R5 1 + 0x4C180000, // 0027 LDNIL R6 + 0x20140A06, // 0028 NE R5 R5 R6 + 0x7816000C, // 0029 JMPF R5 #0037 + 0x8C140106, // 002A GETMET R5 R0 K6 + 0x7C140200, // 002B CALL R5 1 + 0x88140B07, // 002C GETMBR R5 R5 K7 + 0x541A0024, // 002D LDINT R6 37 + 0x1C140A06, // 002E EQ R5 R5 R6 + 0x78160006, // 002F JMPF R5 #0037 + 0x8C140106, // 0030 GETMET R5 R0 K6 + 0x7C140200, // 0031 CALL R5 1 + 0x88140B0B, // 0032 GETMBR R5 R5 K11 + 0x00161A05, // 0033 ADD R5 K13 R5 + 0x5C100A00, // 0034 MOVE R4 R5 + 0x8C140100, // 0035 GETMET R5 R0 K0 + 0x7C140200, // 0036 CALL R5 1 + 0x8814010E, // 0037 GETMBR R5 R0 K14 + 0x8C140B0F, // 0038 GETMET R5 R5 K15 + 0x5C1C0600, // 0039 MOVE R7 R3 + 0x7C140400, // 003A CALL R5 2 + 0x4C180000, // 003B LDNIL R6 + 0x20180A06, // 003C NE R6 R5 R6 + 0x781A001D, // 003D JMPF R6 #005C + 0x88180B07, // 003E GETMBR R6 R5 K7 + 0x541E000D, // 003F LDINT R7 14 + 0x1C180C07, // 0040 EQ R6 R6 R7 + 0x781A0019, // 0041 JMPF R6 #005C + 0x8C180110, // 0042 GETMET R6 R0 K16 + 0x50200000, // 0043 LDBOOL R8 0 0 + 0x7C180400, // 0044 CALL R6 2 + 0x201C0D0C, // 0045 NE R7 R6 K12 + 0x781E0004, // 0046 JMPF R7 #004C + 0x601C0018, // 0047 GETGBL R7 G24 + 0x58200011, // 0048 LDCONST R8 K17 + 0x5C240C00, // 0049 MOVE R9 R6 + 0x7C1C0400, // 004A CALL R7 2 + 0x70020000, // 004B JMP #004D + 0x581C0012, // 004C LDCONST R7 K18 + 0x8C200113, // 004D GETMET R8 R0 K19 + 0x60280018, // 004E GETGBL R10 G24 + 0x582C0014, // 004F LDCONST R11 K20 + 0x5C300200, // 0050 MOVE R12 R1 + 0x5C340600, // 0051 MOVE R13 R3 + 0x5C380E00, // 0052 MOVE R14 R7 + 0x5C3C0800, // 0053 MOVE R15 R4 + 0x7C280A00, // 0054 CALL R10 5 + 0x7C200400, // 0055 CALL R8 2 + 0x8820010E, // 0056 GETMBR R8 R0 K14 + 0x8C201115, // 0057 GETMET R8 R8 K21 + 0x5C280200, // 0058 MOVE R10 R1 + 0x4C2C0000, // 0059 LDNIL R11 + 0x7C200600, // 005A CALL R8 3 + 0x70020055, // 005B JMP #00B2 + 0x4C180000, // 005C LDNIL R6 + 0x20180A06, // 005D NE R6 R5 R6 + 0x781A001D, // 005E JMPF R6 #007D + 0x88180B07, // 005F GETMBR R6 R5 K7 + 0x541E0004, // 0060 LDINT R7 5 + 0x1C180C07, // 0061 EQ R6 R6 R7 + 0x781A0019, // 0062 JMPF R6 #007D + 0x8C180110, // 0063 GETMET R6 R0 K16 + 0x50200000, // 0064 LDBOOL R8 0 0 + 0x7C180400, // 0065 CALL R6 2 + 0x201C0D0C, // 0066 NE R7 R6 K12 + 0x781E0004, // 0067 JMPF R7 #006D + 0x601C0018, // 0068 GETGBL R7 G24 + 0x58200011, // 0069 LDCONST R8 K17 + 0x5C240C00, // 006A MOVE R9 R6 + 0x7C1C0400, // 006B CALL R7 2 + 0x70020000, // 006C JMP #006E + 0x581C0012, // 006D LDCONST R7 K18 + 0x8C200113, // 006E GETMET R8 R0 K19 + 0x60280018, // 006F GETGBL R10 G24 + 0x582C0016, // 0070 LDCONST R11 K22 + 0x5C300200, // 0071 MOVE R12 R1 + 0x5C340600, // 0072 MOVE R13 R3 + 0x5C380E00, // 0073 MOVE R14 R7 + 0x5C3C0800, // 0074 MOVE R15 R4 + 0x7C280A00, // 0075 CALL R10 5 + 0x7C200400, // 0076 CALL R8 2 + 0x8820010E, // 0077 GETMBR R8 R0 K14 + 0x8C201115, // 0078 GETMET R8 R8 K21 + 0x5C280200, // 0079 MOVE R10 R1 + 0x4C2C0000, // 007A LDNIL R11 + 0x7C200600, // 007B CALL R8 3 + 0x70020034, // 007C JMP #00B2 + 0x4C180000, // 007D LDNIL R6 + 0x1C180A06, // 007E EQ R6 R5 R6 + 0x741A0003, // 007F JMPT R6 #0084 + 0x88180B07, // 0080 GETMBR R6 R5 K7 + 0x541E0007, // 0081 LDINT R7 8 + 0x20180C07, // 0082 NE R6 R6 R7 + 0x781A0008, // 0083 JMPF R6 #008D + 0x8C180117, // 0084 GETMET R6 R0 K23 + 0x60200018, // 0085 GETGBL R8 G24 + 0x58240018, // 0086 LDCONST R9 K24 + 0x5C280600, // 0087 MOVE R10 R3 + 0x7C200400, // 0088 CALL R8 2 + 0x7C180400, // 0089 CALL R6 2 + 0x8C180104, // 008A GETMET R6 R0 K4 + 0x7C180200, // 008B CALL R6 1 + 0x80000C00, // 008C RET 0 + 0x88180B19, // 008D GETMBR R6 R5 K25 + 0x781A0008, // 008E JMPF R6 #0098 + 0x8C180113, // 008F GETMET R6 R0 K19 + 0x60200018, // 0090 GETGBL R8 G24 + 0x5824001A, // 0091 LDCONST R9 K26 + 0x5C280200, // 0092 MOVE R10 R1 + 0x5C2C0600, // 0093 MOVE R11 R3 + 0x5C300800, // 0094 MOVE R12 R4 + 0x7C200800, // 0095 CALL R8 4 + 0x7C180400, // 0096 CALL R6 2 + 0x70020007, // 0097 JMP #00A0 + 0x8C180113, // 0098 GETMET R6 R0 K19 + 0x60200018, // 0099 GETGBL R8 G24 + 0x5824001B, // 009A LDCONST R9 K27 + 0x5C280200, // 009B MOVE R10 R1 + 0x5C2C0600, // 009C MOVE R11 R3 + 0x5C300800, // 009D MOVE R12 R4 + 0x7C200800, // 009E CALL R8 4 + 0x7C180400, // 009F CALL R6 2 + 0x8C18011C, // 00A0 GETMET R6 R0 K28 + 0x5C200600, // 00A1 MOVE R8 R3 + 0x7C180400, // 00A2 CALL R6 2 + 0x4C1C0000, // 00A3 LDNIL R7 + 0x201C0C07, // 00A4 NE R7 R6 R7 + 0x781E0004, // 00A5 JMPF R7 #00AB + 0x881C010E, // 00A6 GETMBR R7 R0 K14 + 0x8C1C0F15, // 00A7 GETMET R7 R7 K21 + 0x5C240200, // 00A8 MOVE R9 R1 + 0x5C280C00, // 00A9 MOVE R10 R6 + 0x7C1C0600, // 00AA CALL R7 3 + 0x8C1C011D, // 00AB GETMET R7 R0 K29 + 0x60240018, // 00AC GETGBL R9 G24 + 0x5828001E, // 00AD LDCONST R10 K30 + 0x5C2C0200, // 00AE MOVE R11 R1 + 0x7C240400, // 00AF CALL R9 2 + 0x5C280600, // 00B0 MOVE R10 R3 + 0x7C1C0600, // 00B1 CALL R7 3 + 0x70020004, // 00B2 JMP #00B8 + 0x8C0C011F, // 00B3 GETMET R3 R0 K31 + 0x5C140200, // 00B4 MOVE R5 R1 + 0x88180120, // 00B5 GETMBR R6 R0 K32 + 0x841C0000, // 00B6 CLOSURE R7 P0 + 0x7C0C0800, // 00B7 CALL R3 4 + 0xA0000000, // 00B8 CLOSE R0 + 0x80000000, // 00B9 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_template_parameter_type +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_template_parameter_type, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(int), + /* K1 */ be_nested_str_weak(bool), + /* K2 */ be_nested_str_weak(string), + /* K3 */ be_nested_str_weak(bytes), + /* K4 */ be_nested_str_weak(function), + /* K5 */ be_nested_str_weak(animation), + /* K6 */ be_nested_str_weak(value_provider), + /* K7 */ be_nested_str_weak(number), + /* K8 */ be_nested_str_weak(color), + /* K9 */ be_nested_str_weak(palette), + /* K10 */ be_nested_str_weak(time), + /* K11 */ be_nested_str_weak(percentage), + /* K12 */ be_nested_str_weak(any), + /* K13 */ be_nested_str_weak(stop_iteration), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(Invalid_X20parameter_X20type_X20_X27_X25s_X27_X2E_X20Valid_X20types_X20are_X3A_X20_X25s), + }), + be_str_weak(_validate_template_parameter_type), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x400C0502, // 0004 CONNECT R3 R2 K2 + 0x400C0503, // 0005 CONNECT R3 R2 K3 + 0x400C0504, // 0006 CONNECT R3 R2 K4 + 0x400C0505, // 0007 CONNECT R3 R2 K5 + 0x400C0506, // 0008 CONNECT R3 R2 K6 + 0x400C0507, // 0009 CONNECT R3 R2 K7 + 0x400C0508, // 000A CONNECT R3 R2 K8 + 0x400C0509, // 000B CONNECT R3 R2 K9 + 0x400C050A, // 000C CONNECT R3 R2 K10 + 0x400C050B, // 000D CONNECT R3 R2 K11 + 0x400C050C, // 000E CONNECT R3 R2 K12 + 0x600C0010, // 000F GETGBL R3 G16 + 0x5C100400, // 0010 MOVE R4 R2 + 0x7C0C0200, // 0011 CALL R3 1 + 0xA8020007, // 0012 EXBLK 0 #001B + 0x5C100600, // 0013 MOVE R4 R3 + 0x7C100000, // 0014 CALL R4 0 + 0x1C140204, // 0015 EQ R5 R1 R4 + 0x78160002, // 0016 JMPF R5 #001A + 0x50140200, // 0017 LDBOOL R5 1 0 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040A00, // 0019 RET 1 R5 + 0x7001FFF7, // 001A JMP #0013 + 0x580C000D, // 001B LDCONST R3 K13 + 0xAC0C0200, // 001C CATCH R3 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x8C0C010E, // 001E GETMET R3 R0 K14 + 0x60140018, // 001F GETGBL R5 G24 + 0x5818000F, // 0020 LDCONST R6 K15 + 0x5C1C0200, // 0021 MOVE R7 R1 + 0x5C200400, // 0022 MOVE R8 R2 + 0x7C140600, // 0023 CALL R5 3 + 0x7C0C0400, // 0024 CALL R3 2 + 0x500C0000, // 0025 LDBOOL R3 0 0 + 0x80040600, // 0026 RET 1 R3 }) ) ); @@ -13639,821 +16346,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ /******************************************************************** -** Solidified function: transpile_template_body +** Solidified function: error ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ +be_local_closure(class_SimpleDSLTranspiler_error, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(process_statement), - /* K6 */ be_nested_str_weak(run_statements), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(comment), - /* K9 */ be_nested_str_weak(add), - /* K10 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(join_output), - /* K13 */ be_nested_str_weak(error), - /* K14 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile_template_body), - &be_const_str_solidified, - ( &(const binstruction[78]) { /* code */ - 0xA8020041, // 0000 EXBLK 0 #0043 - 0x58040000, // 0001 LDCONST R1 K0 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x740A001F, // 0004 JMPT R2 #0025 - 0x8C080102, // 0005 GETMET R2 R0 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0006, // 0009 JMPF R3 #0011 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0x5412001A, // 000B LDINT R4 27 - 0x1C0C0604, // 000C EQ R3 R3 R4 - 0x780E0002, // 000D JMPF R3 #0011 - 0x1C0C0300, // 000E EQ R3 R1 K0 - 0x780E0000, // 000F JMPF R3 #0011 - 0x70020013, // 0010 JMP #0025 - 0x4C0C0000, // 0011 LDNIL R3 - 0x200C0403, // 0012 NE R3 R2 R3 - 0x780E0005, // 0013 JMPF R3 #001A - 0x880C0503, // 0014 GETMBR R3 R2 K3 - 0x54120019, // 0015 LDINT R4 26 - 0x1C0C0604, // 0016 EQ R3 R3 R4 - 0x780E0001, // 0017 JMPF R3 #001A - 0x00040304, // 0018 ADD R1 R1 K4 - 0x70020007, // 0019 JMP #0022 - 0x4C0C0000, // 001A LDNIL R3 - 0x200C0403, // 001B NE R3 R2 R3 - 0x780E0004, // 001C JMPF R3 #0022 - 0x880C0503, // 001D GETMBR R3 R2 K3 - 0x5412001A, // 001E LDINT R4 27 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E0000, // 0020 JMPF R3 #0022 - 0x04040304, // 0021 SUB R1 R1 K4 - 0x8C0C0105, // 0022 GETMET R3 R0 K5 - 0x7C0C0200, // 0023 CALL R3 1 - 0x7001FFDC, // 0024 JMP #0002 - 0x6008000C, // 0025 GETGBL R2 G12 - 0x880C0106, // 0026 GETMBR R3 R0 K6 - 0x7C080200, // 0027 CALL R2 1 - 0x24080500, // 0028 GT R2 R2 K0 - 0x780A0012, // 0029 JMPF R2 #003D - 0x60080010, // 002A GETGBL R2 G16 - 0x880C0106, // 002B GETMBR R3 R0 K6 - 0x7C080200, // 002C CALL R2 1 - 0xA802000B, // 002D EXBLK 0 #003A - 0x5C0C0400, // 002E MOVE R3 R2 - 0x7C0C0000, // 002F CALL R3 0 - 0x94100707, // 0030 GETIDX R4 R3 K7 - 0x94140708, // 0031 GETIDX R5 R3 K8 - 0x8C180109, // 0032 GETMET R6 R0 K9 - 0x60200018, // 0033 GETGBL R8 G24 - 0x5824000A, // 0034 LDCONST R9 K10 - 0x5C280800, // 0035 MOVE R10 R4 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x7C200600, // 0037 CALL R8 3 - 0x7C180400, // 0038 CALL R6 2 - 0x7001FFF3, // 0039 JMP #002E - 0x5808000B, // 003A LDCONST R2 K11 - 0xAC080200, // 003B CATCH R2 1 0 - 0xB0080000, // 003C RAISE 2 R0 R0 - 0x8C08010C, // 003D GETMET R2 R0 K12 - 0x7C080200, // 003E CALL R2 1 - 0xA8040001, // 003F EXBLK 1 1 - 0x80040400, // 0040 RET 1 R2 - 0xA8040001, // 0041 EXBLK 1 1 - 0x70020009, // 0042 JMP #004D - 0xAC040002, // 0043 CATCH R1 0 2 - 0x70020006, // 0044 JMP #004C - 0x8C0C010D, // 0045 GETMET R3 R0 K13 - 0x60140018, // 0046 GETGBL R5 G24 - 0x5818000E, // 0047 LDCONST R6 K14 - 0x5C1C0400, // 0048 MOVE R7 R2 - 0x7C140400, // 0049 CALL R5 2 - 0x7C0C0400, // 004A CALL R3 2 - 0x70020000, // 004B JMP #004D - 0xB0080000, // 004C RAISE 2 R0 R0 - 0x80000000, // 004D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(_validate_object_reference), - /* K3 */ be_nested_str_weak(run), - /* K4 */ be_nested_str_weak(collect_inline_comment), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(comment), - }), - be_str_weak(process_run), - &be_const_str_solidified, - ( &(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 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x8C080104, // 0008 GETMET R2 R0 K4 - 0x7C080200, // 0009 CALL R2 1 - 0x880C0105, // 000A GETMBR R3 R0 K5 - 0x8C0C0706, // 000B GETMET R3 R3 K6 - 0x60140013, // 000C GETGBL R5 G19 - 0x7C140000, // 000D CALL R5 0 - 0x98160E01, // 000E SETIDX R5 K7 R1 - 0x98161002, // 000F SETIDX R5 K8 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_wait_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* 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[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(process_time_value), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), - /* K5 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_wait_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* 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 - 0x8C1C0105, // 0009 GETMET R7 R0 K5 - 0x7C1C0200, // 000A CALL R7 1 - 0x5C200200, // 000B MOVE R8 R1 - 0x5C240400, // 000C MOVE R9 R2 - 0x7C140800, // 000D CALL R5 4 - 0x7C0C0400, // 000E CALL R3 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_template_animation_class -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_template_animation_class, /* name */ - be_nested_proto( - 20, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[56]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(add), - /* K3 */ be_nested_str_weak(_X23_X20Template_X20animation_X20class_X3A_X20_X25s), - /* K4 */ be_nested_str_weak(class_X20_X25s_animation_X20_X3A_X20animation_X2Eengine_proxy), - /* K5 */ be_nested_str_weak(_X20_X20static_X20var_X20PARAMS_X20_X3D_X20animation_X2Eenc_params_X28_X7B), - /* K6 */ be_const_int(0), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(find), - /* K9 */ be_nested_str_weak(_X2C), - /* K10 */ be_nested_str_weak(), - /* K11 */ be_nested_str_weak(instance), - /* K12 */ be_nested_str_weak(map), - /* K13 */ be_nested_str_weak(contains), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_nested_str_weak(push), - /* K16 */ be_nested_str_weak(_X22type_X22_X3A_X20_X22_X25s_X22), - /* K17 */ be_nested_str_weak(min), - /* K18 */ be_nested_str_weak(_X22min_X22_X3A_X20_X25s), - /* K19 */ be_nested_str_weak(max), - /* K20 */ be_nested_str_weak(_X22max_X22_X3A_X20_X25s), - /* K21 */ be_nested_str_weak(default), - /* K22 */ be_nested_str_weak(_X22default_X22_X3A_X20_X25s), - /* K23 */ be_nested_str_weak(nillable), - /* K24 */ be_nested_str_weak(_X22nillable_X22_X3A_X20_X25s), - /* K25 */ be_nested_str_weak(_X2C_X20), - /* K26 */ be_nested_str_weak(stop_iteration), - /* K27 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X25s_X7D_X25s), - /* K28 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X22type_X22_X3A_X20_X22_X25s_X22_X7D_X25s), - /* K29 */ be_nested_str_weak(_X20_X20_X20_X20_X22_X25s_X22_X3A_X20_X7B_X7D_X25s), - /* K30 */ be_nested_str_weak(_X20_X20_X7D_X29), - /* K31 */ be_nested_str_weak(_X20_X20_X23_X20Template_X20setup_X20method_X20_X2D_X20overrides_X20EngineProxy_X20placeholder), - /* K32 */ be_nested_str_weak(_X20_X20def_X20setup_template_X28_X29), - /* K33 */ be_nested_str_weak(_X20_X20_X20_X20var_X20engine_X20_X3D_X20self_X20_X20_X20_X23_X20using_X20_X27self_X27_X20as_X20a_X20proxy_X20to_X20engine_X20object_X20_X28instead_X20of_X20_X27self_X2Eengine_X27_X29), - /* K34 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K35 */ be_nested_str_weak(pull_lexer), - /* K36 */ be_nested_str_weak(symbol_table), - /* K37 */ be_nested_str_weak(_symbol_table), - /* K38 */ be_nested_str_weak(strip_initialized), - /* K39 */ be_nested_str_weak(indent_level), - /* K40 */ be_const_int(2), - /* K41 */ be_nested_str_weak(template_animation_params), - /* K42 */ be_nested_str_weak(_add_inherited_params_to_template), - /* K43 */ be_nested_str_weak(_add_typed_parameter_to_symbol_table), - /* K44 */ be_nested_str_weak(create_variable), - /* K45 */ be_nested_str_weak(transpile_template_animation_body), - /* K46 */ be_nested_str_weak(split), - /* K47 */ be_nested_str_weak(_X0A), - /* K48 */ be_nested_str_weak(_X20_X20_X20_X20_X25s), - /* K49 */ be_nested_str_weak(_validate_template_parameter_usage), - /* K50 */ be_nested_str_weak(errors), - /* K51 */ be_nested_str_weak(error), - /* K52 */ be_nested_str_weak(Template_X20animation_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), - /* K53 */ be_nested_str_weak(expect_right_brace), - /* K54 */ be_nested_str_weak(_X20_X20end), - /* K55 */ be_nested_str_weak(end), - }), - be_str_weak(generate_template_animation_class), - &be_const_str_solidified, - ( &(const binstruction[320]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0xA4160200, // 0001 IMPORT R5 K1 - 0x8C180102, // 0002 GETMET R6 R0 K2 - 0x60200018, // 0003 GETGBL R8 G24 - 0x58240003, // 0004 LDCONST R9 K3 - 0x5C280200, // 0005 MOVE R10 R1 - 0x7C200400, // 0006 CALL R8 2 - 0x7C180400, // 0007 CALL R6 2 - 0x8C180102, // 0008 GETMET R6 R0 K2 - 0x60200018, // 0009 GETGBL R8 G24 - 0x58240004, // 000A LDCONST R9 K4 - 0x5C280200, // 000B MOVE R10 R1 - 0x7C200400, // 000C CALL R8 2 - 0x7C180400, // 000D CALL R6 2 - 0x8C180102, // 000E GETMET R6 R0 K2 - 0x58200005, // 000F LDCONST R8 K5 - 0x7C180400, // 0010 CALL R6 2 - 0x60180010, // 0011 GETGBL R6 G16 - 0x601C000C, // 0012 GETGBL R7 G12 - 0x5C200400, // 0013 MOVE R8 R2 - 0x7C1C0200, // 0014 CALL R7 1 - 0x041C0F07, // 0015 SUB R7 R7 K7 - 0x401E0C07, // 0016 CONNECT R7 K6 R7 - 0x7C180200, // 0017 CALL R6 1 - 0xA8020081, // 0018 EXBLK 0 #009B - 0x5C1C0C00, // 0019 MOVE R7 R6 - 0x7C1C0000, // 001A CALL R7 0 - 0x94200407, // 001B GETIDX R8 R2 R7 - 0x8C240708, // 001C GETMET R9 R3 K8 - 0x5C2C1000, // 001D MOVE R11 R8 - 0x7C240400, // 001E CALL R9 2 - 0x6028000C, // 001F GETGBL R10 G12 - 0x5C2C0400, // 0020 MOVE R11 R2 - 0x7C280200, // 0021 CALL R10 1 - 0x04281507, // 0022 SUB R10 R10 K7 - 0x14280E0A, // 0023 LT R10 R7 R10 - 0x782A0001, // 0024 JMPF R10 #0027 - 0x58280009, // 0025 LDCONST R10 K9 - 0x70020000, // 0026 JMP #0028 - 0x5828000A, // 0027 LDCONST R10 K10 - 0x4C2C0000, // 0028 LDNIL R11 - 0x202C120B, // 0029 NE R11 R9 R11 - 0x782E0067, // 002A JMPF R11 #0093 - 0x602C0004, // 002B GETGBL R11 G4 - 0x5C301200, // 002C MOVE R12 R9 - 0x7C2C0200, // 002D CALL R11 1 - 0x1C2C170B, // 002E EQ R11 R11 K11 - 0x782E0059, // 002F JMPF R11 #008A - 0x602C0005, // 0030 GETGBL R11 G5 - 0x5C301200, // 0031 MOVE R12 R9 - 0x7C2C0200, // 0032 CALL R11 1 - 0x1C2C170C, // 0033 EQ R11 R11 K12 - 0x782E0054, // 0034 JMPF R11 #008A - 0x602C0012, // 0035 GETGBL R11 G18 - 0x7C2C0000, // 0036 CALL R11 0 - 0x8C30130D, // 0037 GETMET R12 R9 K13 - 0x5838000E, // 0038 LDCONST R14 K14 - 0x7C300400, // 0039 CALL R12 2 - 0x78320005, // 003A JMPF R12 #0041 - 0x8C30170F, // 003B GETMET R12 R11 K15 - 0x60380018, // 003C GETGBL R14 G24 - 0x583C0010, // 003D LDCONST R15 K16 - 0x9440130E, // 003E GETIDX R16 R9 K14 - 0x7C380400, // 003F CALL R14 2 - 0x7C300400, // 0040 CALL R12 2 - 0x8C30130D, // 0041 GETMET R12 R9 K13 - 0x58380011, // 0042 LDCONST R14 K17 - 0x7C300400, // 0043 CALL R12 2 - 0x78320005, // 0044 JMPF R12 #004B - 0x8C30170F, // 0045 GETMET R12 R11 K15 - 0x60380018, // 0046 GETGBL R14 G24 - 0x583C0012, // 0047 LDCONST R15 K18 - 0x94401311, // 0048 GETIDX R16 R9 K17 - 0x7C380400, // 0049 CALL R14 2 - 0x7C300400, // 004A CALL R12 2 - 0x8C30130D, // 004B GETMET R12 R9 K13 - 0x58380013, // 004C LDCONST R14 K19 - 0x7C300400, // 004D CALL R12 2 - 0x78320005, // 004E JMPF R12 #0055 - 0x8C30170F, // 004F GETMET R12 R11 K15 - 0x60380018, // 0050 GETGBL R14 G24 - 0x583C0014, // 0051 LDCONST R15 K20 - 0x94401313, // 0052 GETIDX R16 R9 K19 - 0x7C380400, // 0053 CALL R14 2 - 0x7C300400, // 0054 CALL R12 2 - 0x8C30130D, // 0055 GETMET R12 R9 K13 - 0x58380015, // 0056 LDCONST R14 K21 - 0x7C300400, // 0057 CALL R12 2 - 0x78320005, // 0058 JMPF R12 #005F - 0x8C30170F, // 0059 GETMET R12 R11 K15 - 0x60380018, // 005A GETGBL R14 G24 - 0x583C0016, // 005B LDCONST R15 K22 - 0x94401315, // 005C GETIDX R16 R9 K21 - 0x7C380400, // 005D CALL R14 2 - 0x7C300400, // 005E CALL R12 2 - 0x8C30130D, // 005F GETMET R12 R9 K13 - 0x58380017, // 0060 LDCONST R14 K23 - 0x7C300400, // 0061 CALL R12 2 - 0x78320005, // 0062 JMPF R12 #0069 - 0x8C30170F, // 0063 GETMET R12 R11 K15 - 0x60380018, // 0064 GETGBL R14 G24 - 0x583C0018, // 0065 LDCONST R15 K24 - 0x94401317, // 0066 GETIDX R16 R9 K23 - 0x7C380400, // 0067 CALL R14 2 - 0x7C300400, // 0068 CALL R12 2 - 0x5830000A, // 0069 LDCONST R12 K10 - 0x60340010, // 006A GETGBL R13 G16 - 0x6038000C, // 006B GETGBL R14 G12 - 0x5C3C1600, // 006C MOVE R15 R11 - 0x7C380200, // 006D CALL R14 1 - 0x04381D07, // 006E SUB R14 R14 K7 - 0x403A0C0E, // 006F CONNECT R14 K6 R14 - 0x7C340200, // 0070 CALL R13 1 - 0xA802000B, // 0071 EXBLK 0 #007E - 0x5C381A00, // 0072 MOVE R14 R13 - 0x7C380000, // 0073 CALL R14 0 - 0x943C160E, // 0074 GETIDX R15 R11 R14 - 0x0030180F, // 0075 ADD R12 R12 R15 - 0x603C000C, // 0076 GETGBL R15 G12 - 0x5C401600, // 0077 MOVE R16 R11 - 0x7C3C0200, // 0078 CALL R15 1 - 0x043C1F07, // 0079 SUB R15 R15 K7 - 0x143C1C0F, // 007A LT R15 R14 R15 - 0x783E0000, // 007B JMPF R15 #007D - 0x00301919, // 007C ADD R12 R12 K25 - 0x7001FFF3, // 007D JMP #0072 - 0x5834001A, // 007E LDCONST R13 K26 - 0xAC340200, // 007F CATCH R13 1 0 - 0xB0080000, // 0080 RAISE 2 R0 R0 - 0x8C340102, // 0081 GETMET R13 R0 K2 - 0x603C0018, // 0082 GETGBL R15 G24 - 0x5840001B, // 0083 LDCONST R16 K27 - 0x5C441000, // 0084 MOVE R17 R8 - 0x5C481800, // 0085 MOVE R18 R12 - 0x5C4C1400, // 0086 MOVE R19 R10 - 0x7C3C0800, // 0087 CALL R15 4 - 0x7C340400, // 0088 CALL R13 2 - 0x70020007, // 0089 JMP #0092 - 0x8C2C0102, // 008A GETMET R11 R0 K2 - 0x60340018, // 008B GETGBL R13 G24 - 0x5838001C, // 008C LDCONST R14 K28 - 0x5C3C1000, // 008D MOVE R15 R8 - 0x5C401200, // 008E MOVE R16 R9 - 0x5C441400, // 008F MOVE R17 R10 - 0x7C340800, // 0090 CALL R13 4 - 0x7C2C0400, // 0091 CALL R11 2 - 0x70020006, // 0092 JMP #009A - 0x8C2C0102, // 0093 GETMET R11 R0 K2 - 0x60340018, // 0094 GETGBL R13 G24 - 0x5838001D, // 0095 LDCONST R14 K29 - 0x5C3C1000, // 0096 MOVE R15 R8 - 0x5C401400, // 0097 MOVE R16 R10 - 0x7C340600, // 0098 CALL R13 3 - 0x7C2C0400, // 0099 CALL R11 2 - 0x7001FF7D, // 009A JMP #0019 - 0x5818001A, // 009B LDCONST R6 K26 - 0xAC180200, // 009C CATCH R6 1 0 - 0xB0080000, // 009D RAISE 2 R0 R0 - 0x8C180102, // 009E GETMET R6 R0 K2 - 0x5820001E, // 009F LDCONST R8 K30 - 0x7C180400, // 00A0 CALL R6 2 - 0x8C180102, // 00A1 GETMET R6 R0 K2 - 0x5820000A, // 00A2 LDCONST R8 K10 - 0x7C180400, // 00A3 CALL R6 2 - 0x8C180102, // 00A4 GETMET R6 R0 K2 - 0x5820001F, // 00A5 LDCONST R8 K31 - 0x7C180400, // 00A6 CALL R6 2 - 0x8C180102, // 00A7 GETMET R6 R0 K2 - 0x58200020, // 00A8 LDCONST R8 K32 - 0x7C180400, // 00A9 CALL R6 2 - 0x8C180102, // 00AA GETMET R6 R0 K2 - 0x58200021, // 00AB LDCONST R8 K33 - 0x7C180400, // 00AC CALL R6 2 - 0x8C180102, // 00AD GETMET R6 R0 K2 - 0x5820000A, // 00AE LDCONST R8 K10 - 0x7C180400, // 00AF CALL R6 2 - 0x8C180922, // 00B0 GETMET R6 R4 K34 - 0x88200123, // 00B1 GETMBR R8 R0 K35 - 0x7C180400, // 00B2 CALL R6 2 - 0x8C1C0925, // 00B3 GETMET R7 R4 K37 - 0x7C1C0200, // 00B4 CALL R7 1 - 0x901A4807, // 00B5 SETMBR R6 K36 R7 - 0x501C0200, // 00B6 LDBOOL R7 1 0 - 0x901A4C07, // 00B7 SETMBR R6 K38 R7 - 0x901A4F28, // 00B8 SETMBR R6 K39 K40 - 0x601C0013, // 00B9 GETGBL R7 G19 - 0x7C1C0000, // 00BA CALL R7 0 - 0x901A5207, // 00BB SETMBR R6 K41 R7 - 0x601C0010, // 00BC GETGBL R7 G16 - 0x5C200400, // 00BD MOVE R8 R2 - 0x7C1C0200, // 00BE CALL R7 1 - 0xA8020005, // 00BF EXBLK 0 #00C6 - 0x5C200E00, // 00C0 MOVE R8 R7 - 0x7C200000, // 00C1 CALL R8 0 - 0x88240D29, // 00C2 GETMBR R9 R6 K41 - 0x50280200, // 00C3 LDBOOL R10 1 0 - 0x9824100A, // 00C4 SETIDX R9 R8 R10 - 0x7001FFF9, // 00C5 JMP #00C0 - 0x581C001A, // 00C6 LDCONST R7 K26 - 0xAC1C0200, // 00C7 CATCH R7 1 0 - 0xB0080000, // 00C8 RAISE 2 R0 R0 - 0x8C1C012A, // 00C9 GETMET R7 R0 K42 - 0x88240D29, // 00CA GETMBR R9 R6 K41 - 0x7C1C0400, // 00CB CALL R7 2 - 0x601C0010, // 00CC GETGBL R7 G16 - 0x5C200400, // 00CD MOVE R8 R2 - 0x7C1C0200, // 00CE CALL R7 1 - 0xA802002B, // 00CF EXBLK 0 #00FC - 0x5C200E00, // 00D0 MOVE R8 R7 - 0x7C200000, // 00D1 CALL R8 0 - 0x8C240708, // 00D2 GETMET R9 R3 K8 - 0x5C2C1000, // 00D3 MOVE R11 R8 - 0x7C240400, // 00D4 CALL R9 2 - 0x4C280000, // 00D5 LDNIL R10 - 0x2028120A, // 00D6 NE R10 R9 R10 - 0x782A001E, // 00D7 JMPF R10 #00F7 - 0x4C280000, // 00D8 LDNIL R10 - 0x602C0004, // 00D9 GETGBL R11 G4 - 0x5C301200, // 00DA MOVE R12 R9 - 0x7C2C0200, // 00DB CALL R11 1 - 0x1C2C170B, // 00DC EQ R11 R11 K11 - 0x782E0009, // 00DD JMPF R11 #00E8 - 0x602C0005, // 00DE GETGBL R11 G5 - 0x5C301200, // 00DF MOVE R12 R9 - 0x7C2C0200, // 00E0 CALL R11 1 - 0x1C2C170C, // 00E1 EQ R11 R11 K12 - 0x782E0004, // 00E2 JMPF R11 #00E8 - 0x8C2C1308, // 00E3 GETMET R11 R9 K8 - 0x5834000E, // 00E4 LDCONST R13 K14 - 0x7C2C0400, // 00E5 CALL R11 2 - 0x5C281600, // 00E6 MOVE R10 R11 - 0x70020000, // 00E7 JMP #00E9 - 0x5C281200, // 00E8 MOVE R10 R9 - 0x4C2C0000, // 00E9 LDNIL R11 - 0x202C140B, // 00EA NE R11 R10 R11 - 0x782E0005, // 00EB JMPF R11 #00F2 - 0x8C2C012B, // 00EC GETMET R11 R0 K43 - 0x88340D24, // 00ED GETMBR R13 R6 K36 - 0x5C381000, // 00EE MOVE R14 R8 - 0x5C3C1400, // 00EF MOVE R15 R10 - 0x7C2C0800, // 00F0 CALL R11 4 - 0x70020003, // 00F1 JMP #00F6 - 0x882C0D24, // 00F2 GETMBR R11 R6 K36 - 0x8C2C172C, // 00F3 GETMET R11 R11 K44 - 0x5C341000, // 00F4 MOVE R13 R8 - 0x7C2C0400, // 00F5 CALL R11 2 - 0x70020003, // 00F6 JMP #00FB - 0x88280D24, // 00F7 GETMBR R10 R6 K36 - 0x8C28152C, // 00F8 GETMET R10 R10 K44 - 0x5C301000, // 00F9 MOVE R12 R8 - 0x7C280400, // 00FA CALL R10 2 - 0x7001FFD3, // 00FB JMP #00D0 - 0x581C001A, // 00FC LDCONST R7 K26 - 0xAC1C0200, // 00FD CATCH R7 1 0 - 0xB0080000, // 00FE RAISE 2 R0 R0 - 0x8C1C0D2D, // 00FF GETMET R7 R6 K45 - 0x7C1C0200, // 0100 CALL R7 1 - 0x4C200000, // 0101 LDNIL R8 - 0x20200E08, // 0102 NE R8 R7 R8 - 0x7822001E, // 0103 JMPF R8 #0123 - 0x8C200B2E, // 0104 GETMET R8 R5 K46 - 0x5C280E00, // 0105 MOVE R10 R7 - 0x582C002F, // 0106 LDCONST R11 K47 - 0x7C200600, // 0107 CALL R8 3 - 0x60240010, // 0108 GETGBL R9 G16 - 0x5C281000, // 0109 MOVE R10 R8 - 0x7C240200, // 010A CALL R9 1 - 0xA802000D, // 010B EXBLK 0 #011A - 0x5C281200, // 010C MOVE R10 R9 - 0x7C280000, // 010D CALL R10 0 - 0x602C000C, // 010E GETGBL R11 G12 - 0x5C301400, // 010F MOVE R12 R10 - 0x7C2C0200, // 0110 CALL R11 1 - 0x242C1706, // 0111 GT R11 R11 K6 - 0x782E0005, // 0112 JMPF R11 #0119 - 0x8C2C0102, // 0113 GETMET R11 R0 K2 - 0x60340018, // 0114 GETGBL R13 G24 - 0x58380030, // 0115 LDCONST R14 K48 - 0x5C3C1400, // 0116 MOVE R15 R10 - 0x7C340400, // 0117 CALL R13 2 - 0x7C2C0400, // 0118 CALL R11 2 - 0x7001FFF1, // 0119 JMP #010C - 0x5824001A, // 011A LDCONST R9 K26 - 0xAC240200, // 011B CATCH R9 1 0 - 0xB0080000, // 011C RAISE 2 R0 R0 - 0x8C240131, // 011D GETMET R9 R0 K49 - 0x5C2C0200, // 011E MOVE R11 R1 - 0x5C300400, // 011F MOVE R12 R2 - 0x5C340E00, // 0120 MOVE R13 R7 - 0x7C240800, // 0121 CALL R9 4 - 0x70020010, // 0122 JMP #0134 - 0x60200010, // 0123 GETGBL R8 G16 - 0x88240D32, // 0124 GETMBR R9 R6 K50 - 0x7C200200, // 0125 CALL R8 1 - 0xA8020009, // 0126 EXBLK 0 #0131 - 0x5C241000, // 0127 MOVE R9 R8 - 0x7C240000, // 0128 CALL R9 0 - 0x8C280133, // 0129 GETMET R10 R0 K51 - 0x60300018, // 012A GETGBL R12 G24 - 0x58340034, // 012B LDCONST R13 K52 - 0x5C380200, // 012C MOVE R14 R1 - 0x5C3C1200, // 012D MOVE R15 R9 - 0x7C300600, // 012E CALL R12 3 - 0x7C280400, // 012F CALL R10 2 - 0x7001FFF5, // 0130 JMP #0127 - 0x5820001A, // 0131 LDCONST R8 K26 - 0xAC200200, // 0132 CATCH R8 1 0 - 0xB0080000, // 0133 RAISE 2 R0 R0 - 0x8C200135, // 0134 GETMET R8 R0 K53 - 0x7C200200, // 0135 CALL R8 1 - 0x8C200102, // 0136 GETMET R8 R0 K2 - 0x58280036, // 0137 LDCONST R10 K54 - 0x7C200400, // 0138 CALL R8 2 - 0x8C200102, // 0139 GETMET R8 R0 K2 - 0x58280037, // 013A LDCONST R10 K55 - 0x7C200400, // 013B CALL R8 2 - 0x8C200102, // 013C GETMET R8 R0 K2 - 0x5828000A, // 013D LDCONST R10 K10 - 0x7C200400, // 013E CALL R8 2 - 0x80000000, // 013F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_berry_code_block -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_berry_code_block, /* 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[16]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(error), - /* K5 */ be_nested_str_weak(Expected_X20string_X20literal_X20after_X20_X27berry_X27_X20keyword_X2E_X20Use_X20berry_X20_X22_X22_X22_X3Ccode_X3E_X22_X22_X22_X20or_X20berry_X20_X27_X27_X27_X3Ccode_X3E_X27_X27_X27), - /* K6 */ be_nested_str_weak(skip_statement), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(collect_inline_comment), - /* K9 */ be_nested_str_weak(add), - /* K10 */ be_nested_str_weak(_X23_X20Berry_X20code_X20block_X25s), - /* K11 */ be_nested_str_weak(string), - /* K12 */ be_nested_str_weak(split), - /* K13 */ be_nested_str_weak(_X0A), - /* K14 */ be_nested_str_weak(stop_iteration), - /* K15 */ be_nested_str_weak(_X23_X20End_X20berry_X20code_X20block), - }), - be_str_weak(process_berry_code_block), - &be_const_str_solidified, - ( &(const binstruction[49]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x4C080000, // 0004 LDNIL R2 - 0x1C080202, // 0005 EQ R2 R1 R2 - 0x740A0002, // 0006 JMPT R2 #000A - 0x88080302, // 0007 GETMBR R2 R1 K2 - 0x20080503, // 0008 NE R2 R2 K3 - 0x780A0005, // 0009 JMPF R2 #0010 - 0x8C080104, // 000A GETMET R2 R0 K4 - 0x58100005, // 000B LDCONST R4 K5 - 0x7C080400, // 000C CALL R2 2 - 0x8C080106, // 000D GETMET R2 R0 K6 - 0x7C080200, // 000E CALL R2 1 - 0x80000400, // 000F RET 0 - 0x88080307, // 0010 GETMBR R2 R1 K7 - 0x8C0C0100, // 0011 GETMET R3 R0 K0 - 0x7C0C0200, // 0012 CALL R3 1 - 0x8C0C0108, // 0013 GETMET R3 R0 K8 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C100109, // 0015 GETMET R4 R0 K9 - 0x60180018, // 0016 GETGBL R6 G24 - 0x581C000A, // 0017 LDCONST R7 K10 - 0x5C200600, // 0018 MOVE R8 R3 - 0x7C180400, // 0019 CALL R6 2 - 0x7C100400, // 001A CALL R4 2 - 0xA4121600, // 001B IMPORT R4 K11 - 0x8C14090C, // 001C GETMET R5 R4 K12 - 0x5C1C0400, // 001D MOVE R7 R2 - 0x5820000D, // 001E LDCONST R8 K13 - 0x7C140600, // 001F CALL R5 3 - 0x60180010, // 0020 GETGBL R6 G16 - 0x5C1C0A00, // 0021 MOVE R7 R5 - 0x7C180200, // 0022 CALL R6 1 - 0xA8020005, // 0023 EXBLK 0 #002A - 0x5C1C0C00, // 0024 MOVE R7 R6 - 0x7C1C0000, // 0025 CALL R7 0 - 0x8C200109, // 0026 GETMET R8 R0 K9 - 0x5C280E00, // 0027 MOVE R10 R7 - 0x7C200400, // 0028 CALL R8 2 - 0x7001FFF9, // 0029 JMP #0024 - 0x5818000E, // 002A LDCONST R6 K14 - 0xAC180200, // 002B CATCH R6 1 0 - 0xB0080000, // 002C RAISE 2 R0 R0 - 0x8C180109, // 002D GETMET R6 R0 K9 - 0x5820000F, // 002E LDCONST R8 K15 - 0x7C180400, // 002F CALL R6 2 - 0x80000000, // 0030 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_external_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_external_function, /* 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[19]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(value), - /* K5 */ be_nested_str_weak(function), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27function_X27_X20keyword_X20after_X20_X27extern_X27_X2E_X20Use_X3A_X20extern_X20function_X20function_name), - /* K8 */ be_nested_str_weak(skip_statement), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name_X20after_X20_X27extern_X20function_X27_X2E_X20Use_X3A_X20extern_X20function_X20function_name), - /* K11 */ be_nested_str_weak(collect_inline_comment), - /* K12 */ be_nested_str_weak(validate_user_name), - /* K13 */ be_nested_str_weak(extern_X20function), - /* K14 */ be_nested_str_weak(symbol_table), - /* K15 */ be_nested_str_weak(register_user_function), - /* K16 */ be_nested_str_weak(add), - /* K17 */ be_nested_str_weak(_X23_X20External_X20function_X20declaration_X3A_X20_X25s_X25s), - /* K18 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X22_X25s_X22_X2C_X20_X25s_X29), - }), - be_str_weak(process_external_function), - &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x4C080000, // 0004 LDNIL R2 - 0x1C080202, // 0005 EQ R2 R1 R2 - 0x740A0005, // 0006 JMPT R2 #000D - 0x88080302, // 0007 GETMBR R2 R1 K2 - 0x20080503, // 0008 NE R2 R2 K3 - 0x740A0002, // 0009 JMPT R2 #000D - 0x88080304, // 000A GETMBR R2 R1 K4 - 0x20080505, // 000B NE R2 R2 K5 - 0x780A0005, // 000C JMPF R2 #0013 - 0x8C080106, // 000D GETMET R2 R0 K6 - 0x58100007, // 000E LDCONST R4 K7 - 0x7C080400, // 000F CALL R2 2 - 0x8C080108, // 0010 GETMET R2 R0 K8 - 0x7C080200, // 0011 CALL R2 1 - 0x80000400, // 0012 RET 0 - 0x8C080100, // 0013 GETMET R2 R0 K0 - 0x7C080200, // 0014 CALL R2 1 - 0x8C080101, // 0015 GETMET R2 R0 K1 - 0x7C080200, // 0016 CALL R2 1 - 0x5C040400, // 0017 MOVE R1 R2 - 0x4C080000, // 0018 LDNIL R2 - 0x1C080202, // 0019 EQ R2 R1 R2 - 0x740A0002, // 001A JMPT R2 #001E - 0x88080302, // 001B GETMBR R2 R1 K2 - 0x20080509, // 001C NE R2 R2 K9 - 0x780A0005, // 001D JMPF R2 #0024 - 0x8C080106, // 001E GETMET R2 R0 K6 - 0x5810000A, // 001F LDCONST R4 K10 - 0x7C080400, // 0020 CALL R2 2 - 0x8C080108, // 0021 GETMET R2 R0 K8 - 0x7C080200, // 0022 CALL R2 1 - 0x80000400, // 0023 RET 0 - 0x88080304, // 0024 GETMBR R2 R1 K4 - 0x8C0C0100, // 0025 GETMET R3 R0 K0 - 0x7C0C0200, // 0026 CALL R3 1 - 0x8C0C010B, // 0027 GETMET R3 R0 K11 - 0x7C0C0200, // 0028 CALL R3 1 - 0x8C10010C, // 0029 GETMET R4 R0 K12 - 0x5C180400, // 002A MOVE R6 R2 - 0x581C000D, // 002B LDCONST R7 K13 - 0x7C100600, // 002C CALL R4 3 - 0x8810010E, // 002D GETMBR R4 R0 K14 - 0x8C10090F, // 002E GETMET R4 R4 K15 - 0x5C180400, // 002F MOVE R6 R2 - 0x7C100400, // 0030 CALL R4 2 - 0x8C100110, // 0031 GETMET R4 R0 K16 - 0x60180018, // 0032 GETGBL R6 G24 - 0x581C0011, // 0033 LDCONST R7 K17 - 0x5C200400, // 0034 MOVE R8 R2 - 0x5C240600, // 0035 MOVE R9 R3 - 0x7C180600, // 0036 CALL R6 3 - 0x7C100400, // 0037 CALL R4 2 - 0x8C100110, // 0038 GETMET R4 R0 K16 - 0x60180018, // 0039 GETGBL R6 G24 - 0x581C0012, // 003A LDCONST R7 K18 - 0x5C200400, // 003B MOVE R8 R2 - 0x5C240400, // 003C MOVE R9 R2 - 0x7C180600, // 003D CALL R6 3 - 0x7C100400, // 003E CALL R4 2 - 0x80000000, // 003F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: warning -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_warning, /* name */ - be_nested_proto( - 9, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -14461,17 +16358,16 @@ be_local_closure(class_SimpleDSLTranspiler_warning, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(line), /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(warnings), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + /* K3 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + /* K4 */ be_nested_str_weak(dsl_compilation_error), }), - be_str_weak(warning), + be_str_weak(error), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x7C080200, // 0001 CALL R2 1 0x4C0C0000, // 0002 LDNIL R3 @@ -14482,15 +16378,13 @@ be_local_closure(class_SimpleDSLTranspiler_warning, /* name */ 0x88080501, // 0007 GETMBR R2 R2 K1 0x70020000, // 0008 JMP #000A 0x58080002, // 0009 LDCONST R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x60140018, // 000C GETGBL R5 G24 - 0x58180005, // 000D LDCONST R6 K5 - 0x5C1C0400, // 000E MOVE R7 R2 - 0x5C200200, // 000F MOVE R8 R1 - 0x7C140600, // 0010 CALL R5 3 - 0x7C0C0400, // 0011 CALL R3 2 - 0x80000000, // 0012 RET 0 + 0x600C0018, // 000A GETGBL R3 G24 + 0x58100003, // 000B LDCONST R4 K3 + 0x5C140400, // 000C MOVE R5 R2 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C0C0600, // 000E CALL R3 3 + 0xB0060803, // 000F RAISE 1 K4 R3 + 0x80000000, // 0010 RET 0 }) ) ); @@ -14498,2089 +16392,69 @@ be_local_closure(class_SimpleDSLTranspiler_warning, /* name */ /******************************************************************** -** Solidified function: _register_template_animation_constructor +** Solidified function: convert_color ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__register_template_animation_constructor, /* name */ +be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ be_nested_proto( - 10, /* nstack */ - 4, /* argc */ + 8, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 2), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x68080000, // 0001 GETUPV R2 U0 - 0x7C040200, // 0002 CALL R1 1 - 0xA8020007, // 0003 EXBLK 0 #000C - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x1C0C0400, // 0006 EQ R3 R2 R0 - 0x780E0002, // 0007 JMPF R3 #000B - 0x500C0200, // 0008 LDBOOL R3 1 0 - 0xA8040001, // 0009 EXBLK 1 1 - 0x80040600, // 000A RET 1 R3 - 0x7001FFF7, // 000B JMP #0004 - 0x58040000, // 000C LDCONST R1 K0 - 0xAC040200, // 000D CATCH R1 1 0 - 0xB0080000, // 000E RAISE 2 R0 R0 - 0x50040000, // 000F LDBOOL R1 0 0 - 0x80040200, // 0010 RET 1 R1 - }) - ), - }), + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[10]) { /* constants */ /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(_params), - /* K2 */ be_nested_str_weak(has_param), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(symbol_table), - /* K5 */ be_nested_str_weak(entries), - /* K6 */ be_nested_str_weak(find), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(instance), - /* K9 */ be_nested_str_weak(takes_args), - /* K10 */ be_nested_str_weak(arg_type), - /* K11 */ be_nested_str_weak(named), - }), - be_str_weak(_register_template_animation_constructor), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x60140013, // 0001 GETGBL R5 G19 - 0x7C140000, // 0002 CALL R5 0 - 0x60180013, // 0003 GETGBL R6 G19 - 0x7C180000, // 0004 CALL R6 0 - 0x98160206, // 0005 SETIDX R5 K1 R6 - 0x84180000, // 0006 CLOSURE R6 P0 - 0x98160406, // 0007 SETIDX R5 K2 R6 - 0x60180010, // 0008 GETGBL R6 G16 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C180200, // 000A CALL R6 1 - 0xA8020005, // 000B EXBLK 0 #0012 - 0x5C1C0C00, // 000C MOVE R7 R6 - 0x7C1C0000, // 000D CALL R7 0 - 0x94200B01, // 000E GETIDX R8 R5 K1 - 0x50240200, // 000F LDBOOL R9 1 0 - 0x98200E09, // 0010 SETIDX R8 R7 R9 - 0x7001FFF9, // 0011 JMP #000C - 0x58180003, // 0012 LDCONST R6 K3 - 0xAC180200, // 0013 CATCH R6 1 0 - 0xB0080000, // 0014 RAISE 2 R0 R0 - 0x88180104, // 0015 GETMBR R6 R0 K4 - 0x88180D05, // 0016 GETMBR R6 R6 K5 - 0x8C180D06, // 0017 GETMET R6 R6 K6 - 0x5C200200, // 0018 MOVE R8 R1 - 0x7C180400, // 0019 CALL R6 2 - 0x4C1C0000, // 001A LDNIL R7 - 0x201C0C07, // 001B NE R7 R6 R7 - 0x781E0005, // 001C JMPF R7 #0023 - 0x541E0007, // 001D LDINT R7 8 - 0x901A0E07, // 001E SETMBR R6 K7 R7 - 0x901A1005, // 001F SETMBR R6 K8 R5 - 0x501C0200, // 0020 LDBOOL R7 1 0 - 0x901A1207, // 0021 SETMBR R6 K9 R7 - 0x901A150B, // 0022 SETMBR R6 K10 K11 - 0xA0000000, // 0023 CLOSE R0 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - }), - be_str_weak(check_right_paren), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E0018, // 0006 LDINT R3 25 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x740A0000, // 0008 JMPT R2 #000A - 0x50080001, // 0009 LDBOOL R2 0 1 - 0x50080200, // 000A LDBOOL R2 1 0 - 0x80040400, // 000B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_simple_value_assignment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_simple_value_assignment, /* name */ - be_nested_proto( - 16, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_const_int(1), - /* K3 */ be_nested_str_weak(peek), - /* K4 */ be_nested_str_weak(value), - /* K5 */ be_nested_str_weak(process_value), - /* K6 */ be_nested_str_weak(collect_inline_comment), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K9 */ be_nested_str_weak(expr), - /* K10 */ be_nested_str_weak(symbol_table), - /* K11 */ be_nested_str_weak(contains), - /* K12 */ be_nested_str_weak(get), - /* K13 */ be_nested_str_weak(instance), - }), - be_str_weak(_process_simple_value_assignment), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL R5 - 0x20140805, // 0003 NE R5 R4 R5 - 0x7816000D, // 0004 JMPF R5 #0013 - 0x88140901, // 0005 GETMBR R5 R4 K1 - 0x1C140B02, // 0006 EQ R5 R5 K2 - 0x7816000A, // 0007 JMPF R5 #0013 - 0x8C140103, // 0008 GETMET R5 R0 K3 - 0x7C140200, // 0009 CALL R5 1 - 0x4C180000, // 000A LDNIL R6 - 0x1C140A06, // 000B EQ R5 R5 R6 - 0x74160006, // 000C JMPT R5 #0014 - 0x8C140103, // 000D GETMET R5 R0 K3 - 0x7C140200, // 000E CALL R5 1 - 0x88140B01, // 000F GETMBR R5 R5 K1 - 0x541A0017, // 0010 LDINT R6 24 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x74160000, // 0012 JMPT R5 #0014 - 0x50140001, // 0013 LDBOOL R5 0 1 - 0x50140200, // 0014 LDBOOL R5 1 0 - 0x78160001, // 0015 JMPF R5 #0018 - 0x88180904, // 0016 GETMBR R6 R4 K4 - 0x70020000, // 0017 JMP #0019 - 0x4C180000, // 0018 LDNIL R6 - 0x8C1C0105, // 0019 GETMET R7 R0 K5 - 0x5C240400, // 001A MOVE R9 R2 - 0x7C1C0400, // 001B CALL R7 2 - 0x8C200106, // 001C GETMET R8 R0 K6 - 0x7C200200, // 001D CALL R8 1 - 0x8C240107, // 001E GETMET R9 R0 K7 - 0x602C0018, // 001F GETGBL R11 G24 - 0x58300008, // 0020 LDCONST R12 K8 - 0x5C340200, // 0021 MOVE R13 R1 - 0x88380F09, // 0022 GETMBR R14 R7 K9 - 0x5C3C1000, // 0023 MOVE R15 R8 - 0x7C2C0800, // 0024 CALL R11 4 - 0x7C240400, // 0025 CALL R9 2 - 0x7816001C, // 0026 JMPF R5 #0044 - 0x4C240000, // 0027 LDNIL R9 - 0x20240C09, // 0028 NE R9 R6 R9 - 0x78260019, // 0029 JMPF R9 #0044 - 0x8824010A, // 002A GETMBR R9 R0 K10 - 0x8C24130B, // 002B GETMET R9 R9 K11 - 0x5C2C0C00, // 002C MOVE R11 R6 - 0x7C240400, // 002D CALL R9 2 - 0x78260014, // 002E JMPF R9 #0044 - 0x8824010A, // 002F GETMBR R9 R0 K10 - 0x8C24130C, // 0030 GETMET R9 R9 K12 - 0x5C2C0C00, // 0031 MOVE R11 R6 - 0x7C240400, // 0032 CALL R9 2 - 0x4C280000, // 0033 LDNIL R10 - 0x2028120A, // 0034 NE R10 R9 R10 - 0x782A0008, // 0035 JMPF R10 #003F - 0x8828130D, // 0036 GETMBR R10 R9 K13 - 0x4C2C0000, // 0037 LDNIL R11 - 0x2028140B, // 0038 NE R10 R10 R11 - 0x782A0004, // 0039 JMPF R10 #003F - 0x5C280600, // 003A MOVE R10 R3 - 0x5C2C0200, // 003B MOVE R11 R1 - 0x8830130D, // 003C GETMBR R12 R9 K13 - 0x7C280400, // 003D CALL R10 2 - 0x70020003, // 003E JMP #0043 - 0x5C280600, // 003F MOVE R10 R3 - 0x5C2C0200, // 0040 MOVE R11 R1 - 0x4C300000, // 0041 LDNIL R12 - 0x7C280400, // 0042 CALL R10 2 - 0x70020003, // 0043 JMP #0048 - 0x5C240600, // 0044 MOVE R9 R3 - 0x5C280200, // 0045 MOVE R10 R1 - 0x4C2C0000, // 0046 LDNIL R11 - 0x7C240400, // 0047 CALL R9 2 - 0x80000000, // 0048 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_colon -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), - }), - be_str_weak(expect_colon), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001F, // 0006 LDINT R3 32 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_event_handler -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(line), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X7B_X7D), - /* K6 */ be_nested_str_weak(type), - /* K7 */ be_nested_str_weak(process_event_parameters), - /* K8 */ be_nested_str_weak(expect_colon), - /* K9 */ be_nested_str_weak(event_handler__X25s__X25s), - /* K10 */ be_nested_str_weak(add), - /* K11 */ be_nested_str_weak(def_X20_X25s_X28event_data_X29), - /* K12 */ be_nested_str_weak(value), - /* K13 */ be_nested_str_weak(interrupt), - /* K14 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_current_X28_X29), - /* K15 */ be_nested_str_weak(_X20_X20engine_X2Einterrupt_animation_X28_X22_X25s_X22_X29), - /* K16 */ be_nested_str_weak(process_value), - /* K17 */ be_nested_str_weak(CONTEXT_ANIMATION), - /* K18 */ be_nested_str_weak(_X20_X20engine_X2Eadd_X28_X25s_X29), - /* K19 */ be_nested_str_weak(expr), - /* K20 */ be_nested_str_weak(end), - /* K21 */ be_nested_str_weak(animation_X2Eregister_event_handler_X28_X22_X25s_X22_X2C_X20_X25s_X2C_X200_X2C_X20nil_X2C_X20_X25s_X29), - }), - be_str_weak(process_event_handler), - &be_const_str_solidified, - ( &(const binstruction[91]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x4C0C0000, // 0006 LDNIL R3 - 0x20080403, // 0007 NE R2 R2 R3 - 0x780A0003, // 0008 JMPF R2 #000D - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x88080503, // 000B GETMBR R2 R2 K3 - 0x70020000, // 000C JMP #000E - 0x58080004, // 000D LDCONST R2 K4 - 0x580C0005, // 000E LDCONST R3 K5 - 0x8C100102, // 000F GETMET R4 R0 K2 - 0x7C100200, // 0010 CALL R4 1 - 0x4C140000, // 0011 LDNIL R5 - 0x20100805, // 0012 NE R4 R4 R5 - 0x78120008, // 0013 JMPF R4 #001D - 0x8C100102, // 0014 GETMET R4 R0 K2 - 0x7C100200, // 0015 CALL R4 1 - 0x88100906, // 0016 GETMBR R4 R4 K6 - 0x54160017, // 0017 LDINT R5 24 - 0x1C100805, // 0018 EQ R4 R4 R5 - 0x78120002, // 0019 JMPF R4 #001D - 0x8C100107, // 001A GETMET R4 R0 K7 - 0x7C100200, // 001B CALL R4 1 - 0x5C0C0800, // 001C MOVE R3 R4 - 0x8C100108, // 001D GETMET R4 R0 K8 - 0x7C100200, // 001E CALL R4 1 - 0x60100018, // 001F GETGBL R4 G24 - 0x58140009, // 0020 LDCONST R5 K9 - 0x5C180200, // 0021 MOVE R6 R1 - 0x5C1C0400, // 0022 MOVE R7 R2 - 0x7C100600, // 0023 CALL R4 3 - 0x8C14010A, // 0024 GETMET R5 R0 K10 - 0x601C0018, // 0025 GETGBL R7 G24 - 0x5820000B, // 0026 LDCONST R8 K11 - 0x5C240800, // 0027 MOVE R9 R4 - 0x7C1C0400, // 0028 CALL R7 2 - 0x7C140400, // 0029 CALL R5 2 - 0x8C140102, // 002A GETMET R5 R0 K2 - 0x7C140200, // 002B CALL R5 1 - 0x4C180000, // 002C LDNIL R6 - 0x20180A06, // 002D NE R6 R5 R6 - 0x781A001F, // 002E JMPF R6 #004F - 0x88180B06, // 002F GETMBR R6 R5 K6 - 0x1C180D04, // 0030 EQ R6 R6 K4 - 0x781A0013, // 0031 JMPF R6 #0046 - 0x88180B0C, // 0032 GETMBR R6 R5 K12 - 0x1C180D0D, // 0033 EQ R6 R6 K13 - 0x781A0010, // 0034 JMPF R6 #0046 - 0x8C180100, // 0035 GETMET R6 R0 K0 - 0x7C180200, // 0036 CALL R6 1 - 0x8C180101, // 0037 GETMET R6 R0 K1 - 0x7C180200, // 0038 CALL R6 1 - 0x1C1C0D02, // 0039 EQ R7 R6 K2 - 0x781E0003, // 003A JMPF R7 #003F - 0x8C1C010A, // 003B GETMET R7 R0 K10 - 0x5824000E, // 003C LDCONST R9 K14 - 0x7C1C0400, // 003D CALL R7 2 - 0x70020005, // 003E JMP #0045 - 0x8C1C010A, // 003F GETMET R7 R0 K10 - 0x60240018, // 0040 GETGBL R9 G24 - 0x5828000F, // 0041 LDCONST R10 K15 - 0x5C2C0C00, // 0042 MOVE R11 R6 - 0x7C240400, // 0043 CALL R9 2 - 0x7C1C0400, // 0044 CALL R7 2 - 0x70020008, // 0045 JMP #004F - 0x8C180110, // 0046 GETMET R6 R0 K16 - 0x88200111, // 0047 GETMBR R8 R0 K17 - 0x7C180400, // 0048 CALL R6 2 - 0x8C1C010A, // 0049 GETMET R7 R0 K10 - 0x60240018, // 004A GETGBL R9 G24 - 0x58280012, // 004B LDCONST R10 K18 - 0x882C0D13, // 004C GETMBR R11 R6 K19 - 0x7C240400, // 004D CALL R9 2 - 0x7C1C0400, // 004E CALL R7 2 - 0x8C18010A, // 004F GETMET R6 R0 K10 - 0x58200014, // 0050 LDCONST R8 K20 - 0x7C180400, // 0051 CALL R6 2 - 0x8C18010A, // 0052 GETMET R6 R0 K10 - 0x60200018, // 0053 GETGBL R8 G24 - 0x58240015, // 0054 LDCONST R9 K21 - 0x5C280200, // 0055 MOVE R10 R1 - 0x5C2C0800, // 0056 MOVE R11 R4 - 0x5C300600, // 0057 MOVE R12 R3 - 0x7C200800, // 0058 CALL R8 4 - 0x7C180400, // 0059 CALL R6 2 - 0x80000000, // 005A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_unary_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ - be_nested_proto( - 14, /* nstack */ - 4, /* 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(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(ExpressionResult), - /* K4 */ be_nested_str_weak(literal), - /* K5 */ be_nested_str_weak(nil), - /* K6 */ be_nested_str_weak(type), - /* K7 */ be_nested_str_weak(next), - /* K8 */ be_nested_str_weak(process_unary_expression), - /* K9 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K10 */ be_nested_str_weak(expr), - /* K11 */ be_nested_str_weak(has_dynamic), - /* K12 */ be_nested_str_weak(has_dangerous), - /* K13 */ be_nested_str_weak(return_type), - /* K14 */ be_nested_str_weak(instance_for_validation), - /* K15 */ be_nested_str_weak(process_primary_expression), - }), - be_str_weak(process_unary_expression), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 K0 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL R5 - 0x1C140805, // 0003 EQ R5 R4 R5 - 0x78160007, // 0004 JMPF R5 #000D - 0x8C140101, // 0005 GETMET R5 R0 K1 - 0x581C0002, // 0006 LDCONST R7 K2 - 0x7C140400, // 0007 CALL R5 2 - 0x88140103, // 0008 GETMBR R5 R0 K3 - 0x8C140B04, // 0009 GETMET R5 R5 K4 - 0x581C0005, // 000A LDCONST R7 K5 - 0x7C140400, // 000B CALL R5 2 - 0x80040A00, // 000C RET 1 R5 - 0x88140906, // 000D GETMBR R5 R4 K6 - 0x541A0009, // 000E LDINT R6 10 - 0x1C140A06, // 000F EQ R5 R5 R6 - 0x78160012, // 0010 JMPF R5 #0024 - 0x8C140107, // 0011 GETMET R5 R0 K7 - 0x7C140200, // 0012 CALL R5 1 - 0x8C140108, // 0013 GETMET R5 R0 K8 - 0x5C1C0200, // 0014 MOVE R7 R1 - 0x50200000, // 0015 LDBOOL R8 0 0 - 0x5C240600, // 0016 MOVE R9 R3 - 0x7C140800, // 0017 CALL R5 4 - 0x8C180103, // 0018 GETMET R6 R0 K3 - 0x60200018, // 0019 GETGBL R8 G24 - 0x58240009, // 001A LDCONST R9 K9 - 0x88280B0A, // 001B GETMBR R10 R5 K10 - 0x7C200400, // 001C CALL R8 2 - 0x88240B0B, // 001D GETMBR R9 R5 K11 - 0x88280B0C, // 001E GETMBR R10 R5 K12 - 0x502C0200, // 001F LDBOOL R11 1 0 - 0x88300B0D, // 0020 GETMBR R12 R5 K13 - 0x88340B0E, // 0021 GETMBR R13 R5 K14 - 0x7C180E00, // 0022 CALL R6 7 - 0x80040C00, // 0023 RET 1 R6 - 0x88140906, // 0024 GETMBR R5 R4 K6 - 0x541A0008, // 0025 LDINT R6 9 - 0x1C140A06, // 0026 EQ R5 R5 R6 - 0x78160007, // 0027 JMPF R5 #0030 - 0x8C140107, // 0028 GETMET R5 R0 K7 - 0x7C140200, // 0029 CALL R5 1 - 0x8C140108, // 002A GETMET R5 R0 K8 - 0x5C1C0200, // 002B MOVE R7 R1 - 0x50200000, // 002C LDBOOL R8 0 0 - 0x5C240600, // 002D MOVE R9 R3 - 0x7C140800, // 002E CALL R5 4 - 0x80040A00, // 002F RET 1 R5 - 0x8C14010F, // 0030 GETMET R5 R0 K15 - 0x5C1C0200, // 0031 MOVE R7 R1 - 0x5C200400, // 0032 MOVE R8 R2 - 0x5C240600, // 0033 MOVE R9 R3 - 0x7C140800, // 0034 CALL R5 4 - 0x80040A00, // 0035 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_whitespace_including_newlines -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace_including_newlines), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060011, // 0002 JMPT R1 #0015 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000A, // 0007 JMPF R2 #0013 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0x540E0024, // 0009 LDINT R3 37 - 0x1C080403, // 000A EQ R2 R2 R3 - 0x740A0003, // 000B JMPT R2 #0010 - 0x88080302, // 000C GETMBR R2 R1 K2 - 0x540E0022, // 000D LDINT R3 35 - 0x1C080403, // 000E EQ R2 R2 R3 - 0x780A0002, // 000F JMPF R2 #0013 - 0x8C080103, // 0010 GETMET R2 R0 K3 - 0x7C080200, // 0011 CALL R2 1 - 0x70020000, // 0012 JMP #0014 - 0x70020000, // 0013 JMP #0015 - 0x7001FFEA, // 0014 JMP #0000 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_additive_expression), - /* K5 */ be_nested_str_weak(CONTEXT_ARGUMENT), - /* K6 */ be_nested_str_weak(expr), - /* K7 */ be_nested_str_weak(process_value), - /* K8 */ be_nested_str_weak(push), - /* K9 */ be_nested_str_weak(current), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[81]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x60080012, // 0002 GETGBL R2 G18 - 0x7C080000, // 0003 CALL R2 0 - 0x8C0C0101, // 0004 GETMET R3 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x740E0032, // 0006 JMPT R3 #003A - 0x8C0C0102, // 0007 GETMET R3 R0 K2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x740E002F, // 0009 JMPT R3 #003A - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x8C0C0102, // 000C GETMET R3 R0 K2 - 0x7C0C0200, // 000D CALL R3 1 - 0x780E0000, // 000E JMPF R3 #0010 - 0x70020029, // 000F JMP #003A - 0x4C0C0000, // 0010 LDNIL R3 - 0x78060006, // 0011 JMPF R1 #0019 - 0x8C100104, // 0012 GETMET R4 R0 K4 - 0x88180105, // 0013 GETMBR R6 R0 K5 - 0x501C0200, // 0014 LDBOOL R7 1 0 - 0x50200200, // 0015 LDBOOL R8 1 0 - 0x7C100800, // 0016 CALL R4 4 - 0x880C0906, // 0017 GETMBR R3 R4 K6 - 0x70020003, // 0018 JMP #001D - 0x8C100107, // 0019 GETMET R4 R0 K7 - 0x88180105, // 001A GETMBR R6 R0 K5 - 0x7C100400, // 001B CALL R4 2 - 0x880C0906, // 001C GETMBR R3 R4 K6 - 0x8C100508, // 001D GETMET R4 R2 K8 - 0x5C180600, // 001E MOVE R6 R3 - 0x7C100400, // 001F CALL R4 2 - 0x8C100103, // 0020 GETMET R4 R0 K3 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100109, // 0022 GETMET R4 R0 K9 - 0x7C100200, // 0023 CALL R4 1 - 0x4C140000, // 0024 LDNIL R5 - 0x20100805, // 0025 NE R4 R4 R5 - 0x7812000A, // 0026 JMPF R4 #0032 - 0x8C100109, // 0027 GETMET R4 R0 K9 - 0x7C100200, // 0028 CALL R4 1 - 0x8810090A, // 0029 GETMBR R4 R4 K10 - 0x5416001D, // 002A LDINT R5 30 - 0x1C100805, // 002B EQ R4 R4 R5 - 0x78120004, // 002C JMPF R4 #0032 - 0x8C10010B, // 002D GETMET R4 R0 K11 - 0x7C100200, // 002E CALL R4 1 - 0x8C100103, // 002F GETMET R4 R0 K3 - 0x7C100200, // 0030 CALL R4 1 - 0x70020006, // 0031 JMP #0039 - 0x8C100102, // 0032 GETMET R4 R0 K2 - 0x7C100200, // 0033 CALL R4 1 - 0x74120003, // 0034 JMPT R4 #0039 - 0x8C10010C, // 0035 GETMET R4 R0 K12 - 0x5818000D, // 0036 LDCONST R6 K13 - 0x7C100400, // 0037 CALL R4 2 - 0x70020000, // 0038 JMP #003A - 0x7001FFC9, // 0039 JMP #0004 - 0x8C0C010E, // 003A GETMET R3 R0 K14 - 0x7C0C0200, // 003B CALL R3 1 - 0x580C000F, // 003C LDCONST R3 K15 - 0x60100010, // 003D GETGBL R4 G16 - 0x6014000C, // 003E GETGBL R5 G12 - 0x5C180400, // 003F MOVE R6 R2 - 0x7C140200, // 0040 CALL R5 1 - 0x04140B11, // 0041 SUB R5 R5 K17 - 0x40162005, // 0042 CONNECT R5 K16 R5 - 0x7C100200, // 0043 CALL R4 1 - 0xA8020007, // 0044 EXBLK 0 #004D - 0x5C140800, // 0045 MOVE R5 R4 - 0x7C140000, // 0046 CALL R5 0 - 0x24180B10, // 0047 GT R6 R5 K16 - 0x781A0000, // 0048 JMPF R6 #004A - 0x000C0712, // 0049 ADD R3 R3 K18 - 0x94180405, // 004A GETIDX R6 R2 R5 - 0x000C0606, // 004B ADD R3 R3 R6 - 0x7001FFF7, // 004C JMP #0045 - 0x58100013, // 004D LDCONST R4 K19 - 0xAC100200, // 004E CATCH R4 1 0 - 0xB0080000, // 004F RAISE 2 R0 R0 - 0x80040600, // 0050 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_warnings -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_warnings, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(warnings), - }), - be_str_weak(get_warnings), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[15]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(value), - /* K3 */ be_nested_str_weak(next), - /* K4 */ be_nested_str_weak(convert_time_to_ms), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(startswith), + /* K3 */ be_nested_str_weak(0x), + /* K4 */ be_nested_str_weak(0xFF_X25s), /* K5 */ be_const_int(2), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(_validate_object_reference), - /* K8 */ be_nested_str_weak(duration), - /* K9 */ be_nested_str_weak(process_primary_expression), - /* K10 */ be_nested_str_weak(CONTEXT_TIME), - /* K11 */ be_nested_str_weak(expr), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20time_X20value), - /* K14 */ be_nested_str_weak(1000), + /* K6 */ be_const_int(2147483647), + /* K7 */ be_nested_str_weak(is_color_name), + /* K8 */ be_nested_str_weak(get_named_color_value), + /* K9 */ be_nested_str_weak(0xFFFFFFFF), }), - be_str_weak(process_time_value), + be_str_weak(convert_color), &be_const_str_solidified, - ( &(const binstruction[63]) { /* 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 - 0x540E0004, // 0006 LDINT R3 5 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0009, // 0008 JMPF R2 #0013 - 0x88080302, // 0009 GETMBR R2 R1 K2 - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x7C0C0200, // 000B CALL R3 1 - 0x600C0008, // 000C GETGBL R3 G8 - 0x8C100104, // 000D GETMET R4 R0 K4 - 0x5C180400, // 000E MOVE R6 R2 - 0x7C100400, // 000F CALL R4 2 - 0x7C0C0200, // 0010 CALL R3 1 - 0x80040600, // 0011 RET 1 R3 - 0x7002002A, // 0012 JMP #003E - 0x4C080000, // 0013 LDNIL R2 - 0x20080202, // 0014 NE R2 R1 R2 - 0x780A0010, // 0015 JMPF R2 #0027 - 0x88080301, // 0016 GETMBR R2 R1 K1 - 0x1C080505, // 0017 EQ R2 R2 K5 - 0x780A000D, // 0018 JMPF R2 #0027 - 0x88080302, // 0019 GETMBR R2 R1 K2 - 0x8C0C0103, // 001A GETMET R3 R0 K3 - 0x7C0C0200, // 001B CALL R3 1 - 0x600C0008, // 001C GETGBL R3 G8 - 0x60100009, // 001D GETGBL R4 G9 - 0x6014000A, // 001E GETGBL R5 G10 - 0x5C180400, // 001F MOVE R6 R2 - 0x7C140200, // 0020 CALL R5 1 - 0x7C100200, // 0021 CALL R4 1 - 0x541603E7, // 0022 LDINT R5 1000 - 0x08100805, // 0023 MUL R4 R4 R5 - 0x7C0C0200, // 0024 CALL R3 1 - 0x80040600, // 0025 RET 1 R3 - 0x70020016, // 0026 JMP #003E - 0x4C080000, // 0027 LDNIL R2 - 0x20080202, // 0028 NE R2 R1 R2 - 0x780A000F, // 0029 JMPF R2 #003A - 0x88080301, // 002A GETMBR R2 R1 K1 - 0x1C080506, // 002B EQ R2 R2 K6 - 0x780A000C, // 002C JMPF R2 #003A - 0x88080302, // 002D GETMBR R2 R1 K2 - 0x8C0C0107, // 002E GETMET R3 R0 K7 - 0x5C140400, // 002F MOVE R5 R2 - 0x58180008, // 0030 LDCONST R6 K8 - 0x7C0C0600, // 0031 CALL R3 3 - 0x8C0C0109, // 0032 GETMET R3 R0 K9 - 0x8814010A, // 0033 GETMBR R5 R0 K10 - 0x50180200, // 0034 LDBOOL R6 1 0 - 0x501C0000, // 0035 LDBOOL R7 0 0 - 0x7C0C0800, // 0036 CALL R3 4 - 0x8810070B, // 0037 GETMBR R4 R3 K11 - 0x80040800, // 0038 RET 1 R4 - 0x70020003, // 0039 JMP #003E - 0x8C08010C, // 003A GETMET R2 R0 K12 - 0x5810000D, // 003B LDCONST R4 K13 - 0x7C080400, // 003C CALL R2 2 - 0x80061C00, // 003D RET 1 K14 - 0x80000000, // 003E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _add_typed_parameter_to_symbol_table -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__add_typed_parameter_to_symbol_table, /* name */ - be_nested_proto( - 8, /* 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(color), - /* K1 */ be_nested_str_weak(create_color), - /* K2 */ be_nested_str_weak(palette), - /* K3 */ be_nested_str_weak(create_palette), - /* K4 */ be_nested_str_weak(animation), - /* K5 */ be_nested_str_weak(create_animation), - /* K6 */ be_nested_str_weak(value_provider), - /* K7 */ be_nested_str_weak(create_value_provider), - /* K8 */ be_nested_str_weak(create_variable), - }), - be_str_weak(_add_typed_parameter_to_symbol_table), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x1C100700, // 0000 EQ R4 R3 K0 - 0x78120004, // 0001 JMPF R4 #0007 - 0x8C100301, // 0002 GETMET R4 R1 K1 - 0x5C180400, // 0003 MOVE R6 R2 - 0x4C1C0000, // 0004 LDNIL R7 - 0x7C100600, // 0005 CALL R4 3 - 0x70020017, // 0006 JMP #001F - 0x1C100702, // 0007 EQ R4 R3 K2 - 0x78120004, // 0008 JMPF R4 #000E - 0x8C100303, // 0009 GETMET R4 R1 K3 - 0x5C180400, // 000A MOVE R6 R2 - 0x4C1C0000, // 000B LDNIL R7 - 0x7C100600, // 000C CALL R4 3 - 0x70020010, // 000D JMP #001F - 0x1C100704, // 000E EQ R4 R3 K4 - 0x78120004, // 000F JMPF R4 #0015 - 0x8C100305, // 0010 GETMET R4 R1 K5 - 0x5C180400, // 0011 MOVE R6 R2 - 0x4C1C0000, // 0012 LDNIL R7 - 0x7C100600, // 0013 CALL R4 3 - 0x70020009, // 0014 JMP #001F - 0x1C100706, // 0015 EQ R4 R3 K6 - 0x78120004, // 0016 JMPF R4 #001C - 0x8C100307, // 0017 GETMET R4 R1 K7 - 0x5C180400, // 0018 MOVE R6 R2 - 0x4C1C0000, // 0019 LDNIL R7 - 0x7C100600, // 001A CALL R4 3 - 0x70020002, // 001B JMP #001F - 0x8C100308, // 001C GETMET R4 R1 K8 - 0x5C180400, // 001D MOVE R6 R2 - 0x7C100400, // 001E CALL R4 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_log_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* 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(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K7 */ be_nested_str_weak(skip_statement), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(expect_right_paren), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(process_log_call), - /* K12 */ be_nested_str_weak(fluent), - /* K13 */ be_nested_str_weak(add), - }), - be_str_weak(process_log_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0002, // 0008 JMPT R2 #000C - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0x20080504, // 000A NE R2 R2 K4 - 0x780A0005, // 000B JMPF R2 #0012 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0x80000400, // 0011 RET 0 - 0x88080308, // 0012 GETMBR R2 R1 K8 - 0x8C0C0100, // 0013 GETMET R3 R0 K0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0109, // 0015 GETMET R3 R0 K9 - 0x7C0C0200, // 0016 CALL R3 1 - 0x8C0C010A, // 0017 GETMET R3 R0 K10 - 0x7C0C0200, // 0018 CALL R3 1 - 0x8C10010B, // 0019 GETMET R4 R0 K11 - 0x5C180400, // 001A MOVE R6 R2 - 0x581C000C, // 001B LDCONST R7 K12 - 0x5C200600, // 001C MOVE R8 R3 - 0x7C100800, // 001D CALL R4 4 - 0x8C14010D, // 001E GETMET R5 R0 K13 - 0x5C1C0800, // 001F MOVE R7 R4 - 0x7C140400, // 0020 CALL R5 2 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile_template_animation_body -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile_template_animation_body, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(process_statement), - /* K6 */ be_nested_str_weak(run_statements), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(comment), - /* K9 */ be_nested_str_weak(add), - /* K10 */ be_nested_str_weak(self_X2Eadd_X28_X25s__X29_X25s), - /* K11 */ be_nested_str_weak(stop_iteration), - /* K12 */ be_nested_str_weak(join_output), - /* K13 */ be_nested_str_weak(error), - /* K14 */ be_nested_str_weak(Template_X20animation_X20body_X20transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile_template_animation_body), - &be_const_str_solidified, - ( &(const binstruction[78]) { /* code */ - 0xA8020041, // 0000 EXBLK 0 #0043 - 0x58040000, // 0001 LDCONST R1 K0 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x740A001F, // 0004 JMPT R2 #0025 - 0x8C080102, // 0005 GETMET R2 R0 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0006, // 0009 JMPF R3 #0011 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0x5412001A, // 000B LDINT R4 27 - 0x1C0C0604, // 000C EQ R3 R3 R4 - 0x780E0002, // 000D JMPF R3 #0011 - 0x1C0C0300, // 000E EQ R3 R1 K0 - 0x780E0000, // 000F JMPF R3 #0011 - 0x70020013, // 0010 JMP #0025 - 0x4C0C0000, // 0011 LDNIL R3 - 0x200C0403, // 0012 NE R3 R2 R3 - 0x780E0005, // 0013 JMPF R3 #001A - 0x880C0503, // 0014 GETMBR R3 R2 K3 - 0x54120019, // 0015 LDINT R4 26 - 0x1C0C0604, // 0016 EQ R3 R3 R4 - 0x780E0001, // 0017 JMPF R3 #001A - 0x00040304, // 0018 ADD R1 R1 K4 - 0x70020007, // 0019 JMP #0022 - 0x4C0C0000, // 001A LDNIL R3 - 0x200C0403, // 001B NE R3 R2 R3 - 0x780E0004, // 001C JMPF R3 #0022 - 0x880C0503, // 001D GETMBR R3 R2 K3 - 0x5412001A, // 001E LDINT R4 27 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E0000, // 0020 JMPF R3 #0022 - 0x04040304, // 0021 SUB R1 R1 K4 - 0x8C0C0105, // 0022 GETMET R3 R0 K5 - 0x7C0C0200, // 0023 CALL R3 1 - 0x7001FFDC, // 0024 JMP #0002 - 0x6008000C, // 0025 GETGBL R2 G12 - 0x880C0106, // 0026 GETMBR R3 R0 K6 - 0x7C080200, // 0027 CALL R2 1 - 0x24080500, // 0028 GT R2 R2 K0 - 0x780A0012, // 0029 JMPF R2 #003D - 0x60080010, // 002A GETGBL R2 G16 - 0x880C0106, // 002B GETMBR R3 R0 K6 - 0x7C080200, // 002C CALL R2 1 - 0xA802000B, // 002D EXBLK 0 #003A - 0x5C0C0400, // 002E MOVE R3 R2 - 0x7C0C0000, // 002F CALL R3 0 - 0x94100707, // 0030 GETIDX R4 R3 K7 - 0x94140708, // 0031 GETIDX R5 R3 K8 - 0x8C180109, // 0032 GETMET R6 R0 K9 - 0x60200018, // 0033 GETGBL R8 G24 - 0x5824000A, // 0034 LDCONST R9 K10 - 0x5C280800, // 0035 MOVE R10 R4 - 0x5C2C0A00, // 0036 MOVE R11 R5 - 0x7C200600, // 0037 CALL R8 3 - 0x7C180400, // 0038 CALL R6 2 - 0x7001FFF3, // 0039 JMP #002E - 0x5808000B, // 003A LDCONST R2 K11 - 0xAC080200, // 003B CATCH R2 1 0 - 0xB0080000, // 003C RAISE 2 R0 R0 - 0x8C08010C, // 003D GETMET R2 R0 K12 - 0x7C080200, // 003E CALL R2 1 - 0xA8040001, // 003F EXBLK 1 1 - 0x80040400, // 0040 RET 1 R2 - 0xA8040001, // 0041 EXBLK 1 1 - 0x70020009, // 0042 JMP #004D - 0xAC040002, // 0043 CATCH R1 0 2 - 0x70020006, // 0044 JMP #004C - 0x8C0C010D, // 0045 GETMET R3 R0 K13 - 0x60140018, // 0046 GETGBL R5 G24 - 0x5818000E, // 0047 LDCONST R6 K14 - 0x5C1C0400, // 0048 MOVE R7 R2 - 0x7C140400, // 0049 CALL R5 2 - 0x7C0C0400, // 004A CALL R3 2 - 0x70020000, // 004B JMP #004D - 0xB0080000, // 004C RAISE 2 R0 R0 - 0x80000000, // 004D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_standalone_log -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* 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(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K7 */ be_nested_str_weak(skip_statement), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(expect_right_paren), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(process_log_call), - /* K12 */ be_nested_str_weak(standalone), - /* K13 */ be_nested_str_weak(add), - }), - be_str_weak(process_standalone_log), - &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0002, // 0008 JMPT R2 #000C - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0x20080504, // 000A NE R2 R2 K4 - 0x780A0005, // 000B JMPF R2 #0012 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x58100006, // 000D LDCONST R4 K6 - 0x7C080400, // 000E CALL R2 2 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x7C080200, // 0010 CALL R2 1 - 0x80000400, // 0011 RET 0 - 0x88080308, // 0012 GETMBR R2 R1 K8 - 0x8C0C0100, // 0013 GETMET R3 R0 K0 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C0C0109, // 0015 GETMET R3 R0 K9 - 0x7C0C0200, // 0016 CALL R3 1 - 0x8C0C010A, // 0017 GETMET R3 R0 K10 - 0x7C0C0200, // 0018 CALL R3 1 - 0x8C10010B, // 0019 GETMET R4 R0 K11 - 0x5C180400, // 001A MOVE R6 R2 - 0x581C000C, // 001B LDCONST R7 K12 - 0x5C200600, // 001C MOVE R8 R3 - 0x7C100800, // 001D CALL R4 4 - 0x8C14010D, // 001E GETMET R5 R0 K13 - 0x5C1C0800, // 001F MOVE R7 R4 - 0x7C140400, // 0020 CALL R5 2 - 0x80000000, // 0021 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_comma -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* 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[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), - }), - be_str_weak(expect_comma), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0006, // 0004 JMPF R2 #000C - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001D, // 0006 LDINT R3 30 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x780A0002, // 0008 JMPF R2 #000C - 0x8C080102, // 0009 GETMET R2 R0 K2 - 0x7C080200, // 000A CALL R2 1 - 0x70020002, // 000B JMP #000F - 0x8C080103, // 000C GETMET R2 R0 K3 - 0x58100004, // 000D LDCONST R4 K4 - 0x7C080400, // 000E CALL R2 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _is_valid_identifier -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__is_valid_identifier, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(a), - /* K3 */ be_nested_str_weak(z), - /* K4 */ be_nested_str_weak(A), - /* K5 */ be_nested_str_weak(Z), - /* K6 */ be_nested_str_weak(_), - /* K7 */ be_const_int(1), - /* K8 */ be_nested_str_weak(0), - /* K9 */ be_nested_str_weak(9), - /* K10 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_is_valid_identifier), - &be_const_str_solidified, - ( &(const binstruction[61]) { /* code */ + ( &(const binstruction[36]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C0C0200, // 0003 CALL R3 1 - 0x1C0C0701, // 0004 EQ R3 R3 K1 - 0x780E0001, // 0005 JMPF R3 #0008 - 0x500C0000, // 0006 LDBOOL R3 0 0 - 0x80040600, // 0007 RET 1 R3 - 0x940C0301, // 0008 GETIDX R3 R1 K1 - 0x28100702, // 0009 GE R4 R3 K2 - 0x78120001, // 000A JMPF R4 #000D - 0x18100703, // 000B LE R4 R3 K3 - 0x74120006, // 000C JMPT R4 #0014 - 0x28100704, // 000D GE R4 R3 K4 - 0x78120001, // 000E JMPF R4 #0011 - 0x18100705, // 000F LE R4 R3 K5 - 0x74120002, // 0010 JMPT R4 #0014 - 0x1C100706, // 0011 EQ R4 R3 K6 - 0x74120000, // 0012 JMPT R4 #0014 - 0x50100001, // 0013 LDBOOL R4 0 1 - 0x50100200, // 0014 LDBOOL R4 1 0 - 0x74120001, // 0015 JMPT R4 #0018 - 0x50100000, // 0016 LDBOOL R4 0 0 - 0x80040800, // 0017 RET 1 R4 - 0x60100010, // 0018 GETGBL R4 G16 - 0x6014000C, // 0019 GETGBL R5 G12 - 0x5C180200, // 001A MOVE R6 R1 - 0x7C140200, // 001B CALL R5 1 - 0x04140B07, // 001C SUB R5 R5 K7 - 0x40160E05, // 001D CONNECT R5 K7 R5 - 0x7C100200, // 001E CALL R4 1 - 0xA8020017, // 001F EXBLK 0 #0038 - 0x5C140800, // 0020 MOVE R5 R4 - 0x7C140000, // 0021 CALL R5 0 - 0x94180205, // 0022 GETIDX R6 R1 R5 - 0x281C0D02, // 0023 GE R7 R6 K2 - 0x781E0001, // 0024 JMPF R7 #0027 - 0x181C0D03, // 0025 LE R7 R6 K3 - 0x741E000A, // 0026 JMPT R7 #0032 - 0x281C0D04, // 0027 GE R7 R6 K4 - 0x781E0001, // 0028 JMPF R7 #002B - 0x181C0D05, // 0029 LE R7 R6 K5 - 0x741E0006, // 002A JMPT R7 #0032 - 0x281C0D08, // 002B GE R7 R6 K8 - 0x781E0001, // 002C JMPF R7 #002F - 0x181C0D09, // 002D LE R7 R6 K9 - 0x741E0002, // 002E JMPT R7 #0032 - 0x1C1C0D06, // 002F EQ R7 R6 K6 - 0x741E0000, // 0030 JMPT R7 #0032 - 0x501C0001, // 0031 LDBOOL R7 0 1 - 0x501C0200, // 0032 LDBOOL R7 1 0 - 0x741E0002, // 0033 JMPT R7 #0037 - 0x501C0000, // 0034 LDBOOL R7 0 0 - 0xA8040001, // 0035 EXBLK 1 1 - 0x80040E00, // 0036 RET 1 R7 - 0x7001FFE7, // 0037 JMP #0020 - 0x5810000A, // 0038 LDCONST R4 K10 - 0xAC100200, // 0039 CATCH R4 1 0 - 0xB0080000, // 003A RAISE 2 R0 R0 - 0x50100200, // 003B LDBOOL R4 1 0 - 0x80040800, // 003C RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ - be_nested_proto( - 18, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 6, /* nstack */ - 2, /* 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[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(create_color), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x68080000, // 0000 GETUPV R2 U0 - 0x88080500, // 0001 GETMBR R2 R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x5C100000, // 0003 MOVE R4 R0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C080600, // 0005 CALL R2 3 - 0x80040400, // 0006 RET 1 R2 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[39]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(color), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_const_int(0), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(peek), - /* K11 */ be_nested_str_weak(value), - /* K12 */ be_nested_str_weak(), - /* K13 */ be_nested_str_weak(_X20_X20), - /* K14 */ be_nested_str_weak(symbol_table), - /* K15 */ be_nested_str_weak(get), - /* K16 */ be_nested_str_weak(process_function_arguments), - /* K17 */ be_nested_str_weak(_split_function_arguments), - /* K18 */ be_nested_str_weak(instance), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(params), - /* K21 */ be_nested_str_weak(find), - /* K22 */ be_nested_str_weak(param_types), - /* K23 */ be_nested_str_weak(_validate_template_call_arguments), - /* K24 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K25 */ be_nested_str_weak(engine), - /* K26 */ be_nested_str_weak(add), - /* K27 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_template_X28_X25s_X29_X25s), - /* K28 */ be_nested_str_weak(create_color), - /* K29 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), - /* K30 */ be_nested_str_weak(_validate_color_provider_factory_exists), - /* K31 */ be_nested_str_weak(error), - /* K32 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K33 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K34 */ be_nested_str_weak(_create_instance_for_validation), - /* K35 */ be_nested_str_weak(_process_named_arguments_for_color_provider), - /* K36 */ be_nested_str_weak(_X25s_), - /* K37 */ be_nested_str_weak(_process_simple_value_assignment), - /* K38 */ be_nested_str_weak(CONTEXT_COLOR), - }), - be_str_weak(process_color), - &be_const_str_solidified, - ( &(const binstruction[204]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0x1C0C0708, // 0011 EQ R3 R3 K8 - 0x740E0002, // 0012 JMPT R3 #0016 - 0x880C0507, // 0013 GETMBR R3 R2 K7 - 0x1C0C0709, // 0014 EQ R3 R3 K9 - 0x780E00AE, // 0015 JMPF R3 #00C5 - 0x8C0C010A, // 0016 GETMET R3 R0 K10 - 0x7C0C0200, // 0017 CALL R3 1 - 0x4C100000, // 0018 LDNIL R4 - 0x200C0604, // 0019 NE R3 R3 R4 - 0x780E00A9, // 001A JMPF R3 #00C5 - 0x8C0C010A, // 001B GETMET R3 R0 K10 - 0x7C0C0200, // 001C CALL R3 1 - 0x880C0707, // 001D GETMBR R3 R3 K7 - 0x54120017, // 001E LDINT R4 24 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E00A3, // 0020 JMPF R3 #00C5 - 0x880C050B, // 0021 GETMBR R3 R2 K11 - 0x8C100100, // 0022 GETMET R4 R0 K0 - 0x7C100200, // 0023 CALL R4 1 - 0x5810000C, // 0024 LDCONST R4 K12 - 0x8C140106, // 0025 GETMET R5 R0 K6 - 0x7C140200, // 0026 CALL R5 1 - 0x4C180000, // 0027 LDNIL R6 - 0x20140A06, // 0028 NE R5 R5 R6 - 0x7816000C, // 0029 JMPF R5 #0037 - 0x8C140106, // 002A GETMET R5 R0 K6 - 0x7C140200, // 002B CALL R5 1 - 0x88140B07, // 002C GETMBR R5 R5 K7 - 0x541A0024, // 002D LDINT R6 37 - 0x1C140A06, // 002E EQ R5 R5 R6 - 0x78160006, // 002F JMPF R5 #0037 - 0x8C140106, // 0030 GETMET R5 R0 K6 - 0x7C140200, // 0031 CALL R5 1 - 0x88140B0B, // 0032 GETMBR R5 R5 K11 - 0x00161A05, // 0033 ADD R5 K13 R5 - 0x5C100A00, // 0034 MOVE R4 R5 - 0x8C140100, // 0035 GETMET R5 R0 K0 - 0x7C140200, // 0036 CALL R5 1 - 0x8814010E, // 0037 GETMBR R5 R0 K14 - 0x8C140B0F, // 0038 GETMET R5 R5 K15 - 0x5C1C0600, // 0039 MOVE R7 R3 - 0x7C140400, // 003A CALL R5 2 - 0x4C180000, // 003B LDNIL R6 - 0x20180A06, // 003C NE R6 R5 R6 - 0x781A003D, // 003D JMPF R6 #007C - 0x88180B07, // 003E GETMBR R6 R5 K7 - 0x541E000D, // 003F LDINT R7 14 - 0x1C180C07, // 0040 EQ R6 R6 R7 - 0x781A0039, // 0041 JMPF R6 #007C - 0x8C180110, // 0042 GETMET R6 R0 K16 - 0x50200000, // 0043 LDBOOL R8 0 0 - 0x7C180400, // 0044 CALL R6 2 - 0x201C0D0C, // 0045 NE R7 R6 K12 - 0x781E0003, // 0046 JMPF R7 #004B - 0x8C1C0111, // 0047 GETMET R7 R0 K17 - 0x5C240C00, // 0048 MOVE R9 R6 - 0x7C1C0400, // 0049 CALL R7 2 - 0x70020001, // 004A JMP #004D - 0x601C0012, // 004B GETGBL R7 G18 - 0x7C1C0000, // 004C CALL R7 0 - 0x88200B12, // 004D GETMBR R8 R5 K18 - 0x4C240000, // 004E LDNIL R9 - 0x20241009, // 004F NE R9 R8 R9 - 0x78260013, // 0050 JMPF R9 #0065 - 0x8C241113, // 0051 GETMET R9 R8 K19 - 0x582C0014, // 0052 LDCONST R11 K20 - 0x7C240400, // 0053 CALL R9 2 - 0x7826000F, // 0054 JMPF R9 #0065 - 0x94241114, // 0055 GETIDX R9 R8 K20 - 0x8C281115, // 0056 GETMET R10 R8 K21 - 0x58300016, // 0057 LDCONST R12 K22 - 0x60340013, // 0058 GETGBL R13 G19 - 0x7C340000, // 0059 CALL R13 0 - 0x7C280600, // 005A CALL R10 3 - 0x8C2C0117, // 005B GETMET R11 R0 K23 - 0x5C340600, // 005C MOVE R13 R3 - 0x5C380E00, // 005D MOVE R14 R7 - 0x5C3C1200, // 005E MOVE R15 R9 - 0x5C401400, // 005F MOVE R16 R10 - 0x7C2C0A00, // 0060 CALL R11 5 - 0x742E0002, // 0061 JMPT R11 #0065 - 0x8C2C0104, // 0062 GETMET R11 R0 K4 - 0x7C2C0200, // 0063 CALL R11 1 - 0x80001600, // 0064 RET 0 - 0x20240D0C, // 0065 NE R9 R6 K12 - 0x78260004, // 0066 JMPF R9 #006C - 0x60240018, // 0067 GETGBL R9 G24 - 0x58280018, // 0068 LDCONST R10 K24 - 0x5C2C0C00, // 0069 MOVE R11 R6 - 0x7C240400, // 006A CALL R9 2 - 0x70020000, // 006B JMP #006D - 0x58240019, // 006C LDCONST R9 K25 - 0x8C28011A, // 006D GETMET R10 R0 K26 - 0x60300018, // 006E GETGBL R12 G24 - 0x5834001B, // 006F LDCONST R13 K27 - 0x5C380200, // 0070 MOVE R14 R1 - 0x5C3C0600, // 0071 MOVE R15 R3 - 0x5C401200, // 0072 MOVE R16 R9 - 0x5C440800, // 0073 MOVE R17 R4 - 0x7C300A00, // 0074 CALL R12 5 - 0x7C280400, // 0075 CALL R10 2 - 0x8828010E, // 0076 GETMBR R10 R0 K14 - 0x8C28151C, // 0077 GETMET R10 R10 K28 - 0x5C300200, // 0078 MOVE R12 R1 - 0x4C340000, // 0079 LDNIL R13 - 0x7C280600, // 007A CALL R10 3 - 0x70020047, // 007B JMP #00C4 - 0x4C180000, // 007C LDNIL R6 - 0x20180A06, // 007D NE R6 R5 R6 - 0x781A001D, // 007E JMPF R6 #009D - 0x88180B07, // 007F GETMBR R6 R5 K7 - 0x541E0004, // 0080 LDINT R7 5 - 0x1C180C07, // 0081 EQ R6 R6 R7 - 0x781A0019, // 0082 JMPF R6 #009D - 0x8C180110, // 0083 GETMET R6 R0 K16 - 0x50200000, // 0084 LDBOOL R8 0 0 - 0x7C180400, // 0085 CALL R6 2 - 0x201C0D0C, // 0086 NE R7 R6 K12 - 0x781E0004, // 0087 JMPF R7 #008D - 0x601C0018, // 0088 GETGBL R7 G24 - 0x58200018, // 0089 LDCONST R8 K24 - 0x5C240C00, // 008A MOVE R9 R6 - 0x7C1C0400, // 008B CALL R7 2 - 0x70020000, // 008C JMP #008E - 0x581C0019, // 008D LDCONST R7 K25 - 0x8C20011A, // 008E GETMET R8 R0 K26 - 0x60280018, // 008F GETGBL R10 G24 - 0x582C001D, // 0090 LDCONST R11 K29 - 0x5C300200, // 0091 MOVE R12 R1 - 0x5C340600, // 0092 MOVE R13 R3 - 0x5C380E00, // 0093 MOVE R14 R7 - 0x5C3C0800, // 0094 MOVE R15 R4 - 0x7C280A00, // 0095 CALL R10 5 - 0x7C200400, // 0096 CALL R8 2 - 0x8820010E, // 0097 GETMBR R8 R0 K14 - 0x8C20111C, // 0098 GETMET R8 R8 K28 - 0x5C280200, // 0099 MOVE R10 R1 - 0x4C2C0000, // 009A LDNIL R11 - 0x7C200600, // 009B CALL R8 3 - 0x70020026, // 009C JMP #00C4 - 0x8C18011E, // 009D GETMET R6 R0 K30 - 0x5C200600, // 009E MOVE R8 R3 - 0x7C180400, // 009F CALL R6 2 - 0x741A0008, // 00A0 JMPT R6 #00AA - 0x8C18011F, // 00A1 GETMET R6 R0 K31 - 0x60200018, // 00A2 GETGBL R8 G24 - 0x58240020, // 00A3 LDCONST R9 K32 - 0x5C280600, // 00A4 MOVE R10 R3 - 0x7C200400, // 00A5 CALL R8 2 - 0x7C180400, // 00A6 CALL R6 2 - 0x8C180104, // 00A7 GETMET R6 R0 K4 - 0x7C180200, // 00A8 CALL R6 1 - 0x80000C00, // 00A9 RET 0 - 0x8C18011A, // 00AA GETMET R6 R0 K26 - 0x60200018, // 00AB GETGBL R8 G24 - 0x58240021, // 00AC LDCONST R9 K33 - 0x5C280200, // 00AD MOVE R10 R1 - 0x5C2C0600, // 00AE MOVE R11 R3 - 0x5C300800, // 00AF MOVE R12 R4 - 0x7C200800, // 00B0 CALL R8 4 - 0x7C180400, // 00B1 CALL R6 2 - 0x8C180122, // 00B2 GETMET R6 R0 K34 - 0x5C200600, // 00B3 MOVE R8 R3 - 0x7C180400, // 00B4 CALL R6 2 - 0x4C1C0000, // 00B5 LDNIL R7 - 0x201C0C07, // 00B6 NE R7 R6 R7 - 0x781E0004, // 00B7 JMPF R7 #00BD - 0x881C010E, // 00B8 GETMBR R7 R0 K14 - 0x8C1C0F1C, // 00B9 GETMET R7 R7 K28 - 0x5C240200, // 00BA MOVE R9 R1 - 0x5C280C00, // 00BB MOVE R10 R6 - 0x7C1C0600, // 00BC CALL R7 3 - 0x8C1C0123, // 00BD GETMET R7 R0 K35 - 0x60240018, // 00BE GETGBL R9 G24 - 0x58280024, // 00BF LDCONST R10 K36 - 0x5C2C0200, // 00C0 MOVE R11 R1 - 0x7C240400, // 00C1 CALL R9 2 - 0x5C280600, // 00C2 MOVE R10 R3 - 0x7C1C0600, // 00C3 CALL R7 3 - 0x70020004, // 00C4 JMP #00CA - 0x8C0C0125, // 00C5 GETMET R3 R0 K37 - 0x5C140200, // 00C6 MOVE R5 R1 - 0x88180126, // 00C7 GETMBR R6 R0 K38 - 0x841C0000, // 00C8 CLOSURE R7 P0 - 0x7C0C0800, // 00C9 CALL R3 4 - 0xA0000000, // 00CA CLOSE R0 - 0x80000000, // 00CB RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_error_report -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(has_warnings), - /* K2 */ be_nested_str_weak(Compilation_X20warnings_X3A_X0A), - /* K3 */ be_nested_str_weak(warnings), - /* K4 */ be_nested_str_weak(_X20_X20), - /* K5 */ be_nested_str_weak(_X0A), - /* K6 */ be_nested_str_weak(stop_iteration), - /* K7 */ be_nested_str_weak(No_X20compilation_X20warnings), - }), - be_str_weak(get_error_report), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x8C080101, // 0001 GETMET R2 R0 K1 - 0x7C080200, // 0002 CALL R2 1 - 0x780A000D, // 0003 JMPF R2 #0012 - 0x00040302, // 0004 ADD R1 R1 K2 - 0x60080010, // 0005 GETGBL R2 G16 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x00120803, // 000B ADD R4 K4 R3 - 0x00100905, // 000C ADD R4 R4 K5 - 0x00040204, // 000D ADD R1 R1 R4 - 0x7001FFF9, // 000E JMP #0009 - 0x58080006, // 000F LDCONST R2 K6 - 0xAC080200, // 0010 CATCH R2 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x1C080300, // 0012 EQ R2 R1 K0 - 0x780A0000, // 0013 JMPF R2 #0015 - 0x80060E00, // 0014 RET 1 K7 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_statement, /* 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[42]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(add), - /* K3 */ be_nested_str_weak(value), - /* K4 */ be_nested_str_weak(next), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(strip), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), - /* K9 */ be_nested_str_weak(skip_statement), - /* K10 */ be_nested_str_weak(template), - /* K11 */ be_nested_str_weak(peek), - /* K12 */ be_nested_str_weak(animation), - /* K13 */ be_nested_str_weak(process_template_animation), - /* K14 */ be_nested_str_weak(Simple_X20_X27template_X27_X20is_X20not_X20supported_X2E_X20Use_X20_X27template_X20animation_X27_X20instead_X20to_X20create_X20reusable_X20animation_X20classes_X2E), - /* K15 */ be_nested_str_weak(strip_initialized), - /* K16 */ be_nested_str_weak(generate_default_strip_initialization), - /* K17 */ be_nested_str_weak(color), - /* K18 */ be_nested_str_weak(process_color), - /* K19 */ be_nested_str_weak(palette), - /* K20 */ be_nested_str_weak(process_palette), - /* K21 */ be_nested_str_weak(process_animation), - /* K22 */ be_nested_str_weak(set), - /* K23 */ be_nested_str_weak(process_set), - /* K24 */ be_nested_str_weak(sequence), - /* K25 */ be_nested_str_weak(process_sequence), - /* K26 */ be_nested_str_weak(run), - /* K27 */ be_nested_str_weak(process_run), - /* K28 */ be_nested_str_weak(import), - /* K29 */ be_nested_str_weak(process_import), - /* K30 */ be_nested_str_weak(on), - /* K31 */ be_nested_str_weak(process_event_handler), - /* K32 */ be_nested_str_weak(berry), - /* K33 */ be_nested_str_weak(process_berry_code_block), - /* K34 */ be_nested_str_weak(extern), - /* K35 */ be_nested_str_weak(process_external_function), - /* K36 */ be_nested_str_weak(Unknown_X20keyword_X20_X27_X25s_X27_X2E), - /* K37 */ be_const_int(1), - /* K38 */ be_nested_str_weak(log), - /* K39 */ be_nested_str_weak(process_standalone_log), - /* K40 */ be_nested_str_weak(process_property_assignment), - /* K41 */ be_nested_str_weak(Unexpected_X20token_X20_X27_X25s_X27_X2E), - }), - be_str_weak(process_statement), - &be_const_str_solidified, - ( &(const binstruction[168]) { /* 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 - 0x80000400, // 0005 RET 0 - 0x88080301, // 0006 GETMBR R2 R1 K1 - 0x540E0024, // 0007 LDINT R3 37 - 0x1C080403, // 0008 EQ R2 R2 R3 - 0x780A0005, // 0009 JMPF R2 #0010 - 0x8C080102, // 000A GETMET R2 R0 K2 - 0x88100303, // 000B GETMBR R4 R1 K3 - 0x7C080400, // 000C CALL R2 2 - 0x8C080104, // 000D GETMET R2 R0 K4 - 0x7C080200, // 000E CALL R2 1 - 0x80000400, // 000F RET 0 - 0x88080301, // 0010 GETMBR R2 R1 K1 - 0x540E0022, // 0011 LDINT R3 35 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080104, // 0014 GETMET R2 R0 K4 - 0x7C080200, // 0015 CALL R2 1 - 0x80000400, // 0016 RET 0 - 0x88080301, // 0017 GETMBR R2 R1 K1 - 0x1C080505, // 0018 EQ R2 R2 K5 - 0x780A0069, // 0019 JMPF R2 #0084 - 0x88080303, // 001A GETMBR R2 R1 K3 - 0x1C080506, // 001B EQ R2 R2 K6 - 0x780A0006, // 001C JMPF R2 #0024 - 0x8C080107, // 001D GETMET R2 R0 K7 - 0x58100008, // 001E LDCONST R4 K8 - 0x7C080400, // 001F CALL R2 2 - 0x8C080109, // 0020 GETMET R2 R0 K9 - 0x7C080200, // 0021 CALL R2 1 - 0x80000400, // 0022 RET 0 - 0x7002005E, // 0023 JMP #0083 - 0x88080303, // 0024 GETMBR R2 R1 K3 - 0x1C08050A, // 0025 EQ R2 R2 K10 - 0x780A0013, // 0026 JMPF R2 #003B - 0x8C08010B, // 0027 GETMET R2 R0 K11 - 0x7C080200, // 0028 CALL R2 1 - 0x4C0C0000, // 0029 LDNIL R3 - 0x200C0403, // 002A NE R3 R2 R3 - 0x780E0008, // 002B JMPF R3 #0035 - 0x880C0501, // 002C GETMBR R3 R2 K1 - 0x1C0C0705, // 002D EQ R3 R3 K5 - 0x780E0005, // 002E JMPF R3 #0035 - 0x880C0503, // 002F GETMBR R3 R2 K3 - 0x1C0C070C, // 0030 EQ R3 R3 K12 - 0x780E0002, // 0031 JMPF R3 #0035 - 0x8C0C010D, // 0032 GETMET R3 R0 K13 - 0x7C0C0200, // 0033 CALL R3 1 - 0x70020004, // 0034 JMP #003A - 0x8C0C0107, // 0035 GETMET R3 R0 K7 - 0x5814000E, // 0036 LDCONST R5 K14 - 0x7C0C0400, // 0037 CALL R3 2 - 0x8C0C0109, // 0038 GETMET R3 R0 K9 - 0x7C0C0200, // 0039 CALL R3 1 - 0x70020047, // 003A JMP #0083 - 0x8808010F, // 003B GETMBR R2 R0 K15 - 0x740A0001, // 003C JMPT R2 #003F - 0x8C080110, // 003D GETMET R2 R0 K16 - 0x7C080200, // 003E CALL R2 1 - 0x88080303, // 003F GETMBR R2 R1 K3 - 0x1C080511, // 0040 EQ R2 R2 K17 - 0x780A0002, // 0041 JMPF R2 #0045 - 0x8C080112, // 0042 GETMET R2 R0 K18 - 0x7C080200, // 0043 CALL R2 1 - 0x7002003D, // 0044 JMP #0083 - 0x88080303, // 0045 GETMBR R2 R1 K3 - 0x1C080513, // 0046 EQ R2 R2 K19 - 0x780A0002, // 0047 JMPF R2 #004B - 0x8C080114, // 0048 GETMET R2 R0 K20 - 0x7C080200, // 0049 CALL R2 1 - 0x70020037, // 004A JMP #0083 - 0x88080303, // 004B GETMBR R2 R1 K3 - 0x1C08050C, // 004C EQ R2 R2 K12 - 0x780A0002, // 004D JMPF R2 #0051 - 0x8C080115, // 004E GETMET R2 R0 K21 - 0x7C080200, // 004F CALL R2 1 - 0x70020031, // 0050 JMP #0083 - 0x88080303, // 0051 GETMBR R2 R1 K3 - 0x1C080516, // 0052 EQ R2 R2 K22 - 0x780A0002, // 0053 JMPF R2 #0057 - 0x8C080117, // 0054 GETMET R2 R0 K23 - 0x7C080200, // 0055 CALL R2 1 - 0x7002002B, // 0056 JMP #0083 - 0x88080303, // 0057 GETMBR R2 R1 K3 - 0x1C080518, // 0058 EQ R2 R2 K24 - 0x780A0002, // 0059 JMPF R2 #005D - 0x8C080119, // 005A GETMET R2 R0 K25 - 0x7C080200, // 005B CALL R2 1 - 0x70020025, // 005C JMP #0083 - 0x88080303, // 005D GETMBR R2 R1 K3 - 0x1C08051A, // 005E EQ R2 R2 K26 - 0x780A0002, // 005F JMPF R2 #0063 - 0x8C08011B, // 0060 GETMET R2 R0 K27 - 0x7C080200, // 0061 CALL R2 1 - 0x7002001F, // 0062 JMP #0083 - 0x88080303, // 0063 GETMBR R2 R1 K3 - 0x1C08051C, // 0064 EQ R2 R2 K28 - 0x780A0002, // 0065 JMPF R2 #0069 - 0x8C08011D, // 0066 GETMET R2 R0 K29 - 0x7C080200, // 0067 CALL R2 1 - 0x70020019, // 0068 JMP #0083 - 0x88080303, // 0069 GETMBR R2 R1 K3 - 0x1C08051E, // 006A EQ R2 R2 K30 - 0x780A0002, // 006B JMPF R2 #006F - 0x8C08011F, // 006C GETMET R2 R0 K31 - 0x7C080200, // 006D CALL R2 1 - 0x70020013, // 006E JMP #0083 - 0x88080303, // 006F GETMBR R2 R1 K3 - 0x1C080520, // 0070 EQ R2 R2 K32 - 0x780A0002, // 0071 JMPF R2 #0075 - 0x8C080121, // 0072 GETMET R2 R0 K33 - 0x7C080200, // 0073 CALL R2 1 - 0x7002000D, // 0074 JMP #0083 - 0x88080303, // 0075 GETMBR R2 R1 K3 - 0x1C080522, // 0076 EQ R2 R2 K34 - 0x780A0002, // 0077 JMPF R2 #007B - 0x8C080123, // 0078 GETMET R2 R0 K35 - 0x7C080200, // 0079 CALL R2 1 - 0x70020007, // 007A JMP #0083 - 0x8C080107, // 007B GETMET R2 R0 K7 - 0x60100018, // 007C GETGBL R4 G24 - 0x58140024, // 007D LDCONST R5 K36 - 0x88180303, // 007E GETMBR R6 R1 K3 - 0x7C100400, // 007F CALL R4 2 - 0x7C080400, // 0080 CALL R2 2 - 0x8C080109, // 0081 GETMET R2 R0 K9 - 0x7C080200, // 0082 CALL R2 1 - 0x70020022, // 0083 JMP #00A7 - 0x88080301, // 0084 GETMBR R2 R1 K1 - 0x1C080525, // 0085 EQ R2 R2 K37 - 0x780A0017, // 0086 JMPF R2 #009F - 0x8808010F, // 0087 GETMBR R2 R0 K15 - 0x740A0001, // 0088 JMPT R2 #008B - 0x8C080110, // 0089 GETMET R2 R0 K16 - 0x7C080200, // 008A CALL R2 1 - 0x88080303, // 008B GETMBR R2 R1 K3 - 0x1C080526, // 008C EQ R2 R2 K38 - 0x780A000D, // 008D JMPF R2 #009C - 0x8C08010B, // 008E GETMET R2 R0 K11 - 0x7C080200, // 008F CALL R2 1 - 0x4C0C0000, // 0090 LDNIL R3 - 0x20080403, // 0091 NE R2 R2 R3 - 0x780A0008, // 0092 JMPF R2 #009C - 0x8C08010B, // 0093 GETMET R2 R0 K11 - 0x7C080200, // 0094 CALL R2 1 - 0x88080501, // 0095 GETMBR R2 R2 K1 - 0x540E0017, // 0096 LDINT R3 24 - 0x1C080403, // 0097 EQ R2 R2 R3 - 0x780A0002, // 0098 JMPF R2 #009C - 0x8C080127, // 0099 GETMET R2 R0 K39 - 0x7C080200, // 009A CALL R2 1 - 0x70020001, // 009B JMP #009E - 0x8C080128, // 009C GETMET R2 R0 K40 - 0x7C080200, // 009D CALL R2 1 - 0x70020007, // 009E JMP #00A7 - 0x8C080107, // 009F GETMET R2 R0 K7 - 0x60100018, // 00A0 GETGBL R4 G24 - 0x58140029, // 00A1 LDCONST R5 K41 - 0x88180303, // 00A2 GETMBR R6 R1 K3 - 0x7C100400, // 00A3 CALL R4 2 - 0x7C080400, // 00A4 CALL R2 2 - 0x8C080109, // 00A5 GETMET R2 R0 K9 - 0x7C080200, // 00A6 CALL R2 1 - 0x80000000, // 00A7 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - }), - be_str_weak(check_right_bracket), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0x540E001C, // 0006 LDINT R3 29 - 0x1C080403, // 0007 EQ R2 R2 R3 - 0x740A0000, // 0008 JMPT R2 #000A - 0x50080001, // 0009 LDBOOL R2 0 1 - 0x50080200, // 000A LDBOOL R2 1 0 - 0x80040400, // 000B RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_template_parameter_type -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_template_parameter_type, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(int), - /* K1 */ be_nested_str_weak(bool), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(bytes), - /* K4 */ be_nested_str_weak(function), - /* K5 */ be_nested_str_weak(animation), - /* K6 */ be_nested_str_weak(value_provider), - /* K7 */ be_nested_str_weak(number), - /* K8 */ be_nested_str_weak(color), - /* K9 */ be_nested_str_weak(palette), - /* K10 */ be_nested_str_weak(time), - /* K11 */ be_nested_str_weak(percentage), - /* K12 */ be_nested_str_weak(any), - /* K13 */ be_nested_str_weak(stop_iteration), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(Invalid_X20parameter_X20type_X20_X27_X25s_X27_X2E_X20Valid_X20types_X20are_X3A_X20_X25s), - }), - be_str_weak(_validate_template_parameter_type), - &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x400C0502, // 0004 CONNECT R3 R2 K2 - 0x400C0503, // 0005 CONNECT R3 R2 K3 - 0x400C0504, // 0006 CONNECT R3 R2 K4 - 0x400C0505, // 0007 CONNECT R3 R2 K5 - 0x400C0506, // 0008 CONNECT R3 R2 K6 - 0x400C0507, // 0009 CONNECT R3 R2 K7 - 0x400C0508, // 000A CONNECT R3 R2 K8 - 0x400C0509, // 000B CONNECT R3 R2 K9 - 0x400C050A, // 000C CONNECT R3 R2 K10 - 0x400C050B, // 000D CONNECT R3 R2 K11 - 0x400C050C, // 000E CONNECT R3 R2 K12 - 0x600C0010, // 000F GETGBL R3 G16 - 0x5C100400, // 0010 MOVE R4 R2 - 0x7C0C0200, // 0011 CALL R3 1 - 0xA8020007, // 0012 EXBLK 0 #001B - 0x5C100600, // 0013 MOVE R4 R3 - 0x7C100000, // 0014 CALL R4 0 - 0x1C140204, // 0015 EQ R5 R1 R4 - 0x78160002, // 0016 JMPF R5 #001A - 0x50140200, // 0017 LDBOOL R5 1 0 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040A00, // 0019 RET 1 R5 - 0x7001FFF7, // 001A JMP #0013 - 0x580C000D, // 001B LDCONST R3 K13 - 0xAC0C0200, // 001C CATCH R3 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x8C0C010E, // 001E GETMET R3 R0 K14 - 0x60140018, // 001F GETGBL R5 G24 - 0x5818000F, // 0020 LDCONST R6 K15 - 0x5C1C0200, // 0021 MOVE R7 R1 - 0x5C200400, // 0022 MOVE R8 R2 - 0x7C140600, // 0023 CALL R5 3 - 0x7C0C0400, // 0024 CALL R3 2 - 0x500C0000, // 0025 LDBOOL R3 0 0 - 0x80040600, // 0026 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_set -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[17]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(variable), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(process_value), - /* K7 */ be_nested_str_weak(CONTEXT_VARIABLE), - /* K8 */ be_nested_str_weak(collect_inline_comment), - /* K9 */ be_nested_str_weak(_create_symbol_by_return_type), - /* K10 */ be_nested_str_weak(return_type), - /* K11 */ be_nested_str_weak(instance_for_validation), - /* K12 */ be_nested_str_weak(get_reference), - /* K13 */ be_nested_str_weak(_X25s_), - /* K14 */ be_nested_str_weak(add), - /* K15 */ be_nested_str_weak(var_X20_X25s_X20_X3D_X20_X25s_X25s), - /* K16 */ be_nested_str_weak(expr), - }), - be_str_weak(process_set), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x88100107, // 000F GETMBR R4 R0 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x8C0C0108, // 0011 GETMET R3 R0 K8 - 0x7C0C0200, // 0012 CALL R3 1 - 0x8C100109, // 0013 GETMET R4 R0 K9 - 0x5C180200, // 0014 MOVE R6 R1 - 0x881C050A, // 0015 GETMBR R7 R2 K10 - 0x8820050B, // 0016 GETMBR R8 R2 K11 - 0x7C100800, // 0017 CALL R4 4 - 0x4C140000, // 0018 LDNIL R5 - 0x20140805, // 0019 NE R5 R4 R5 - 0x78160002, // 001A JMPF R5 #001E - 0x8C14090C, // 001B GETMET R5 R4 K12 - 0x7C140200, // 001C CALL R5 1 - 0x70020003, // 001D JMP #0022 - 0x60140018, // 001E GETGBL R5 G24 - 0x5818000D, // 001F LDCONST R6 K13 - 0x5C1C0200, // 0020 MOVE R7 R1 - 0x7C140400, // 0021 CALL R5 2 - 0x8C18010E, // 0022 GETMET R6 R0 K14 - 0x60200018, // 0023 GETGBL R8 G24 - 0x5824000F, // 0024 LDCONST R9 K15 - 0x5C280A00, // 0025 MOVE R10 R5 - 0x882C0510, // 0026 GETMBR R11 R2 K16 - 0x5C300600, // 0027 MOVE R12 R3 - 0x7C200800, // 0028 CALL R8 4 - 0x7C180400, // 0029 CALL R6 2 - 0x80000000, // 002A RET 0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100702, // 0002 GETMET R4 R3 K2 + 0x5C180200, // 0003 MOVE R6 R1 + 0x581C0003, // 0004 LDCONST R7 K3 + 0x7C100600, // 0005 CALL R4 3 + 0x78120013, // 0006 JMPF R4 #001B + 0x6010000C, // 0007 GETGBL R4 G12 + 0x5C140200, // 0008 MOVE R5 R1 + 0x7C100200, // 0009 CALL R4 1 + 0x54160009, // 000A LDINT R5 10 + 0x1C100805, // 000B EQ R4 R4 R5 + 0x78120001, // 000C JMPF R4 #000F + 0x80040200, // 000D RET 1 R1 + 0x7002000B, // 000E JMP #001B + 0x6010000C, // 000F GETGBL R4 G12 + 0x5C140200, // 0010 MOVE R5 R1 + 0x7C100200, // 0011 CALL R4 1 + 0x54160007, // 0012 LDINT R5 8 + 0x1C100805, // 0013 EQ R4 R4 R5 + 0x78120005, // 0014 JMPF R4 #001B + 0x60100018, // 0015 GETGBL R4 G24 + 0x58140004, // 0016 LDCONST R5 K4 + 0x401A0B06, // 0017 CONNECT R6 K5 K6 + 0x94180206, // 0018 GETIDX R6 R1 R6 + 0x7C100400, // 0019 CALL R4 2 + 0x80040800, // 001A RET 1 R4 + 0x8C100507, // 001B GETMET R4 R2 K7 + 0x5C180200, // 001C MOVE R6 R1 + 0x7C100400, // 001D CALL R4 2 + 0x78120003, // 001E JMPF R4 #0023 + 0x8C100108, // 001F GETMET R4 R0 K8 + 0x5C180200, // 0020 MOVE R6 R1 + 0x7C100400, // 0021 CALL R4 2 + 0x80040800, // 0022 RET 1 R4 + 0x80061200, // 0023 RET 1 K9 }) ) ); @@ -16593,138 +16467,137 @@ be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ be_local_class(SimpleDSLTranspiler, 9, NULL, - be_nested_map(130, + be_nested_map(129, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, - { be_const_key_weak(CONTEXT_ARRAY_ELEMENT, -1), be_const_int(7) }, - { be_const_key_weak(_validate_template_parameter_type, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_type_closure) }, - { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, - { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(_create_symbol_by_return_type, 83), be_const_closure(class_SimpleDSLTranspiler__create_symbol_by_return_type_closure) }, - { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, - { be_const_key_weak(pull_lexer, -1), be_const_var(0) }, - { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, - { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(_determine_function_return_type, -1), be_const_closure(class_SimpleDSLTranspiler__determine_function_return_type_closure) }, - { be_const_key_weak(get_named_color_value, 46), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(_unwrap_resolve, -1), be_const_closure(class_SimpleDSLTranspiler__unwrap_resolve_closure) }, - { be_const_key_weak(generate_engine_run, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_run_closure) }, - { be_const_key_weak(process_import, -1), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, - { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, - { be_const_key_weak(_add_inherited_params_to_template, -1), be_const_closure(class_SimpleDSLTranspiler__add_inherited_params_to_template_closure) }, - { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, - { be_const_key_weak(indent_level, -1), be_const_var(6) }, - { be_const_key_weak(process_animation, 115), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, - { be_const_key_weak(CONTEXT_REPEAT_COUNT, 64), be_const_int(6) }, - { be_const_key_weak(CONTEXT_VARIABLE, -1), be_const_int(1) }, - { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, - { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, - { be_const_key_weak(_validate_template_parameter_usage, 124), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_usage_closure) }, - { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, - { be_const_key_weak(process_repeat_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_repeat_statement_fluent_closure) }, - { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, - { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(_determine_symbol_return_type, -1), be_const_closure(class_SimpleDSLTranspiler__determine_symbol_return_type_closure) }, - { be_const_key_weak(process_restart_statement_fluent, 21), be_const_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent_closure) }, - { be_const_key_weak(can_use_as_identifier, 22), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, - { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, - { be_const_key_weak(transpile_template_animation_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_animation_body_closure) }, - { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(process_additive_expression, 100), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(CONTEXT_GENERIC, 85), be_const_int(10) }, - { be_const_key_weak(add, 42), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, - { be_const_key_weak(process_log_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, - { be_const_key_weak(_add_typed_parameter_to_symbol_table, 44), be_const_closure(class_SimpleDSLTranspiler__add_typed_parameter_to_symbol_table_closure) }, - { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, - { be_const_key_weak(CONTEXT_ARGUMENT, 73), be_const_int(4) }, - { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(process_if_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_if_statement_fluent_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, - { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(process_event_parameters, 25), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(process_function_arguments, 54), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, - { be_const_key_weak(_split_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler__split_function_arguments_closure) }, { be_const_key_weak(expect_dot, -1), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, - { be_const_key_weak(_parse_parameter_constraints, -1), be_const_closure(class_SimpleDSLTranspiler__parse_parameter_constraints_closure) }, - { be_const_key_weak(transpile, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, - { be_const_key_weak(get_symbol_table_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_symbol_table_report_closure) }, - { be_const_key_weak(process_event_handler, 93), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, - { be_const_key_weak(expect_keyword, 109), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, - { be_const_key_weak(template_animation_params, 8), be_const_var(8) }, - { be_const_key_weak(has_template_calls, -1), be_const_var(7) }, - { be_const_key_weak(_validate_template_parameter_name, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_name_closure) }, - { be_const_key_weak(expect_colon, 113), be_const_closure(class_SimpleDSLTranspiler_expect_colon_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_parameters_core, 94), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, - { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, - { be_const_key_weak(expect_right_bracket, 105), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, { be_const_key_weak(CONTEXT_ANIMATION, -1), be_const_int(3) }, - { be_const_key_weak(process_nested_function_call, 55), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, - { be_const_key_weak(_process_simple_value_assignment, -1), be_const_closure(class_SimpleDSLTranspiler__process_simple_value_assignment_closure) }, - { be_const_key_weak(next, 53), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, - { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, - { be_const_key_weak(symbol_table, 47), be_const_var(5) }, - { be_const_key_weak(_register_template_animation_constructor, -1), be_const_closure(class_SimpleDSLTranspiler__register_template_animation_constructor_closure) }, - { be_const_key_weak(CONTEXT_COLOR_PROVIDER, 110), be_const_int(11) }, - { be_const_key_weak(CONTEXT_TIME, -1), be_const_int(8) }, - { be_const_key_weak(skip_statement, 51), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(process_external_function, 81), be_const_closure(class_SimpleDSLTranspiler_process_external_function_closure) }, - { be_const_key_weak(process_berry_code_block, -1), be_const_closure(class_SimpleDSLTranspiler_process_berry_code_block_closure) }, - { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, - { be_const_key_weak(run_statements, -1), be_const_var(3) }, - { be_const_key_weak(process_array_literal, 77), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(CONTEXT_PROPERTY, 119), be_const_int(5) }, { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, + { be_const_key_weak(CONTEXT_REPEAT_COUNT, 52), be_const_int(6) }, { be_const_key_weak(process_run, -1), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, - { be_const_key_weak(process_sequence, 98), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, - { be_const_key_weak(_validate_template_call_arguments, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_call_arguments_closure) }, - { be_const_key_weak(_validate_object_reference, 39), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, - { be_const_key_weak(CONTEXT_EXPRESSION, -1), be_const_int(9) }, - { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, - { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, - { be_const_key_weak(process_template_animation, 92), be_const_closure(class_SimpleDSLTranspiler_process_template_animation_closure) }, - { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, - { be_const_key_weak(process_function_call, 87), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_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(has_warnings, 80), be_const_closure(class_SimpleDSLTranspiler_has_warnings_closure) }, - { be_const_key_weak(process_log_call, 123), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, + { be_const_key_weak(_create_symbol_by_return_type, -1), be_const_closure(class_SimpleDSLTranspiler__create_symbol_by_return_type_closure) }, + { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, + { be_const_key_weak(validate_user_name, 113), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, + { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, + { be_const_key_weak(has_template_calls, -1), be_const_var(7) }, { be_const_key_weak(warning, -1), be_const_closure(class_SimpleDSLTranspiler_warning_closure) }, - { be_const_key_weak(CONTEXT_PROPERTY, 75), be_const_int(5) }, + { be_const_key_weak(process_palette_color, 112), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, + { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, + { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, + { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, + { be_const_key_weak(ExpressionResult, 39), be_const_class(be_class_ExpressionResult) }, + { be_const_key_weak(CONTEXT_ARGUMENT, -1), be_const_int(4) }, + { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(at_end, 71), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, - { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(process_sequence_statement, 59), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, - { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(output, -1), be_const_var(1) }, - { be_const_key_weak(expect_number, 117), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, - { be_const_key_weak(expect_right_paren, 28), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, - { be_const_key_weak(get_warnings, -1), be_const_closure(class_SimpleDSLTranspiler_get_warnings_closure) }, - { be_const_key_weak(strip_initialized, -1), be_const_var(4) }, - { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, - { be_const_key_weak(warnings, 43), be_const_var(2) }, - { 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(skip_whitespace, 41), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, - { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, - { be_const_key_weak(CONTEXT_COLOR, 36), be_const_int(2) }, - { be_const_key_weak(process_standalone_log, -1), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, + { be_const_key_weak(_validate_object_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, + { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(run_statements, 72), be_const_var(3) }, + { be_const_key_weak(_add_typed_parameter_to_symbol_table, -1), be_const_closure(class_SimpleDSLTranspiler__add_typed_parameter_to_symbol_table_closure) }, + { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, + { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, + { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(process_external_function, -1), be_const_closure(class_SimpleDSLTranspiler_process_external_function_closure) }, + { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, + { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(get_warnings, 126), be_const_closure(class_SimpleDSLTranspiler_get_warnings_closure) }, + { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, + { be_const_key_weak(expect_right_bracket, 21), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, + { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(_validate_animation_factory_exists, 19), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, + { be_const_key_weak(has_warnings, -1), be_const_closure(class_SimpleDSLTranspiler_has_warnings_closure) }, + { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, + { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, + { be_const_key_weak(process_additive_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(CONTEXT_GENERIC, 68), be_const_int(10) }, + { be_const_key_weak(process_repeat_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_repeat_statement_fluent_closure) }, + { be_const_key_weak(_validate_template_parameter_name, 37), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_name_closure) }, + { be_const_key_weak(_register_template_animation_constructor, -1), be_const_closure(class_SimpleDSLTranspiler__register_template_animation_constructor_closure) }, + { be_const_key_weak(process_berry_code_block, 67), be_const_closure(class_SimpleDSLTranspiler_process_berry_code_block_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(_unwrap_resolve, -1), be_const_closure(class_SimpleDSLTranspiler__unwrap_resolve_closure) }, + { be_const_key_weak(pull_lexer, -1), be_const_var(0) }, + { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(generate_engine_run, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_run_closure) }, + { be_const_key_weak(process_function_arguments, 58), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, + { be_const_key_weak(_add_inherited_params_to_template, 104), be_const_closure(class_SimpleDSLTranspiler__add_inherited_params_to_template_closure) }, + { be_const_key_weak(_process_named_arguments_unified, 118), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_unified_closure) }, + { be_const_key_weak(indent_level, -1), be_const_var(6) }, + { be_const_key_weak(symbol_table, -1), be_const_var(5) }, + { be_const_key_weak(CONTEXT_TIME, -1), be_const_int(8) }, + { be_const_key_weak(_validate_template_parameter_usage, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_usage_closure) }, + { be_const_key_weak(get_named_color_value, -1), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, + { be_const_key_weak(process_event_parameters, 86), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, { be_const_key_weak(_is_valid_identifier, -1), be_const_closure(class_SimpleDSLTranspiler__is_valid_identifier_closure) }, - { be_const_key_weak(process_color, 18), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, - { be_const_key_weak(ExpressionResult, -1), be_const_class(be_class_ExpressionResult) }, - { be_const_key_weak(_validate_animation_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(expect_right_brace, 7), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(expect_assign, 4), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, - { be_const_key_weak(generate_template_animation_class, 3), be_const_closure(class_SimpleDSLTranspiler_generate_template_animation_class_closure) }, - { be_const_key_weak(_process_named_arguments_for_color_provider, 2), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, - { be_const_key_weak(expect_left_paren, 0), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_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(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, + { be_const_key_weak(strip_initialized, -1), be_const_var(4) }, + { be_const_key_weak(CONTEXT_EXPRESSION, -1), be_const_int(9) }, + { be_const_key_weak(process_primary_expression, 45), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(process_log_call, 29), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, + { be_const_key_weak(collect_inline_comment, 84), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, + { be_const_key_weak(output, 32), be_const_var(1) }, + { be_const_key_weak(next, -1), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, + { be_const_key_weak(expect_colon, -1), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, + { be_const_key_weak(_process_simple_value_assignment, -1), be_const_closure(class_SimpleDSLTranspiler__process_simple_value_assignment_closure) }, + { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, + { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, + { be_const_key_weak(template_animation_params, -1), 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(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, + { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(process_log_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, + { be_const_key_weak(process_standalone_log, 13), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, + { be_const_key_weak(expect_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(process_import, 65), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, + { be_const_key_weak(process_template_animation, 43), be_const_closure(class_SimpleDSLTranspiler_process_template_animation_closure) }, + { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, + { be_const_key_weak(transpile_template_animation_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_animation_body_closure) }, + { be_const_key_weak(transpile, 53), be_const_closure(class_SimpleDSLTranspiler_transpile_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_array_literal, 78), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, + { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, + { be_const_key_weak(_determine_symbol_return_type, 99), be_const_closure(class_SimpleDSLTranspiler__determine_symbol_return_type_closure) }, + { be_const_key_weak(process_property_assignment, 97), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, + { be_const_key_weak(_split_function_arguments, 95), be_const_closure(class_SimpleDSLTranspiler__split_function_arguments_closure) }, + { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, + { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, 91), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(get_indent, 82), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, + { be_const_key_weak(CONTEXT_VARIABLE, -1), be_const_int(1) }, + { be_const_key_weak(expect_keyword, 75), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(_validate_template_call_arguments, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_call_arguments_closure) }, + { be_const_key_weak(CONTEXT_ARRAY_ELEMENT, -1), be_const_int(7) }, + { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, + { be_const_key_weak(warnings, -1), be_const_var(2) }, + { be_const_key_weak(process_palette, 64), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, + { be_const_key_weak(CONTEXT_COLOR_PROVIDER, 61), be_const_int(11) }, + { be_const_key_weak(expect_assign, 59), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(expect_number, -1), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(process_restart_statement_fluent, 7), be_const_closure(class_SimpleDSLTranspiler_process_restart_statement_fluent_closure) }, + { be_const_key_weak(at_end, 50), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(_process_parameters_core, -1), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, + { be_const_key_weak(generate_template_animation_class, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_animation_class_closure) }, + { be_const_key_weak(get_symbol_table_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_symbol_table_report_closure) }, + { be_const_key_weak(CONTEXT_COLOR, 100), be_const_int(2) }, + { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, + { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, + { be_const_key_weak(_determine_function_return_type, 23), be_const_closure(class_SimpleDSLTranspiler__determine_function_return_type_closure) }, + { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, + { be_const_key_weak(_validate_template_parameter_type, -1), be_const_closure(class_SimpleDSLTranspiler__validate_template_parameter_type_closure) }, + { be_const_key_weak(process_function_call, 18), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, + { be_const_key_weak(_parse_parameter_constraints, 17), be_const_closure(class_SimpleDSLTranspiler__parse_parameter_constraints_closure) }, + { be_const_key_weak(process_if_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_if_statement_fluent_closure) }, + { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, + { be_const_key_weak(process_sequence_statement, 3), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, })), be_str_weak(SimpleDSLTranspiler) ); diff --git a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be index 28584e8e2..e3b2ee6bc 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be @@ -42,17 +42,14 @@ print("\n--- Test 2: Animation Management ---") var anim1 = animation.solid(engine) # Red, priority 10 anim1.color = 0xFFFF0000 anim1.priority = 10 -anim1.name = "red" var anim2 = animation.solid(engine) # Green, priority 5 anim2.color = 0xFF00FF00 anim2.priority = 5 -anim2.name = "green" var anim3 = animation.solid(engine) # Blue, priority 15 anim3.color = 0xFF0000FF anim3.priority = 15 -anim3.name = "blue" assert_test(engine.add(anim1), "Should add first animation") assert_test(engine.add(anim2), "Should add second animation") @@ -92,7 +89,6 @@ engine.clear() var test_anim = animation.solid(engine) test_anim.color = 0xFFFF0000 test_anim.priority = 10 -test_anim.name = "test" engine.add(test_anim) engine.run() @@ -136,7 +132,6 @@ for i : 0..49 var anim = animation.solid(engine) anim.color = color anim.priority = i - anim.name = f"perf_{i}" engine.add(anim) end 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 b6501d6a2..14611e58b 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be @@ -40,7 +40,6 @@ var base_anim = animation.solid(opacity_engine) base_anim.color = 0xFFFF0000 # Red base_anim.opacity = 128 # 50% opacity base_anim.priority = 10 -base_anim.name = "base_red" opacity_engine.add(base_anim) opacity_engine.run() @@ -61,17 +60,17 @@ print("\n--- Test 11b: Animation as opacity mask - basic setup ---") var opacity_mask = animation.solid(opacity_engine) opacity_mask.color = 0xFF808080 # Gray (128 brightness) opacity_mask.priority = 5 -opacity_mask.name = "opacity_mask" +opacity_mask.id = "opacity_mask" # Create main animation with animation opacity var masked_anim = animation.solid(opacity_engine) masked_anim.color = 0xFF00FF00 # Green masked_anim.opacity = opacity_mask # Use animation as opacity masked_anim.priority = 15 -masked_anim.name = "masked_green" +masked_anim.id = "masked_green" assert_test(isinstance(masked_anim.opacity, animation.animation), "Opacity should be an animation instance") -assert_equals(masked_anim.opacity.name, "opacity_mask", "Opacity animation should be correctly assigned") +assert_equals(masked_anim.opacity.id, "opacity_mask", "Opacity animation should be correctly assigned") # Test 11c: Animation opacity rendering print("\n--- Test 11c: Animation opacity rendering ---") @@ -100,14 +99,12 @@ print("\n--- Test 11e: Complex opacity animation scenarios ---") var pulsing_opacity = animation.solid(opacity_engine) pulsing_opacity.color = 0xFF000000 # Start with black (0 opacity) pulsing_opacity.priority = 1 -pulsing_opacity.name = "pulsing_opacity" # Create animated color base var rainbow_base = animation.solid(opacity_engine) rainbow_base.color = 0xFFFF0000 # Red base rainbow_base.opacity = pulsing_opacity # Pulsing opacity rainbow_base.priority = 20 -rainbow_base.name = "rainbow_with_pulse" # Test multiple renders with changing opacity opacity_engine.clear() @@ -134,14 +131,12 @@ print("\n--- Test 11f: Opacity animation lifecycle management ---") var auto_start_opacity = animation.solid(opacity_engine) auto_start_opacity.color = 0xFF808080 # Gray auto_start_opacity.priority = 1 -auto_start_opacity.name = "auto_start_opacity" auto_start_opacity.is_running = false # Start stopped var auto_start_main = animation.solid(opacity_engine) auto_start_main.color = 0xFFFFFF00 # Yellow auto_start_main.opacity = auto_start_opacity auto_start_main.priority = 10 -auto_start_main.name = "auto_start_main" # Opacity animation should not be running initially assert_test(!auto_start_opacity.is_running, "Opacity animation should start stopped") @@ -163,17 +158,14 @@ print("\n--- Test 11g: Nested animation opacity ---") var base_nested = animation.solid(opacity_engine) base_nested.color = 0xFF00FFFF # Cyan base_nested.priority = 30 -base_nested.name = "base_nested" var opacity1 = animation.solid(opacity_engine) opacity1.color = 0xFF808080 # 50% gray opacity1.priority = 25 -opacity1.name = "opacity1" var opacity2 = animation.solid(opacity_engine) opacity2.color = 0xFFC0C0C0 # 75% gray opacity2.priority = 20 -opacity2.name = "opacity2" # Chain the opacities: base uses opacity1, opacity1 uses opacity2 opacity1.opacity = opacity2 @@ -202,12 +194,10 @@ print("\n--- Test 11h: Opacity animation parameter changes ---") var param_base = animation.solid(opacity_engine) param_base.color = 0xFFFF00FF # Magenta param_base.priority = 10 -param_base.name = "param_base" var param_opacity = animation.solid(opacity_engine) param_opacity.color = 0xFF404040 # Dark gray param_opacity.priority = 5 -param_opacity.name = "param_opacity" param_base.opacity = param_opacity @@ -244,7 +234,6 @@ print("\n--- Test 11i: Opacity edge cases ---") var edge_base = animation.solid(opacity_engine) edge_base.color = 0xFF0080FF # Blue edge_base.priority = 10 -edge_base.name = "edge_base" # Test full transparency (should still render but with no visible effect) edge_base.opacity = 0 @@ -264,7 +253,6 @@ assert_test(render_result, "Animation with full opacity should render normally") var transparent_opacity = animation.solid(opacity_engine) transparent_opacity.color = 0x00000000 # Fully transparent transparent_opacity.priority = 5 -transparent_opacity.name = "transparent_opacity" edge_base.opacity = transparent_opacity transparent_opacity.start() @@ -285,12 +273,10 @@ for i : 0..9 var perf_base = animation.solid(opacity_engine) perf_base.color = 0xFF000000 | ((i * 25) << 16) | ((i * 15) << 8) | (i * 10) perf_base.priority = 50 + i - perf_base.name = f"perf_base_{i}" - + var perf_opacity = animation.solid(opacity_engine) perf_opacity.color = 0xFF808080 # 50% gray perf_opacity.priority = 40 + i - perf_opacity.name = f"perf_opacity_{i}" perf_base.opacity = perf_opacity diff --git a/lib/libesp32/berry_animation/src/tests/animation_test.be b/lib/libesp32/berry_animation/src/tests/animation_test.be index 543cdec73..4292b2424 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_test.be @@ -24,14 +24,12 @@ anim.priority = 20 anim.duration = 5000 anim.loop = true # Use boolean for loop parameter anim.opacity = 255 -anim.name = "test_animation" anim.color = 0xFF0000 assert(anim.is_running == false, "Animation should not be running initially") assert(anim.priority == 20, "Animation priority should be 20") assert(anim.duration == 5000, "Animation duration should be 5000ms") assert(anim.loop == true, "Animation should be set to loop") assert(anim.opacity == 255, "Animation opacity should be 255") -assert(anim.name == "test_animation", "Animation name should be 'test_animation'") assert(anim.color == 0xFF0000, "Animation color should be red") # Test default values @@ -40,19 +38,21 @@ assert(default_anim.priority == 10, "Default priority should be 10") assert(default_anim.duration == 0, "Default duration should be 0 (infinite)") assert(default_anim.loop == false, "Default loop should be false") assert(default_anim.opacity == 255, "Default opacity should be 255") -assert(default_anim.name == "animation", "Default name should be 'animation'") assert(default_anim.color == 0x00000000, "Default color should be transparent") # Test start method +# Note: When testing animations directly (not through engine_proxy), we must set start_time manually +# because engine_proxy normally sets it before dispatching update/render calls engine.time_ms = 1000 -anim.start() -anim.update() +anim.start_time = engine.time_ms # Set start_time manually for direct testing +anim.start(engine.time_ms) +anim.update(engine.time_ms) assert(anim.is_running == true, "Animation should be running after start") assert(anim.start_time == 1000, "Animation start time should be 1000") # Test restart functionality - start() acts as restart engine.time_ms = 2000 -anim.start() +anim.start(engine.time_ms) 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 @@ -69,23 +69,21 @@ non_loop_anim.priority = 1 non_loop_anim.duration = 1000 non_loop_anim.loop = false non_loop_anim.opacity = 255 -non_loop_anim.name = "non_loop" non_loop_anim.color = 0xFF0000 engine.time_ms = 2000 +non_loop_anim.start_time = engine.time_ms # Set start_time manually for direct testing 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 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") +non_loop_anim.update(engine.time_ms) assert(non_loop_anim.is_running == true, "Animation should still be running") # Update after duration engine.time_ms = 3100 -result = non_loop_anim.update(engine.time_ms) -assert(result == false, "Update should return false when animation is complete") +non_loop_anim.update(engine.time_ms) assert(non_loop_anim.is_running == false, "Animation should stop after duration") # Test update method with looping animation @@ -94,16 +92,15 @@ loop_anim.priority = 1 loop_anim.duration = 1000 loop_anim.loop = true loop_anim.opacity = 255 -loop_anim.name = "loop" loop_anim.color = 0xFF0000 engine.time_ms = 4000 +loop_anim.start_time = engine.time_ms # Set start_time manually for direct testing 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 -result = loop_anim.update(engine.time_ms) -assert(result == true, "Update should return true for looping animation") +loop_anim.update(engine.time_ms) assert(loop_anim.is_running == true, "Looping animation should still be running after duration") assert(loop_anim.start_time == 5000, "Start time should be adjusted for looping") @@ -156,15 +153,15 @@ var invalid_opacity_result = param_anim.set_param("opacity", 300) # Invalid: ab assert(valid_priority_result == true, "Valid priority parameter should succeed") assert(valid_color_result == true, "Valid color parameter should succeed") -# Test render method (base implementation should do nothing) +# Test render method (base implementation renders the color) +# Note: is_running check is now in engine_proxy, not in base render() # Create a frame buffer for testing var frame = animation.frame_buffer(10) -result = setter_anim.render(frame, engine.time_ms) -assert(result == false, "Base render method should return false") +var render_result = setter_anim.render(frame, engine.time_ms, engine.strip_length) +assert(render_result == true, "Base render method should return true (renders color)") # Test tostring method var anim_str = str(anim) assert(string.find(anim_str, "Animation") >= 0, "String representation should contain 'Animation'") -assert(string.find(anim_str, anim.name) >= 0, "String representation should contain the animation name") print("All Animation tests passed!") \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be b/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be index 65cdd4bcb..379c61a01 100644 --- a/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/beacon_animation_test.be @@ -85,7 +85,7 @@ def run_tests() pulse.back_color = 0xFF000000 # Transparent pulse.start() - var rendered = pulse.render(frame, engine.time_ms) + var rendered = pulse.render(frame, engine.time_ms, engine.strip_length) test_assert(rendered, "Render returns true when running") # Check that pixels 3 and 4 are red, others are transparent @@ -97,7 +97,7 @@ def run_tests() # Test 6: Frame rendering with background frame.clear() pulse.back_color = 0xFF000080 # Dark blue background - pulse.render(frame, engine.time_ms) + pulse.render(frame, engine.time_ms, engine.strip_length) test_assert(frame.get_pixel_color(0) == 0xFF000080, "Background pixel is dark blue") test_assert(frame.get_pixel_color(3) == 0xFFFF0000, "Pulse pixel overrides background") @@ -109,7 +109,7 @@ def run_tests() pulse.pos = 4 pulse.beacon_size = 2 pulse.slew_size = 1 - pulse.render(frame, engine.time_ms) + pulse.render(frame, engine.time_ms, engine.strip_length) # Check main pulse test_assert(frame.get_pixel_color(4) == 0xFFFF0000, "Main pulse pixel 1 is red") @@ -128,7 +128,7 @@ def run_tests() pulse.pos = 0 pulse.beacon_size = 2 pulse.slew_size = 1 - pulse.render(frame, engine.time_ms) + pulse.render(frame, engine.time_ms, engine.strip_length) test_assert(frame.get_pixel_color(0) == 0xFFFF0000, "Pulse at start boundary works") test_assert(frame.get_pixel_color(1) == 0xFFFF0000, "Pulse at start boundary works") @@ -137,7 +137,7 @@ def run_tests() pulse.pos = 8 pulse.beacon_size = 2 pulse.slew_size = 1 - pulse.render(frame, engine.time_ms) + pulse.render(frame, engine.time_ms, engine.strip_length) test_assert(frame.get_pixel_color(8) == 0xFFFF0000, "Pulse at end boundary works") test_assert(frame.get_pixel_color(9) == 0xFFFF0000, "Pulse at end boundary works") @@ -147,7 +147,7 @@ def run_tests() pulse.pos = 5 pulse.beacon_size = 0 pulse.slew_size = 2 - pulse.render(frame, engine.time_ms) + pulse.render(frame, engine.time_ms, engine.strip_length) # Should have slew on both sides but no main pulse var left_slew1 = frame.get_pixel_color(3) 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 a99487494..754388db1 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 @@ -26,7 +26,6 @@ def test_atomic_closure_batch_execution() red_anim.priority = 0 red_anim.duration = 0 red_anim.loop = true - red_anim.name = "red" var blue_provider = animation.static_color(engine) blue_provider.color = 0xFF0000FF @@ -35,7 +34,6 @@ def test_atomic_closure_batch_execution() blue_anim.priority = 0 blue_anim.duration = 0 blue_anim.loop = true - blue_anim.name = "blue" # Simple test - just verify the basic functionality works # We'll check that closures execute and animations transition properly @@ -96,7 +94,6 @@ def test_multiple_consecutive_closures() green_anim.priority = 0 green_anim.duration = 0 green_anim.loop = true - green_anim.name = "green" var yellow_provider = animation.static_color(engine) yellow_provider.color = 0xFFFFFF00 @@ -105,7 +102,6 @@ def test_multiple_consecutive_closures() yellow_anim.priority = 0 yellow_anim.duration = 0 yellow_anim.loop = true - yellow_anim.name = "yellow" # Track closure execution order var closure_order = [] @@ -165,7 +161,6 @@ def test_closure_batch_at_sequence_start() purple_anim.priority = 0 purple_anim.duration = 0 purple_anim.loop = true - purple_anim.name = "purple" # Track initial closure execution var initial_setup_done = false @@ -204,7 +199,6 @@ def test_repeat_sequence_closure_batching() cyan_anim.priority = 0 cyan_anim.duration = 0 cyan_anim.loop = true - cyan_anim.name = "cyan" # Track iteration state var iteration_count = 0 @@ -275,7 +269,6 @@ def test_black_frame_fix_integration() shutter_anim.priority = 0 shutter_anim.duration = 0 shutter_anim.loop = true - shutter_anim.name = "shutter" # Simulate color cycle (like col1.next = 1) var color_index = 0 diff --git a/lib/libesp32/berry_animation/src/tests/bounce_animation_test.be b/lib/libesp32/berry_animation/src/tests/bounce_animation_test.be index 9e7e69193..40cc71191 100644 --- a/lib/libesp32/berry_animation/src/tests/bounce_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/bounce_animation_test.be @@ -19,12 +19,10 @@ def test_bounce_animation_basic() # Create a simple source animation var source = animation.solid(engine) source.color = 0xFFFF0000 - source.name = "test_source" # Test with default parameters using new parameterized pattern var bounce_anim = animation.bounce_animation(engine) bounce_anim.source_animation = source - bounce_anim.name = "test_bounce" assert(bounce_anim != nil, "BounceAnimation should be created") assert(bounce_anim.bounce_speed == 128, "Default bounce_speed should be 128") @@ -46,7 +44,6 @@ def test_bounce_animation_custom() var source = animation.solid(engine) source.color = 0xFF00FF00 - source.name = "test_source" # Test with custom parameters using new parameterized pattern var bounce_anim = animation.bounce_animation(engine) @@ -59,7 +56,6 @@ def test_bounce_animation_custom() bounce_anim.duration = 5000 bounce_anim.loop = false bounce_anim.opacity = 200 - bounce_anim.name = "custom_bounce" assert(bounce_anim.bounce_speed == 200, "Custom bounce_speed should be 200") assert(bounce_anim.bounce_range == 15, "Custom bounce_range should be 15") @@ -83,11 +79,9 @@ def test_bounce_animation_parameters() var source = animation.solid(engine) source.color = 0xFF0000FF - source.name = "test_source" var bounce_anim = animation.bounce_animation(engine) bounce_anim.source_animation = source - bounce_anim.name = "param_test" # Test parameter changes using virtual member assignment bounce_anim.bounce_speed = 180 @@ -118,7 +112,6 @@ def test_bounce_animation_physics() var source = animation.solid(engine) source.color = 0xFFFFFF00 - source.name = "test_source" var bounce_anim = animation.bounce_animation(engine) bounce_anim.source_animation = source @@ -126,7 +119,6 @@ def test_bounce_animation_physics() bounce_anim.bounce_range = 0 bounce_anim.damping = 250 bounce_anim.gravity = 0 - bounce_anim.name = "physics_test" # Start animation bounce_anim.start(1000) @@ -158,7 +150,6 @@ def test_bounce_animation_update_render() var source = animation.solid(engine) source.color = 0xFFFF00FF - source.name = "test_source" var bounce_anim = animation.bounce_animation(engine) bounce_anim.source_animation = source @@ -166,7 +157,6 @@ def test_bounce_animation_update_render() bounce_anim.bounce_range = 0 bounce_anim.damping = 250 bounce_anim.gravity = 0 - bounce_anim.name = "update_test" var frame = animation.frame_buffer(10) @@ -175,11 +165,11 @@ def test_bounce_animation_update_render() assert(bounce_anim.is_running == true, "Animation should be running after start") # Test update - var result = bounce_anim.update(1500) - assert(result == true, "Update should return true for running animation") + bounce_anim.update(1500) + assert(bounce_anim.is_running == true, "Animation should still be running after update") # Test render - result = bounce_anim.render(frame, 1500) + var result = bounce_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that frame was modified (colors should be set) @@ -207,7 +197,6 @@ def test_bounce_constructors() var source = animation.solid(engine) source.color = 0xFF00FFFF - source.name = "test_source" # Test bounce_basic var basic_bounce = animation.bounce_basic(engine) @@ -247,7 +236,6 @@ def test_bounce_animation_gravity() var source = animation.solid(engine) source.color = 0xFFFFFFFF - source.name = "test_source" var gravity_bounce = animation.bounce_animation(engine) gravity_bounce.source_animation = source @@ -255,7 +243,6 @@ def test_bounce_animation_gravity() gravity_bounce.bounce_range = 0 gravity_bounce.damping = 240 gravity_bounce.gravity = 100 - gravity_bounce.name = "gravity_test" gravity_bounce.start(1000) @@ -282,7 +269,6 @@ def test_bounce_tostring() var source = animation.solid(engine) source.color = 0xFF888888 - source.name = "test_source" var bounce_anim = animation.bounce_animation(engine) bounce_anim.source_animation = source @@ -290,7 +276,6 @@ def test_bounce_tostring() bounce_anim.bounce_range = 10 bounce_anim.damping = 240 bounce_anim.gravity = 30 - bounce_anim.name = "string_test" var str_repr = str(bounce_anim) diff --git a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be index d04bf7500..0b36fa444 100644 --- a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be @@ -107,7 +107,7 @@ print(f"Color at full cycle: 0x{color_full :08x}") # Test rendering var frame = animation.frame_buffer(5) -blue_breathe.render(frame, engine.time_ms) +blue_breathe.render(frame, engine.time_ms, engine.strip_length) print(f"First pixel after rendering: 0x{frame.get_pixel_color(0) :08x}") # Test parameter validation diff --git a/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be b/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be index 7ce21118b..302060526 100644 --- a/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/color_cycle_animation_test.be @@ -61,7 +61,6 @@ class ColorCycleAnimationTest anim.duration = 0 anim.loop = false anim.opacity = 255 - anim.name = "test_default" # Check that the color was set correctly self.assert_equal(anim.color != nil, true, "Color is set") @@ -80,7 +79,6 @@ class ColorCycleAnimationTest anim2.duration = 0 anim2.loop = false anim2.opacity = 255 - anim2.name = "test_custom" # Check that the color was set correctly self.assert_equal(anim2.color != nil, true, "Custom color is set") @@ -105,7 +103,6 @@ class ColorCycleAnimationTest anim.duration = 0 anim.loop = false anim.opacity = 255 - anim.name = "test_render" # Create a frame buffer var frame = animation.frame_buffer(10) # 10 pixels @@ -115,26 +112,26 @@ class ColorCycleAnimationTest # Test brutal color switching - colors should change abruptly, not smoothly anim.update(0) - anim.render(frame, engine.time_ms) + anim.render(frame, engine.time_ms, engine.strip_length) var pixel_color = frame.get_pixel_color(0) self.assert_equal(pixel_color != 0, true, "Start color is not zero") # Test at middle of cycle - should still be a solid color (brutal switching) anim.update(500) # 50% through cycle - anim.render(frame, engine.time_ms) + anim.render(frame, engine.time_ms, engine.strip_length) pixel_color = frame.get_pixel_color(0) self.assert_equal(pixel_color != 0, true, "Middle color is not zero") # Test at end of cycle - should be a different solid color anim.update(1000) # 100% through cycle - anim.render(frame, engine.time_ms) + anim.render(frame, engine.time_ms, engine.strip_length) pixel_color = frame.get_pixel_color(0) self.assert_equal(pixel_color != 0, true, "End color is not zero") # Test manual next color trigger var initial_color = pixel_color provider.next = 1 # Trigger move to next color - anim.render(frame, engine.time_ms) + anim.render(frame, engine.time_ms, engine.strip_length) var next_color = frame.get_pixel_color(0) # Color should change when next is triggered (though it might be the same if cycling back) self.assert_equal(next_color != 0, true, "Next color is not zero") @@ -154,7 +151,6 @@ class ColorCycleAnimationTest manual_anim.duration = 0 manual_anim.loop = false manual_anim.opacity = 255 - manual_anim.name = "manual_test" # Create a frame buffer var frame = animation.frame_buffer(10) # 10 pixels @@ -164,20 +160,20 @@ class ColorCycleAnimationTest # Test that color doesn't change with time in manual mode manual_anim.update(0) - manual_anim.render(frame, engine.time_ms) + manual_anim.render(frame, engine.time_ms, engine.strip_length) var initial_color = frame.get_pixel_color(0) self.assert_equal(initial_color != 0, true, "Initial color should not be zero") # Advance time significantly - color should NOT change in manual mode engine.time_ms = 10000 # 10 seconds later manual_anim.update(engine.time_ms) - manual_anim.render(frame, engine.time_ms) + manual_anim.render(frame, engine.time_ms, engine.strip_length) var same_color = frame.get_pixel_color(0) self.assert_equal(same_color, initial_color, "Color should not change with time in manual mode") # Manually trigger next color manual_provider.next = 1 - manual_anim.render(frame, engine.time_ms) + manual_anim.render(frame, engine.time_ms, engine.strip_length) var next_color = frame.get_pixel_color(0) # Color might be the same if we cycled back to the same color, but the trigger should work self.assert_equal(next_color != 0, true, "Next color should not be zero") @@ -185,7 +181,7 @@ class ColorCycleAnimationTest # Trigger next again to ensure it works multiple times var previous_color = next_color manual_provider.next = 1 - manual_anim.render(frame, engine.time_ms) + manual_anim.render(frame, engine.time_ms, engine.strip_length) var third_color = frame.get_pixel_color(0) self.assert_equal(third_color != 0, true, "Third color should not be zero") @@ -204,7 +200,6 @@ class ColorCycleAnimationTest anim.duration = 0 anim.loop = false anim.opacity = 255 - anim.name = "test_direct" # Check that the animation was created correctly self.assert_equal(anim != nil, true, "Animation was created") 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 351d9fd5d..fa5091d04 100644 --- a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be @@ -65,7 +65,6 @@ comet.direction = -1 comet.wrap_around = 0 comet.fade_factor = 150 comet.priority = 15 -comet.name = "test_comet" assert_equals(comet.color, 0xFFFF0000, "Color should be set correctly") assert_equals(comet.tail_length, 8, "Tail length should be set correctly") @@ -74,7 +73,6 @@ assert_equals(comet.direction, -1, "Direction should be set correctly") assert_equals(comet.wrap_around, 0, "Wrap around should be disabled") assert_equals(comet.fade_factor, 150, "Fade factor should be set correctly") assert_equals(comet.priority, 15, "Priority should be set correctly") -assert_equals(comet.name, "test_comet", "Name should be set correctly") # Test 2: Multiple Comet Animations print("\n--- Test 2: Multiple Comet Animations ---") @@ -149,8 +147,10 @@ pos_comet.tail_length = 3 pos_comet.speed = 2560 # 10 pixels/sec (10 * 256) # Use engine time for testing +# Note: When testing animations directly (not through engine_proxy), we must set start_time manually engine.time_ms = 1000 var start_time = engine.time_ms +pos_comet.start_time = start_time # Set start_time manually for direct testing pos_comet.start(start_time) pos_comet.update(start_time) @@ -173,6 +173,7 @@ dir_comet.direction = -1 # Backward engine.time_ms = 2000 start_time = engine.time_ms +dir_comet.start_time = start_time # Set start_time manually for direct testing dir_comet.start(start_time) dir_comet.update(start_time) var initial_pos = dir_comet.head_position @@ -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_time = start_time # Set start_time manually for direct testing wrap_comet.start(start_time) wrap_comet.update(start_time) small_engine.time_ms = start_time + 2000 # 2 seconds - should wrap multiple times @@ -216,6 +218,7 @@ bounce_comet.wrap_around = 0 # Disable wrapping (enable bouncing) small_engine.time_ms = 4000 start_time = small_engine.time_ms +bounce_comet.start_time = start_time # Set start_time manually for direct testing 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 @@ -234,12 +237,13 @@ render_comet.tail_length = 3 render_comet.speed = 256 # Slow (1 pixel/sec) small_engine.time_ms = 5000 +render_comet.start_time = small_engine.time_ms # Set start_time manually for direct testing render_comet.start(small_engine.time_ms) render_comet.update(small_engine.time_ms) # Clear frame and render frame.clear() -var rendered = render_comet.render(frame, small_engine.time_ms) +var rendered = render_comet.render(frame, small_engine.time_ms, small_engine.strip_length) assert_true(rendered, "Render should return true when successful") # Check that pixels were set (comet should be at position 0 with tail) @@ -269,6 +273,7 @@ provider_comet.speed = 1280 assert_not_nil(provider_comet, "Comet with color provider should be created") engine.time_ms = 6000 +provider_comet.start_time = engine.time_ms # Set start_time manually for direct testing provider_comet.start(engine.time_ms) provider_comet.update(engine.time_ms) @@ -295,6 +300,7 @@ assert_equals(strip_length, 30, "Strip length should come from engine") # Test engine time usage engine.time_ms = 7000 +engine_comet.start_time = engine.time_ms # Set start_time manually for direct testing 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") diff --git a/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be b/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be index 8a4e611d0..aa155cdee 100644 --- a/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be @@ -45,7 +45,6 @@ def run_tests() crenel.duration = 0 crenel.loop = true crenel.opacity = 255 - crenel.name = "test_crenel" test_assert(crenel.color == 0xFFFF0000, "Initial color setting") test_assert(crenel.pos == 4, "Initial position setting") @@ -99,7 +98,7 @@ def run_tests() crenel.back_color = 0xFF000000 # Transparent crenel.start() - var rendered = crenel.render(frame, engine.time_ms) + var rendered = crenel.render(frame, engine.time_ms, engine.strip_length) test_assert(rendered, "Render returns true when running") # Check pattern: 2 on, 3 off, 2 on, 3 off... @@ -118,7 +117,7 @@ def run_tests() # Test 6: Frame rendering with background frame.clear() crenel.back_color = 0xFF000080 # Dark blue background - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) test_assert(frame.get_pixel_color(2) == 0xFF000080, "Gap pixel has background color") test_assert(frame.get_pixel_color(0) == 0xFFFF0000, "Pulse pixel overrides background") @@ -127,7 +126,7 @@ def run_tests() frame.clear() crenel.back_color = 0xFF000000 # Transparent background crenel.nb_pulse = 2 # Only 2 pulses - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # Should have 2 pulses: positions 0,1 and 5,6 test_assert(frame.get_pixel_color(0) == 0xFFFF0000, "Limited pulse 1 pixel 1 is red") @@ -143,7 +142,7 @@ def run_tests() frame.clear() crenel.pos = 2 # Start at position 2 crenel.nb_pulse = -1 # Back to infinite - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # Pattern should start at position 2: positions 2,3 and 7,8 test_assert(frame.get_pixel_color(0) == 0x00000000, "Offset pattern - position 0 is transparent") @@ -158,7 +157,7 @@ def run_tests() frame.clear() crenel.pos = 0 crenel.pulse_size = 0 - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # All pixels should remain transparent for i:0..9 @@ -169,7 +168,7 @@ def run_tests() frame.clear() crenel.pulse_size = 1 crenel.low_size = 2 - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # Pattern: 1 on, 2 off, 1 on, 2 off... # Positions: 0 = red, 1,2 = transparent, 3 = red, 4,5 = transparent, 6 = red, 7,8 = transparent, 9 = red @@ -185,7 +184,7 @@ def run_tests() crenel.pulse_size = 2 crenel.low_size = 3 crenel.pos = -1 - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # With period = 5 and pos = -1, the pattern should be shifted # The algorithm should handle negative positions correctly @@ -202,7 +201,7 @@ def run_tests() frame.clear() crenel.pos = 0 crenel.nb_pulse = 0 - crenel.render(frame, engine.time_ms) + crenel.render(frame, engine.time_ms, engine.strip_length) # All pixels should remain transparent for i:0..9 @@ -235,7 +234,7 @@ def run_tests() crenel.pulse_size = 10 crenel.low_size = 5 crenel.nb_pulse = 3 # 3 pulses - crenel.render(large_frame) + crenel.render(large_frame, engine.time_ms, 100) # Use frame size as strip_length for this test # Should have 3 pulses of 10 pixels each, separated by 5 pixels # Pulse 1: 0-9, Gap: 10-14, Pulse 2: 15-24, Gap: 25-29, Pulse 3: 30-39 diff --git a/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be b/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be index f3c3271fa..94e429b4f 100644 --- a/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be +++ b/lib/libesp32/berry_animation/src/tests/crenel_position_color_test.be @@ -31,13 +31,12 @@ def test_crenel_with_integer_color() crenel.duration = 0 # infinite crenel.loop = true crenel.opacity = 255 - crenel.name = "test_crenel_int" # Start and render crenel.start() crenel.update(1000) frame.clear() - var result = crenel.render(frame, engine.time_ms) + var result = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result == true, "Render should succeed with integer color") assert(crenel.is_running == true, "Animation should be running") @@ -74,13 +73,12 @@ def test_crenel_with_color_provider() crenel.duration = 0 # infinite crenel.loop = true crenel.opacity = 255 - crenel.name = "test_crenel_provider" # Start and render crenel.start() crenel.update(1000) frame.clear() - var result = crenel.render(frame, engine.time_ms) + var result = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result == true, "Render should succeed with ColorProvider") assert(crenel.is_running == true, "Animation should be running") @@ -117,7 +115,6 @@ def test_crenel_with_dynamic_color_provider() crenel.duration = 0 # infinite crenel.loop = true crenel.opacity = 255 - crenel.name = "test_crenel_dynamic" # Start and render at different times to verify color changes crenel.start() @@ -125,14 +122,14 @@ def test_crenel_with_dynamic_color_provider() # Render at time 0 crenel.update(0) frame.clear() - var result1 = crenel.render(frame, engine.time_ms) + var result1 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result1 == true, "First render should succeed") # Render at time 1000 (different color expected) engine.time_ms = 1000 # Simulate time passage crenel.update(1000) frame.clear() - var result2 = crenel.render(frame, engine.time_ms) + var result2 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result2 == true, "Second render should succeed") print("✓ CrenelPositionAnimation with dynamic ColorProvider test passed") @@ -166,13 +163,12 @@ def test_crenel_with_generic_value_provider() crenel.duration = 0 # infinite crenel.loop = true crenel.opacity = 255 - crenel.name = "test_crenel_generic" # Start and render crenel.start() crenel.update(1000) frame.clear() - var result = crenel.render(frame, engine.time_ms) + var result = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result == true, "Render should succeed with generic ValueProvider") assert(crenel.is_running == true, "Animation should be running") @@ -204,7 +200,6 @@ def test_crenel_set_color_methods() crenel.duration = 0 # infinite crenel.loop = true crenel.opacity = 255 - crenel.name = "test_set_color" crenel.start() @@ -212,7 +207,7 @@ def test_crenel_set_color_methods() crenel.color = 0xFF00FF00 # Green crenel.update(1000) frame.clear() - var result1 = crenel.render(frame, engine.time_ms) + var result1 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result1 == true, "Render with new integer color should succeed") # Test setting color provider via direct assignment @@ -221,7 +216,7 @@ def test_crenel_set_color_methods() crenel.color = yellow_provider crenel.update(1000) frame.clear() - var result2 = crenel.render(frame, engine.time_ms) + var result2 = crenel.render(frame, engine.time_ms, engine.strip_length) assert(result2 == true, "Render with ColorProvider should succeed") print("✓ CrenelPositionAnimation direct color assignment test passed") @@ -247,7 +242,6 @@ def test_crenel_tostring() crenel_int.duration = 0 crenel_int.loop = true crenel_int.opacity = 255 - crenel_int.name = "test_tostring_int" var str_int = str(crenel_int) # Just verify the string is not empty and contains expected parts @@ -269,7 +263,6 @@ def test_crenel_tostring() crenel_provider.duration = 0 crenel_provider.loop = true crenel_provider.opacity = 255 - crenel_provider.name = "test_tostring_provider" var str_provider = str(crenel_provider) # Just verify the string is not empty diff --git a/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be index bea2bc556..69f0b7976 100644 --- a/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be +++ b/lib/libesp32/berry_animation/src/tests/dsl_berry_code_blocks_test.be @@ -396,7 +396,7 @@ def test_external_function_complex() 'extern function rand_meter\n' + 'extern function breathing_effect\n' + 'palette rainbow = [0xFF0000, 0x00FF00, 0x0000FF]\n' + - 'animation meter = palette_meter_animation(value_func = rand_meter)\n' + + 'animation meter = palette_meter_animation(level = rand_meter())\n' + 'animation breath = solid(color=blue)\n' + 'breath.opacity = breathing_effect\n' + 'run meter' @@ -550,6 +550,46 @@ def test_external_function_execution() end end +# Test duplicate extern function declarations are allowed +def test_duplicate_extern_function() + print("Testing duplicate extern function declarations...") + + var dsl_source = 'berry """\n' + + 'def dup_func()\n' + + ' return 50\n' + + 'end\n' + + '"""\n' + + 'extern function dup_func\n' + + 'extern function dup_func\n' + + 'extern function dup_func\n' + + 'animation test = solid(color=red)\n' + + 'test.opacity = dup_func\n' + + 'run test' + + var berry_code = animation_dsl.compile(dsl_source) + + assert(berry_code != nil, "Should generate Berry code for duplicate extern declarations") + + # Verify only one registration is generated (not duplicated) + import string + var count = 0 + var idx = 0 + while true + idx = string.find(berry_code, 'animation.register_user_function("dup_func"', idx) + if idx < 0 break end + count += 1 + idx += 1 + end + + assert(count == 1, f"Should generate exactly one registration, got {count}") + + # Verify the function call is still generated correctly + assert(string.find(berry_code, "animation.get_user_function('dup_func')(engine)") >= 0, "Should call external function") + + print("✓ Duplicate extern function declarations test passed") + return true +end + # Run all tests def run_all_berry_block_tests() print("=== DSL Berry Code Blocks and External Functions Test Suite ===") @@ -575,7 +615,8 @@ def run_all_berry_block_tests() test_external_error_missing_function_name, test_external_function_reserved_name_validation, test_external_function_in_sequences, - test_external_function_execution + test_external_function_execution, + test_duplicate_extern_function ] var passed = 0 diff --git a/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be b/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be index c3b03f976..fbc639f8b 100644 --- a/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be +++ b/lib/libesp32/berry_animation/src/tests/engine_proxy_test.be @@ -24,11 +24,9 @@ print("✓ Basic creation test passed") print("\n=== Test 2: Add Child Animations ===") var child1 = animation.solid(engine) child1.color = 0xFFFF0000 # Red -child1.name = "red_child" var child2 = animation.solid(engine) child2.color = 0xFF00FF00 # Green -child2.name = "green_child" proxy.add(child1) proxy.add(child2) @@ -60,15 +58,15 @@ print("✓ Start engine proxy test passed") # Test 5: Update engine proxy (should update all animations) print("\n=== Test 5: Update Engine Proxy ===") engine.time_ms = 1500 -var result = proxy.update(engine.time_ms) -assert(result == true, "Engine proxy should still be running") +proxy.update(engine.time_ms) +assert(proxy.is_running == true, "Engine proxy should still be running") print("✓ Update engine proxy test passed") # Test 6: Render engine proxy print("\n=== Test 6: Render Engine Proxy ===") var frame = animation.frame_buffer(30) engine.time_ms = 2000 -result = proxy.render(frame, engine.time_ms) +result = proxy.render(frame, engine.time_ms, engine.strip_length) # Rendering should work (may or may not modify frame depending on animations) print("✓ Render engine proxy test passed") @@ -94,12 +92,10 @@ print("✓ Remove child test passed") print("\n=== Test 9: Engine Proxy with Own Rendering ===") var proxy2 = animation.engine_proxy(engine) proxy2.color = 0xFF0000FF # Blue background -proxy2.name = "blue_proxy" var pulse = animation.breathe_animation(engine) pulse.color = 0xFFFFFF00 # Yellow pulse.period = 2000 -pulse.name = "yellow_pulse" proxy2.add(pulse) engine.time_ms = 3000 @@ -115,7 +111,6 @@ print("\n=== Test 10: Engine Integration ===") var proxy3 = animation.engine_proxy(engine) proxy3.color = 0xFFFF00FF # Magenta proxy3.priority = 15 -proxy3.name = "engine_proxy" # Add to engine (should work since EngineProxy is a Playable) engine.add(proxy3) 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 ee2b2e86e..d254bd629 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 @@ -37,7 +37,7 @@ class TestAnimation : animation.animation def update(time_ms) self.update_called = true self.update_time = time_ms - return super(self).update(time_ms) + super(self).update(time_ms) end def reset_test_state() diff --git a/lib/libesp32/berry_animation/src/tests/filled_animation_test.be b/lib/libesp32/berry_animation/src/tests/filled_animation_test.be index 2b8f582b1..a3e8e210b 100644 --- a/lib/libesp32/berry_animation/src/tests/filled_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/filled_animation_test.be @@ -8,13 +8,15 @@ import animation # Create a mock engine for testing class MockEngine var time_ms + var strip_length def init() self.time_ms = 1000 # Fixed time for testing + self.strip_length = 10 # Mock strip length end def get_strip_length() - return 10 # Mock strip length + return self.strip_length end # Fake add() method for value provider auto-registration @@ -36,7 +38,6 @@ solid_anim.priority = 10 solid_anim.duration = 0 solid_anim.loop = false # Use boolean instead of integer solid_anim.opacity = 255 -solid_anim.name = "solid_test" assert(solid_anim != nil, "Failed to create solid animation") # Start the animation @@ -46,7 +47,7 @@ assert(solid_anim.is_running, "Animation should be running") # Update and render solid_anim.update(mock_engine.time_ms) frame.clear() -var result = solid_anim.render(frame, mock_engine.time_ms) +var result = solid_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Check the color of the first pixel @@ -66,7 +67,6 @@ cycle_anim.priority = 10 cycle_anim.duration = 0 cycle_anim.loop = false # Use boolean instead of integer cycle_anim.opacity = 255 -cycle_anim.name = "cycle_test" assert(cycle_anim != nil, "Failed to create cycle animation") # Start the animation @@ -76,7 +76,7 @@ assert(cycle_anim.is_running, "Animation should be running") # Update and render cycle_anim.update(mock_engine.time_ms) frame.clear() -result = cycle_anim.render(frame, mock_engine.time_ms) +result = cycle_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test 3: animation.solid with a rich palette provider @@ -93,7 +93,6 @@ palette_anim.priority = 10 palette_anim.duration = 0 palette_anim.loop = false # Use boolean instead of integer palette_anim.opacity = 255 -palette_anim.name = "palette_test" assert(palette_anim != nil, "Failed to create palette animation") # Start the animation @@ -103,7 +102,7 @@ assert(palette_anim.is_running, "Animation should be running") # Update and render palette_anim.update(mock_engine.time_ms) frame.clear() -result = palette_anim.render(frame, mock_engine.time_ms) +result = palette_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test 4: animation.solid with a composite provider @@ -124,7 +123,6 @@ composite_anim.priority = 10 composite_anim.duration = 0 composite_anim.loop = false # Use boolean instead of integer composite_anim.opacity = 255 -composite_anim.name = "composite_test" assert(composite_anim != nil, "Failed to create composite animation") # Start the animation @@ -134,7 +132,7 @@ assert(composite_anim.is_running, "Animation should be running") # Update and render composite_anim.update(mock_engine.time_ms) frame.clear() -result = composite_anim.render(frame, mock_engine.time_ms) +result = composite_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test 5: Changing color provider dynamically @@ -145,7 +143,6 @@ dynamic_anim.priority = 10 dynamic_anim.duration = 0 dynamic_anim.loop = false # Use boolean instead of integer dynamic_anim.opacity = 255 -dynamic_anim.name = "dynamic_test" assert(dynamic_anim != nil, "Failed to create dynamic animation") # Start the animation @@ -155,7 +152,7 @@ assert(dynamic_anim.is_running, "Animation should be running") # Update and render with initial color dynamic_anim.update(mock_engine.time_ms) frame.clear() -result = dynamic_anim.render(frame, mock_engine.time_ms) +result = dynamic_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Check the color of the first pixel @@ -166,7 +163,7 @@ assert(pixel_color == 0xFF0000FF, f"Expected 0xFF0000FF, got {pixel_color:08X}") dynamic_anim.color = 0x00FF00FF # Green dynamic_anim.update(mock_engine.time_ms) frame.clear() -result = dynamic_anim.render(frame, mock_engine.time_ms) +result = dynamic_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Check the color of the first pixel @@ -177,7 +174,7 @@ assert(pixel_color == 0x00FF00FF, f"Expected 0x00FF00FF, got {pixel_color:08X}") dynamic_anim.color = cycle_provider dynamic_anim.update(mock_engine.time_ms) frame.clear() -result = dynamic_anim.render(frame, mock_engine.time_ms) +result = dynamic_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") print("All tests passed!") \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be index 62faa58bf..60ec77dfd 100644 --- a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be @@ -19,7 +19,6 @@ fire.flicker_amount = 100 fire.cooling_rate = 55 fire.sparking_rate = 120 fire.priority = 255 -fire.name = "test_fire" print(f"Created fire animation: {fire}") print(f"Initial state - running: {fire.is_running}, priority: {fire.priority}") @@ -78,7 +77,7 @@ var frame = animation.frame_buffer(30) frame.clear() # Render the fire animation -var rendered = fire.render(frame, engine.time_ms) +var rendered = fire.render(frame, engine.time_ms, engine.strip_length) print(f"Rendered to frame buffer: {rendered}") # Check that some pixels have been set (fire should create non-black pixels) @@ -154,7 +153,7 @@ tiny_fire.start() tiny_engine.time_ms = current_time + 125 tiny_fire.update(current_time + 125) var tiny_frame = animation.frame_buffer(1) -tiny_fire.render(tiny_frame, tiny_engine.time_ms) +tiny_fire.render(tiny_frame, tiny_engine.time_ms, tiny_engine.strip_length) print("Tiny fire (1 pixel) created and rendered successfully") # Zero intensity @@ -167,7 +166,7 @@ dim_fire.start() dim_engine.time_ms = current_time + 250 dim_fire.update(current_time + 250) var dim_frame = animation.frame_buffer(10) -dim_fire.render(dim_frame, dim_engine.time_ms) +dim_fire.render(dim_frame, dim_engine.time_ms, dim_engine.strip_length) print("Dim fire (0 intensity) created and rendered successfully") print("\n=== Fire Animation Test Complete ===") diff --git a/lib/libesp32/berry_animation/src/tests/get_param_value_test.be b/lib/libesp32/berry_animation/src/tests/get_param_value_test.be index 9b5b2bd48..0f11eb783 100644 --- a/lib/libesp32/berry_animation/src/tests/get_param_value_test.be +++ b/lib/libesp32/berry_animation/src/tests/get_param_value_test.be @@ -31,7 +31,6 @@ def test_get_param_value_with_color_provider() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = "test" # Create a ColorProvider that we can track calls on class TrackingColorProvider : animation.color_provider @@ -78,7 +77,6 @@ def test_get_param_value_with_generic_provider() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = "test" # Create a generic ValueProvider that we can track calls on class TrackingValueProvider : animation.value_provider @@ -125,7 +123,6 @@ def test_get_param_value_with_context_aware_provider() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = "test" # Create a ValueProvider that returns different values based on parameter name class ContextAwareProvider : animation.value_provider @@ -180,7 +177,6 @@ def test_get_param_value_with_static_value() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = "test" # Set a static value (using the 'opacity' parameter that exists in base Animation) test_anim.opacity = 123 diff --git a/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be b/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be index fe9bc5b9f..0f84e1c93 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_animation_test.be @@ -22,9 +22,7 @@ def test_gradient_creation() # Test single color gradient var red_gradient = animation.gradient_animation(engine) red_gradient.color = 0xFFFF0000 - red_gradient.name = "red_gradient" assert(red_gradient != nil, "Should create red gradient") - assert(red_gradient.name == "red_gradient", "Should set name") # Test radial gradient var radial_gradient = animation.gradient_animation(engine) @@ -35,7 +33,6 @@ def test_gradient_creation() radial_gradient.priority = 10 radial_gradient.duration = 5000 radial_gradient.loop = false - radial_gradient.name = "radial_gradient" assert(radial_gradient != nil, "Should create radial gradient") assert(radial_gradient.gradient_type == 1, "Should be radial gradient") @@ -50,7 +47,6 @@ def test_gradient_parameters() var engine = animation.create_engine(strip) var gradient = animation.gradient_animation(engine) gradient.color = 0xFFFFFFFF - gradient.name = "test" # Test parameter setting via virtual members gradient.gradient_type = 1 @@ -84,16 +80,20 @@ def test_gradient_updates() var gradient = animation.gradient_animation(engine) gradient.color = 0xFF00FF00 gradient.movement_speed = 100 - gradient.name = "test" # Start the animation + # Note: When testing animations directly (not through engine_proxy), we must set start_time manually + gradient.start_time = 1000 # Set start_time manually for direct testing gradient.start(1000) assert(gradient.is_running == true, "Should be running after start") # Test update at different times - assert(gradient.update(1000) == true, "Should update successfully at start time") - assert(gradient.update(1500) == true, "Should update successfully after 500ms") - assert(gradient.update(2000) == true, "Should update successfully after 1000ms") + gradient.update(1000) + assert(gradient.is_running == true, "Should be running after update at start time") + gradient.update(1500) + assert(gradient.is_running == true, "Should be running after update at 500ms") + gradient.update(2000) + assert(gradient.is_running == true, "Should be running after update at 1000ms") # Test that movement_speed affects phase_offset var initial_offset = gradient.phase_offset @@ -113,17 +113,17 @@ def test_gradient_rendering() var gradient = animation.gradient_animation(engine) gradient.color = 0xFFFF0000 gradient.movement_speed = 0 - gradient.name = "test" # Create a frame buffer var frame = animation.frame_buffer(5, 1) # Start and update the animation + gradient.start_time = 1000 # Set start_time manually for direct testing gradient.start(1000) gradient.update(1000) # Test rendering - var result = gradient.render(frame, 1000) + var result = gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render successfully") # Test that colors were set (basic check) @@ -176,14 +176,14 @@ def test_gradient_position_calculations() var linear_gradient = animation.gradient_animation(engine) linear_gradient.color = 0xFFFFFFFF linear_gradient.movement_speed = 0 - linear_gradient.name = "test" + linear_gradient.start_time = 1000 # Set start_time manually for direct testing linear_gradient.start(1000) linear_gradient.update(1000) # The _calculate_linear_position method is private, but we can test the overall effect # by checking that different pixels get different colors in a linear gradient var frame = animation.frame_buffer(10, 1) - linear_gradient.render(frame, 1000) + linear_gradient.render(frame, 1000, engine.strip_length) var first_color = frame.get_pixel_color(0) var last_color = frame.get_pixel_color(9) @@ -195,10 +195,10 @@ def test_gradient_position_calculations() radial_gradient.color = 0xFFFFFFFF radial_gradient.gradient_type = 1 radial_gradient.movement_speed = 0 - radial_gradient.name = "test" + radial_gradient.start_time = 1000 # Set start_time manually for direct testing radial_gradient.start(1000) radial_gradient.update(1000) - radial_gradient.render(frame, 1000) + radial_gradient.render(frame, 1000, engine.strip_length) # In a radial gradient, center pixel should be different from edge pixels var center_color = frame.get_pixel_color(5) # Middle pixel @@ -217,13 +217,11 @@ def test_gradient_color_refactoring() # Test with static color var static_gradient = animation.gradient_animation(engine) static_gradient.color = 0xFFFF0000 - static_gradient.name = "static_test" assert(static_gradient.color == 0xFFFF0000, "Should have color set") # Test with nil color (default rainbow) var rainbow_gradient = animation.gradient_animation(engine) rainbow_gradient.color = nil - rainbow_gradient.name = "rainbow_test" assert(rainbow_gradient.color == nil, "Should accept nil color for rainbow") # Test color resolution @@ -232,14 +230,16 @@ def test_gradient_color_refactoring() # Test basic rendering with different color types var frame = animation.frame_buffer(5, 1) + static_gradient.start_time = 1000 # Set start_time manually for direct testing static_gradient.start(1000) static_gradient.update(1000) - var result = static_gradient.render(frame, 1000) + var result = static_gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render with static color") + rainbow_gradient.start_time = 1000 # Set start_time manually for direct testing rainbow_gradient.start(1000) rainbow_gradient.update(1000) - result = rainbow_gradient.render(frame, 1000) + result = rainbow_gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render with rainbow color") print("✓ GradientAnimation color refactoring test passed") @@ -252,7 +252,6 @@ def test_gradient_virtual_parameters() var strip = global.Leds(10) var engine = animation.create_engine(strip) var gradient = animation.gradient_animation(engine) - gradient.name = "test" # Test virtual parameter assignment and access gradient.color = 0xFFFF00FF @@ -289,7 +288,6 @@ def test_gradient_tostring() var static_gradient = animation.gradient_animation(engine) static_gradient.color = 0xFFFF0000 static_gradient.movement_speed = 50 - static_gradient.name = "static_test" var str_static = str(static_gradient) assert(str_static != nil, "Should have string representation") assert(string.find(str_static, "linear") != -1, "Should mention gradient type") @@ -302,7 +300,6 @@ def test_gradient_tostring() provider_gradient.color = color_provider provider_gradient.gradient_type = 1 provider_gradient.movement_speed = 25 - provider_gradient.name = "provider_test" var str_provider = str(provider_gradient) assert(str_provider != nil, "Should have string representation") assert(string.find(str_provider, "radial") != -1, "Should mention radial type") diff --git a/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be b/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be index aaaff5190..ae2cb9346 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_rainbow_test.be @@ -18,7 +18,7 @@ rainbow_gradient.update(1000) # Create frame and render var frame = animation.frame_buffer(10, 1) -var result = rainbow_gradient.render(frame, 1000) +var result = rainbow_gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render rainbow gradient successfully") # Check that different pixels have different colors (rainbow effect) diff --git a/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be b/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be index 16ff5ebd0..fbb851a32 100644 --- a/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be +++ b/lib/libesp32/berry_animation/src/tests/gradient_simple_test.be @@ -25,12 +25,12 @@ assert(gradient.movement_speed == 50, "Should set movement speed") gradient.start(1000) assert(gradient.is_running == true, "Should be running") -var result = gradient.update(1000) -assert(result == true, "Should update successfully") +gradient.update(1000) +assert(gradient.is_running == true, "Should still be running after update") # Test rendering var frame = animation.frame_buffer(5, 1) -result = gradient.render(frame, 1000) +result = gradient.render(frame, 1000, engine.strip_length) assert(result == true, "Should render successfully") print("✓ Basic GradientAnimation test passed!") diff --git a/lib/libesp32/berry_animation/src/tests/jitter_animation_test.be b/lib/libesp32/berry_animation/src/tests/jitter_animation_test.be index 2cfaa1d22..89dc07c3d 100644 --- a/lib/libesp32/berry_animation/src/tests/jitter_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/jitter_animation_test.be @@ -158,11 +158,11 @@ def test_jitter_animation_update_render() jitter_anim.start(1000) # Test update - var result = jitter_anim.update(1500) - assert(result == true, "Update should return true for running animation") + jitter_anim.update(1500) + assert(jitter_anim.is_running == true, "Animation should still be running after update") # Test render - result = jitter_anim.render(frame, 1500) + var result = jitter_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that jitter offsets were initialized diff --git a/lib/libesp32/berry_animation/src/tests/motion_effects_test.be b/lib/libesp32/berry_animation/src/tests/motion_effects_test.be index 6ca7f0717..232ef3586 100644 --- a/lib/libesp32/berry_animation/src/tests/motion_effects_test.be +++ b/lib/libesp32/berry_animation/src/tests/motion_effects_test.be @@ -172,10 +172,10 @@ def test_motion_effects_update_render() bounce_anim.start(1000) assert(bounce_anim.is_running == true, "Bounce animation should be running after start") - var result = bounce_anim.update(1500) - assert(result == true, "Bounce update should return true for running animation") + bounce_anim.update(1500) + assert(bounce_anim.is_running == true, "Bounce animation should still be running after update") - result = bounce_anim.render(frame, 1500) + var result = bounce_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Bounce render should return true for running animation") # Test scale update/render @@ -190,10 +190,10 @@ def test_motion_effects_update_render() scale_anim.start(2000) assert(scale_anim.is_running == true, "Scale animation should be running after start") - result = scale_anim.update(2500) - assert(result == true, "Scale update should return true for running animation") + scale_anim.update(2500) + assert(scale_anim.is_running == true, "Scale animation should still be running after update") - result = scale_anim.render(frame, 2500) + result = scale_anim.render(frame, 2500, engine.strip_length) assert(result == true, "Scale render should return true for running animation") # Test jitter update/render @@ -209,10 +209,10 @@ def test_motion_effects_update_render() jitter_anim.start(3000) assert(jitter_anim.is_running == true, "Jitter animation should be running after start") - result = jitter_anim.update(3500) - assert(result == true, "Jitter update should return true for running animation") + jitter_anim.update(3500) + assert(jitter_anim.is_running == true, "Jitter animation should still be running after update") - result = jitter_anim.render(frame, 3500) + result = jitter_anim.render(frame, 3500, engine.strip_length) assert(result == true, "Jitter render should return true for running animation") print("✓ Motion effects update/render test passed") diff --git a/lib/libesp32/berry_animation/src/tests/noise_animation_test.be b/lib/libesp32/berry_animation/src/tests/noise_animation_test.be index 3a9aee092..cccba053c 100644 --- a/lib/libesp32/berry_animation/src/tests/noise_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/noise_animation_test.be @@ -101,15 +101,17 @@ def test_noise_animation_update_render() var frame = animation.frame_buffer(10) # Start animation + # Note: When testing animations directly (not through engine_proxy), we must set start_time manually + noise_anim.start_time = 1000 # Set start_time manually for direct testing noise_anim.start(1000) assert(noise_anim.is_running == true, "Animation should be running after start") # Test update - var result = noise_anim.update(1500) - assert(result == true, "Update should return true for running animation") + noise_anim.update(1500) + assert(noise_anim.is_running == true, "Animation should still be running after update") # Test render - result = noise_anim.render(frame, 1500) + var result = noise_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that colors were set (should not all be black) diff --git a/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be b/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be new file mode 100644 index 000000000..e136467a4 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be @@ -0,0 +1,236 @@ +# Test suite for GradientMeterAnimation (palette_meter_animation) +# +# Tests the VU meter style animation with gradient colors and peak hold. + +import animation + +# Test basic creation +def test_gradient_meter_creation() + print("Testing GradientMeterAnimation creation...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + + var meter = animation.palette_meter_animation(engine) + assert(meter != nil, "Should create gradient meter animation") + assert(meter.level == 255, "Should default to level 255") + assert(meter.peak_hold == 1000, "Should default to peak_hold 1000ms") + assert(meter.shift_period == 0, "Should default to static gradient") + + print("✓ GradientMeterAnimation creation test passed") +end + +# Test level parameter +def test_gradient_meter_level() + print("Testing GradientMeterAnimation level...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + + # Test level setting + meter.level = 128 + assert(meter.level == 128, "Should set level to 128") + + meter.level = 255 + assert(meter.level == 255, "Should set level to 255") + + meter.level = 0 + assert(meter.level == 0, "Should set level to 0") + + # Test validation + assert(meter.set_param("level", 300) == false, "Should reject level > 255") + assert(meter.set_param("level", -1) == false, "Should reject level < 0") + + print("✓ GradientMeterAnimation level test passed") +end + +# Test peak hold functionality +def test_gradient_meter_peak_hold() + print("Testing GradientMeterAnimation peak hold...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + + # Enable peak hold + meter.peak_hold = 1000 # 1 second hold + assert(meter.peak_hold == 1000, "Should set peak_hold to 1000ms") + + # Start animation + meter.start_time = 1000 + meter.start(1000) + + # Set initial level and update at time 1000 + meter.level = 200 + meter.update(1000) + assert(meter.peak_level == 200, "Peak should track level") + # peak_time is now 1000 + + # Lower level at time 1500 - peak should stay (500ms elapsed, within 1000ms hold) + meter.level = 100 + meter.update(1500) + assert(meter.peak_level == 200, "Peak should hold at 200") + + # At time 2100 (1100ms since peak was set at 1000), hold has expired + meter.update(2100) + assert(meter.peak_level == 100, "Peak should drop to current level after hold expires") + + print("✓ GradientMeterAnimation peak hold test passed") +end + +# Test rendering +def test_gradient_meter_rendering() + print("Testing GradientMeterAnimation rendering...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + + # Use a color provider (required for PaletteGradientAnimation) + var color_source = animation.rich_palette(engine) + meter.color_source = color_source + + var frame = animation.frame_buffer(10, 1) + + # Start and update (color_source needs update to init LUT) + meter.start_time = 0 + meter.start(0) + color_source.update(0) + meter.update(0) + + # Test 50% level (should fill ~5 pixels) + meter.level = 128 + color_source.update(100) + meter.update(100) + meter.render(frame, 100, 10) + + # First pixels should have color, last pixels should be transparent/black + var first_color = frame.get_pixel_color(0) + assert(first_color != 0x00000000, "First pixel should have color") + + # Test 0% level (nothing filled) + frame.fill_pixels(frame.pixels, 0x00000000) # Clear frame + meter.level = 0 + color_source.update(200) + meter.update(200) + meter.render(frame, 200, 10) + + print("✓ GradientMeterAnimation rendering test passed") +end + +# Test peak indicator rendering +def test_gradient_meter_peak_indicator() + print("Testing GradientMeterAnimation peak indicator...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + + # Use a color provider + var color_source = animation.rich_palette(engine) + meter.color_source = color_source + meter.peak_hold = 2000 + + var frame = animation.frame_buffer(10, 1) + + # Start animation + meter.start_time = 0 + meter.start(0) + color_source.update(0) + + # Set high level then lower it + meter.level = 200 + meter.update(0) + + meter.level = 50 + color_source.update(100) + meter.update(100) + + # Peak should still be at 200, current at 50 + assert(meter.peak_level == 200, "Peak should be at 200") + assert(meter.level == 50, "Level should be at 50") + + # Render and check peak pixel is set + meter.render(frame, 100, 10) + + # Peak pixel position (200/255 * 9 ≈ 7) + var peak_pixel = tasmota.scale_uint(200, 0, 255, 0, 9) + var peak_color = frame.get_pixel_color(peak_pixel) + assert(peak_color != 0x00000000, "Peak indicator pixel should have color") + + print("✓ GradientMeterAnimation peak indicator test passed") +end + +# Test with color provider +def test_gradient_meter_with_color_provider() + print("Testing GradientMeterAnimation with color provider...") + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + + # Use a color cycle provider + var color_cycle = animation.color_cycle(engine) + meter.color_source = color_cycle + + meter.level = 200 + meter.start_time = 0 + meter.start(0) + color_cycle.update(0) + meter.update(0) + + var frame = animation.frame_buffer(10, 1) + var result = meter.render(frame, 0, 10) + assert(result == true, "Should render with color provider") + + print("✓ GradientMeterAnimation with color provider test passed") +end + +# Test tostring +def test_gradient_meter_tostring() + print("Testing GradientMeterAnimation tostring...") + + import string + + var strip = global.Leds(10) + var engine = animation.create_engine(strip) + var meter = animation.palette_meter_animation(engine) + meter.level = 150 + meter.peak_hold = 500 + + var s = str(meter) + assert(s != nil, "Should have string representation") + assert(string.find(s, "GradientMeterAnimation") != -1, "Should contain class name") + assert(string.find(s, "level=150") != -1, "Should contain level") + assert(string.find(s, "peak_hold=500") != -1, "Should contain peak_hold") + + print("✓ GradientMeterAnimation tostring test passed") +end + +# Run all tests +def run_palette_meter_animation_tests() + print("=== GradientMeterAnimation Tests ===") + + try + test_gradient_meter_creation() + test_gradient_meter_level() + test_gradient_meter_peak_hold() + test_gradient_meter_rendering() + test_gradient_meter_peak_indicator() + test_gradient_meter_with_color_provider() + test_gradient_meter_tostring() + + print("=== All GradientMeterAnimation tests passed! ===") + return true + except .. as e, msg + print(f"Test failed: {e} - {msg}") + raise "test_failed" + end +end + +animation.run_palette_meter_animation_tests = run_palette_meter_animation_tests + +run_palette_meter_animation_tests() + +return run_palette_meter_animation_tests 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 e98747283..b7a28141c 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 @@ -47,20 +47,21 @@ gradient_anim.priority = 10 gradient_anim.duration = 0 gradient_anim.loop = false gradient_anim.opacity = 255 -gradient_anim.name = "gradient_test" assert(gradient_anim != nil, "Failed to create gradient animation") assert(gradient_anim.shift_period == 3000, "Shift period should be 3000") # Start the animation -gradient_anim.start() -gradient_anim.update() # force first tick +# Note: When testing animations directly (not through engine_proxy), we must set start_time manually +gradient_anim.start_time = mock_engine.time_ms # Set start_time manually for direct testing +gradient_anim.start(mock_engine.time_ms) +gradient_anim.update(mock_engine.time_ms) # force first tick assert(gradient_anim.is_running, "Animation should be running") # Update and render gradient_anim.update(mock_engine.time_ms) frame.clear() -result = gradient_anim.render(frame, mock_engine.time_ms) +result = gradient_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test parameter changes @@ -78,47 +79,6 @@ assert(gradient_anim.phase_shift == 64, "Phase shift should be updated to 64") gradient_anim.shift_period = 0 assert(gradient_anim.shift_period == 0, "Shift period should be updated to 0 (static)") -# Test 2: PaletteMeterAnimation -print("Test 2: PaletteMeterAnimation") -var meter_anim = animation.palette_meter_animation(mock_engine) -meter_anim.color_source = mock_color_source - -# Create a value function that returns 50% (half the strip) -def meter_value_func(engine, time_ms, animation) - return 50 # 50% of the strip (this is still 0-100 for meter logic) -end -meter_anim.value_func = meter_value_func - -meter_anim.priority = 10 -meter_anim.duration = 0 -meter_anim.loop = false -meter_anim.opacity = 255 -meter_anim.name = "meter_test" - -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 -meter_anim.update(mock_engine.time_ms) -frame.clear() -result = meter_anim.render(frame, mock_engine.time_ms) -assert(result, "Render should return true") - -# Test changing value function -def new_meter_value_func(engine, time_ms, animation) - return 75 # 75% of the strip (this is still 0-100 for meter logic) -end -meter_anim.value_func = new_meter_value_func - -meter_anim.update(mock_engine.time_ms) -frame.clear() -result = meter_anim.render(frame, mock_engine.time_ms) -assert(result, "Render should return true") - # Test 3: Changing color sources dynamically print("Test 3: Changing color sources dynamically") var dynamic_anim = animation.palette_gradient_animation(mock_engine) @@ -127,14 +87,15 @@ dynamic_anim.shift_period = 1000 dynamic_anim.spatial_period = 3 # Start the animation -dynamic_anim.start() -dynamic_anim.update() # force first tick +dynamic_anim.start_time = mock_engine.time_ms # Set start_time manually for direct testing +dynamic_anim.start(mock_engine.time_ms) +dynamic_anim.update(mock_engine.time_ms) # force first tick assert(dynamic_anim.is_running, "Animation should be running") # Update and render with initial color source dynamic_anim.update(mock_engine.time_ms) frame.clear() -result = dynamic_anim.render(frame, mock_engine.time_ms) +result = dynamic_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Create another mock color source @@ -150,7 +111,7 @@ var mock_color_source2 = MockColorSource2() dynamic_anim.color_source = mock_color_source2 dynamic_anim.update(mock_engine.time_ms) frame.clear() -result = dynamic_anim.render(frame, mock_engine.time_ms) +result = dynamic_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test 4: Parameter validation @@ -188,14 +149,15 @@ rich_anim.color_source = rainbow_color_source rich_anim.shift_period = 1000 # Start the animation -rich_anim.start() -rich_anim.update() # force first tick +rich_anim.start_time = mock_engine.time_ms # Set start_time manually for direct testing +rich_anim.start(mock_engine.time_ms) +rich_anim.update(mock_engine.time_ms) # force first tick assert(rich_anim.is_running, "Animation should be running") # Update and render rich_anim.update(mock_engine.time_ms) frame.clear() -result = rich_anim.render(frame, mock_engine.time_ms) +result = rich_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(result, "Render should return true") # Test 6: Animation timing and synchronization @@ -208,21 +170,12 @@ anim1.color_source = mock_color_source anim1.shift_period = 1000 anim1.spatial_period = 4 -var anim2 = animation.palette_meter_animation(mock_engine) -anim2.color_source = mock_color_source2 -def meter_func(engine, time_ms, animation) - return 128 -end -anim2.value_func = meter_func - # Start both animations at the same time +anim1.start_time = sync_time # Set start_time manually for direct testing 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") # Test 7: Animation without color source (should handle gracefully) print("Test 7: Animation without color source") @@ -231,10 +184,11 @@ no_color_anim.shift_period = 1000 no_color_anim.spatial_period = 3 # Note: no color_source set -no_color_anim.start() +no_color_anim.start_time = mock_engine.time_ms # Set start_time manually for direct testing +no_color_anim.start(mock_engine.time_ms) no_color_anim.update(mock_engine.time_ms) frame.clear() -result = no_color_anim.render(frame, mock_engine.time_ms) +result = no_color_anim.render(frame, mock_engine.time_ms, mock_engine.strip_length) assert(!result, "Render should return false when no color source is set") # Test 8: String representation diff --git a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be index a27af0ee3..227600fef 100644 --- a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be @@ -22,7 +22,6 @@ def test_parameter_accepts_value_providers() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = "test" # Test with static integer value (using existing 'opacity' parameter with range 0-255) assert(test_anim.set_param("opacity", 42) == true, "Should accept static integer") diff --git a/lib/libesp32/berry_animation/src/tests/plasma_animation_test.be b/lib/libesp32/berry_animation/src/tests/plasma_animation_test.be index d08e2fa98..4710d7f5f 100644 --- a/lib/libesp32/berry_animation/src/tests/plasma_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/plasma_animation_test.be @@ -16,7 +16,6 @@ def test_plasma_animation_basic() # Test with default parameters var plasma_anim = animation.plasma_animation(engine) - plasma_anim.name = "test_plasma" assert(plasma_anim != nil, "PlasmaAnimation should be created") assert(plasma_anim.freq_x == 32, "Default freq_x should be 32") @@ -50,7 +49,6 @@ def test_plasma_animation_custom() plasma_anim.priority = 15 plasma_anim.duration = 5000 plasma_anim.loop = false - plasma_anim.name = "custom_plasma" assert(plasma_anim.freq_x == 50, "Custom freq_x should be 50") assert(plasma_anim.freq_y == 40, "Custom freq_y should be 40") @@ -74,7 +72,6 @@ def test_plasma_animation_parameters() var engine = animation.create_engine(strip) var plasma_anim = animation.plasma_animation(engine) - plasma_anim.name = "param_test" # Test parameter changes using virtual member assignment plasma_anim.freq_x = 60 @@ -109,7 +106,6 @@ def test_plasma_animation_update_render() plasma_anim.freq_x = 40 plasma_anim.freq_y = 30 plasma_anim.time_speed = 60 - plasma_anim.name = "update_test" var frame = animation.frame_buffer(10) @@ -118,11 +114,11 @@ def test_plasma_animation_update_render() assert(plasma_anim.is_running == true, "Animation should be running after start") # Test update - var result = plasma_anim.update(1500) - assert(result == true, "Update should return true for running animation") + plasma_anim.update(1500) + assert(plasma_anim.is_running == true, "Animation should still be running after update") # Test render - result = plasma_anim.render(frame, 1500) + var result = plasma_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that colors were set (should not all be black) @@ -152,7 +148,6 @@ def test_plasma_constructors() var rainbow_plasma = animation.plasma_rainbow(engine) assert(rainbow_plasma != nil, "plasma_rainbow should create animation") assert(rainbow_plasma.time_speed == 50, "Rainbow plasma should have correct time_speed") - assert(rainbow_plasma.name == "plasma_rainbow", "Rainbow plasma should have correct name") # Test plasma_fast var fast_plasma = animation.plasma_fast(engine) @@ -179,7 +174,6 @@ def test_plasma_tostring() plasma_anim.phase_y = 70 plasma_anim.time_speed = 85 plasma_anim.blend_mode = 1 - plasma_anim.name = "string_test" var str_repr = str(plasma_anim) diff --git a/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be b/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be index 54490ffe1..d1c7a8d93 100644 --- a/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be +++ b/lib/libesp32/berry_animation/src/tests/pull_lexer_transpiler_test.be @@ -40,25 +40,6 @@ def test_pull_lexer_basic() return berry_code == direct_berry_code end -def test_pull_lexer_template_mode() - print("=== Testing Pull Lexer Template Mode ===") - - var template_source = "animation test = solid(color=red)\n" + - "test.opacity = 200\n" + - "run test" - - # Test with template mode enabled - var pull_lexer = animation_dsl.create_lexer(template_source) - var transpiler = animation_dsl.SimpleDSLTranspiler(pull_lexer) - - var berry_code = transpiler.transpile_template_body() - - print("Template Body Result:") - print(berry_code) - - return true -end - def test_pull_lexer_token_access() print("=== Testing Pull Lexer Token Access Methods ===") @@ -112,7 +93,6 @@ def run_all_tests() var tests = [ test_pull_lexer_basic, - test_pull_lexer_template_mode, test_pull_lexer_token_access, test_pull_lexer_position_info ] @@ -151,7 +131,6 @@ run_all_tests() return { "test_pull_lexer_basic": test_pull_lexer_basic, - "test_pull_lexer_template_mode": test_pull_lexer_template_mode, "test_pull_lexer_token_access": test_pull_lexer_token_access, "test_pull_lexer_position_info": test_pull_lexer_position_info, "run_all_tests": run_all_tests diff --git a/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be b/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be index 369add2cc..6fdf5f69e 100644 --- a/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/pulse_animation_test.be @@ -98,7 +98,7 @@ print(f"Color at full cycle: 0x{color_full :08x}") # Test rendering var frame = animation.frame_buffer(5) -blue_pulse.render(frame, engine.time_ms) +blue_pulse.render(frame, engine.time_ms, engine.strip_length) print(f"First pixel after rendering: 0x{frame.get_pixel_color(0) :08x}") # Validate key test results diff --git a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be index e122d0212..eb14fcf37 100644 --- a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be +++ b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be @@ -22,7 +22,6 @@ print("Created rich palette animation with engine-only constructor") # Test that it's created successfully print(f"Animation created: {anim}") print(f"Animation type: {type(anim)}") -print(f"Animation name: {anim.name}") # Test 2: Set parameters using virtual member assignment (parameter forwarding) anim.palette = bytes("00FF0000" "80FFFF00" "FF0000FF") # Red to Yellow to Blue @@ -61,22 +60,22 @@ print(f"Animation running: {anim.is_running}") # Test 5: Test rendering var frame = animation.frame_buffer(5) -anim.render(frame, engine.time_ms) +anim.render(frame, engine.time_ms, engine.strip_length) var pixel_color = frame.get_pixel_color(0) print(f"Rendered pixel color: {pixel_color}") # Test 6: Test color changes over time engine.time_ms = 0 anim.start(0) -anim.render(frame, 0) +anim.render(frame, 0, engine.strip_length) var color_t0 = frame.get_pixel_color(0) engine.time_ms = 1500 # Half cycle -anim.render(frame, 1500) +anim.render(frame, 1500, engine.strip_length) var color_t1500 = frame.get_pixel_color(0) engine.time_ms = 3000 # Full cycle -anim.render(frame, 3000) +anim.render(frame, 3000, engine.strip_length) var color_t3000 = frame.get_pixel_color(0) print(f"Color at t=0: {color_t0}") @@ -124,7 +123,6 @@ print(f"CSS gradient available: {bool(css_gradient)}") # Validate key test results assert(anim != nil, "Rich palette animation should be created") assert(type(anim) == "instance", "Animation should be an instance") -assert(anim.name == "rich_palette", "Animation should have correct default name") # Test parameter forwarding assert(anim.cycle_period == 2000, "Cycle period should be forwarded") diff --git a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be index 27e0dbba9..0d2234b3f 100644 --- a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be @@ -11,13 +11,15 @@ import animation # Create a mock engine for testing class MockEngine var time_ms + var strip_length def init() self.time_ms = 0 # Start at time 0 + self.strip_length = 10 # Mock strip length end def get_strip_length() - return 10 # Mock strip length + return self.strip_length end def set_time(time) @@ -132,28 +134,28 @@ class RichPaletteAnimationTest # Test at start - update engine time and get color mock_engine.set_time(0) anim.update(0) - anim.render(frame, 0) + anim.render(frame, 0, mock_engine.strip_length) var pixel_color = frame.get_pixel_color(0) self.assert_equal(pixel_color != 0, true, "Start color is not zero") # Test at middle - update engine time and get color mock_engine.set_time(500) anim.update(500) # 50% through cycle - anim.render(frame, 500) + anim.render(frame, 500, mock_engine.strip_length) var middle_color = frame.get_pixel_color(0) self.assert_equal(middle_color != 0, true, "Middle color is not zero") # Test at end - update engine time and get color mock_engine.set_time(1000) anim.update(1000) # 100% through cycle - anim.render(frame, 1000) + anim.render(frame, 1000, mock_engine.strip_length) var end_color = frame.get_pixel_color(0) self.assert_equal(end_color != 0, true, "End color is not zero") # Test looping - should be back to start color mock_engine.set_time(2000) anim.update(2000) # After another full cycle - anim.render(frame, 2000) + anim.render(frame, 2000, mock_engine.strip_length) var loop_color = frame.get_pixel_color(0) self.assert_equal(loop_color, pixel_color, "Loop color matches start color") diff --git a/lib/libesp32/berry_animation/src/tests/scale_animation_test.be b/lib/libesp32/berry_animation/src/tests/scale_animation_test.be index 3fe5175ee..17bb0b622 100644 --- a/lib/libesp32/berry_animation/src/tests/scale_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/scale_animation_test.be @@ -232,11 +232,11 @@ def test_scale_animation_update_render() scale_anim.start(1000) # Test update - var result = scale_anim.update(1500) - assert(result == true, "Update should return true for running animation") + scale_anim.update(1500) + assert(scale_anim.is_running == true, "Animation should still be running after update") # Test render - result = scale_anim.render(frame, 1500) + var result = scale_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that colors were calculated 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 775487ce9..5993c000c 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 @@ -34,7 +34,6 @@ def test_multiple_sequence_managers() red_anim.duration = 0 red_anim.loop = false red_anim.opacity = 255 - red_anim.name = "red" var green_provider = animation.static_color(engine) green_provider.color = 0xFF00FF00 @@ -44,7 +43,6 @@ def test_multiple_sequence_managers() green_anim.duration = 0 green_anim.loop = false green_anim.opacity = 255 - green_anim.name = "green" var blue_provider = animation.static_color(engine) blue_provider.color = 0xFF0000FF @@ -54,7 +52,6 @@ def test_multiple_sequence_managers() blue_anim.duration = 0 blue_anim.loop = false blue_anim.opacity = 255 - blue_anim.name = "blue" # Create different sequences for each manager using fluent interface seq_manager1.push_play_step(red_anim, 2000) @@ -105,7 +102,6 @@ def test_sequence_manager_coordination() anim1.duration = 0 anim1.loop = false anim1.opacity = 255 - anim1.name = "anim1" var provider2 = animation.static_color(engine) provider2.color = 0xFF00FF00 @@ -115,7 +111,6 @@ def test_sequence_manager_coordination() anim2.duration = 0 anim2.loop = false anim2.opacity = 255 - anim2.name = "anim2" # Create sequences that will overlap using fluent interface seq_manager1.push_play_step(anim1, 3000) # 3 seconds @@ -172,7 +167,6 @@ def test_sequence_manager_engine_integration() test_anim1.duration = 0 test_anim1.loop = false test_anim1.opacity = 255 - test_anim1.name = "test1" var provider2 = animation.static_color(engine) provider2.color = 0xFF00FF00 @@ -182,7 +176,6 @@ def test_sequence_manager_engine_integration() test_anim2.duration = 0 test_anim2.loop = false test_anim2.opacity = 255 - test_anim2.name = "test2" # Create sequences using fluent interface seq_manager1.push_play_step(test_anim1, 1000) @@ -274,7 +267,6 @@ def test_sequence_manager_clear_all() test_anim1.duration = 0 test_anim1.loop = false test_anim1.opacity = 255 - test_anim1.name = "test1" var provider2 = animation.static_color(engine) provider2.color = 0xFF00FF00 @@ -284,7 +276,6 @@ def test_sequence_manager_clear_all() test_anim2.duration = 0 test_anim2.loop = false test_anim2.opacity = 255 - test_anim2.name = "test2" # Create sequences using fluent interface seq_manager1.push_play_step(test_anim1, 5000) @@ -341,7 +332,6 @@ def test_sequence_manager_stress() test_anim.duration = 0 test_anim.loop = false test_anim.opacity = 255 - test_anim.name = f"anim{i}" # Create sequence using fluent interface seq_managers[i].push_play_step(test_anim, (i + 1) * 500) # Different durations 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 24995de96..f62a01f70 100644 --- a/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be +++ b/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be @@ -42,7 +42,6 @@ def test_sequence_manager_step_creation() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Test fluent interface step creation var seq_manager = animation.sequence_manager(engine) @@ -89,7 +88,6 @@ def test_sequence_manager_execution() anim1.priority = 0 anim1.duration = 0 anim1.loop = true - anim1.name = "anim1" var color_provider2 = animation.static_color(engine) color_provider2.color = 0xFF00FF00 @@ -98,7 +96,6 @@ def test_sequence_manager_execution() anim2.priority = 0 anim2.duration = 0 anim2.loop = true - anim2.name = "anim2" # Create sequence using fluent interface seq_manager.push_play_step(anim1, 1000) @@ -137,7 +134,6 @@ def test_sequence_manager_timing() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Create simple sequence with timed steps using fluent interface seq_manager.push_play_step(test_anim, 1000) # 1 second @@ -191,7 +187,6 @@ def test_sequence_manager_step_info() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Create sequence using fluent interface seq_manager.push_play_step(test_anim, 2000) .push_wait_step(1000) @@ -221,7 +216,6 @@ def test_sequence_manager_stop() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Create sequence using fluent interface seq_manager.push_play_step(test_anim, 5000) @@ -259,7 +253,6 @@ def test_sequence_manager_is_running() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Create sequence using fluent interface seq_manager.push_play_step(test_anim, 1000) @@ -294,7 +287,6 @@ def test_sequence_manager_assignment_steps() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" test_anim.opacity = 255 # Initial opacity # Create brightness value provider for assignment @@ -353,7 +345,6 @@ def test_sequence_manager_complex_sequence() red_anim.priority = 0 red_anim.duration = 0 red_anim.loop = true - red_anim.name = "red" var green_provider = animation.static_color(engine) green_provider.color = 0xFF00FF00 @@ -362,7 +353,6 @@ def test_sequence_manager_complex_sequence() green_anim.priority = 0 green_anim.duration = 0 green_anim.loop = true - green_anim.name = "green" var blue_provider = animation.static_color(engine) blue_provider.color = 0xFF0000FF @@ -371,7 +361,6 @@ def test_sequence_manager_complex_sequence() blue_anim.priority = 0 blue_anim.duration = 0 blue_anim.loop = true - blue_anim.name = "blue" # Create complex sequence using fluent interface seq_manager.push_play_step(red_anim, 1000) # Play red for 1s @@ -436,7 +425,6 @@ def test_sequence_manager_integration() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Create sequence using fluent interface seq_manager.push_play_step(test_anim, 1000) @@ -517,7 +505,6 @@ def test_sequence_manager_repeat_execution_with_functions() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test_repeat" # Create a function that returns repeat count (simulating palette_size) var repeat_count_func = def (engine) return 3 end @@ -606,7 +593,6 @@ def test_sequence_manager_dynamic_repeat_changes() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "dynamic_test" # Create dynamic repeat count that changes based on external state var external_state = {"multiplier": 2} @@ -719,7 +705,6 @@ def test_sequence_manager_zero_iterations() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test" # Track execution count var execution_count = 0 @@ -842,7 +827,6 @@ def test_sequence_manager_boolean_repeat_counts() test_anim.priority = 0 test_anim.duration = 0 test_anim.loop = true - test_anim.name = "test_bool" # Test 1: repeat_count = true (should execute once, true converts to 1) var execution_count = 0 diff --git a/lib/libesp32/berry_animation/src/tests/shift_animation_test.be b/lib/libesp32/berry_animation/src/tests/shift_animation_test.be index aef44797c..a2240eae7 100644 --- a/lib/libesp32/berry_animation/src/tests/shift_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/shift_animation_test.be @@ -116,11 +116,11 @@ def test_shift_animation_update_render() assert(shift_anim.is_running == true, "Animation should be running after start") # Test update - var result = shift_anim.update(1500) - assert(result == true, "Update should return true for running animation") + shift_anim.update(1500) + assert(shift_anim.is_running == true, "Animation should still be running after update") # Test render - result = shift_anim.render(frame, 1500) + var result = shift_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that colors were set diff --git a/lib/libesp32/berry_animation/src/tests/solid_animation_test.be b/lib/libesp32/berry_animation/src/tests/solid_animation_test.be index 8281183a1..f2768d773 100644 --- a/lib/libesp32/berry_animation/src/tests/solid_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/solid_animation_test.be @@ -25,7 +25,6 @@ anim.priority = 10 anim.duration = 0 # Infinite anim.loop = false anim.opacity = 255 -anim.name = "test_solid" print("Set parameters using virtual member assignment") @@ -42,7 +41,6 @@ print(f"Priority: {anim.priority}") print(f"Opacity: {anim.opacity}") print(f"Duration: {anim.duration}") print(f"Loop: {anim.loop}") -print(f"Name: {anim.name}") # Test 2: Create animation with red color var red_anim = animation.solid(engine) @@ -56,7 +54,6 @@ blue_anim.priority = 20 blue_anim.duration = 5000 blue_anim.loop = true blue_anim.opacity = 200 -blue_anim.name = "test_blue" print(f"Blue animation - priority: {blue_anim.priority}, duration: {blue_anim.duration}, loop: {blue_anim.loop}") # Test 4: Create animation with ValueProvider @@ -69,7 +66,7 @@ print("Green animation with color provider created") # Test 5: Test rendering var frame = animation.frame_buffer(5) red_anim.start() # Uses engine time automatically -red_anim.render(frame, engine.time_ms) +red_anim.render(frame, engine.time_ms, engine.strip_length) print("Rendering test completed") # Test 6: Test engine time usage diff --git a/lib/libesp32/berry_animation/src/tests/solid_unification_test.be b/lib/libesp32/berry_animation/src/tests/solid_unification_test.be index 23140d6d1..d6a40bbc6 100644 --- a/lib/libesp32/berry_animation/src/tests/solid_unification_test.be +++ b/lib/libesp32/berry_animation/src/tests/solid_unification_test.be @@ -20,7 +20,6 @@ def test_unified_solid_function() red_solid.duration = 0 red_solid.loop = false red_solid.opacity = 255 - red_solid.name = "solid" # Verify it's created successfully assert(red_solid != nil, "solid() should return a valid object") @@ -31,7 +30,6 @@ def test_unified_solid_function() assert(red_solid.opacity == 255, "Should have opacity 255") assert(red_solid.duration == 0, "Should have infinite duration") assert(red_solid.loop == false, "Should have no looping") - assert(red_solid.name == "solid", "Should have name 'solid'") print("✅ Basic solid animation creation test passed") end @@ -46,14 +44,12 @@ def test_solid_with_all_parameters() blue_solid.duration = 5000 blue_solid.loop = true blue_solid.opacity = 200 - blue_solid.name = "test_blue" # Verify all parameters are set correctly assert(blue_solid.priority == 20, "Should have priority 20") assert(blue_solid.opacity == 200, "Should have opacity 200") assert(blue_solid.duration == 5000, "Should have duration 5000") assert(blue_solid.loop == true, "Should have loop enabled") - assert(blue_solid.name == "test_blue", "Should have name 'test_blue'") print("✅ Solid with all parameters test passed") end @@ -68,12 +64,10 @@ def test_solid_composition() green_solid.duration = 0 green_solid.loop = false green_solid.opacity = 255 - green_solid.name = "green_solid" # Create another animation for comparison (if pulse exists with new API) var another_solid = animation.solid(engine) another_solid.color = 0xFFFFFF00 # Yellow - another_solid.name = "yellow_solid" # Verify both animations are created assert(green_solid != nil, "Green solid should be created") @@ -97,7 +91,6 @@ def test_solid_color_provider() yellow_solid.duration = 0 yellow_solid.loop = false yellow_solid.opacity = 255 - yellow_solid.name = "yellow_solid" # Verify it works with color providers assert(yellow_solid != nil, "Should create animation with color provider") @@ -120,14 +113,13 @@ def test_solid_rendering() red_solid.duration = 0 red_solid.loop = false red_solid.opacity = 255 - red_solid.name = "red_solid" # Create a frame buffer var frame = animation.frame_buffer(5) # Start and render the animation (uses engine time) red_solid.start() - var result = red_solid.render(frame, engine.time_ms) + var result = red_solid.render(frame, engine.time_ms, engine.strip_length) # Verify rendering worked assert(result == true, "Render should return true") diff --git a/lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be b/lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be index 3b53b2d57..64a9c644e 100644 --- a/lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be @@ -49,7 +49,6 @@ def test_sparkle_animation_custom() sparkle_anim.priority = 15 sparkle_anim.duration = 5000 sparkle_anim.loop = false - sparkle_anim.name = "custom_sparkle" assert(sparkle_anim.back_color == 0xFF111111, "Custom background should be set") assert(sparkle_anim.density == 80, "Custom density should be 80") @@ -73,7 +72,6 @@ def test_sparkle_animation_parameters() var engine = animation.create_engine(strip) var sparkle_anim = animation.sparkle_animation(engine) - sparkle_anim.name = "param_test" # Test parameter changes using virtual member assignment sparkle_anim.density = 100 @@ -112,7 +110,6 @@ def test_sparkle_animation_update_render() sparkle_anim.sparkle_duration = 30 sparkle_anim.min_brightness = 100 sparkle_anim.max_brightness = 255 - sparkle_anim.name = "update_test" var frame = animation.frame_buffer(10) @@ -128,7 +125,7 @@ def test_sparkle_animation_update_render() end # Test render - var result = sparkle_anim.render(frame, 1500) + var result = sparkle_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # With high density (255), we should have some sparkles @@ -159,12 +156,10 @@ def test_sparkle_constructors() var white_sparkle = animation.sparkle_white(engine) assert(white_sparkle != nil, "sparkle_white should create animation") assert(white_sparkle.color == 0xFFFFFFFF, "White sparkle should have white color") - assert(white_sparkle.name == "sparkle_white", "White sparkle should have correct name") # Test sparkle_rainbow var rainbow_sparkle = animation.sparkle_rainbow(engine) assert(rainbow_sparkle != nil, "sparkle_rainbow should create animation") - assert(rainbow_sparkle.name == "sparkle_rainbow", "Rainbow sparkle should have correct name") # Check that color is set to a provider (not the default white color) var color_param = rainbow_sparkle.get_param("color") assert(color_param != nil, "Rainbow sparkle should have color parameter set") @@ -190,7 +185,6 @@ def test_sparkle_tostring() var sparkle_anim = animation.sparkle_animation(engine) sparkle_anim.density = 75 sparkle_anim.fade_speed = 45 - sparkle_anim.name = "string_test" var str_repr = str(sparkle_anim) diff --git a/lib/libesp32/berry_animation/src/tests/static_value_provider_test.be b/lib/libesp32/berry_animation/src/tests/static_value_provider_test.be index 4d62be2e7..6982feab4 100644 --- a/lib/libesp32/berry_animation/src/tests/static_value_provider_test.be +++ b/lib/libesp32/berry_animation/src/tests/static_value_provider_test.be @@ -17,13 +17,13 @@ def test_static_value_provider_interface() var provider = animation.static_value(engine) # Test default methods - assert(provider.get_value(1000) == nil, "Default get_value should return nil (no value set)") - assert(provider.update(1000) == false, "Update should return false") + assert(provider.produce_value("test", 1000) == nil, "Default produce_value should return nil (no value set)") + provider.update(1000) # update() does not return a value # Test setting a value provider.value = 42 - assert(provider.get_value(1000) == 42, "Should return set value") - assert(provider.get_value(2000) == 42, "Should return same value regardless of time") + assert(provider.produce_value("test", 1000) == 42, "Should return set value") + assert(provider.produce_value("test", 2000) == 42, "Should return same value regardless of time") print("✓ StaticValueProvider interface test passed") end @@ -39,24 +39,24 @@ def test_static_value_provider_types() # Test with integer var int_provider = animation.static_value(engine) int_provider.value = 123 - assert(int_provider.get_value(1000) == 123, "Should handle integer values") + assert(int_provider.produce_value("test", 1000) == 123, "Should handle integer values") # Test with string var str_provider = animation.static_value(engine) str_provider.value = "hello" - assert(str_provider.get_value(1000) == "hello", "Should handle string values") + assert(str_provider.produce_value("test", 1000) == "hello", "Should handle string values") # Test with color (hex value) var color_provider = animation.static_value(engine) color_provider.value = 0xFF00FF00 - assert(color_provider.get_value(1000) == 0xFF00FF00, "Should handle color values") + assert(color_provider.produce_value("test", 1000) == 0xFF00FF00, "Should handle color values") print("✓ StaticValueProvider types test passed") end -# Test universal get_XXX methods via member() construct -def test_universal_get_methods() - print("Testing universal get_XXX methods...") +# Test produce_value method with different parameter names +def test_produce_value_method() + print("Testing produce_value method...") # Create engine for testing var strip = global.Leds() @@ -65,29 +65,13 @@ def test_universal_get_methods() var provider = animation.static_value(engine) provider.value = 99 - # Test various get_XXX methods - var get_pulse_size = provider.("get_pulse_size") - assert(type(get_pulse_size) == "function", "Should return function for get_pulse_size") - assert(get_pulse_size(1000) == 99, "get_pulse_size should return static value") + # Test produce_value with various parameter names - should return same value + assert(provider.produce_value("pulse_size", 1000) == 99, "produce_value should return static value for pulse_size") + assert(provider.produce_value("pos", 1000) == 99, "produce_value should return static value for pos") + assert(provider.produce_value("color", 1000) == 99, "produce_value should return static value for color") + assert(provider.produce_value("any_param", 2000) == 99, "produce_value should return static value for any param name") - var get_pos = provider.("get_pos") - assert(type(get_pos) == "function", "Should return function for get_pos") - assert(get_pos(1000) == 99, "get_pos should return static value") - - var get_color = provider.("get_color") - assert(type(get_color) == "function", "Should return function for get_color") - assert(get_color(1000) == 99, "get_color should return static value") - - # Test that non-get methods return undefined - try - var other_method = provider.("some_other_method") - # Should return undefined module, not a function - assert(type(other_method) != "function", "Non-get methods should not return functions") - except .. as e - # Exception is also acceptable - end - - print("✓ Universal get_XXX methods test passed") + print("✓ produce_value method test passed") end # Test comparison operators @@ -149,17 +133,17 @@ def test_value_changes() var provider = animation.static_value(engine) # Test initial state - assert(provider.get_value(1000) == nil, "Initial value should be nil") + assert(provider.produce_value("test", 1000) == nil, "Initial value should be nil") # Test setting and changing values provider.value = 10 - assert(provider.get_value(1000) == 10, "Should return first set value") + assert(provider.produce_value("test", 1000) == 10, "Should return first set value") provider.value = 20 - assert(provider.get_value(1000) == 20, "Should return updated value") + assert(provider.produce_value("test", 1000) == 20, "Should return updated value") provider.value = "changed" - assert(provider.get_value(1000) == "changed", "Should handle type changes") + assert(provider.produce_value("test", 1000) == "changed", "Should handle type changes") print("✓ Value changes test passed") end @@ -189,7 +173,7 @@ def run_static_value_provider_tests() try test_static_value_provider_interface() test_static_value_provider_types() - test_universal_get_methods() + test_produce_value_method() test_comparison_operators() test_parameterized_object_integration() test_value_changes() diff --git a/lib/libesp32/berry_animation/src/tests/test_all.be b/lib/libesp32/berry_animation/src/tests/test_all.be index f2bb66511..0339e86f4 100644 --- a/lib/libesp32/berry_animation/src/tests/test_all.be +++ b/lib/libesp32/berry_animation/src/tests/test_all.be @@ -75,6 +75,7 @@ def run_all_tests() "lib/libesp32/berry_animation/src/tests/crenel_position_animation_test.be", "lib/libesp32/berry_animation/src/tests/beacon_animation_test.be", "lib/libesp32/berry_animation/src/tests/gradient_animation_test.be", + "lib/libesp32/berry_animation/src/tests/palette_meter_animation_test.be", "lib/libesp32/berry_animation/src/tests/noise_animation_test.be", # "lib/libesp32/berry_animation/src/tests/plasma_animation_test.be", # "lib/libesp32/berry_animation/src/tests/sparkle_animation_test.be", diff --git a/lib/libesp32/berry_animation/src/tests/twinkle_animation_test.be b/lib/libesp32/berry_animation/src/tests/twinkle_animation_test.be index bdc69b06c..a83b19757 100644 --- a/lib/libesp32/berry_animation/src/tests/twinkle_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/twinkle_animation_test.be @@ -22,7 +22,6 @@ twinkle.fade_speed = 180 twinkle.min_brightness = 32 twinkle.max_brightness = 255 twinkle.priority = 10 -twinkle.name = "test_twinkle" print(f"Created twinkle animation: {twinkle}") print(f"Initial state - running: {twinkle.is_running}, priority: {twinkle.priority}") @@ -62,7 +61,7 @@ while dsl_cycle < 10 dsl_twinkle.update(dsl_test_time) dsl_frame.clear() - dsl_twinkle.render(dsl_frame, dsl_test_time) + dsl_twinkle.render(dsl_frame, dsl_test_time, engine.strip_length) var dsl_pixels_lit = 0 var i = 0 @@ -200,7 +199,7 @@ while cycle < 10 # Clear and render render_frame.clear() - var rendered = twinkle.render(render_frame, test_time) + var rendered = twinkle.render(render_frame, test_time, engine.strip_length) # Count non-black pixels var non_black_pixels = 0 @@ -245,7 +244,6 @@ deterministic_twinkle.fade_speed = 100 deterministic_twinkle.min_brightness = 128 deterministic_twinkle.max_brightness = 255 deterministic_twinkle.priority = 10 -deterministic_twinkle.name = "deterministic" deterministic_twinkle.start() # Force a specific random seed for reproducible results @@ -262,7 +260,7 @@ while det_cycle < 5 deterministic_twinkle.update(det_time) det_frame.clear() - deterministic_twinkle.render(det_frame, det_time) + deterministic_twinkle.render(det_frame, det_time, engine.strip_length) var det_non_black = 0 i = 0 @@ -351,7 +349,6 @@ high_density_twinkle.fade_speed = 50 high_density_twinkle.min_brightness = 200 high_density_twinkle.max_brightness = 255 high_density_twinkle.priority = 10 -high_density_twinkle.name = "high_density" high_density_twinkle.start() var hd_frame = animation.frame_buffer(10) @@ -364,7 +361,7 @@ while hd_cycle < 3 high_density_twinkle.update(hd_time) hd_frame.clear() - high_density_twinkle.render(hd_frame, hd_time) + high_density_twinkle.render(hd_frame, hd_time, engine.strip_length) var hd_non_black = 0 i = 0 @@ -390,7 +387,7 @@ tiny_twinkle.density = 200 tiny_twinkle.start() tiny_twinkle.update(current_time + 167) var tiny_frame = animation.frame_buffer(1) -tiny_twinkle.render(tiny_frame) +tiny_twinkle.render(tiny_frame, current_time, tiny_engine.strip_length) print("Tiny twinkle (1 pixel) created and rendered successfully") # Zero density @@ -399,7 +396,7 @@ no_twinkle.density = 0 no_twinkle.start() no_twinkle.update(current_time + 334) var no_frame = animation.frame_buffer(10) -no_twinkle.render(no_frame) +no_twinkle.render(no_frame, current_time, engine.strip_length) print("No twinkle (0 density) created and rendered successfully") # Maximum density @@ -408,7 +405,7 @@ max_twinkle.density = 255 max_twinkle.start() max_twinkle.update(current_time + 501) var max_frame = animation.frame_buffer(10) -max_twinkle.render(max_frame) +max_twinkle.render(max_frame, current_time, engine.strip_length) print("Max twinkle (255 density) created and rendered successfully") # Test 17: Alpha-Based Fading Verification diff --git a/lib/libesp32/berry_animation/src/tests/wave_animation_test.be b/lib/libesp32/berry_animation/src/tests/wave_animation_test.be index 43cb1fd6c..f8665367e 100644 --- a/lib/libesp32/berry_animation/src/tests/wave_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/wave_animation_test.be @@ -110,15 +110,17 @@ def test_wave_animation_update_render() var frame = animation.frame_buffer(10) # Start animation + # Note: When testing animations directly (not through engine_proxy), we must set start_time manually + wave_anim.start_time = 1000 # Set start_time manually for direct testing wave_anim.start(1000) assert(wave_anim.is_running == true, "Animation should be running after start") # Test update - var result = wave_anim.update(1500) - assert(result == true, "Update should return true for running animation") + wave_anim.update(1500) + assert(wave_anim.is_running == true, "Animation should still be running after update") # Test render - result = wave_anim.render(frame, 1500) + var result = wave_anim.render(frame, 1500, engine.strip_length) assert(result == true, "Render should return true for running animation") # Check that colors were set (should not all be black with high amplitude) @@ -156,9 +158,10 @@ def test_wave_types() wave_anim.frequency = 50 wave_anim.wave_speed = 0 # No movement for testing + wave_anim.start_time = 1000 # Set start_time manually for direct testing wave_anim.start(1000) wave_anim.update(1000) - var result = wave_anim.render(frame, 1000) + var result = wave_anim.render(frame, 1000, engine.strip_length) assert(result == true, f"Wave type {wave_types[i]} should render successfully") i += 1