BeCompile - Behavior Compiler
Contents of this website are freeware and/or copyrighted material, and may not be sold under any circumstances.
Email: dogsbody@dogsbodynet.com     Home: https://dogsbodynet.com


BeCompile is an optimizing compiler, which generates smaller & more efficient RCode from Master Studio Behavior Arranger files.  It optionally comments the RCode (for readability), uses readable labels for groups, collapses conditional statements, eliminates duplicate code where possible, checks for uninitialized variables (or variable names differing only by case), plus much more! 

For some background, it's important to know Master Studio behavior files do not work directly on AIBO.  Behavior Arranger uses behavior files mainly to support the graphical user interface.  To run on AIBO, behavior files are translated (compiled) into RCode whenever the wireless LAN connection or "Save to memory stick" menu commands are used.   Unfortunately, Master Studio has a poor compiler -- its code is quite inefficient.  As a result, AIBO takes much longer to startup, especially with large behaviors. 

RCode from BeCompile is generally about half the size.  AIBO starts faster, and operates more efficiently.   DogsLife was previously built using BeCompile.   However, today DogsLife is written in extended RCode and compiled with ReCode.

Usage (from dos prompt):

BECOMPILE  target.be  outfile.r   [options]


The command line options are:
-labels  or  -la Output RCode labels corresponding to all behavior blocks.  By default, BeCompile filters unreferenced labels to reduce RCode length (and clutter).
-logopts  or  -lo List all optimizations performed (a verbose list of what BeCompile does to your behavior files).
-debug  or  -d Insert block debug information into generated RCode.  Adds debug PRINT statements describing the current program location.  Similar to Master Studio wireless console debug statement option.  You need a wireless LAN telnet connection for this to be of any use.
-debug2  or  -d2 Insert block and variable debug information into generated RCode.   BeCompile adds debug PRINT statements describing current program location, and outputs the value of referenced variables to aid debug.  This can be VERY verbose while Aibo is running.  You need a wireless LAN telnet connection for this to be of any use.
-debug3  or  -d3 Inserts line, variable, and stack tracing debug information.   Intended for use by Aibnet.   Adds debug PRINT statements for the current program location, values of referenced and assigned variables, and call/return tracking.  This can be VERY verbose while Aibo is running.  You need a telnet connection (wireless LAN) for this to be of any use
-branchwait  or  -bw Inserts "WAIT:1" before all compiled branch blocks.   Matches how Master Studio operates.  These wait statements improve the update rate of system variables.  By default, BeCompile inserts "WAIT:1" before all system variable references instead.  This option adds even more wait statements.  Try using this if behavior code seems sluggish in responding to sensor inputs.
-novarwait  or  -nv Stops BeCompile from inserting "WAIT:1" before all system variable references.  When using "-novarwait", also using "-branchwait" is recommended.  If you eliminate all "WAIT:1" statements from the RCode, Aibo updates system variables very infrequently and your behavior will not operate as desired.
-noinline  or  -ni Disable inline optimization of small groups & action blocks.  By default, this optimization reduces the amount of jumping performed and improves performance.
-noaction  or -na Disables splitting action blocks to permit branch optimization.  Be default, BeCompile recognizes when multiple action blocks contain mostly identical statements.  It rewrites the code to permit optimization of branching, and reduce RCode length.
-noprint  or -np Filters all PRINT statements from behavior file.  Recommended prior to distributing RCode, since PRINT statements can make Aibo's without wireless LAN card's unstable.
-nocomment  or  -nc Disables inserting comments to improve RCode readability.
-novarcase  or  -nr Disable check for variables which differ only by case.  ie:  Trying to use variable names 'AAA', 'Aaa', 'aaa' all at once is considered an error by default.  RCode permits such variable names, but it is poor coding style, and can create difficult to debug problems (when you get them mixed up).

Legalese: These programs are provided AS IS without any warranty, expressed or implied.  This includes without limitation the fitfulness for a particular purpose or application.    People using the software bear all risk as to its quality and performance.   The user of the software is responsible for any damages whether direct, indirect, special, incidental or consequential arising from a failure of these programs to operate in any manner desired.   Etc, etc...

"AIBO" is a registered trademark of Sony Corporation.  "AIBO Master Studio", "R-Code", and "Memory Stick" are trademarks of Sony Corporation.