<<

Tickompiler Documentation Release 1.9.0

chrislo27, SneakySpook

May 29, 2021

Tickflow Documentation

1 Basic Tickflow Syntax 3 1.1 Function Calls...... 3 1.2 Compile-time Variables...... 4 1.3 Markers...... 4 1.4 Directives...... 4

2 Key Tickflow Concepts / Glossary5

3 Known Global Tickflow Operations7 3.1 Asynchronous Subroutine (0)...... 7 3.2 Get Async/Set Function (1)...... 7 3.3 Async Call Location (2)...... 8 3.4 Kill Threads (3)...... 8 3.5 Subroutine (4)...... 8 3.6 Get Sync (5)...... 8 3.7 Call Location (6)...... 9 3.8 Return (7)...... 9 3.9 Stop (8)...... 9 3.10 Set Category (9)...... 9 3.11 Set Conditional Variable (0xA)...... 9 3.12 Add Conditional Variable (0xB)...... 9 3.13 Push Conditional Variable (0xC)...... 9 3.14 Pop Conditional Variable (0xD)...... 10 3.15 Rest (0xE)...... 10 3.16 Get/Set Rest (0xF)...... 10 3.17 Reset Rest Counter (0x11)...... 10 3.18 Unrest (0x12)...... 10 3.19 Label (0x14)...... 10 3.20 Goto (0x15)...... 11 3.21 If, Else, Endif (0x16. . . 0x18)...... 11 3.22 Switch, Case, Break, Default, Endswitch (0x19. . . 0x1D)...... 11 3.23 Countdown (0x1E)...... 12 3.24 Speed (0x24)...... 12 3.25 Relative Speed (0x25)...... 13 3.26 Engine (0x28)...... 13 3.27 Set Game to Asset Slot (0x2A)...... 13 3.28 Model Asset Management (0x31)...... 13

i 3.29 Cellanim Asset Management (0x35)...... 14 3.30 Effect Asset Management (0x39)...... 14 3.31 Layout Asset Management (0x3E)...... 14 3.32 Play SFX (0x40)...... 15 3.33 Set SFX Slot (0x5D)...... 15 3.34 Remove SFX (0x5F)...... 15 3.35 Enable/Disable Input (0x6A)...... 15 3.36 Zoom View (0x7E)...... 16 3.37 Pan View (0x7F)...... 16 3.38 Rotate View (0x80)...... 16 3.39 Skill Star (0xAE)...... 16 3.40 Random (0xB8)...... 17

4 Game Engines 19 4.1 Spaceball (0)...... 21 4.2 Clappy Trio (1)...... 22 4.3 Sneaky Spirits (2)...... 23 4.4 Rhythm Tweezers (3)...... 24 4.5 Bouncy Road (4)...... 26 4.6 Marching Orders (5)...... 26 4.7 Night Walk (6)...... 28 4.8 Quiz Show (7)...... 29 4.9 Bunny Hop (8)...... 32 4.10 Rat Race (9)...... 32 4.11 Power Calligraphy (0xA)...... 34 4.12 Space Dance (0xB)...... 37 4.13 Tap Trial (0xC)...... 39 4.14 Ninja Bodyguard (0xD)...... 42 4.15 Airboarder (0xE)...... 43 4.16 Lockstep (0xF)...... 45 4.17 Blue Birds (0x10)...... 46 4.18 The Dazzles (0x11)...... 48 4.19 Freeze Frame (0x12)...... 51 4.20 Glee Club (0x13)...... 53 4.21 Frog Hop (0x14)...... 55 4.22 Fan Club (0x15)...... 58 4.23 Dog Ninja (0x16)...... 61 4.24 Rhythm Rally (0x17)...... 62 4.25 Fillbots (0x18)...... 63 4.26 Shoot-‘Em-Up (0x19)...... 65 4.27 Big Rock Finish (0x1A)...... 66 4.28 Munchy Monk (0x1B)...... 69 4.29 Built to Scale (0x1C)...... 70 4.30 Air Rally (0x1D)...... 73 4.31 Exhibition Match (0x1E)...... 75 4.32 Flockstep (0x1F)...... 78 4.33 Cheer Readers (0x20)...... 79 4.34 Double Date (0x21)...... 82 4.35 Catch of the Day (0x22)...... 83 4.36 Micro-Row (0x23)...... 85 4.37 Fork Lifter (0x24)...... 86 4.38 Hole in One (0x25)...... 87 4.39 Flipper-Flop (0x26)...... 88 4.40 Ringside (0x27)...... 90 ii 4.41 Karate Man (0x28)...... 92 4.42 Working Dough (0x29)...... 96 4.43 Figure Fighter (0x2A)...... 97 4.44 Love Rap (0x2B)...... 100 4.45 Bossa Nova (0x2C)...... 102 4.46 Screwbot Factory (0x2D)...... 103 4.47 Launch Party (0x2E)...... 105 4.48 Board Meeting (0x2F)...... 107 4.49 Samurai Slice (0x30)...... 109 4.50 See-Saw (0x31)...... 112 4.51 Packing Pests (0x32)...... 113 4.52 Monkey Watch (0x33)...... 115 4.53 Blue Bear (0x34)...... 116 4.54 Animal Acrobat (0x35)...... 118 4.55 Tongue Lashing (0x36)...... 120 4.56 Super Samurai Slice (0x37)...... 123

iii iv Tickompiler Documentation, Release 1.9.0

Tickompiler is a compiler and decompiler for Tickflow, a language constructed from the bytecode format used by the game Megamix for the 3DS to create the sequence of events in its rhythm games and remixes. Tickompiler allows easy editing of these rhythm games in a more human-readable format.

Tickflow Documentation 1 Tickompiler Documentation, Release 1.9.0

2 Tickflow Documentation CHAPTER 1

Basic Tickflow Syntax

Every line in tickflow is one of four things: • Function Calls, which directly correspond to a single bytecode instruction. These are the only lines of tickflow that translate into bytecode; • Compile-time variable assignments, which do not correspond to bytecode, but rather allow you to use constant variables to replace magic numbers; • Markers, which allow you to use locations in the tickflow code as variables; • and Directives, which include custom function aliases and file metadata.

1.1 Function Calls

Function calls are of the form op arg1, arg2...

Here, op is either a name or a number; it determines what operation is performed. In bytecode, the opcode is a number between 0 and 0x3FF. This is an accepted value for op in Tickflow, but there are a number of known operations that have defined names in Tickflow. Examples include rest, if and case. is an expression enclosed in <>, which is used as a special argument for the operation. The function of this special argument varies per operation, but it can also be used to differentiate similar operations in place of creating a separate op value for it. can be omitted, in which case it defaults to 0. Following the special argument is a comma-separated list of arguments. These are all expressions, and their effect and amount depends on the operation. There can be from 0 up to 15 arguments.

1.1.1 Expressions

Expressions resolve to numbers. They consist of variables, numbers and mathematical operations. The operators you can use for expressions are multiplication (*), addition (+), subtraction (-), integer division (/), bitwise right shift

3 Tickompiler Documentation, Release 1.9.0

(>>), bitwise left shift (<<), bitwise AND (&), bitwise OR (|), and bitwise XOR (^). Examples of expressions include 5, 0xFE3, 0xFF << 5, and x + 2.

1.2 Compile-time Variables

Compile-time variables can be used to store numbers for later use in your Tickflow code. For example, you could save a variable beat with value 0x30, since one beat of music corresponds to this value in timing-related functions. Variable assignment is of the form

var= expr

var denotes the variable name. Variable names must start with a letter and contain only alphanumeric characters and underscores. expr is an expression denoting the value you are setting the variable to.

1.3 Markers

Markers ‘mark’ locations in your tickflow code, saving the location into a variable so that they can be used in other parts of the file. These are usually used for functions like call, which execute tickflow at a specific location. Markers are of the form

name:

name is the name of the marker and has the same constraints as variable names. Markers generated by the decompiler will have a naming scheme locXX:, where the number XX is based on the order the locations are referenced in the file.

1.4 Directives

Directives carry metadata about the file, but are also used for custom operation aliases. Current directives are: • #index num sets the index of the this file will replace when patched into the game. • #start loc sets the location in the file at which tickflow execution will begin. This is often 0. • #assets loc sets the location in the file where certain assets, like the intro screen, are loaded. This is needed for insertion into the game. • #alias name num creates a custom function alias under the name name for the operation number num.

4 Chapter 1. Basic Tickflow Syntax CHAPTER 2

Key Tickflow Concepts / Glossary

Code execution Tickflow code consists of a sequence of operations or functions, which are all executed sequentially. Some Tickflow operations may redirect the execution to some other location. Conditional variable Tickflow keeps track of a particular variable, which is used in several operations. It can be set by some operations, and is generally used by conditional operations such as if to determine what Tickflow code to run. Threads Tickflow is multithreaded. This means that multiple pieces of Tickflow code may be running at the same time. A thread is the execution of one such piece of Tickflow code. A synchronous Tickflow function call will change the location at which the current thread of execution is running, while an asynchronous call will spawn a new thread at the desired location. Ticks A tick is the basic unit of time used in all Tickflow operations. 48 (0x30) ticks are generally equal to one beat of music.

5 Tickompiler Documentation, Release 1.9.0

6 Chapter 2. Key Tickflow Concepts / Glossary CHAPTER 3

Known Global Tickflow Operations

This is a list of all Tickflow operations which have known functions and have been given a global alias.

3.1 Asynchronous Subroutine (0)

The async_sub function finds a subroutine corresponding to an argument, then calls it asynchronously (i.e. the code runs simultaneously to the Tickflow code already running). Async_sub calls have the following form:

async_sub id, delay, cat

The id argument is the ID number assigned to the subroutine. It is first taken from a lookup table of rhythm game- specific IDs, usually starting at 0x56, and then from a global list of subroutines, which starts at 0. delay represents the delay in ticks before the macro is executed. cat is the category the new thread will belong to. This is often 0x7D0 (2000). The second and third arguments can be omitted, and default to 0 and 0x7D0 respectively. If the location called by the sub is within the Tickflow file it’s called in, async_sub is replaced with a corresponding async_call call.

3.2 Get Async/Set Function (1)

These two operations share the same operation number, 1. They are differentiated by the special argument. get_async corresponds to 1<0>, while set_func corresponds to 1<1>. set_func stores the location of a function into a slot, which can later be accessed and run asynchronously using get_async, or synchronously using get_sync (5). set_func is of the following form:

set_func slot, loc

It stores the location loc into the slot slot. get_async is of the following form:

get_async slot, delay

7 Tickompiler Documentation, Release 1.9.0

It calls the location stored into slot slot as an asynchronous function after delay ticks.

3.3 Async Call Location (2)

async_call, operation number 2, takes a location as an argument and runs the Tickflow code at that location as an asynchronous function.

async_call loc, delay

The asynchronous function at loc is called after a delay of delay ticks.

3.4 Kill Threads (3)

Kills Tickflow threads according to several criteria.

kill_all

Kills all Tickflow threads.

kill_cat c

Kills all Tickflow threads in category c .

kill_loc location

Kills all Tickflow threads currently running inside the function at location .

kill_sub id

Kills all Tickflow threads currently running inside the subroutine id .

3.5 Subroutine (4)

sub finds a subroutine corresponding to an argument, then calls it synchronously.

sub id

The id argument is identical to the one in Asynchronous Subroutine (0).

3.6 Get Sync (5)

Gets a function set by set_func and calls it synchronously.

get_sync slot

8 Chapter 3. Known Global Tickflow Operations Tickompiler Documentation, Release 1.9.0

3.7 Call Location (6) call takes a location as an argument and calls the Tickflow code at that location as a synchronous function. call loc

The synchronous function at loc is called.

3.8 Return (7) return takes no arguments, but returns from a synchronous function call. That is, when return occurs in a synchronous function, execution is returned to the location the function was called from.

3.9 Stop (8) stop stops the current thread of execution.

3.10 Set Category (9) set_cat c

Sets the current thread to category c .

3.11 Set Conditional Variable (0xA) set_condvar sets the value of the conditional variable to its first argument. set_condvar val

3.12 Add Conditional Variable (0xB) add_condvar adds its first argument to the value of the conditional variable. add_condvar val

3.13 Push Conditional Variable (0xC)

The conditional variable is pushed to a stack containing at most 16 values. For more information about stacks, see Wikipedia. push_condvar

3.7. Call Location (6) 9 Tickompiler Documentation, Release 1.9.0

3.14 Pop Conditional Variable (0xD)

The conditional variable is popped from the previously mentioned stack. pop_condvar

3.15 Rest (0xE) rest duration duration is added to the rest counter. If the rest counter is now greater than zero, it will decrement at a rate of 48 per beat, pausing Tickflow execution until it reaches zero again. Note that duration is actually the special argument for rest, but the syntax is like a regular argument here for convenience.

3.16 Get/Set Rest (0xF) getrest and setrest work similarly to Get Async/Set Function (1): setrest stores a duration in a slot, to later be used by getrest to add to the rest counter. setrest slot, duration

The duration duration is stored in slot slot. getrest slot

The duration previously stored in slot is added to the rest counter.

3.17 Reset Rest Counter (0x11) rest_reset

The rest counter is set to 0.

3.18 Unrest (0x12) unrest duration duration is subtracted from the rest counter. If the rest counter is negative, no action is undertaken. This effectively functions as a sort of buffer to subtract a duration from succeeding rests. Like in rest, duration is actually a special argument, but the syntax is adjusted for convenience.

3.19 Label (0x14)

A label takes only a special argument, and marks this location for use by goto. Can be positioned after a goto.

10 Chapter 3. Known Global Tickflow Operations Tickompiler Documentation, Release 1.9.0

label id

This location in the file is marked as id for use by goto. Note that, like in Rest (0xE), id is actually a special argument.

3.20 Goto (0x15) goto takes only a special argument, and jumps to the corresponding label. It presumably searches for the nearest label matching the ID. goto id

Execution jumps to the label with ID id. Note that, like in Rest (0xE), id is actually a special argument.

3.21 If, Else, Endif (0x16. . . 0x18)

Together, these operations form if-blocks, a popular programming construct. if arg // Tickflow code else // other Tickflow code endif

If the value of the conditional variable is equal to arg, then the first block of Tickflow code is executed. Otherwise, the second block of Tickflow code is executed. The else block can be omitted entirely, in which case it is assumed to be empty. There are also several different variants on if: if_neq arg if_lt arg if_leq arg if_gt arg if_geq arg

These execute the code if the conditional variable is not equal, less than, less than or equal, greater than, and greater than or equal to arg, respectively.

3.22 Switch, Case, Break, Default, Endswitch (0x19. . . 0x1D)

Together, these operations form switch-case statements, another construct commonly found in programming lan- guages. switch case arg1 // tickflow code break case arg2 // more tickflow code (continues on next page)

3.20. Goto (0x15) 11 Tickompiler Documentation, Release 1.9.0

(continued from previous page) break [...] default // code break endswitch

If the value of the condition variable is equal to arg1, then the case arg1 block runs. If the value of the condition variable is equal to arg2, then the case arg2 block runs, etc. If none of the cases match the value of the condition variable, the default block runs. If any break is omitted, then after running the corresponding code block, the next case will also be run.

3.23 Countdown (0x1E)

countdown operations implement a countdown using two internal variables; the initial value of the countdown, and the “progress” of the countdown, which is subtracted from the initial value.

set_countdown num

Sets the initial value to num and sets the progress to 0. Equivalent to 0x1E<0>.

set_countdown_condvar

Sets the initial value to the value of the conditional variable, and sets progress to 0. Equivalent to 0x1E<1>.

get_countdown_init

Sets the conditional variable to the initial value of the countdown. Equivalent to 0x1E<2>.

get_countdown_prog

Sets the conditional variable to the progress of the countdown. Equivalent to 0x1E<3>.

get_countdown

Sets the conditional variable to the countdown value: initial - progress. Equivalent to 0x1E<4>.

dec_countdown

Increments the progress variable by 1, therefore decrementing the countdown value by 1. Equivalent to 0x1E<5>.

3.24 Speed (0x24)

speed sets the speed of the game to a specified fraction of the original speed. This also increases the pitch of the music. An example of speed usage can be found in Karate Man Senior, when the game speeds up.

speed val

The speed is set to val/256 of the original speed. For example, speed 0x100 sets the speed to the original speed, while speed 0x120 sets the speed to 288/256, or 112.5% of the original speed.

12 Chapter 3. Known Global Tickflow Operations Tickompiler Documentation, Release 1.9.0

3.25 Relative Speed (0x25)

This operation operates on the same speed value as speed (0x24) does, but instead of setting it, it multiplies, resulting in a relative speed change from the current speed. A lower and upper bound on the resulting overall speed can also be set.

speed_relative val, lb, ub

The game speed is multiplied by val/256. The resulting value cannot fall below lb/256 or rise above ub/256 of the original speed.

3.26 Engine (0x28)

engine sets the game engine to the one corresponding to the argument ID.

engine id

The game engine is set to the engine corresponding to id. Game engines have a set of special tickflow functions which are specific to that game, as well as a set of macros and/or subroutines.

3.27 Set Game to Asset Slot (0x2A)

This is a set of operations all sharing the same operation number, but being distinguished by different special argument values.

game_model id, slot game_cellanim id, slot game_effect id, slot game_layout id, slot

These assign a game engine ID to an asset (model, cellanim, effect or layout) slot, to allow the game to load assets from the correct asset slots when loading a game. game_model corresponds to 0x2A<0>, game_cellanim to 0x2A<2>, game_effect to 0x2A<3> and game_layout to 0x2A<4>.

3.28 Model Asset Management (0x31)

This is a set of operations differentiated by their special argument, which all share a common theme of being used to manage the loading of model assets. Model assets are organized into slots starting at slot 1, where one slot can hold assets for one rhythm game.

set_model slot, str, ???

The first argument is a the slot for the model assets to be loaded into, the second argument is a location in memory that contains a string, namely the filename of the file containing the assets to be loaded. The third argument is unknown, but seems to always be 1. set_model corresponds to 0x31<0>.

remove_model slot

Removes the model assets currently loaded into slot. remove_model corresponds to 0x31<1>.

3.25. Relative Speed (0x25) 13 Tickompiler Documentation, Release 1.9.0

has_model slot

Seems to set the conditional variable to 1 if slot contains assets, and 0 otherwise. has_model corresponds to 0x31<2>.

3.29 Cellanim Asset Management (0x35)

Very similarly to Model Asset Management (0x31), this set of operations manages cellanim assets. Cellanim assets consist of 2D sprites and animations thereof. Cellanim assets, similarly to model assets, are organized into slots starting at slot 2, with each slot holding assets for one rhythm game.

set_cellanim slot, str, ???

The first argument is the slot for the assets to be loaded into, the second argument is a location in memory that contains the filename of the file to be loaded. The third argument is unknown, but seems to always be 0xFFFFFFFF, -1 when interpreted as a signed integer. set_cellanim corresponds to 0x35<0>.

cellanim_busy slot

Seems to set the conditional variable to 1 if slot is currently being written to or deleted from, and 0 otherwise. cellanim_busy corresponds to 0x35<1>.

remove_cellanim slot

Removes the cellanim assets currently loaded into slot. remove_cellanim corresponds to 0x35<3>.

3.30 Effect Asset Management (0x39)

Similarly to the previous two entries, this set of operations manages effect assets. Effect assets seem to consist of particle effects, and are organized into slots starting at slot 2, with each slot holding assets for one rhythm game.

set_effect slot, str, ???

This operation has identical functioning to set_cellanim. set_effect corresponds to 0x39<0>.

effect_busy slot

This operation has identical functioning to cellanim_busy. effect_busy corresponds to 0x39<1>.

remove_effect slot

This operation has identical functioning to remove_cellanim. remove_effect corresponds to 0x39<7>.

3.31 Layout Asset Management (0x3E)

Similarly to the previous entries, this set of operations manages layout assets. Layout assets are organized into slots starting at slot 4, though the slots used by stock games and remixes wildly vary.

set_layout slot, str, ???

14 Chapter 3. Known Global Tickflow Operations Tickompiler Documentation, Release 1.9.0

This operation has identical functioning to set_effect and set_cellanim. set_layout corresponds to 0x3E<0>.

layout_busy slot

This operation has identical functioning to effect_busy and cellanim_busy. layout_busy corresponds to 0x3E<1>.

remove_layout slot

This operation has identical functioning to remove_effect and remove_cellanim. remove_layout corre- sponds to 0x3E<7>.

3.32 Play SFX (0x40)

This operation plays a sound effect according to an ID.

play_sfx id

A sound effect is played according to id. Where these IDs are defined is not yet clear, though the sound effect may be played after a tempo-dependent delay, suggesting that these IDs encode additional info, and not only the sound effect itself.

3.33 Set SFX Slot (0x5D)

This operation loads sound effects into the specified SFX slot. Sound effects in the loaded assets can thereafter be played at any time.

set_sfx slot, str

Loads the sound effects corresponding to the group name at the location str in memory into slot.

3.34 Remove SFX (0x5F)

This operation removes previously loaded sound effects from the specified SFX slot.

remove_sfx slot

Removes the SFX assets loaded into slot.

3.35 Enable/Disable Input (0x6A)

This operation enables or disables all user input.

input flag

Disables input if flag is 0, enables it if it is 1.

3.32. Play SFX (0x40) 15 Tickompiler Documentation, Release 1.9.0

3.36 Zoom View (0x7E)

zoom n, x, y

Instantaneously sets the X-axis zoom factor for the n th view to x/0x100, and the Y-axis zoom factor to y/0x100. It is currently unknown how to determine the correct view number to use, however, it is known to usually be 3 or 4 when it is used in-game.

zoom_gradual n, i, s, duration, x, y

Changes the X-axis zoom factor to x/0x100 and the Y-axis zoom factor to y/0x100 over duration ticks. i determines the interpolation method used, and s determines the intensity of said interpolation’s variation. Values for i are: • 1: Linear • 2: Faster at the start • 3: Faster at the end • 4: Faster in the middle (smooth) • 5: Slower in the middle

3.37 Pan View (0x7F)

pan n, x, y

Instantaneously pans the view to the position x units (pixels?) left and y units (pixels?) up from the origin. n is as above.

pan_gradual n, i, s, duration, x, y

Pans the view to x units left and y units up from the origin over duration ticks. i and s are as above.

3.38 Rotate View (0x80)

rotate n, angle

Instantaneously rotates the view to angle degrees clockwise from the default. n is as above.

rotate_gradual n, i, s, duration, angle

Rotates the view to angle degrees clockwise from the default over duration ticks. i and s are as above.

3.39 Skill Star (0xAE)

star time

A skill star appears, to be collected after time ticks. Glitchy if no input matches the given time.

16 Chapter 3. Known Global Tickflow Operations Tickompiler Documentation, Release 1.9.0

3.40 Random (0xB8)

This operation generates a random number and stores it in the conditional variable.

random num

Stores a random number between 0 and num exclusive in the conditional variable. Note that, like in Rest (0xE), num is actually a special variable.

3.40. Random (0xB8) 17 Tickompiler Documentation, Release 1.9.0

18 Chapter 3. Known Global Tickflow Operations CHAPTER 4

Game Engines

This page contains documentation for game engines. Game engines have sets of game-specific Tickflow operations starting at 0x100, as well as subroutines. Game engines can be loaded in remixes and rhythm games using the engine operation.

Table of Contents

• Game Engines – Spaceball (0) – Clappy Trio (1) – Sneaky Spirits (2) – Rhythm Tweezers (3) – Bouncy Road (4) – Marching Orders (5) – Night Walk (6) – Quiz Show (7) – Bunny Hop (8) – Rat Race (9) – Power Calligraphy (0xA) – Space Dance (0xB) – Tap Trial (0xC) – Ninja Bodyguard (0xD) – Airboarder (0xE) – Lockstep (0xF)

19 Tickompiler Documentation, Release 1.9.0

– Blue Birds (0x10) – The Dazzles (0x11) – Freeze Frame (0x12) – Glee Club (0x13) – Frog Hop (0x14) – Fan Club (0x15) – Dog Ninja (0x16) – Rhythm Rally (0x17) – Fillbots (0x18) – Shoot-‘Em-Up (0x19) – Big Rock Finish (0x1A) – Munchy Monk (0x1B) – Built to Scale (0x1C) – Air Rally (0x1D) – Exhibition Match (0x1E) – Flockstep (0x1F) – Cheer Readers (0x20) – Double Date (0x21) – Catch of the Day (0x22) – Micro-Row (0x23) – Fork Lifter (0x24) – Hole in One (0x25) – Flipper-Flop (0x26) – Ringside (0x27) – Karate Man (0x28) – Working Dough (0x29) – Figure Fighter (0x2A) – Love Rap (0x2B) – Bossa Nova (0x2C) – Screwbot Factory (0x2D) – Launch Party (0x2E) – Board Meeting (0x2F) – Samurai Slice (0x30) – See-Saw (0x31) – Packing Pests (0x32)

20 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

– Monkey Watch (0x33) – Blue Bear (0x34) – Animal Acrobat (0x35) – Tongue Lashing (0x36) – Super Samurai Slice (0x37)

4.1 Spaceball (0)

Spaceball is the first game engine, with the ID 0. It has several 0x100 series operations, which are used for cues, but no subs that would be useful in remixes.

4.1.1 0x100 - Bat object

0x100 time, type

An object is spawned (shot out of the pipe) depending on type. Legal values of type are: • 0, which spawns a baseball; • 1, which spawns a rice ball; • 2, which spawns the alien. time denotes the time in ticks before the batter has to hit the ball; the time before input. If time is equal to 0x30 (one beat), the low ball animation is used. Otherwise, the high ball animation is used.

4.1.2 0x101 - Batter costume

0x101 costume

The batter’s costume is changed depending on costume. Legal values of costume, along with their appearances in the standard Spaceball cellanim, are: • 0, which is the default costume; • 1, which is the “red head” costume; • 2, which is the bunny costume.

4.1.3 0x102 - Camera zoom

0x102 distance, time

The camera zooms in or out. distance is the distance the camera will be at the end of the zoom. It ranges between 0 and 0xA (10), with 4 being the default camera position. The zoom will occur over time ticks. type controls the way the zoom is interpolated: 1 gives a linear interpolation, or a rough zoom, and 2 gives a cubic interpolation, a smooth zoom.

4.1. Spaceball (0) 21 Tickompiler Documentation, Release 1.9.0

4.1.4 0x103 - Alien animation

0x103

0x103 controls the animation of the alien in the middle of the screen, namely, 0x103<0> makes it pop out of its ship, while 0x103<1> makes it return to its ship.

4.2 Clappy Trio (1)

Clappy Trio uses 0x100 series operations for the basic building blocks, but bundles them together into subs for convenience.

4.2.1 0x100 - Clap cue

0x100 time

After 2*time ticks, the player has to press the A button to clap.

4.2.2 0x101 - Beat animation

0x101 ???

0x101 does the beat animation for the clappy trio (head bob). The argument’s purpose is unknown, though it seems to be 1 at the end of a set of beat animations, and 0 elsewhere.

0x101<1> num

0x101<1> precedes a set of num beat animations. Purpose unknown.

4.2.3 0x102 - Ready stance

0x102

0x102 does the ready stance animation for the clappy trio. If type is 0, the animation is the regular ready stance. If type is 1, the animation is the “determined” ready stance.

4.2.4 0x103 - Clap animation

0x103 num

0x103 does the clap animation and sound effects for a single member of the trio. num is the number of the member to do the clap animation for, from left to right starting at 0. Note that the player’s member is unaffected by this operation.

22 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.2.5 List of subs

0x56 (async) Does a full clap cue, with the claps spaced two beats apart. (no ready stance) 0x57 (async) Does a full clap cue, with the claps spaced one beat apart. (no ready stance) 0x58 (async) Does a full clap cue, with the claps spaced a half beat apart. (no ready stance) 0x59 (async) Does a full clap cue, with the claps spaced a quarter beat apart. (no ready stance) 0x5A (async) Does a full clap cue, with the claps spaced an eighth beat apart. (no ready stance) 0x5B (async) Does a full clap cue, with the claps spaced two thirds of a beat apart. (no ready stance)

4.3 Sneaky Spirits (2)

Sneaky Spirits bundles 0x100 series operations into subs.

4.3.1 0x100 - Shoot cue (?)

0x100 ???

A beat after 0x100, the input to shoot a spirit occurs. The purpose of the argument is unknown.

4.3.2 0x101 - Draw bow

0x101

0x101 draws the bow in preparation for a shot.

4.3.3 0x102 - Pop-up spirit

0x102 pos

0x102 makes a spirit pop up at the specified position on the fence. 0 is the leftmost position and 6 is the rightmost.

4.3.4 0x103 - Close door

0x103

0x103 closes the door.

4.3.5 0x104 - Spirit height

0x104 height

0x104 sets the height of the spirit, on a scale from 0 to 0x100 (256).

4.3. Sneaky Spirits (2) 23 Tickompiler Documentation, Release 1.9.0

4.3.6 0x105 - Spirit position (?)

0x105 pos

0x105 sets whether the spirit is behind the fence or in the hitzone. If pos is 1 it’s behind the fence, if it’s 0 it’s in the hitzone.

4.3.7 0x107 - Reset game speed

0x107

0x107 resets the game speed after a spirit was hit.

4.3.8 List of subs

These are all synchronous subroutines. 0x56 8-beat spirit cue that stays at max height. 0x57 8-beat spirit cue that drops off to 0 height slowly. 0x58 8-beat spirit cue that drops off to 0 height quickly. 0x59 8-beat spirit cue that drops off to 0 height very quickly. 0x5A 8-beat spirit cue that starts at 0 height and rises slowly. 0x5B 8-beat spirit cue that starts at 0 height and rises before dropping back down. 0x5C 8-beat spirit cue that starts at a low height and drops off slightly before rising. 0x5D 8-beat spirit cue that alternates between low and high height. 0x5E 8-beat spirit cue that stays at 0 height. 0x5F 7-beat spirit cue that stays at max height. 0x60 7-beat spirit cue that drops off to 0 height slowly. 0x61 7-beat spirit cue that drops off to 0 height quickly. 0x62 7-beat spirit cue that starts at 0 height and rises slowly.

4.4 Rhythm Tweezers (3)

Rhythm Tweezers does not pack cues into subs, likely because of the large variety of patterns. It uses 0x100 series operations.

4.4.1 0x100 - Spawn Hair

0x100 type

0x100 spawns a hair, to be plucked 4 beats later. If type is 0, spawns a normal hair. If type is 3, spawns a long hair.

24 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.4.2 0x101 - Reset Hair Position

0x101

Resets the position for spawning of hairs. Usually used at the beginning of a pattern.

4.4.3 0x102 - Spawn Tweezers

0x102

Spawns tweezers. Used 2 beats after the start of a pattern.

4.4.4 0x105 - Set Vegetable Type

0x105 type

Sets the type of the next vegetable to appear. 0 gives an onion, 1 a potato.

4.4.5 0x107 - Don’t Peek (unused)

0x107 type

Makes a sign appear that covers part or all of the hairs. 0 spawns a sign that covers both sides, 1 spawns a sign that covers the right side, and 2 spawns a sign that covers the left side. While normally the signs automatically despawn after a pattern, 0x107<1> also despawns them. Note that this entire command is unused in itself, as well as the graphics associated with it.

4.4.6 Extra notes

At the end of a pattern (4 beats after the start), the following code is found: rest 0xA2// 3.375 beats 0x108<1> if 0 0xA1<2> if 1 0x1060 if 1 0x105X else 0x103 endif else 0x105X endif endif rest 0x18// 0.5 beats rest6// 0.125 beats

The logic and functioning of most of this is unknown, however, the 0x105 s here change the type of the next vegetable. Note as well that input is usually disabled using input at the start of a pattern, and re-enabled 3 beats later.

4.4. Rhythm Tweezers (3) 25 Tickompiler Documentation, Release 1.9.0

4.5 Bouncy Road (4)

Bouncy Road groups 0x100 series operations into subs. It is necessary to do so, since only one ball can be managed per Tickflow thread.

4.5.1 0x100 - Spawn/Bounce Ball

0x100 time

0x100 spawns a ball with a bounce duration of time ticks.

0x100<1>

0x100<1> bounces the ball.

4.5.2 List of subs

These are all asynchronous subroutines. 0x56 Spawns a ball with half-beat bounces. 0x57 Spawns a ball with 2/3-beat bounces. 0x58 Spawns a ball with 1-beat bounces. 0x59 Spawns a ball with 2-beat bounces.

4.6 Marching Orders (5)

Marching Orders groups 0x100 series operations into subs.

4.6.1 0x100 - Cue Input

0x100 time, type

Sets up an input cue to be pressed after time ticks. Legal values of type are: • 0: March input • 1: Halt input • 2: Right turn input • 3: Left turn input

4.6.2 0x101 - Raise Legs

0x101

All marchers raise their legs in preparation for marching.

26 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.6.3 0x102 - Beat Animation

0x102

All marchers do the beat animation (tip toe).

4.6.4 0x103 - Reset stance

0x103

Resets all marchers’ stances after a 0x102.

4.6.5 0x104 - March animation

0x104

A single marcher, determined by pos, marches once. pos ranges from 1 to 3, though usually all are used at once.

4.6.6 0x105 - Halt animation

0x105

A single marcher, determined by pos, halts. pos ranges from 1 to 3, though usually all are used at once.

4.6.7 0x106 - Right turn animation

0x106

A single marcher, determined by pos, turns right. pos ranges from 1 to 3, though usually all are used at once.

4.6.8 0x107 - Left turn animation

0x107

A single marcher, determined by pos, turns left. pos ranges from 1 to 3, though usually all are used at once.

4.6.9 0x108 - Commander Mouth Movement

0x108

The commander moves his mouth.

4.6.10 0x109 - Activate Conveyor Belt

0x109

The conveyor belt activates.

4.6. Marching Orders (5) 27 Tickompiler Documentation, Release 1.9.0

4.6.11 List of subs

These are all asynchronous subroutines. 0x56 The sound effect for the commander saying “TURN!”, followed by the right turn cue. Does not include “Right face. . . ” 0x57 The sound effect for the commander saying “TURN!”, followed by the left turn cue. Does not include “Left face. . . ” 0x58 The sound effect for the commander saying “MARCH!”, followed by one march cue. Does not include “Atten- tion. . . ” 0x59 The sound effect for the commander saying “HALT!”, followed by the halt cue. Does not include “Attention. . . ”

4.7 Night Walk (6)

Night Walk only has one useful sub, and uses 0x100 series operations for everything else.

4.7.1 0x100 - Spawn Platform

0x100 time, type

Spawns a platform that will take time ticks to reach the player (requiring an A press at that time). type determines what pops up when the player successfully jumps on the platform. Legal values for type are: • 0: Heart flower • 1: Lollipop • 2: Umbrella • 3: Heart flower, with a slightly different sound to 0. • 4: Star wand (final platform) • 5: Edge platform (after final platform)

4.7.2 0x101 - Staircasing state

0x101 state

0x101 sets the state of staircasing for newly spawned platforms. Legal values for state are: • 0: No staircasing • 1: Full staircasing • 2: Random staircasing

4.7.3 0x103 - Balloons

0x103

0x103 spawns 7 balloons for Play-Yan to hold onto.

28 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x103<1> num

0x103<1> pops one of the balloons according to num. num ranges from 0 to 6.

4.7.4 0x105 - Death check

0x105

Sets the conditional variable to 1 if Play-Yan has fallen into a pit, 0 otherwise.

4.7.5 List of subs

0x56 (async) Pops Play-Yan’s balloons one after another, making a count-in.

4.8 Quiz Show (7)

Quiz Show groups several things into subroutines.

4.8.1 0x100 - Contestant Actions

0x100

The contestant puts his hands on the buttons.

0x100<1>

The contestant readies his hands for pressing.

0x100<2>

The contestant’s face returns to normal.

0x100<3>

The contestant’s face becomes happy.

0x100<4>

The contestant’s face becomes sad.

4.8.2 0x101 - Quizmaster Actions

0x101

The quizmaster puts his hands on the buttons.

0x101<1>

The quizmaster readies his hands for pressing.

4.8. Quiz Show (7) 29 Tickompiler Documentation, Release 1.9.0

0x101<2>

The quizmaster presses the A button, incrementing his counter.

0x101<3>

The quizmaster presses the + button, incrementing his counter.

0x101<4>

The quizmaster’s face returns to normal.

0x101<5>

The quizmaster’s face becomes happy.

0x101<6>

The quizmaster’s face becomes sad.

4.8.3 0x102 - Counter Actions

0x102

Resets the counters to 0.

0x102<1>

Hides the quizmaster’s counter (number becomes ??).

0x102<2>

Reveals the quizmaster’s counter.

0x102<3>

Sets the conditional variable to 1 if the quizmaster’s and contestant’s counters match, and 0 if they don’t.

4.8.4 0x103 - Spotlight

0x103 flag

If flag is 1, the spotlight focusing on the quizmaster’s podium turns on. If 0, it turns off.

4.8.5 0x104 - Timer Actions

0x104 flag

If flag is 1, shows the timer. If 0, hides the timer.

0x104<1> time

Sets the timer duration to time ticks and starts the timer.

30 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.8.6 0x105 - Scoring

0x105

Start recording player presses for scoring purposes.

0x105<1>

Start recording quizmaster presses for scoring purposes.

0x105<2>

Stop recording quizmaster or player presses for scoring purposes.

0x105<3> score

Add points to the rhythm game score on a scale up to score depending on player performance.

4.8.7 0x106 - Skill Star Score Criterium

0x106

Unknown.

0x106<1>

Sets the conditional variable to 1 if the player has reached a score of 90 (?), 0 otherwise. This is used to determine whether to award the skill star at the end of the rhythm game.

4.8.8 List of subs

These are all synchronous subroutines. 0x56 Hides the quizmaster’s counters, resets the counters and readies the quizmaster’s hands. 0x57 The quizmaster puts his hands on the buttons, a text box displays saying “Go ahead.”, the timer appears, the player’s hands are readied, input is enabled, scoring starts recording player presses, and a sound effect plays signaling the player to start. 0x58 Input is disabled, input recording stops, and the answer is revealed. 0x59 Quizmaster pattern for practice question #1. 0x5A Quizmaster pattern for practice question #2. 0x5B Quizmaster pattern for practice question #3. 0x5C Quizmaster pattern for question #4. 0x5D Quizmaster pattern for question #5. 0x5E Quizmaster pattern for question #6. 0x5F through 0x64 Several unused patterns. 0x65 Random button presses for use at the end of patterns.

4.8. Quiz Show (7) 31 Tickompiler Documentation, Release 1.9.0

4.9 Bunny Hop (8)

Bunny Hop does not use any subs for cues.

4.9.1 0x100 - Spawn Animal

0x100 type, delay

Spawns an animal for the bunny to hop on. The animal will spawn such that the bunny will reach it after delay ticks. Legal values for type are: • 0: Turtle • 1: Dark turtle • 2: Small whale (2-beat rest) • 3: Vertical whale • 4: Big whale (8-beat rest) • 5: Whale tail (4-beat rest) • 6: Final whale

4.9.2 0x101 - Hop on ground

0x101<1> ???

The bunny hops on the ground. The argument is unknown, but always 0.

4.10 Rat Race (9)

Rat Race makes use of subs for some cues.

4.10.1 0x100 - Cue

0x100 type, time

An input cue will happen depending on type after time ticks. Legal values for type are: • 0: Start holding • 1: Release button

4.10.2 0x101 - Background Movement

0x101 flag

If flag is 0, stops background movement, else starts background movement.

32 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.10.3 0x102 - Rat Animations

0x102 type

Does an animation for all rats. Legal values of type are: • 0: Hiding • 1: Running • 2: Crouching (in preparation for running)

4.10.4 0x104 - Cat Animations

0x104 type

Does an animation for the cat. Legal values of type are: • 0: Left paw (our perspective) put on the table. • 1: Right paw put on the table. • 2: Head pops up • 3: Head pops down • 4: Look straight ahead • 5: Look left (our perspective) • 6: Look right • 7: Close eyes • 8: Paws back down (?)

4.10.5 0x105 - Speed Boost

0x105 type

Sets what happens after you release the button (speed boost). Values for type are: • 1: Normal speed boost • 2: Large speed boost Every other value gives no speed boost.

4.10.6 0x106 - Spawn Foreground Object

0x106 delay, type

Spawns a foreground object, usually cover for the rats. It is spawned such that the player reaches it in delay ticks. Values for type are: • 0: Regular foreground object • 1: End of game (cheese etc.)

4.10. Rat Race (9) 33 Tickompiler Documentation, Release 1.9.0

4.10.7 0x107 - Stoplight Control

0x107

The front rat pulls up the stoplight.

0x107<1>

The front rat puts away the stoplight.

0x107<2> type

Changes the stoplight display according to type. Values for type are: • 0: Left light on (orange) • 1: Middle light on (orange)

0x107<3>

Turns all lights on the stoplight red.

0x107<4>

Turns all lights on the stoplight green.

0x107<5>

Turns all lights on the stoplight off.

0x107<6>

The front rat drops the stoplight.

4.10.8 List of subs

These are all asynchronous subroutines. 0x56 Sets up a hold cue for 4 beats after the start of the sub, including cat animations. 0x57 Sets up a release cue for 4 beats after the start of the sub, including cat animations. 0x58 Stoplight count for hold cue; timed such that the input should be 3 beats after the start of the sub. 0x59 Stoplight count for release cue; timed such that the input should be 3 beats after the start of the sub.

4.11 Power Calligraphy (0xA)

4.11.1 0x100 - Input

0x100

One beat after 0x100, an A press input is required.

34 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.11.2 0x101 - Pattern Actions

0x101 pattern

Sets the pattern on the page. Values for pattern are: • 0: • 1: • 2: • 3: • 4: • 5: • 6: Face pattern (final pattern) • 7: Final page ()

0x101<1> num

Sets the next section of the pattern to be written onto the page. This is part of one of the lines, and will be filled in with the next 0x105.

4.11.3 0x102 - Page Movement

0x102 x, y

Moves the page x units right and y units down.

4.11.4 0x103 - Turn page

0x103 type

Turns the page. If type is 1, the page turns slowly, if 0 it turns normally.

4.11.5 0x104 - Cue action

0x104 type

Sets which kind of movement will happen for the next A input. Values for type are: • 0: The stroke in the pattern • 2: The stroke in the pattern • 3: The stroke in the pattern • 4: The dot in the pattern • 5: The stroke in the pattern • 7: The dot in the pattern • 8: The stroke in the pattern

4.11. Power Calligraphy (0xA) 35 Tickompiler Documentation, Release 1.9.0

• 9: The dot in the pattern • 0xA: The stroke in the face (final) pattern

4.11.6 0x105 - Brush Actions

0x105 x, y, flag

Moves the brush to x units right and y units down from the middle of the paper. If flag is 1, moves with brush on the paper, else moves with brush above paper.

0x105<1> type

Does an animation in preparation for a cue. Values for type are: • 0: Presses brush into paper in preparation for a stroke cue. • 1: Lifts brush in preparation for a dot cue.

0x105<2> flag

Turns hand red if flag is 1, turns hand back to normal if 0.

0x105<3>

Unknown.

0x105<4>

Unknown, tends to appear alongside brush movements and 0x105<1>.

0x105<5>

Unknown, appears alongside 0x105<1> 1.

4.11.7 0x106 - Dancers

0x106<1> type

Sets the animation for the dancers on the sides of the page. Values for type are: • 1: Spawns dancers; default animation • 3: Bowing animation • 4: Sitting animation

4.11.8 List of subs

These are all synchronous subroutines. 0x56 Ready page 0x57 pattern 0x58 Ready page

36 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x59 pattern 0x5A Ready page 0x5B pattern 0x5C Ready page 0x5D pattern 0x5E Ready page 0x5F pattern 0x60 Ready page 0x61 pattern 0x62 Ready face (final) page 0x63 Face (final) pattern 0x64 Ready page (unused) 0x65 Swingy pattern (unused) 0x66 Ready page (unused) 0x67 Swingy pattern (unused) 0x68 Ready page (unused) 0x69 Swingy pattern (unused) 0x6A Ready page (unused) 0x6B Swingy pattern (unused) 0x6C Ready page (unused) 0x6D Swingy pattern (unused) 0x6E Ready page (unused) 0x6F Swingy pattern (unused) 0x70 Ready face (final) page (unused) 0x71 Swingy face (final) pattern (unused)

4.12 Space Dance (0xB)

4.12.1 0x100 - Cue

0x100 time, type

Sets up a button press after time ticks. Values for type are: • 0: D-pad right (pose) • 1: D-pad down (sit) • 2: A (punch)

4.12. Space Dance (0xB) 37 Tickompiler Documentation, Release 1.9.0

4.12.2 0x101-0x107 - Space Dancers Animations

All the following animations include associated sound effects.

0x101

Beat (bob) animation for the pos th dancer from the right.

0x102

Pose animation.

0x103

Sit animation.

0x104

Punch animation.

0x105

Pose preparation animation.

0x106

Sit preparation animation.

0x107 ???

Punch preparation animation (clap hands). The argument is unknown, but is 1 for the second clap and 0 for others.

4.12.3 0x108-0x110 - Space Gramps Animations

0x108

Space Gramps beat (bob) animation.

0x109

Space Gramps pose animation.

0x10A

Space Gramps sit animation.

0x10B

Space Gramps punch animation.

0x10C

Space Gramps pose preparation animation.

0x10D

38 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

Space Gramps sit preparation animation.

0x10E

Space Gramps punch preparation animation (fist pump). If hand is 1, uses left hand, if 0, uses right hand.

0x10F

Space Gramps starts talking.

0x110

Space Gramps stops talking.

4.12.4 0x111 - Background Movement

0x111 hspeed, hdir, vspeed, vdir

Sets background movement. Sets horizontal speed to hspeed (unit unknown), horizontal direction to right if hdir is 0, left if hdir is 1. Sets vertical speed to vspeed, vertical direction to down if vdir is 0, up if vdir is 1.

4.12.5 List of subs

All the following are asynchronous subroutines. Note that these assume that getrest 0 and getrest 1 are set to appropriate values that add up to one beat. In Space Dance, both are a half-beat, 0x18 ticks. In Cosmic Dance, getrest 0 is 0x20 ticks and getrest 1 is 0x10 ticks. 0x56 A full punch, such that the input occurs one beat and getrest 0 ticks later, with regular voice SFX. 0x57 A full punch, with Space Gramps voice SFX. 0x58 A full punch, with both regular and Space Gramps voice SFX. 0x59 A full pose, such that the input occurs one beat later, with regular voice SFX. 0x5A A full pose, with Space Gramps voice SFX. 0x5B A full pose, with both regular and Space Gramps voice SFX. 0x5C A full sit, such that the input occurs one beat later, with regular voice SFX. 0x5D A full sit, with Space Gramps voice SFX. 0x5E A full sit, with both regular and Space Gramps voice SFX. 0x5F Space Gramps punch animation, including preparation. This is a sub because the timing depends on the values of getrest 0 and getrest 1.

4.13 Tap Trial (0xC)

4.13.1 0x100 - Cue

0x100

Sets up an A button press one beat later.

4.13. Tap Trial (0xC) 39 Tickompiler Documentation, Release 1.9.0

4.13.2 0x101 - Beat animation

0x101

Does a beat (bob) animation for all characters.

4.13.3 0x102 - Animations

0x102 type

Does an animation. Animations include associated sound effects. Values for type are: • 0: Ready single tap • 1: Ready double tap (pose only) • 4: Single tap • 5: Tap to the left (part of double tap) • 6: Tap to the left (part of triple tap) • 7: Tap to the right (part of triple tap) • 8: Ready triple tap (part 1) • 9: Crouch down (jump preparation) • 0xA: Jump up (type 1; used when landing into crouch) • 0xB: Jump up (type 2) • 0xC: Land from jump • 0xE: Land into crouch • 0xF: double tap “ook” • 0x10: Ready triple tap (part 2)

4.13.4 0x104 - Unknown

0x104

4.13.5 0x105 - Giraffe

0x1051

The giraffe appears.

4.13.6 0x106 - Giraffe thought

0x106

Removes giraffe thought bubble.

40 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x106<1> ???

Conditionally makes the giraffe think a random message if the player got the last input. The argument can be 0 through 2.

4.13.7 0x107 - Custom giraffe thought

0x107<1> string

The giraffe thinks a message from the script, namely the message corresponding to the name pointed to by string.

0x107<2>

Removes giraffe thought bubble.

4.13.8 0x108 - Background acceleration

0x108

Turns on background acceleration.

0x108<1>

Turns off background acceleration.

4.13.9 0x109 - Unknown

0x109

Unknown purpose, appears at the end of Tap Trial, but not Tap Trial 2.

4.13.10 List of subs

All the following are synchronous subroutines. 0x56 Full single tap 0x57 Full double tap 0x58 Jump preparation 0x59 Jump into crouch 0x5A Jump into pose 0x5B Full triple tap

4.13. Tap Trial (0xC) 41 Tickompiler Documentation, Release 1.9.0

4.14 Ninja Bodyguard (0xD)

4.14.1 0x100 - Cue arrow

0x100 time

Cues an arrow to be sliced after time ticks.

4.14.2 0x101 - Change scene

0x101

Changes the scene. Values for scene are: • 0: View of archers • 1: Middle view (intro cinematic) • 2: View of lord/ninja

4.14.3 0x102 - Archer control

0x102 num

Places num archers. Up to 6 archers are supported; 7 or more results in many off-screen archers.

0x102<1> pos

The pos th archer from the right, starting at 0, draws their bow. If pos is -1 (which it almost always is), all archers draw their bows.

0x102<2> pos

The pos th archer from the right, starting at 0, releases their bow and shoots an arrow.

4.14.4 0x104 - Intro animations

0x104

The enemy arrow flies from one tower to another.

0x104<1>

The enemy arrow lands on the player’s wall.

0x104<2>

The ninja falls into position. (Used in remixes for the ninja to appear during transition)

0x104<3>

The ninja gets his sword ready.

42 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x104<4> time

The sensei walks to the center of the wall in time ticks.

0x104<5>

The sensei faces the other way in confusion.

4.15 Airboarder (0xE)

4.15.1 0x100 - Spawn blocks

0x100 time, type

Spawns blocks (along with the corresponding button input), such that the player reaches them after time ticks. Values for type are: • 0: Hop • 1: Squat

4.15.2 0x101 - Switch camera

0x101 cam

Switches to camera number cam. There are three cameras, 0 through 2.

4.15.3 0x102 - Instant camera control

0x102 cam, pos, var

Sets the position of camera number cam to a preset position depending on pos and var.

0x102<1> cam, pos, var

Sets the focus (where camera is looking) of camera number cam to a preset position depending on pos and var.

0x102<2> cam, x, y, z

Sets the position of camera number cam to a vector defined by x, y and z, relative to the frontmost airboarder(?)

0x102<3> cam, x, y, z

Sets the focus of camera number cam to a vector defined by x, y and z.

0x102<4> cam, ???

Unknown, maybe zoom?

4.15. Airboarder (0xE) 43 Tickompiler Documentation, Release 1.9.0

4.15.4 0x103 - Smooth camera control

0x103 is identical to 0x102, with the difference that 0x103 camera changes occur over time, and two extra arguments are added, interp and time. interp determines the interpolation used to move the camera smoothly. time deter- mines how long the movement takes. For example, 0x102 cam, pos, var turns into 0x103 cam, interp, time, pos, var.

4.15.5 0x105 - Airboarder Animation

0x105 pos

Does the beat animation for the pos th airboarder, starting from 0.

0x105<1> pos

Does the ducking animation for the pos th airboarder from the front, starting from 0.

0x105<2> pos

The pos th airboarder from the front, starting from 0, stops ducking.

0x105<3> pos

The pos th airboarder from the front, starting from 0, starts the charging animation.

0x105<4> pos

The pos th airboarder from the front, starting from 0, jumps.

4.15.6 0x106 - Charging

0x106 flag

Sets whether the airboarders are charging up for a jump. If flag is 1, it will be possible to charge and jump, otherwise not.

4.15.7 List of subs

All the following are asynchronous subroutines. 0x56 Beat animations every beat, forever. 0x57 A full duck cue, such that the input is 28 beats later. 0x58 A full duck cue enabling charging, such that the input is 28 beats later. 0x59 A full jump cue without voice SFX at the start, such that the input is 28 beats later. 0x5A A full jump cue with voice SFX at the start, such that the input is 28 beats later.

44 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.16 Lockstep (0xF)

4.16.1 0x100 - Cue

0x100 type, time

Sets up a button input for after time ticks. Values for type are: • 0: Off-beat (to the right) • 1: On-beat (to the left)

4.16.2 0x101 - Beat animation

0x101

Does the beat animation for all Stepswitchers.

4.16.3 0x102 - Step animation

0x102

Does the step/cue animation for all Stepswitchers except the player’s.

4.16.4 0x103 - Set Direction

0x103 dir

Sets the direction in which all Stepswitchers will step. If dir is 0, it’s offbeat/to the right. If dir is 1, it’s onbeat/to the left.

4.16.5 0x104 - Change View

0x104 type

Sets the view (zoom in most cases). Values for type are: • 0: Regular zoom level. • 1: Zoomed out. • 2: Zoomed out further. • 3: Zoomed out yet further. • 4: Zoomed out the furthest (portraits are visible). • 5: Practice view.

4.16. Lockstep (0xF) 45 Tickompiler Documentation, Release 1.9.0

4.16.6 0x105 - Background color

0x105 color

Sets the color of the background. Values for color are: • 0, 2, 4, 6: Pink • 1, 3, 5, 7: Purple

4.16.7 List of subs

All the following are asynchronous subroutines. 0x56 On-beat marching for 4 beats, starting the next beat. 0x57 Transition from on-beat to off-beat marching, takes 4 beats, starting the next beat. 0x58 Off-beat marching for 4 beats, starting the next beat. 0x59 Transition from off-beat to on-beat marching, takes 4 beats, starting the next beat. 0x5A 0x104 0. 0x5B 0x104 1. 0x5C 0x104 2. 0x5D 0x104 3. 0x5E 0x104 4. 0x5F 0x104 5. 0x60 Background transition to off-beat, to be called one beat after 0x57. 0x61 Background transition to on-beat, to be called one beat after 0x59. 0x62 Voice clip for start of on-beat marching (“Hai!”). 0x63 Voice clip for transition to off-beat (“Hai hai hai ha-HA!”). 0x64 Voice clip for off-beat marching after transition (“Hop hop hop hop”). 0x65 Voice clip for transition to on-beat (“Hm-ha hm-ha”). 0x66 Voice clip for transition to on-beat with hops (“Hop hop hm-ha hm-ha”).

4.17 Blue Birds (0x10)

4.17.1 0x100 - Input/cue

0x100

Cues an input according to type one beat later. Values for type are: • 0: Peck (A press) • 1: Stretch prepare (start holding A) • 2: Stretch (stop holding A)

46 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.17.2 0x101 - Beat animation

0x101

Does the beat animation for the pos th character from the right, starting at 0.

4.17.3 0x102 - Captain Beak Movement

0x102

The captain moves his beak.

4.17.4 0x103-0x107 - Blue Birds Animations

0x103 part, pos

Does an animation depending on part for the pos th bird from the right, starting at 0. Values for part are: • 0: Crouch down (part 1 of peck preparation) • 1: Stretch up (part 2 of peck preparation)

0x104

The pos th bird from the right pecks its beak once.

0x105 part, pos

Does an animation depending on part for the pos th bird from the right, starting at 0. Values for part are: • 0: Determined look (part 1 of stretch preparation) • 1: Determined look with star (part 2 of stretch preparation)

0x106

The pos th bird from the right starts charging up for a stretch.

0x107

The pos th bird from the right stretches its neck.

4.17.5 0x108 - Unknown

An unknown operation 0x108 0 appears at the start of practices.

4.17.6 0x109 - Hide Captain

0x109

The captain goes off-screen.

4.17. Blue Birds (0x10) 47 Tickompiler Documentation, Release 1.9.0

4.17.7 0x10A - Show Memory

0x10A

Shows the num th memory, in the order they appear in the rhythm game Blue Birds, starting from 0.

4.17.8 0x10B - Hide Memory

0x10B

The memory fades away.

4.17.9 0x10C - Fin.

0x10C

The text “Fin.” appears.

4.17.10 List of subs

All the following are asynchronous subroutines. 0x57 A full “peck your beak” cue, such that the first input is two beats after the start. 0x58 “Peck your beak” voice clip. (included in 0x57 and 0x61) 0x59 Captain beak movement pattern for the “peck your beak” cue. (included in 0x57 and 0x61) 0x5A Relevant animations for the “peck your beak” cue. (included in 0x57) 0x5B A full “stretch out your neck” cue, such that the first input is 4 and a half beats after the start. 0x5C “Stretch out your neck” voice clip. (included in 0x5B and 0x5F) 0x5D Captain beak movement pattern for the “stretch out your neck” cue. (included in 0x5B and 0x5F) 0x5E Relevant animations for the “stretch out your neck” cue. (included in 0x5B) 0x5F A full “stretch out your neck” cue, where the first part of the preparation animation is skipped. 0x60 Relevant animations for the “stretch out your neck” cue, except the first part of the preparation animation. (included in 0x5F) 0x61 A full “peck your beak” cue, without the first part of the preparation animation. 0x62 Relevant animations for the “peck your beak” cue, without the first part of the preparation animation. (included in 0x61)

4.18 The Dazzles (0x11)

4.18.1 0x100 - Input

0x100 type, time

48 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

Cues up a button input depending on type after time ticks. Values for type are: • 0: Stop holding A • 1: Start holding A

4.18.2 0x101 - Enable/Disable Beat Animations

0x101 flag

Enables beat animations for all Dazzlers if flag is 1, disables if 0.

4.18.3 0x102 - Animations

0x102

Does the beat animation for all Dazzles.

0x102<1> x, y

The y th Dazzle from the top on the x th row (both starting from 0) starts crouching.

0x102<2> x, y

Unknown. Only used at the start of the game, and only on the player’s Dazzle.

0x102<3>

All Dazzles start charging up.

0x102<4> x, y

The specified Dazzle poses.

0x102<5>

All Dazzles stop posing.

4.18.4 0x103 - Charging

0x103 flag

Sets whether the Dazzles are charging for a pose (whether the player can pose). If flag is 1, enables, if 0, disables.

4.18.5 0x104 - Un-darken

0x104 x, y

Un-darkens the specified Dazzle. Only used with the player’s dazzle at the end of release cues.

4.18. The Dazzles (0x11) 49 Tickompiler Documentation, Release 1.9.0

4.18.6 0x105 - Player pose effect

0x105 type

Sets which visual effect occurs when the player successfully poses for a cue. Values for type are: • 0: Stars in a circle from the player’s hand. • 1: Stars with Play-yan.

4.18.7 0x106 - Shrink square

0x106 x, y, time

The specified Dazzle’s yellow square shrinks over time ticks.

4.18.8 List of subs

All the following are asynchronous subroutines. Posing patterns are described in a 2x6 grid of numbers, the numbers representing the order in which the Dazzles pose. Identical numbers are simultaneous. 0x56 Countdown voice clips (“Three, two”), timed such that the first voice clip is four beats after the start. 0x57 Dazzles start crouching from left to right. (no voice clips) 0x58 Dazzles start crouching all at once. (unused; no voice clips) 0x59 Dazzles start crouching from left to right 4 beats after start. (with voice clips) 0x5A Dazzles start crouching all at once 4 beats after start. (with voice clips) 0x5B Posing pattern:

123 123

There is one beat between each pose. 0x5C Posing pattern:

123 123

There is one beat between each pose, but the first pose only takes a half beat. 0x5D Posing pattern (unused):

145 236

There is a half beat between each pose. 0x5E Posing pattern (unused):

123 456

There is a half beat between each pose, with a beat delay between poses 3 and 4.

50 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x5F Posing pattern:

153 426

There is a three-quarter beat between each pose, but only a half-beat between poses 3 and 4. 0x60 Posing pattern:

111 222

There are two beats between the poses.

4.19 Freeze Frame (0x12)

4.19.1 0x100 - Input

0x100 car, time

An input for a picture of car number car is cued for after time ticks.

4.19.2 0x101 - Beat animation

0x101 type

The beat animation is played for the photographer. The exact function of type is unknown, but beat animation calls alternate between 1 and 0 for type.

4.19.3 0x102 - Camera Overlay

0x102 flag

Enables the camera overlay if flag is 1, disables if 0.

4.19.4 0x103 - Car Control

0x103 car, type

Sets car number car to a type determined by type. Values for type are: • 0: Yellow car • 1: Red car

0x103<1> car, x0, x1, time

Moves car number car in the background from x0 to x1 over time ticks. Positions are in units to the right of the center (possibly pixels).

4.19. Freeze Frame (0x12) 51 Tickompiler Documentation, Release 1.9.0

0x103<2> car, x0, x1, time

Moves car number car in the foreground from x0 to x1 over time ticks.

4.19.5 0x104 - Performance Display

0x104

Starts recording player performance for display.

0x104<1> flag

Shows performance (thumbs up, side or down) if flag is 1, hides it if 0.

0x104<2>

Sets the conditional variable to player performance (0 is thumbs up, 1 is side, 2 is down).

4.19.6 0x105 - Photograph Display

0x105 car, flag

Shows the photograph for car number car if flag is 1, hides if 0.

4.19.7 0x106 - Audience

0x106 flag

Shows the audience if flag is 1, hides if 0.

4.19.8 0x107 - Stoplight Control

0x107

Shows the stoplights.

0x107<1>

Hides the stoplights.

0x107<2>n

Turns on the n th stoplight, starting from 1.

4.19.9 0x108 - People in foreground

0x108 num, type

52 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

A person walks across the foreground. num is the “slot” for the person, and people in higher slots appear behind of people in lower slots. Used values for type are: • 0: Man wearing white shirt walking left. • 2: Woman walking left. • 4: Man wearing blue shirt walking right.

4.19.10 List of subs

All the following are asynchronous subroutines. 0x56 One yellow car cue; photograph disappears quickly. (unused) 0x57 One yellow car cue. 0x58 Two yellow cars cue. 0x59 Two yellow cars cue; photographs appear sequentially instead of simultaneously. 0x5A Three yellow cars cue. 0x5B Three yellow cars cue; photographs appear sequentially instead of simultaneously. 0x5C Red car cue; photograph disappears quickly. 0x5D Red car cue.

4.20 Glee Club (0x13)

4.20.1 0x100 - Input

0x100 type

An input is cued for after one beat. Values of type are: • 0: Release A (start singing) • 1: Release A (“Together now”) • 2: Hold A (stop singing)

4.20.2 0x101 - Shut your Yap

0x101<1>

Sets the conditional variable to 1 if you are holding A, 0 otherwise.

4.20.3 0x102 - Unknown

0x102 ???

Unknown. 0x102 0 appears at the start of Glee Club and Glee Club 2, but not in remixes.

4.20. Glee Club (0x13) 53 Tickompiler Documentation, Release 1.9.0

4.20.4 0x104 - Voice Control

0x104 pos, type, sfx, ???, pitch

Sets the sound effect that plays when the pos th Chorus Kid from the left (starting at 0) performs an action depending on type. The sound effect that plays has SFX ID sfx and is pitch-shifted up by pitch (can be negative). Note that the standard singing sound effect is 0x1000DAF, the sound effect to stop singing is 0x1000DB1, and the sound effect for screaming is 0x1000DB0. Values for type are: • 0: Singing • 1: Screaming • 2: Stop singing

0x104<1> pos, type, ???

The pos th Chorus Kid performs an action depending on type. Third argument is unknown, is usually 0. Values for type are: • 0: Singing • 1: Screaming • 2: Stop singing

0x104<2> pos

Unknown.

4.20.5 0x105 - Conductor Animations

0x105

Idle animation.

0x105<1>

The conductor raises his baton.

0x105<2>

The conductor snaps his baton.

4.20.6 0x106 - Unknown

0x106

Often appears one beat after the player’s Chorus Kid stops singing.

4.20.7 List of subs

Only one relevant subroutine exists. It is synchronous. 0x56 Shows the “shut your yap” message until the player shuts their yap.

54 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.21 Frog Hop (0x14)

4.21.1 0x100 - Input

0x100 type, time

Cues an input depending on type for after time ticks. Values for type are: • 0: Press A. • 1: Start holding B. • 2: Release B.

4.21.2 0x102 - Frog SFX

0x102 sfx

Plays the SFX with ID sfx (a voice clip), with the four dancer frogs “speaking” the SFX. Sound depends on player performance.

4.21.3 0x103 - Frog Animations

For the purposes of all 0x103 operations, frog positions are as follows: The blue foreground frog is 0, the orange foreground frog is 1, and the four background frogs are 2 through 5, from left to right.

0x103 pos

Does the beat animation for the frog at position pos.

0x103<1> pos

The frog at position pos shakes their hips.

0x103<2> pos

The frog at position pos does a long hip shake animation.

0x103<3> pos

The frog at position pos does the first part of the spin animation.

0x103<4> pos

The frog at position pos does the second part of the spin animation.

0x103<5> pos, type

The frog at position pos moves their mouths depending on type. Values of type are: • 0: Open mouth wide briefly. • 1: Open mouth narrowly. • 2: Open mouth wide.

4.21. Frog Hop (0x14) 55 Tickompiler Documentation, Release 1.9.0

• 3: Open mouth wide horizontally.

4.21.4 List of subs

Frog Hop has nearly 100 different useful subroutines. Some are synchronous, and some are asynchronous. 0x56 Beat animation for all frogs. (sync) 0x57 Hip shake for foreground frogs. (sync) 0x58 Hip shake for background frogs. (sync) 0x59 Long hip shake for foreground frogs. (sync) 0x5A Long hip shake for background frogs. (sync) 0x5B Spin part 1 for foreground frogs. (sync) 0x5C Spin part 1 for background frogs. (sync) 0x5D Spin part 2 for foreground frogs. (sync) 0x5E Spin part 2 for background frogs. (sync) 0x5F The spotlights change to the background frogs after 1 beat. Then change back to foreground frogs after 2 beats. (async) 0x60 Hip shake SFX. (sync) 0x61 “Yeah” voice clip, along with mouth movement for the orange frog. (async) 0x62 “Ya-” voice clip, along with mouth movement for the orange frog. (async) 0x63 “-Hoo!” voice clip, along with mouth movement for the orange frog. (async) 0x64 “-Hoo!” voice clip; mouth stays open longer. (async) 0x65 “Yeah-yeah-yeah” voice clip, along with mouth movement for orange frog; mouth stays open throughout. (async) 0x66 “Spin it” voice clip, along with speech bubble and mouth movement for orange frog. (async) 0x67 “Boys!” voice clip, along with mouth movement for orange frog. (async) 0x68 “Yeah” voice clip, along with mouth movement for background frogs. (async) 0x69 “Ya-” voice clip, along with mouth movement for background frogs. (async) 0x6A “-Hoo!” voice clip, along with mouth movement for background frogs. (async) 0x6B “-Hoo!” voice clip; mouths stay open longer. (async) 0x6C “Yeah-yeah-yeah” voice clip, along with mouth movement for background frogs; mouths stay open throughout. (async) 0x6D “Spin it” voice clip, along with mouth movement for background frogs. (async) 0x6E “Spin it” voice clip; alternate mouth movement. (async) 0x6F “Boys!” voice clip, along with mouth movement for background frogs. (async) 0x70 Four hip shake animations in a row for foreground frogs; uses sub 0x57. (async) 0x71 Four hip shake animations in a row for background frogs; uses sub 0x58. (async) 0x72 Four A press inputs in a row, starting one beat after the start of the sub. (async) 0x73 Hip shake SFX four times in a row; uses sub 0x60. (async)

56 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x74 Four full hip shake cues in a row; combines the previous four subs. (async) 0x75 Two hip shake animations in a row for foreground frogs; uses sub 0x57. (async) 0x76 Two hip shake animations in a row for background frogs; uses sub 0x58. (async) 0x77 Two A press inputs in a row, starting one beat after the start of the sub. (async) 0x78 Hip shake SFX two times in a row; uses sub 0x60. (async) 0x79 Two full hip shake cues in a row; combines the previous four subs. (async) 0x7A A triple hip shake animation, for foreground frogs; uses subs 0x57 and 0x59. (async) 0x7B Two hip shake animations, followed by a triple hip shake animation, for background frogs; uses subs 0x58 and 0x5A. (async) 0x7C Two A press inputs one beat apart, followed by three A press inputs a half-beat apart, starting one beat after the start of the sub. Also includes player’s “yeah-yeah-yeah” voice clips. (async) 0x7D “Yeah-yeah-yeah” voice clips for both the orange frog and background frogs; uses sub 0x60, and subs 0x61 and 0x68. (async) 0x7E A full “yeah-yeah-yeah” cue; combines subs 0x7A through 0x7D, as well as 0x5F. (async) 0x7F “Yeah-yeah-yeah” voice clips for both the orange frog and background frogs; mouths stay open throughout. (async) 0x80 A full “yeah-yeah-yeah” cue; combines subs 0x7A, 0x7B, 0x7C, 0x7F, and 0x5F (mouths stay open throughout). (sync; unused) 0x81-0x84 Identical to 0x7A-0x7D, except there is a preceding hip shake. (async) 0x85 A full “yeah-yeah-yeah” cue, with a preceding hip shake; combines the previous four subs, as well as 0x5F. 0x86 Identical to 0x7F, except there is a preceding hip shake. (async) 0x87 Identical to 0x80, except there is a preceding hip shake. (async) 0x88-0x8E Identical to 0x7A-0x80, except there is no preceding hip shake. (async) 0x8F One hip shake animation, followed by a “ya-hoo!” pattern animation, for foreground frogs; uses subs 0x57 and 0x59. (async) 0x90 Three hip shake animations, followed by a “ya-hoo!” pattern animation, for background frogs; uses subs 0x58 and 0x5A. (async) 0x91 Three A press inputs one beat apart, followed by A press inputs in a “ya-hoo!” pattern (two a half-beat apart), starting one beat after the start of the sub. Also includes the player’s “Ya-hoo!” voice clips. (async) 0x92 One hip shake SFX, followed by “Ya-hoo!” voice clips for both the orange frog and background frogs; uses sub 0x60, and subs 0x62, 0x63, 0x69, and 0x6A. (async) 0x93 A full “Ya-hoo!” cue; combines sub 0x8F-0x92, as well as 0x5F. (async) 0x94 One hip shake SFX, followed by “Ya-hoo!” voice clips for both the orange frog and background frogs. Mouths stay open longer; uses sub 0x60, and subs 0x62, 0x64, 0x69, and 0x6B. (async) 0x95 Identical to 0x7F, except there is a 1 beat delay. (async) A full “Ya-hoo!” cue. Mouths stay open longer; combines subs 0x8F-0x91, 0x94, and 0x5F. (async) 0x96-0x99 Identical to 0x88-0x8B, except there is no preceding hip shake. (async) 0x9A A full “Ya-hoo!” cue without preceding hip shake; combines the previous four subs, as well as 0x5F. (async) 0x9B Identical to 0x8C, except there is no preceding hip shake. (async)

4.21. Frog Hop (0x14) 57 Tickompiler Documentation, Release 1.9.0

0x9C A full “Ya-hoo!” cue without preceding hip shake. Mouths stay open longer; combines subs 0x8F-0x91, 0x94, and 0x5F. (async) 0x9D Three hip shake animations in a row for foreground frogs, starting one beat after the start of the sub. Uses sub 0x57. (async) 0x9E Three hip shake animations in a row for background frogs, starting one beat after the start of the sub. Uses sub 0x58. (async) 0x9F Three A press inputs in a row one beat apart, starting two beats after the start of the sub. (async) 0xA0 Three hip shake sound effects in a row, starting one beat after the start of the sub. Uses sub 0x60. (async) 0xA1 Three full hip shake cues, starting two beats after the start of the sub; combines the previous four subs. (async) 0xA2-0xA6 Identical to 0x96-0x9A, except there is only one hip shake instead of three. (async) 0xA7 A full spin animation for foreground frogs. Uses subs 0x5B and 0x5D. (async) 0xA8 Two hip shake animations, followed by a full spin animation for background frogs. Uses subs 0x5C and 0x5E. (async) 0xA9 Two A press inputs one beat after the start of the sub, followed by a B hold-and-release. Also includes player’s “Spin it, boys!” voice clips. (async) 0xAA “Spin it, boys!” voice clips for both the orange frog and background frogs; uses subs 0x66, 0x67, 0x6D and 0x6F. (async) 0xAB A full “Spin it, boys!” cue; combines the previous four subs, as well as 0x5F. (async) 0xAC “Spin it, boys!” voice clips for both the orange frog and background frogs; alternate mouth movement for background frogs. Uses subs 0x66, 0x67, 0x6D and 0x6E. (async) 0xAD A full “Spin it, boys!” cue; combines subs 0xA0-0xA3, 0xA5 and 0x5F. (sub; unused) 0xAE-0xB1 Identical to 0xA0-0xA3, except there is only one preceding hip shake. (async) 0xB2 A full “Spin it, boys!” cue with only one preceding hip shake; combines the previous four subs, as well as 0x5F. (async) 0xB3 Identical to 0xA5. (async) 0xB4 Identical to 0xA6, but with only one preceding hip shake. Combines subs 0xA7-0xA9, 0xAC and 0x5F. (async) 0xB5 “One, two, three, four!” count-in with mouth movements for the orange frog. (async)

4.22 Fan Club (0x15)

4.22.1 0x100 - Input

0x100

Cues an input for one half-beat after the operation, depending on type. Values for type are: • 0: A press. (can be omitted) • 1: Start holding A. • 2: Release A.

58 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.22.2 0x101-0x106 - Monkey Animations

0x101<1>

Beat animation for all monkeys.

0x102<1>

All monkeys put their hands up to clap.

0x102<2>

All monkeys put their hands up to clap while shaking.

0x103 pos

One monkey claps depending on pos.

0x103<1>

All monkeys clap.

0x104 pos

One monkey stops clapping depending on pos.

0x104<1>

All monkeys stop clapping.

0x105<1>

All monkeys start charging for a jump.

0x106<1>

All monkeys jump.

4.22.3 0x107-0x111 - Performer Animations

For the purposes of all operations in this category, performer indices are as follows: The singer is 0, left backup is 1, right backup is 2.

0x107i

Beat animation for the performer at index i.

0x108i

Beat animation with one hand raised.

0x109 flag, i

Hand twirl animation. If flag is 1, adds stars.

4.22. Fan Club (0x15) 59 Tickompiler Documentation, Release 1.9.0

0x10Ai

Clap animation.

0x10Bi

Stretch animation.

0x10Ci

Jump animation.

0x10Di

After-jump animation.

0x10E

Singer does “I suppose” animation.

0x10F

Singer does beat animation after “I suppose”.

0x110 i, dist, type

The performer at index i slides dist units to one direction, doing one of two animations determined by type (0 or 1). Never used for singer.

0x111 flag, i

Sets the performer at i to visible if flag is 1, invisible if 0.

4.22.4 0x112 - Lights

0x112

The lights flash.

0x112<1> flag

The stars (in Fan Club 2) start flashing if flag is 1, stop if 0.

0x112<2>

The lights (in Fan Club 2) flash in the first color scheme.

0x112<3>

The lights (in Fan Club 2) flash in the second color scheme.

4.22.5 0x114 - Background control

60 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x114 flag

Background darkens if flag is 1, lightens if 0.

4.22.6 0x116 - Confetti

0x116

Confetti pops out.

4.22.7 List of subs

All the following are asynchronous subroutines. 0x57 A full 4-clap cue, including animations and inputs. 0x58 A full “I suppose” cue, including animations and inputs. 0x59 A full “I suppose” cue; different monkey voice clip. 0x5A A full “I suppose” cue; different monkey voice clip. 0x5B A full “I suppose” cue; different monkey voice clip. 0x5C A full “I suppose” cue; different monkey voice clip. 0x5D A full “oh” cue, including animations, inputs, and voice clip. 0x5E Inputs for a 4-clap cue, starting one beat after the start of the sub. 0x5F Inputs for an “I suppose” cue. 0x60 Inputs for an “oh” cue. 0x61 Monkeys start clapping forever one after another (end of Fan Club 2).

4.23 Dog Ninja (0x16)

4.23.1 0x100 - Input/Throw Objects

0x100 time, obj1, obj2

Spawns objects, to be cut after time ticks. obj1 is the object coming from the right, obj2 from the left. Values for obj1 and obj2 are: • 0: Cucumber. • 1: Broccoli. • 2: Apple. • 3: Carrot. • 4: Potato. • 5: Bone. • 6: Yellow pepper.

4.23. Dog Ninja (0x16) 61 Tickompiler Documentation, Release 1.9.0

• 7: Tire. • 8: Frying pan. • 9: Game crash! • 0xA: Nothing.

4.23.2 0x101 - Beat Animation

0x101

Beat animation.

4.23.3 0x102 - Cut Everything!

0x102 flag

Shows the bird holding a sign saying “cut everything” if flag is 1, hides if 0.

4.24 Rhythm Rally (0x17)

Note: Units for arc height seem to be arbitrary. Arc height of a standard 1-beat bounce is 0x3E8 (1000), that of a 2-beat bounce is 0xBB8 (3000), and that of a half-beat bounce is 0x29E (670).

4.24.1 0x100 - Input

0x100 ???, height, time

The player will have an input after time ticks, after which the ball will bounce to the other side of the table over time ticks with an arc height of height. The first argument is 1 in a turbo rally, and 0 otherwise.

4.24.2 0x101 - Bounce Ball

0x101 type, height, time

The ball will bounce to a point determined by type over time ticks, with an arc height of height. Values for type are: • 1: The opponent’s paddle. • 2: The player’s side of the table. • 3: The player’s paddle. • 5: The opponent’s hand. (when serving)

4.24.3 0x102 - Player Performance

62 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x102

Sets the conditional variable to 1 if the player failed an input since the last 0x102<1>, and 0 otherwise.

4.24.4 0x104-0x107 - Paddler Animations

0x104i

A paddler corresponding to i does a beat animation. 0 is the opponent, 1 is the player.

0x105i

A paddler corresponding to i readies themselves to hit the ball.

0x106i

A paddler corresponding to i hits the ball.

0x107i

A paddler corresponding to i throws their arms up in victory.

4.24.5 List of subs

All the following are asynchronous subroutines. 0x56 A single regular, 1-beat rally. 0x57 A single regular, 2-beat rally. 0x58 A single regular, half-beat rally. (turbo rally) 0x59 A single half-beat rally, where the player hits the ball as though it were a 1-beat rally. (fast rally) 0x5A Fast rally cue sound, two beats after the start of the sub. 0x5B Turbo rally cue sound.

4.25 Fillbots (0x18)

4.25.1 0x100 - Input/Fill Robot

0x100 len

Sets up a full robot cue, including the inputs for holding and releasing A, 4 beats after the operation. Values for len are: • 0: Small Fillbot • 4: Normal Fillbot • 7: Large Fillbot Note that, while these values seem to suggest some correlation to the amount of beats A needs to be held, the values between these result in, while strictly increasing, odd non-linearly increasing times.

4.25. Fillbots (0x18) 63 Tickompiler Documentation, Release 1.9.0

4.25.2 0x101 - Nozzle Control

0x101

Beat animation for nozzle.

0x101<2> type

Sets how low the nozzle goes if you press A. If type is 1 it will go down to small fillbot level, otherwise normal level.

4.25.3 0x102 - Robot Animations

0x102 type, end

Assembles a robot of type type after half a beat. If end is 1, the robot will go off-screen after the cue, if 0, it will stay in place. Values for type are: • 0: Normal fillbot. • 1: Large fillbot. • 2: Small fillbot.

0x102<1> type, end, time

Same as the previous, but the robot gets assembled after time ticks instead of a half beat.

0x102<3>

Beat animation for robot.

4.25.4 0x106 - Factory Screen?

0x106 bflyt

Takes the name of a .bflyt file and shows the factory screen (?).

4.25.5 List of subs

All the following are asynchronous subroutines. 0x5D Beat animations every beat for 4 beats. 0x5E Beat animations every beat for 8 beats. 0x5F Beat animations every beat for 16 beats. 0x60 Beat animations every beat for 32 beats. 0x61 Beat animations every beat for 64 beats. 0x62 Beat animations every beat for 128 beats. 0x63 Beat animations every beat, forever. 0x64-0x6B Robot cues with 0x100 values 0-7 in order, all stay stationary after cue. 0, 4, and 7 (0x64, 0x68, 0x6B) are their respective robot types, others are normal fillbots graphically.

64 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x6C-0x73 Same as previous 8, but they go off-screen after cue. Of note are 0x6C, 0x70, 0x73, the used patterns.

4.26 Shoot-‘Em-Up (0x19)

4.26.1 0x100 - Spawn Alien

0x100 pos, time

Spawns an alien at a position determined by pos, to be shot after time ticks. Values for pos are: • 0: Far top left corner. • 1: Far top right corner. • 2: Slightly down and right from 0. • 3: Slightly down and left from 1. • 4: Slightly down and right from 2. • 5: Slightly down and left from 3. • 6: Slightly to the left of the center. • 7: Slightly to the right of the center. • 8: In the center. • 9: Nearly identical to 6. • 0xA: Nearly identical to 7. • 0xB: Left and slightly down from the center. • 0xC: Right and slightly down from the center. • 0xD: Down and left from 0xB. • 0xE: Down and right from 0xC. • 0xF: Slightly down and left from 0xD. (far bottom left corner) • 0x10: Slightly down and right from 0xE. (far bottom right corner)

4.26.2 0x102 - Metal Doors

0x1021

Spawns metal doors for the opening of Shoot-‘Em-Up 1.

0x102

Reveals part of the game, removing one of the three doors. n is which door to open, starting from 0, in the order they are opened in Shoot-‘Em-Up 1.

4.26. Shoot-‘Em-Up (0x19) 65 Tickompiler Documentation, Release 1.9.0

4.26.3 0x103 - Screen Control

0x103

The screen that looks suspiciously like a U GamePad is brought into view.

0x103<1>

The screen is hidden.

4.26.4 0x104 - Radio Lady Control

0x104

The radio lady pops up on the screen.

0x104<1>

The radio lady is removed from view.

0x104<2>

Beat animation for radio lady.

0x104<3> num

The radio lady opens her mouth num times, simulating speech.

4.26.5 List of subs

All the following are asynchronous subroutines. 0x56-0x66 An alien is spawned at position 0-0x10 respectively a half beat later, along with a sound effect, to be shot 4 beats after it appears. 0x67-0x77 An alien is spawned at position 0-0x10 respectively a half beat later, along with a sound effect, to be shot 8 beats after it appears.

4.27 Big Rock Finish (0x1A)

4.27.1 0x100 - Input

0x100 time, type

Cues up an A press input after time ticks. If type is 1, the player will also jump up (final strum in a cue).

4.27.2 0x102 - Guitar Sound Control

0x102 short, long

Sets the length of a short and long guitar strum sound in ticks.

66 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x102<1> pitch

Sets the pitch relative to the base guitar sound in semitones.

4.27.3 0x103 - Light Patterns

0x103 type

Causes a light overlay effect to occur. Values for type are: • 0: Nothing. • 1: Green swirl pattern. (as in BRF Patterns A, D, G) • 2: Blue dot pattern. (as in BRF Patterns B, E, H) • 3: Red pattern. (as in BRF Patterns C, F) • 4: White flash. (when strumming)

4.27.4 0x104 - Player Animations

0x104

Player beat animation.

0x104<1>

Player ready animation.

4.27.5 0x105 - Green Ghost Animations

0x105

Green ghost beat animation.

0x105<1>

Green ghost ready animation.

0x105<3>

Green ghost strum animation.

0x105<4>

Green ghost long strum animation.

4.27.6 0x106 - Drummer Animations

0x106

Bass drum animation.

4.27. Big Rock Finish (0x1A) 67 Tickompiler Documentation, Release 1.9.0

0x106<1>

Snare drum animation.

0x106<2>

Hi-hat animation.

0x106<3>

Cymbal animation.

0x106<4>

Right tom animation.

0x106<5>

Left tom animation.

4.27.7 List of subs

All the following are asynchronous subroutines unless noted otherwise. 0x57 Player and green ghost animations for a regular guitar cue. 0x58 Drummer animations for a regular guitar cue. 0x59 Audience animations for a regular guitar cue. 0x5A Inputs for a regular guitar cue. 0x5B A full regular guitar cue. 0x5C Player and green ghost animations for a swingy guitar cue. 0x5D Drummer animations for a swingy guitar cue. 0x5E Audience animations for a swingy guitar cue. 0x5F Inputs for a swingy guitar cue. 0x60 A full swingy guitar cue. 0x61 Player and green ghost animations for a double-speed guitar cue. 0x62 Drummer animations for a double-speed guitar cue. 0x63 Audience animations for a double-speed guitar cue. 0x64 Inputs for a double-speed guitar cue. 0x65 A full double-speed guitar cue. 0x66 (synchronous) Beat animations for the player, green ghost and audience. 0x67 Four beat animations for the player, green ghost and audience. 0x68 “Thank you” voice clip. 0x6B-0x72 Drum patterns for songs A-H respectively.

68 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.28 Munchy Monk (0x1B)

4.28.1 0x100 - Input

0x100 type

Sets an input. Values for type are: • 0: “One” dumpling, input is after 1 beat. • 1: Second dumpling in “Two” cue; input after 1.5 beats. • 2: Second and third dumplings in “Three” cue; input after a half beat.

4.28.2 0x102 - Spawn Dumpling

0x102 color

A dumpling is spawned into the player’s hand. Up to two can be stacked; stacking more than two will crash the game. Values for color are: • 0: White. • 1: Pink. • 2: Green.

4.28.3 0x103 - Hand Control

0x103 type

A hand is spawned to give the player dumplings. Values for type are: • 0: Hand used in “one” cue. • 1: Hand used in “two” cue. • 2: Hand used in “three” cue.

0x103<1>

Removes the hand.

4.28.4 0x104 - Slide Forward

0x104

The Monk slides forward to reveal a baby.

4.28.5 0x106 - Hands Forward

0x106

The Monk’s hands slide forward.

4.28. Munchy Monk (0x1B) 69 Tickompiler Documentation, Release 1.9.0

4.28.6 0x107 - Background Movement

0x107 flag, ???

The background starts moving if flag is 1. The second argument is unknown, possibly speed or time it takes to start moving at full speed.

4.28.7 List of subs

All the following are asynchronous subroutines. All are such that the first dumpling will be placed into the Monk’s hand one beat after the start of the sub. 0x56 “One, go!” cue. 0x57 “T-Two, go-go!” cue. 0x58 “Three, go go go!” cue.

4.29 Built to Scale (0x1C)

4.29.1 0x101 - Paddle Control

Note that when a paddle number is an argument, it’s the nth paddle from the left, starting at 0. -1 is off-screen to the left and to the right.

0x101 p1, p2

Used when a peg bounces from paddle p1 to p2. Does the hitting animation for the paddle.

0x101<1>

Paddles reset to their neutral state.

0x101<2>p

Paddle p charges up.

0x101<3>p

Paddle p stops charging up.

4.29.2 0x102 - Peg Control

0x102 p1, p2, ???, cflag, pflag

The peg bounces from p1 to p2 over one beat. If p2 is the player’s paddle, includes an input. The third argument is always 0. If cflag is 1, it indicates that the paddle at the destination is charged up and will shoot the peg. If pflag is 1, it indicates that a charge will occur on the next bounce.

0x102<1>p

Used on the beat the peg will be shot by paddle p. Presumably causes the peg to fall if the player missed.

70 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.29.3 0x103 - Widget Pair Control

0x103 slot, active

Sets widget pair slot slot to active (visible?) if active is 1, inactive if 0.

0x103<1> slot, i, pos

Moves widget half i (0 is closer to paddles, 1 is further away) of pair slot to position pos. Position 0 is the middle, negative is to the left, positive is to the right.

0x103<2> slot

Combines widget in slot if the player shoots them correctly the next beat.

0x103<4>

Sets the conditional variable to the number of slots which are active.

4.29.4 List of subs

All the following are asynchronous subroutines. (???) indicates a sub that doesn’t make sense within the rules of the rhythm game. 0x56 The charging sound. 0x57 Bounce from paddle 1 to 2 to 3 to off-screen. 0x58 Bounce from off-screen to 3 to 2 to 1 to 0. 0x59 Bounce from 0 to 1 to 2 to 3 to 2. (unused) 0x5A Bounce from 2 to 1 to 0 to 1 to 2. (unused) 0x5B Bounce from 2 to 3 to 2 to 1 to 0. (unused) 0x5C Bounce from 3 to 2 to 1 to 0 to 1. 0x5D Bounce from 1 to 2 to 3 to 2 to 1. (unused) 0x5E Bounce from 1 to 0 to 1 to 2 to 3. (unused) 0x5F Bounce from 0 to 1 to 2 to 3, then shoot with 2. 0x60 Bounce from 2 to 1 to 0 to 1, then shoot with 2. (unused) 0x61 Bounce from 2 to 3 to 2 to 1, then shoot with 0. (???, unused) 0x62 Bounce from 3 to 2 to 1 to 0, then shoot with 1. (???, unused) 0x63 Bounce from 1 to 2 to 3 to 2, then shoot with 1. (???, unused) 0x64 Bounce from 1 to 0 to 1 to 2, then shoot with 3. (???, unused) 0x65 Bounce from 0 to 1 to 2 to 3, then start preparing for a charge at 2. (???, unused) 0x66 Bounce from 2 to 1 to 0 to 1, then start preparing for a charge at 2. (???, unused) 0x67 Bounce from 2 to 3 to 2 to 1, then start preparing for a charge at 0. (???, unused) 0x68 Bounce from 3 to 2 to 1 to 0, then start preparing for a charge at 1. (unused) 0x69 Bounce from 1 to 2 to 3 to 2, then start preparing for a charge at 1. (???, unused)

4.29. Built to Scale (0x1C) 71 Tickompiler Documentation, Release 1.9.0

0x6A Bounce from 1 to 0 to 1 to 2, then start preparing for a charge at 3. (unused) 0x6B Paddle 0 stops charging, and the peg falls if not hit. (???, unused) 0x6C Paddle 2 stops charging, and the peg falls if not hit. 0x6D Paddle 3 stops charging, and the peg falls if not hit. (???, unused) 0x6E Paddle 1 stops charging, and the peg falls if not hit. (???, unused) 0x6F Bounce from 0 to 1 to shoot with 1. (???, unused) 0x70 Bounce from 2 to 1 to shoot with 1. (???, unused) 0x71 Bounce from 2 to 3 to shoot with 3. (???, unused) 0x72 Bounce from 3 to 2 to shoot with 2. (unused) 0x73 Bounce from 1 to 2 to shoot with 2. (unused) 0x74 Bounce from 1 to 0 to shoot with 0. (???, unused) 0x75 Bounce from 0 to 1, then shoot with 2. 0x76 Bounce from 2 to 1, then shoot with 0. (???, unused) 0x77 Bounce from 2 to 3, then shoot with 2. (unused) 0x78 Bounce from 3 to 2, then shoot with 1. (???, unused) 0x79 Bounce from 1 to 2, then shoot with 3. (???, unused) 0x7A Bounce from 1 to 0, then shoot with 1. (???, unused) 0x7B Bounce from 0 to 1 to 2, then shoot with 3. (???, unused) 0x7C Bounce from 2 to 1 to 0, then shoot with 1. (???, unused) 0x7D Bounce from 2 to 3 to 2, then shoot with 1. (???, unused) 0x7E Bounce from 3 to 2 to 1, then shoot with 0. (???, unused) 0x7F Bounce from 1 to 2 to 3, then shoot with 2. 0x80 Bounce from 1 to 0 to 1, then shoot with 2. (unused) 0x81-0x84 Spawn widget halves in slots 0-3 respectively, starting 6 beats away from the middle, and move them every beat. 0x85-0x88 Spawn widget halves in slots 0-3 respectively, starting 5 beats away from the middle, and move them every beat. (unused) 0x89-0x8C Spawn widget halves in slots 0-3 respectively, starting 4 beats away from the middle, and move them every beat. (unused) 0x8D-0x90 Spawn widget halves in slots 0-3 respectively, starting 3 beats away from the middle, and move them every beat. (unused) 0x91-0x94 Spawn widget halves in slots 0-3 respectively, starting 2 beats away from the middle, and move them every beat. (unused) 0x95-0x98 Spawn widget halves in slots 0-3 respectively, starting at the middle, and move them every beat. (unused) 0x99-0x9C Identical to 0x81-0x84, but the widget halves move every half beat. (unused) 0x9D-0xA0 Identical to 0x81-0x84, but the widget halves move every quarter beat. (unused) 0xA1-0xA4 Identical to 0x81-0x84, but the widget halves move every eighth beat. (unused) 0xA5 0x58 followed by 0x75 (off-screen -> 3 -> 2 -> 1 -> 0 -> 1 -> shoot)

72 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0xA6 0x5C followed by 0x7F (3 -> 2 -> 1 -> 0 -> 1 -> 2 -> 3 -> shoot), then from off-screen into 0x5F (off-screen -> 0 -> 1 -> 2 -> 3 -> shoot), then spawn a peg from off-screen onto paddle 3. (this is the entire pattern that is repeated in Built to Scale.) 0xA7 Identical to 0xA6, but without spawning the next peg.

4.30 Air Rally (0x1D)

4.30.1 0x100 - Input

0x100

Cues an A press input. Time depends on arc time.

4.30.2 0x101 - Plane Positions

0x101 pos, flag

The player’s plane’s position becomes pos. If flag is 1, this will be instant, otherwise it’ll be smooth. Known values for pos are: • 0: Behind camera. • 1: Regular position.

0x101<1> pos, flag

Forthington’s plane’s position becomes pos. If flag is 1, this will be instant, otherwise smooth. Known values for pos are: • 0: Behind camera. • 2: Regular position. • 3: Further away from camera. • 4: Yet further away from camera. • 5: Very far away from camera.

4.30.3 0x102 - Shuttle Respawn

0x102

Respawns a shuttle at Forthington’s racket if an input was missed.

4.30.4 0x103 - Hit Shuttle

0x103

Forthington hits the shuttle to Baxter.

4.30. Air Rally (0x1D) 73 Tickompiler Documentation, Release 1.9.0

4.30.5 0x104 & 0x105 - Catch Shuttle

0x104 0x105

Forthington catches the shuttle. Seems to work only when both are present.

4.30.6 0x107 - Cloud Speed

0x107

Sets the speed of clouds rushing by, as a percentage of the regular speed in Air Rally 1.

4.30.7 0x109 - Color Overlay

0x109 r, g, b

Sets the color overlay for an element determined by type to the color determined by the given RGB values. Values for type are: • 0: Background • 1: Clouds • 2: Baxter, Forthington, and the shuttle • 3: Unknown

4.30.8 0x10A - Colors over Time

0x10A

Applies the most recent 0x109 changes to every type of element over time ticks.

4.30.9 0x10B - Set Arc Time

0x10B time1, time2

Sets the time for the shuttle to go from Forthington to Baxter to time1 and the time for the shuttle to go from Baxter to Forthington to time2. Affects inputs.

4.30.10 0x10E - Forthington Mouth Movement

0x10E<2>

Forthington moves his mouth.

74 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.30.11 List of subs

All the following are asynchronous unless otherwise noted. 0x56 Forthington speaks for a while. 0x57 Input and animation for a regular hit. 0x58 Input and animation for two regular hits. 0x59 Input and animation for a high hit. 0x5A Mouth movement for “ba-bum bum bum” 0x5B Identical to 0x5A? SFX added? 0x5C Mouth movement for “Two three four!” 0x5D Identical to 0x5C? SFX added? 0x5E Identical to 0x57. 0x5F A regular hit with “ba-bum bum bum” 0x60 A high hit with “ba-bum bum bum” 0x61 A high hit with “Two three four!” 0x62 A high hit. 0x63 A high hit that doesn’t respawn the shuttle. 0x64 A high hit that doesn’t respawn the shuttle. The shuttle returns to Forthington in one beat instead of two. 0x65 Removes any color overlay (makes it white). (sync) 0x66 Adds an “evening” overlay (orange; characters are black). (sync) 0x67 Adds a dark overlay. (sync) 0x68 “evening” overlay, but without characters being silhouettes. (sync)

4.31 Exhibition Match (0x1E)

4.31.1 0x100 - Spawn Ball/Input

0x100 time

Spawns a ball to be hit after time ticks. time is usually 0x20 due to the timing of the monkey’s throw animation.

4.31.2 0x101 - Slugger Animations

0x101

Beat animation for slugger.

0x101<1>

Slugger tenses up in preparation for a hit.

4.31. Exhibition Match (0x1E) 75 Tickompiler Documentation, Release 1.9.0

0x101<2> type

Post-pitch animation. Values for type are: • 0: Look at the camera. • 1: Face the camera. (This is probably not intended for mid-pitch) • 2: Sniff.

4.31.3 0x102 - Pitcher Animations

0x102

Beat animation for pitcher.

0x102<1>

Wind-up animation.

0x102<2>

Throw animation.

4.31.4 0x103 - Monkey Animations

0x103

Beat animation for monkey.

0x103<1>

Throw animation.

4.31.5 0x104 - Curtain

0x104<2>

Hide curtain.

4.31.6 0x105 - Slugger Swinging Animation

0x105 type

Sets the slugger’s swinging animation. Values for type are: • 0: Default swinging animation. • 1: Spinning animation.

76 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.31.7 0x108 - Zoom

0x108 zoom, time

Sets the zoom to zoom over time ticks. Default zoom value is -64.

0x108<1> zoom, time

Adds zoom to the zoom level over time ticks.

4.31.8 0x10B - Flash Lights

0x10B

Flashes the lights (only visible when very zoomed out; most zoomed-out view used is 0x139C).

4.31.9 List of subs

All the following are asynchronous. 0x56 Four beat animations in a row for all characters. 0x57 Two beat animations, followed by a pitching animation. 0x58 Regular throwing cue, from the moment the pitcher throws. 0x59 Same as 0x58, but the slugger looks at the camera mid-pitch. 0x5A Same as 0x58, but the slugger faces the camera mid-pitch. 0x5B Same as 0x58, but the slugger sniffs mid-pitch. 0x5C Nothing at all. 0x5D Unknown. 0x5E Waits 8 beats, then zooms camera in 4 times before resetting the zoom. 0x5F Waits 8 beats, then zooms camera in 3 times before resetting the zoom. 0x60 Waits 8 beats, then zooms camera in slowly before resetting the zoom. 0x61 Waits 8 beats, then zooms camera in twice before resetting the zoom. 0x62 Waits 8 beats, then zooms camera in sharply once, then slowly, before resetting the zoom. 0x63 Waits 8 beats, then zooms camera out very far before resetting the zoom. 0x64 Identical to 0x5E, the zoom is slightly more intense. 0x65 Identical to 0x5F, the zoom is slightly more intense. 0x66 Identical to 0x60, the zoom is slightly more intense. 0x67 Identical to 0x61, the zoom is slightly more intense. 0x68 Identical to 0x62, the zoom is slightly more intense.

4.31. Exhibition Match (0x1E) 77 Tickompiler Documentation, Release 1.9.0

4.32 Flockstep (0x1F)

4.32.1 0x100 - Input

0x100 type, time

Cues up an input based on type in time ticks. Values for type are: • 0: Press A. • 1: Start holding B. • 2: Stop holding B. • 4: Stop holding A. (When the other birds lift their feet; input not mandatory, but includes bird movement.)

4.32.2 0x102 - Bird Animations

0x102 ???, type

Does an animation for all birds. First argument is unknown, but seems to be 5 often. Values for type are: • 0: Step. • 1: Lift leg.

0x102<1> ???

All birds charge. Argument seems to always be 5.

0x102<2> ???

All birds jump. Argument seems to always be 5.

0x102<3> num

Set the amount of birds besides the four main ones. Birds will fly away or land to match the number specified.

0x102<5> num num new birds land.

4.32.3 0x104 - Beat Animation

0x1040

Beat animation for all birds.

4.32.4 0x107 - Color Variety

0x107 flag

Newly added birds can be only pink if flag is 0, all colors if 1.

78 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.32.5 0x108 - Earth Animation

0x108 view

Changes the view to one of the views from the Earth animations in Flockstep. Values for view are 0 through 5, and are in the order they appear in the game.

0x108<1>

Resets the view to normal.

4.32.6 0x109 - Earth In Eye

0x109

An image of the Earth appears in the eye of the player’s bird.

0x109<1>

Removes the image.

4.32.7 List of subs

All the following are asynchronous. 0x56 Count-in with cowbells. 0x57 Identical to 0x56. 0x58 Inputs for a step cue. 0x59 Inputs to start charging. 0x5A Inputs to jump. 0x5B Additional animations and camera movement for a step cue. 0x5C Additional animations and camera movement for a charge cue. 0x5D Additional animations and camera movement for a jump cue. 0x5E A full step cue. 0x5F A full charge cue. 0x60 A full jump cue.

4.33 Cheer Readers (0x20)

4.33.1 0x100 - Input

0x100 type, time, effect

Sets up a cue depending on type for after time ticks. effect adds some effects when the cue is hit successfully. Values for type are:

4.33. Cheer Readers (0x20) 79 Tickompiler Documentation, Release 1.9.0

• 2: Start holding B. • 3: Release B. • 5: Press A. Values for effect are: • 0: Nothing. • 1: Books gleam and the player’s cheer reader says “Yay!”. • 3: Books gleam and all cheer readers say “Yay!”. • 4: Special sound effect. Found in the “Rah-rah sis boom bah-BOOM!” cue.

4.33.2 0x101 - Flip Book

0x101 x, y

The cheer reader in the x th column and the y th row (from the top left, starting at 0) flips her book. Can also be used for the player.

4.33.3 0x102 - Spin Book

0x102 x, y

The specified cheer reader starts spinning her book.

0x102<1>

All cheer readers except the player start spinning their books.

4.33.4 0x103 - Open Book

0x103 x, y

The specified cheer reader stops spinning her book and opens it.

0x103<1>

All cheer readers except the player stop spinning their books and open them.

4.33.5 0x104 - Book Flipping Sound

0x104 0x104<1> 0x104<2>

The above all seem to produce the same book flipping sound effect. Different special values are used in different cues, but there seems not to be a difference.

80 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.33.6 0x106 - Opened Book Image

0x106 type

Sets which image is to be created by the opened books at the end of a spin cue. Values for type, along with their appearances in the standard cellanim, are: • 0: Rhythm Tweezers onion. • 1: DJ Yellow and his student. • 2: Lockstep.

4.33.7 0x107 - Misc. Animations

0x107 type

Does one of several animations for all cheer readers. Values for type are: • 0: Beat animation. • 1: Unsure, possibly an animation “reset”.

4.33.8 0x109 - Mouth Movement

0x109 ???

Handles mouth movement for the cheer readers. The argument is unknown, maybe how wide the mouth opens or how long it stays open? Values for type are: • 0: Only the player speaks. • 1: Only the other cheer readers speak. • 2: Everybody speaks.

4.33.9 List of subs

The following are all synchronous. 0x56 Clears the subtitles of the top row after 3.5 beats. 0x57 Clears the subtitles of the bottom row after 3.5 beats. 0x58 “One! Two! Three!” subtitles on the top row. 0x59 “One! Two! Three!” subtitles on the bottom row. 0x5A “It’s up to you!” subtitles on the top row. 0x5B “It’s up to you!” subtitles on the bottom row. 0x5C “Rah-rah sis boom bah-BOOM!” subtitles on the top row. 0x5D “Rah-rah sis boom bah-BOOM!” subtitles on the bottom row. 0x5E “Let’s go read a buncha books!” subtitles on the top row. 0x5F “Let’s go read a buncha books!” subtitles on the bottom row.

4.33. Cheer Readers (0x20) 81 Tickompiler Documentation, Release 1.9.0

0x60 “OK, it’s on!” subtitles on the top row. 0x61 “OK, it’s on!” subtitles on the bottom row. 0x62 “One! Two! Three!” cue. 0x63 “It’s up to you!” cue. 0x64 “It’s up to you!” cue, with a “Yay!”. (unused) 0x65 “It’s up to you!” cue, with an unused effect. (unused) 0x66 “It’s up to you!” cue, with a “Yay!” by all cheer readers. (unused) 0x67 “Rah-rah sis boom bah-BOOM!” cue, with a sound effect. 0x68-0x6B “Let’s go read a bunch of books!” cues, with effects like in 0x63-0x66. 0x6C “OK, it’s on!” cue. 0x6D “OK, it’s on!” cue, but the top left three cheer readers don’t open their books. (used in conjunction with “Let’s go. . . ”) 0x6E Mouth movement for “One! Two! Three!”; only player. 0x6F Mouth movement for “One! Two! Three!”; only others. 0x70 Mouth movement for “One! Two! Three!”; everyone. 0x71-0x73 Mouth movements for “It’s up to you!”; variants as in 0x6E-0x70. 0x74-0x76 Mouth movements for “Rah-rah sis boom bah-BOOM!”; variants as above. 0x77-0x79 Mouth movements for “Let’s go read a buncha books!”; variants as above. 0x7A-0x7C Mouth movements for “OK, it’s on!”; variants as above. 0x7D-0x7F Single mouth movement; variants as above. (unused) 0x80 Misc. mouth movements for everyone but the player.

4.34 Double Date (0x21)

4.34.1 0x100 - Input/Ball

0x100 jump, catch, time

Spawns a ball to kick depending on type such that the first bounce is a beat later. Does not include sound effects. If jump is 1, the weasels will jump out of their hole. catch determines who or what will jump up to catch the ball in the background. The final argument advances the ball and input by time ticks, but it mantains the speed it would originally have. It normally stays at 0 and it’s only used for transitions in remixes. Values for type are: • 0: Soccer ball. (can be omitted) • 1: Basketball. • 2: Football. Values for catch are: • 0: Nothing. • 1: Football player. • 2: Two football players.

82 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

• 3: Martial artist. • 4: Basketball/volleyball player? • 5: Not sure what this is. • 6: Dog.

4.34.2 0x102-0x104 - Beat Animations

0x102

Beat animation for the player.

0x103

Beat animation for the girl.

0x104

Beat animation for the weasels.

4.34.3 List of subs

All the following are asynchronous. Note that these assume getrest 2 and getrest 3 are set to appropriate values that sum to half a beat. They are 0xE and 0xA respectively in the standard game. 0x56 Soccer ball cue. 0x57 Soccer ball cue, but the weasels jump up. 0x58 Basketball cue. 0x59 Basketball cue, but the weasels jump up. (unused) 0x5A Football cue. 0x5B-0x61 Football cue, but the weasels jump up. catch values of 0-6 respectively. (unused) 0x62-0x67 Identical to 0x5C-0x61.

4.35 Catch of the Day (0x22)

4.35.1 0x100 - Input

0x100 type, time

Sets an A press input for after time ticks. Values for type are: • 0: Quicknibble. • 1: Pausegill. • 2: Threefish.

4.35. Catch of the Day (0x22) 83 Tickompiler Documentation, Release 1.9.0

4.35.2 0x101 - Fish Animation

0x101 type

Makes a fish appear. Values for type are: • 0: Quicknibble. • 1: Pausegill. • 2: Threefish. • 3: Quicknibble, replaced by Threefish.

0x101<1> type

Does an animation for the fish. Values for type are: • 0: Touch hook (Quicknibble and Pausegill). • 1: Tongue up (Threefish). • 2: Tongue down (Threefish).

0x101<2>

The fish bites onto the hook before a cue.

4.35.3 0x102 - Scene Transition

0x102 type

A scene transition. Values for type are: • -1: Regular scene. • 0: Eel in foreground. • 1: Eel in background. • 2: School of fish in foreground.

4.35.4 List of subs

All the following are asynchronous. Note that these assume getrest 2 and getrest 3 are set to appropriate values that sum to half a beat. They will determine how long before the cue fish will bite onto the hook. They are 0xD and 0xB respectively in the standard game. 0x56 Quicknibble cue. 0x57 Pausegill cue. 0x58 Threefish cue. 0x59 Pausegill “And, go!” voice clip. To be called one beat after 0x57. 0x5A Threefish “One, two, three-go!” voice clip. To be called one beat after 0x58.

84 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.36 Micro-Row (0x23)

Note that not all operations are detailed as they are not well understood.

4.36.1 0x100 - Input

0x100 type, time

Sets an A press input for after time ticks. Values for type are: • 0: Regular swim cue. • 1: First press of a three-step. • 2: Second press of a three-step. • 3: Third press of a three-step.

4.36.2 0x101 - Trail Pattern

0x101 ptr, ???, ???

Sets the trail pattern (?) to the data at ptr. There is currently no way to create custom data for this, and the format is unknown. The Micro-Row 1 pattern is 0x101 0x530C98, 0x20, 0, Micro-Row 2 is 0x101 0x530B50, 0x20, 0.

4.36.3 0x102 - Microbe Animations

0x102 ptr, ???

Sets the pattern in which the microbes move to the data at ptr. Again, there is no way to create custom data. The Micro-Row 1 pattern is at 0x102 0x530C50, 9, Micro-Row 2 is 0x102 0x530D98, 9.

0x102<1>

All microbes step once.

0x102<2>

Beat animation for all microbes.

0x102<6>

All microbes do the double-step flash.

0x102<7>

All microbes prepare for a triple-step.

4.36. Micro-Row (0x23) 85 Tickompiler Documentation, Release 1.9.0

4.36.4 List of subs

All the following are asynchronous. 0x57 Regular one-step cue, with “GO!” voice clip. Input is 1.5 beats after start. 0x58 Regular one-step cue. 0x59 double-step cue. First input is 1.5 beats after start. 0x5A Triple-step cue. First input is 1.5 beats after start. 0x5B Cowbell count-in. 0x5C Another cowbell count-in.

4.37 Fork Lifter (0x24)

4.37.1 0x100 - Flick Food

0x100 type

Flicks a food item, to be stabbed after 2 beats. Values for type are: • 0: Pea. • 1: Burger top. • 2: Burger middle. • 3: Burger bottom.

4.37.2 0x101 - Ready Finger

0x101 type

Readies the finger with a specified food. Values are identical to those in 0x100.

4.37.3 0x102 - Eat Food

0x102

Food currently on the fork is eaten. If any of the food is a burger part, the special burger-eating sound effect will be used.

4.37.4 0x103 - New Food

0x103 type

Determines what food will be under the finger after the next flick. Values are identical to those in 0x100, with the addition of 4 meaning nothing.

86 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.38 Hole in One (0x25)

Note that the code snippet

0x102<2>1 0x104<1>1 0x101<1>2

Appears before all instances of Hole in One, and fixes various issues.

4.38.1 0x100 - Spawn Ball

0x100 type

Spawns a ball to be hit after 1 beat. Values for type are: • 0: Monkey throws the ball. • 1: Mandrill throws the ball. (the ball will only be visible after 1 beat)

4.38.2 0x102 - Player Animation

0x102

The player prepares to swing. Usually placed one beat before an input.

0x102<1>

Beat animation for the player.

4.38.3 0x103 - Monkey Animation

0x103

Monkey prepares to throw.

0x103<1>

Monkey throws the ball.

0x103<4>

Beat animation for Monkey.

4.38.4 0x104 - Mandrill Animation

0x104 type

Mandrill does a part of his throwing animation. Values for type are: • 0: Grabs the ball.

4.38. Hole in One (0x25) 87 Tickompiler Documentation, Release 1.9.0

• 1: “Hoo” part of the animation; Mandrill holds the ball close. • 2: Final part of the animation; Mandrill holds the ball behind him and throws.

0x104<2>

Beat animation for Mandrill.

4.38.5 List of subs

All the following are asynchronous. 0x56 Monkey cue. 0x57 Mandrill cue. Mandrill starts properly one beat after the start.

4.39 Flipper-Flop (0x26)

4.39.1 0x100 - Input

0x100 time, type

Sets an input for after time ticks. Values for type are: • 0: Press A • 1: Press B (flipper roll)

4.39.2 0x101 - Beat Animation

0x101

Beat animation for all seals.

4.39.3 0x102 - Raise Flipper

0x102 type, ???

All seals raise a flipper. If type is 1, they raise their left flipper, if 0 their right. Second argument always 0.

4.39.4 0x103 - Flip

0x103

All seals (except the player’s) flip (A press).

4.39.5 0x104 - Roll

88 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x104 ???

All seals (except the player’s) do a flipper roll.

4.39.6 0x105 - Captain Animations

0x105

The captain steps forward.

0x105<1>

Beat animation for the captain.

0x105<2> type

The captain moves his mouth. Values for type are: • 0: Mouth movements for “Attention, company!” • 1: Mouth movements for “That’s it!”

0x105<3> str1, str2

The captain does a beat animation according to the animation name at str1 and a face animation according to the animation name at str2, or none if 0.

4.39.7 List of subs

All the following are asynchronous. All flipper roll subs have the first input after 4 beats. 0x59 Count-in, including cowbells and “Attention, company!” 0x63 Flip cue (A press). The input is after 4 beats. 0x64 Triple-flip cue. Audio after 2 beats, input after 4 beats. 0x65 Flip cue, input after 2 beats. 0x66 Triple-flip cue, input after 2 beats, audio immediately. 0x67 Practice flipper roll. 0x68 Practice 2 flipper rolls. 0x69 One flipper roll. 0x6A One flipper roll without praise at the end. 0x6B Two flipper rolls. 0x6C Two flipper rolls without praise at the end. 0x6D Two flipper rolls without “One, two” voice clips. 0x6E Three flipper rolls. 0x6F Three flipper rolls without praise at the end. 0x70 Four flipper rolls.

4.39. Flipper-Flop (0x26) 89 Tickompiler Documentation, Release 1.9.0

0x71 Four flipper rolls without praise at the end and without the “Four” voice clip. 0x72-0x77 5-10 flipper rolls respectively.

4.40 Ringside (0x27)

4.40.1 0x100 - Input

0x100 type, time

Sets an input for after time ticks. Values for type are: • 0: Press A (“yes”). • 1: Press A (flex, first part). • 2: Press A (flex, second part). • 3: Press B (“Pose for the fans”). • 4: Press B (“Pose for the fans” with newspaper).

4.40.2 0x101 - View

0x101 type

Changes the view. Values for type are: • 0: View of wrestler and reporter, changes view instantly. • 1: Zoomed-out view with camera people, zooms smoothly.

4.40.3 0x102 - Camera People Animations

0x102

The camera people in the foreground bounce for a “pose for the fans” cue.

4.40.4 0x103 - Newspaper

0x103 time

A newspaper swirls in over time ticks.

0x103<1>

Hides the newspaper.

90 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.40.5 0x104 - Reporter Animations

0x104 type, ???

Mouth movements. The second argument is unknown, and is 6 for regular mouth movement in cues. Values for type are: • 0: “Wubbadubbadub is that true?” • 1: “Whoa, you go big guy!”

0x104<1>

The reporter raises her microphone.

0x104<2>

The reporter lowers her microphone.

4.40.6 0x106 - Beat Animation

0x106

The wrestler does a beat animation.

4.40.7 0x107 - Pose Ready Animation

0x107

The wrestler readies himself for a pose.

4.40.8 0x108 - Post-Pose Effect

0x108

Does an effect depending on player performance after a pose (fuzzy noise, radial background).

0x108<1>

Disables the effect.

4.40.9 0x10A - Rhythm Arena Animations

0x10A<1>

Beat animation.

0x10A<2> size1, size2, time

The Rhythm Arena overlay grows or shrinks in size from size1 to size2 (0x100 is regular size, sizes are propor- tional) over time ticks.

4.40. Ringside (0x27) 91 Tickompiler Documentation, Release 1.9.0

0x10A<3> alpha1, alpha2, time

The Rhythm Arena overlay’s opacity changes from alpha1 to alpha2 over time ticks. (max opacity is 0xFF)

0x10A<4>

The lights dim.

4.40.10 List of subs

All the following are asynchronous. 0x56 A standard “Wubbadubbadub is that true?” cue. Input is three beats after start. 0x57 A standard “Whoa, you go big guy!” cue. First input is 3.5 beats after start. 0x58 A “Whoa, you go big guy!” cue, however, there is no voice clip and the first input is 2.5 beats after start. 0x59 A standard “Pose for the fans!” cue. Input is three beats after start. 0x5A A “Pose for the fans!” cue as above, however, the view doesn’t cut back at the end. 0x5B A “Pose for the fans!” cue as above, however, the camera people bounce instead of a zoom occurring. 0x5C A “Pose for the fans!” cue, however, there is no voice clip and the first input is 2 beats after start. 0x5D-0x5F “Pose for the fans!” cues, variants as in 0x59-0x5B, with newspapers. 0x65 Beat animations for the wrestler 4 beats in a row. 0x66 Beat animations for the wrestler 172 beats in a row.

4.41 Karate Man (0x28)

4.41.1 0x100 - Spawn Object

0x100 type

Spawns an object that reaches the player in one beat and produces an input if necessary. Values for type are: • 0: A regular pot. • 1: A pot with a different sound effect (used for offbeat pots). • 2: Yellow lightbulb. • 3: Blue lightbulb. • 4: Alien. (unused) • 5: Rock. • 6: Soccer ball. • 7: Cooking pot. • 8: A rock, but Karate Joe briefly disappears (unimplemented animation?) • 9: First object in a combo. • 0xA: Second object in a combo.

92 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

• 0xB: Third object in a combo. • 0xC: Fourth object in a combo. • 0xD: Fifth object in a combo. • 0xE: Final object in a combo. • 0xF: Kick barrel.

4.41.2 0x102 - Performance-Dependant Animation

0x102

Starts recording player performance for an upcoming animation cue.

0x102<1> type

Does a happy animation according to type if the player hit everything since the last 0x102, or a sad animation otherwise. Values for type are: • 0: Smirk (used for kicks in Karate Man Kicks!) • 1: Blush and smile (used for combos in Karate Man Combos!)

4.41.3 0x104 - Karate Joe Animations

0x104 type

Does an animation for Karate Joe. Values for type are: • 0: Beat animation • 1: “Ready” animation • 2: Return to normal stance from ready stance.

4.41.4 0x105 - Text

0x105

Text appears in the background. Values for type are: • 0: “Combo!” • 1: “Grr!” • 2: “2!” (unused) • 3: “3!” • 4: “4!” (unused) • 5: “!!” • 0x63 (99): Clear text.

4.41. Karate Man (0x28) 93 Tickompiler Documentation, Release 1.9.0

4.41.5 0x109 - Freeze Animation

0x109

Karate Joe’s combo animation freezes at the end. (Used in Karate Man Combos!)

4.41.6 0x10B - Particle Effects

0x10B amount

Seems to set the amount of particles coming onto the screen in some amount of time (a beat?) to amount.

0x10B<1> speed, ???

Sets the horizontal speed of the particles to speed. Positive speed indicates rightward motion, negative indicates leftward. For reference, the fastest speed attained in Karate Man Combos! is -0x1400.

0x10B<3>

Sets the type of particles used to the yellow glowing particles that rise from the bottom of the screen, used in Karate Man Combos! and Senior, as opposed to the snow-like particles from Karate Man Kicks!.

4.41.7 0x10D - Allow/Restrict Combo

0x10D flag

If flag is 1, the player can’t combo, and if 0, the player can combo. Note that, by default, the player cannot combo.

4.41.8 0x111 - Background Effect

0x111

Does a background effect, like the flashing radial patterns in Karate Man and Karate Man Returns!.

0x111<1>

Disables background effect.

4.41.9 List of subs

All the following are asynchronous. 0x56 Objects appear for a combo. First input one beat after start. 0x57 5 beats after the start of the sub, does a happy or sad animation depending on player performance (0x102<1> 0) 0x58 Identical to 0x57, but the delay is 7 beats instead of 5. 0x59 Identical to 0x57, but uses 0x102<1> 1 instead. 0x5A Nothing.

94 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x5B A beat animation after 2 beats. 0x5C A ready animation after 2 beats. 0x5D A “stop ready” animation after 2 beats. 0x5E Two beat animations, a half beat apart, after 2 beats. 0x5F A beat animation after 2.5 beats. 0x60 A regular pot cue, with beat animation on the beat of input. Input 2 beats after start. 0x61 A rock cue, with beat animation on beat of input. Input 2 beats after start. 0x62 A soccer ball cue, with beat animation on beat of input. Input 2 beats after start. 0x63 A cooking pot cue, with beat animation on beat of input. Input 2 beats after start. 0x64 An off-beat pot cue. Input 2.5 beats after start. 0x65 Two pot cues a half-beat apart. First input 2 beats after start. 0x66 Off-beat rock cue, with beat animation on beat of input. Input 2.5 beats after start. 0x67 A zoom out, followed by a yellow lightbulb cue, with beat animation on beat of input. Calls 0x57 one beat after start. Input 2 beats after start. Zooms back in 6 beats after start. 0x68 Identical to 0x67, but does not zoom back in. 0x69 Identical to 0x68, but does not zoom out, and calls 0x58 instead of 0x57. 0x6A Identical to 0x67, but calls 0x59 instead. 0x6B Identical to 0x6A, but calls 0x59 a beat later. 0x6C Identical to 0x6A, but does not zoom back in. 0x6D-0x71 Identical to 0x67-0x6A and 0x6C respectively, but spawn a blue lightbulb instead. 0x72 Spawns the unused alien, with beat animation on beat of input. Input two beats after start. (unused) 0x73 Calls 0x56, and adds two beat animations one and two beats after the start. 0x74 A pot cue, but with an unknown addition that causes odd effects (Karate Joe keeps holding his arm out after punching). (unused) 0x75 Spawns a kick barrel. Input two beats after start. 0x76 Identical to 0x75, but with a zoom-in included after 4 beats. 0x77 The text “Combo!” appears for 3 beats. 0x78 The text “Grr!” appears for 3 beats. 0x79 The text “Grr!” appears for 1 beat. 0x7A The text “2!” appears for 4 beats. 0x7B The text “3!” appears for 4 beats. 0x7C The text “3!” appears for 2 beats. 0x7D The text “4!” appears for 4 beats. 0x7E The text “!!” appears for 1 beat. 0x7F “One two!” voice clip. 0x80 Nothing. 0x81 “Hit 3!” voice clip. Sounds after 0.5 beats.

4.41. Karate Man (0x28) 95 Tickompiler Documentation, Release 1.9.0

0x82 “Hit 4!” voice clip. Note that this is identical to “Hit 3!” in the English version, but distinct in the Japanese version. 0x84 “Punch-kick!” voice clip. 0x85 Nothing. 0x86 Identical to 0x7F. 0x87 0x7A is called after a half beat. 0x88 The “3!” text appears accompanied by the “Hit 3!” voice clip. Sounds after 1 beat. 0x89 Identical to 0x88, but the text appears for a shorter amount of time, and appears later. 0x8A Identical to 0x88, but the text appears later. 0x8B The “4!” text appears accompanied by the “Hit 4!” voice clip. Sounds after 1 beat. 0x8C The text “Combo!” appears after a half beat. 0x8D The text “!!” appears after a half beat. 0x8E The text “Grr!” appears after a half beat. 0x8F Calls 0x84 after a half beat.

4.42 Working Dough (0x29)

4.42.1 0x100 - Input/Spawn Ball

0x100 type, flash, time1, time2, time3

Spawns a ball to be hit on the left in time1 ticks, and on the right (by the player) in time2 ticks. If flash is 1, hitting it causes the background to flash. The final argument advances the ball and input by time3 ticks, but it mantains the speed it would originally have. It normally stays at 0 and it’s only used for transitions in remixes. Values for type are: • 0: Small ball • 1: Large ball • 2: Special large ball

4.42.2 0x101 - Open/Close Gates

0x101 type1, type2, 1, ???

Opens a gate specified by type1 and type2. These combined seem to specify which to open. Values are: • (0, 0): Leftmost gate. • (1, 0): Middle-right gate. • (1, 1): Middle-left gate. • (2, 1): Rightmost gate.

0x101 type1, type2,0

Closes a specified gate.

96 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.42.3 0x102 - Rocketship control

0x102<2> pos?, time

Move the rocketship to pos over time ticks. Units for pos are unknown, but the location it is moved to in-game is 0.

0x102<4>

Remove structure around rocketship.

4.42.4 0x103 - Background Guy Animations

0x103<1>

Background guy climbs up the ladder.

0x103<2>

Background guy handles the lever.

0x103<3>

Background guy walks away.

4.42.5 List of subs

Both are asynchronous. 0x56 Close gates on the right side after 1 beat. 0x57 Close gates on the left side after 1 beat.

4.43 Figure Fighter (0x2A)

4.43.1 0x100 - Input

0x100 type, time

Sets up an input for the player after time ticks. Values for type are: • 0: Jab • 1: First punch of a slow one-two. • 2: Second punch of a slow one-two. • 3: First punch of a fast one-two. • 4: Second punch of a fast one-two. • 5: First or second punch of a “go-go-go!” cue. • 6: Final punch of a “go-go-go!” cue.

4.43. Figure Fighter (0x2A) 97 Tickompiler Documentation, Release 1.9.0

4.43.2 0x101 - Muscle Doll Animations

0x101 ???

Does a beat animation for the Muscle Doll. The argument’s purpose is unknown, but it is always 0, 1, or 2.

0x101<1>

The Muscle Doll huddles up.

4.43.3 0x102 - Background

0x102

The background becomes black with a spotlight.

0x102<1>

The background returns to normal.

4.43.4 0x103 - Silhouettes

0x103 flag

If flag is 1, turns all foreground objects black. If 0, turns them back to normal.

4.43.5 0x104 - Fade to White

0x104

The screen fades to white.

0x104<1>

The screen fades from white.

4.43.6 0x106 - Text

0x106 str

Overlays white text on the screen corresponding to the text with the name pointed to by str.

0x106<1>

Hides the text.

4.43.7 0x107 - Black Bars

98 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x107 type

Adds black bars until the next input. Values for type are: • 0: Wide. • 1: Narrow. • 2: Very narrow.

4.43.8 0x109 - Knock down

0x109<2>

Makes the next “big punch” (end of combo) knock down the punching bag.

4.43.9 0x10B - Crowd Animations

0x10B<1> type

Does a crowd beat animation. Values for type are: • 0: Default animation. • 1: Some arms raised. • 2: Lots of arms raised.

4.43.10 0x10D - Lights

0x10D type

Turns on the specified spotlights. Values for type are: • 0: Overhead lights. • 1-6: Pairs of lights from outermost to innermost.

0x10D<1> type

Turns off the specified spotlights.

0x10D<2> type

Flashes the specified spotlights.

4.43.11 List of subs

All the following are asynchronous. 0x56 Calls 0x109<2> after one beat. 0x57 Calls 0x109<2> after two beats. 0x58 Calls 0x109<2> after four beats.

4.43. Figure Fighter (0x2A) 99 Tickompiler Documentation, Release 1.9.0

0x59 Narrowing black bars for slow “one two”. First black bars appear after 1 beat. 0x5A Identical(?) to 0x59. 0x5B Narrowing black bars for “go go go!”. First black bars appear after 1 beat. 0x5C A full “Jab” cue, including voice clip. Input is after 2 beats. 0x5D A slow “one two” cue, including voice clip, but not black bars. First input is after 3 beats. 0x5E A full fast “one two” cue, including voice clip. First input is after 2 beats. 0x5F A “go go go!” cue, including voice clip, but not black bars. First input is after 3 beats. 0x60 Combines 0x5D and 0x59 to create a full “one two” cue. 0x61 Identical to 0x60, but uses 0x5A instead of 0x59. 0x62 Combines 0x5F and 0x5B to create a full “go go go!” cue. 0x63 An “and” voice clip plays after one beat. Used before a “jab” cue. 0x64 A different “and” voice clip plays after one beat. Used before a “one-two” cue. 0x65 Beat animation after 1 beat. (uses 0x101 0). 0x66 Beat animation after 1 beat. (uses 0x101 1). 0x67 Beat animation after 1 beat. (uses 0x101 2). 0x68 Huddle up animation after three quarters of a beat.

4.44 Love Rap (0x2B)

4.44.1 0x100 - Input

0x100 type, time, variant

Sets an input depending on type for after time ticks. Each has two variants, which are differentiated by variant (0 or 1). Values for type are: • 0: “Into you”; variants are identical. • 1: “Crazy into you” • 2: “Fo’ sho’” • 3: “All about you”

4.44.2 0x101 - Speech/Rap Animations

0x101 1, type, ???

The left rapper raps a line, with speech bubble and animation included. Values for type are identical to above.

0x101 2, type, ???, variant

MC Adore raps a line, with speech bubble and animation included. type and variant are identical to those in 0x100.

100 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x101<1> which

Closes a speech bubble. If which is 1, closes the left rapper’s speech bubble, if 2, closes MC Adore’s speech bubble.

4.44.3 0x102 - Beat animations

0x102

Does a beat animation depending on type. Values for type are: • 0: Player • 1: Left rapper • 2: MC Adore • 3: The car

4.44.4 0x103 - Poses

0x103 type

Changes all rappers’ pose. Values for type are identical to those in 0x100.

4.44.5 List of subs

All the following are synchronous, unless otherwise noted. 0x6E 4 car beat animations in a row. (async) 0x6F 8 car beat animations in a row. (async; unused) 0x70 “Into you” cue (variant 0). Input 1 beat after start. 0x71 “Into you” cue (variant 0), leading into a “Crazy into you” (pose change). 0x72 “Into you” cue (variant 0), leading into a “Fo’ sho’” (pose change). 0x73 “Into you” cue (variant 0), leading into an “All about you” (pose change). 0x74-0x77 Identical to 0x70-0x73; uses variant 1 instead, but this is identical to variant 0. 0x78 “Crazy into you” cue (variant 0). Input 1.5 beats after start. 0x79 “Crazy into you” cue (variant 0), leading into an “Into you” (pose change). 0x7A “Crazy into you” cue (variant 0), leading into a “Fo’ sho’” (pose change). 0x7B “Crazy into you” cue (variant 0), leading into an “All about you” (pose change). 0x7C-0x7F Identical to 0x78-0x7B; uses variant 1 instead. 0x80 “Fo’ sho’” cue (MC Adore does variant 0, rappers do variant 1). Input 5/6 beat after start. 0x81 “Fo’ sho’” cue as above, leading into an “Into you”. 0x82 “Fo’ sho’” cue as above, leading into a “Crazy into you”. 0x83 “Fo’ sho’” cue as above, leading into an “All about you”. 0x84-0x87 Like 0x80-0x83; MC Adore does variant 1, rappers do variant 0. Input 2/3 beat after start.

4.44. Love Rap (0x2B) 101 Tickompiler Documentation, Release 1.9.0

0x88 “All about you” cue (MC Adore does variant 0, rappers do variant 1). Input 4/3 beat after start. 0x89 “All about you” cue as above, leading into an “Into you”. 0x8A “All about you” cue as above, leading into a “Crazy into you”. 0x8B “All about you” cue as above, leading into a “Fo’ sho’”. 0x8C-0x8F Like 0x88-0x8B; MC Adore does variant 1, rappers do variant 0. Input 7/6 beat after start. 0x90-0xAF Identical to 0x70-0x8F, but all delays and rests are doubled (twice as slow). (unused)

4.45 Bossa Nova (0x2C)

4.45.1 0x100 - Spawn Object

0x100 time, type

Spawns an object to be bounced away time ticks later. Values for type are: • 0: Ball (right) • 1: Cube (left)

4.45.2 0x101 - Cloud Control

0x101

The cloud dips down.

0x101<1>

The cloud turns, Bossa and Nova switching places.

4.45.3 0x103 - Voice Variants

0x103<1> variant

Sets the variant of the female voice to variant. There are two variants, 1 and 2.

0x103<2> variant

Sets the variant of the male voice to variant.

4.45.4 List of subs

All the following are asynchronous. 0x5E The regular Bossa Nova cue pattern, with male voice clips. (used for right side) Also changes the category for results screen accordingly. 0x5F The regular Bossa Nova cue pattern with male voice clips. The cloud turns at the end. Also changes the category for results screen accordingly.

102 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x60 The regular Bossa Nova cue pattern, with female voice clips. (used for left side) Also changes the category for results screen accordingly. 0x61 The regular Bossa Nova cue pattern with female voice clips. The cloud turns at the end. Also changes the category for results screen accordingly. 0x62-0x65 Identical to 0x5E-0x61, but they don’t change the category for the results screen. Probably use these in remixes.

4.46 Screwbot Factory (0x2D)

4.46.1 0x100 - Input

0x100 time, type, ???

Sets an input starting after time ticks. Third argument is unknown, but seems to always be 1. Values for type are: • 0: White robot (hold A one beat) • 1: Grey robot (hold A two beats)

4.46.2 0x101 - Raise Claw

0x101

Raises the player’s claw-arm-thingy.

4.46.3 0x102 - Crane Animations

0x102 type

The crane to the right grabs a robot (first part of the animation). Values for type are like in 0x100.

0x102<1> type

The crane to the right brings a robot up above the conveyor belt.

0x102<2> type

The crane drops a robot.

4.46.4 0x103 - Conveyor Control

0x103

Activates the conveyor belt.

4.46. Screwbot Factory (0x2D) 103 Tickompiler Documentation, Release 1.9.0

4.46.5 0x105 - Robot Animation

0x105<1> type

Does an animation for all completed robots. Values for type are: • 0: All robots return to their normal stance. • 1: All robots start doing beat animations rapidly. These are normally used one after another, 0 a quarter beat after 1.

4.46.6 0x106 - Spotlight (unused)

0x106 type

Enables the spotlights. Values for type are: • 0: Wide spotlights on both the crane and the arm. • 1: Narrower version of 0. • 2: Narrower version of 1; a bit of the background peeks out at the top, which is likely unintended. • 3: Narrower version of 2. • 4: Same as 0, but the spotlight on the crane is much wider and the one on the arm is much narrower. • 5: Opposite of 4. • 6: Four wide spotlights positioned in a “zig-zag” formation. • 7: 6, but flipped. • 8: Spotlight on the robot underneath the arm. • 9: Narrower version of 8; a bit of the background peeks out at the top. • 0xA: Narrower version of 9.

0x106<1>

Disables the spotlights.

4.46.7 List of subs

All the following are asynchronous. 0x56 White robot cue. Input at 4 beats after start. 0x57 White robot cue. Input 3 beats after start. (crane drops robot sooner) 0x58 Grey robot cue. Input 4 beats after start. 0x59 Grey robot cue. Input 3 beats after start. (crane drops robot sooner) 0x5A Beat animations for all robots for 8 beats.

104 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.47 Launch Party (0x2E)

4.47.1 0x100 - Countdown

0x100 type

Starts a countdown and sets up an input at the end. Values for type are: • 0: White Countdown (1. . . 0). Input 2 beats after start. • 1: Red Countdown (3, 2, 1, 0). Input 3 beats after start. • 2: Blue Countdown (5, 4-3-2-1-0). Input 2 beats after start. • 3: Green Countdown (7, 6543210). Input 2 beats after start.

4.47.2 0x101 - Counter Control (?; unused)

0x101 num, color

Displays the number num on the countdown. Values for color are: • 0: White • 1: Red • 2: Blue • 3: Green This is not used, as 0x100 incorporates these.

4.47.3 0x102 - Rocket Type

0x102 type

Changes the type of rocket that pops out of the box. Values for type correspond to above values.

0x102<1> type

Changes the type after the next rocket has launched.

4.47.4 0x103 - Rocket Appears

0x103

A rocket appears from the box.

4.47.5 0x105 - Background

0x105

The white background fades away.

4.47. Launch Party (0x2E) 105 Tickompiler Documentation, Release 1.9.0

0x105<1>

The white background is removed instantly.

0x105<2>

The box begins moving up in the background (in reality, the background is moving down).

4.47.6 0x106 - Hover Motion

0x1061

The box begins circling around, hovering in space.

4.47.7 0x107 - Stars

0x107 density

Sets the density of stars flying by. Unit of density is unknown.

0x107<1> speed

Sets the speed of stars flying by as a percentage of the initial speed seen in the rhythm game. (0x64 or 100 is this initial speed).

0x107<3> size

Sets the size of stars flying by. Units are unknown. Regular size is 0.

0x107<4>z

Sets how far stars can jump “forward” into the foreground from their background positions. Initial value in the rhythm game is 0x1E, and it is 0x190 after the first flurry of stars occurs.

0x107<6>0

Seems to stop stars from appearing at all.

4.47.8 0x109 - Spawn Flying Rocket

0x109 x, y, time

Spawns a flying rocket that will descend from above to x units (pixels?) to the right and y below the center. It will fly off again after time ticks. Values for type correspond to ones used in other operations. There seems to be a limit of four flying rockets. Trying to add any more will not do anything.

4.47.9 0x10A - Rocket Pitch

0x10A0

Reset pitch?

106 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x10A<1>

Increment pitch. Wraps back around after four incrementations (?). Normally called every beat.

4.47.10 0x10B - Box Engine

0x10B

Turns off the box’s engine.

0x10B<1>

Turns on the box’s engine; regular thrust.

0x10B<2>

Turns on the box’s engine; high thrust.

4.47.11 0x10E - Star Rings

0x10E flag

If flag is 1, enables light blue rings around stars, if 0, disables. Used in star flurries.

4.47.12 List of subs

All the following are asynchronous. 0x56 White countdown (using 0x101). Unused, as 0x100 incorporates this. 0x57 Red countdown (using 0x101). Unused, as 0x100 incorporates this. 0x58 Blue countdown (using 0x101). Unused, as 0x100 incorporates this. 0x59 Green countdown (using 0x101). Unused, as 0x100 incorporates this. 0x5A Pitch reset, followed by a pitch increment every beat forever. Usually called at the start of any instance of Launch Party.

4.48 Board Meeting (0x2F)

4.48.1 0x100 - Input

0x100 time, type

Sets up an input for after time ticks. Values for type are: • 0: Regular stop cue. • 1: Stop after “one-two-three” cue.

4.48. Board Meeting (0x2F) 107 Tickompiler Documentation, Release 1.9.0

4.48.2 0x101 - Individual Pig Animations

0x101 pos

The pos th pig from the left, starting at 0, does a beat animation.

0x101<1> pos

The specified pig readies itself to start spinning.

0x101<2> pos

The specified pig starts spinning.

0x101<3> pos

The specified pig stops spinning.

4.48.3 0x102 - Bulk Pig Animations

0x102 is identical to 0x101, except it does not have an argument and all pigs do the specified animation.

4.48.4 0x103 - Enable/Disable Beat Animations

0x103 flag

If flag is 0, disable beat animations for all pigs, if 1, enable them.

4.48.5 0x105 - Secretary Animations

0x105

Beat animation.

0x105<1> num

The secretary moves her mouth num times.

0x105<5>

“One-two-three” cue animation.

4.48.6 List of subs

All the following are asynchronous. 0x56 “One-two-three” voice clip and mouth movements, variant 1. 0x57 “One-two-three” voice clip and mouth movements, variant 2 (used at the end). 0x58 The pigs start spinning one after another, from left to right, two beats apart. 0x59 The pigs start spinning one after another, from left to right, one beat apart.

108 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x5A The pigs start spinning one after another, from left to right, one half beat apart. 0x5B The pigs start spinning one after another, from left to right, a third beat apart. 0x5C The pigs start spinning one after another, from left to right, a quarter beat apart. 0x5D The pigs start spinning simultaneously. 0x5E The pigs stop spinning one after another, from left to right, two beats apart. Includes input. 0x5F The pigs stop spinning one after another, from left to right, one beat apart. Includes input. 0x60 The pigs stop spinning one after another, from left to right, one half beat apart. Includes input. 0x61 The pigs stop spinning one after another, from left to right, a third beat apart. Includes input. 0x62 The pigs stop spinning one after another, from left to right, a quarter beat apart. Includes input. 0x63 “One-two-three” cue (variant 1), including input. 0x64 “One-two-three” cue (variant 2), including input.

4.49 Samurai Slice (0x30)

4.49.1 0x100 - Spawn Demon

0x100 type

Sets an input depending on type and spawns a demon. Values for type are: • 0: Regular demon • 1: Regular demon (different position; used for two demons in succession) • 2-8: Individual demons in the many-demon cue.

4.49.2 0x101 - Beat Animation

0x101

Beat animation for the samurai.

4.49.3 0x102 - Ready Animation

0x102

The samurai readies himself to strike.

4.49.4 0x104 - Story Overlay

0x1040

Reset story.

4.49. Samurai Slice (0x30) 109 Tickompiler Documentation, Release 1.9.0

0x104<1>

Advance to the next page of the story.

4.49.5 0x105 - Falling Particles

0x105

Snow starts falling down.

0x105<1>

Leaves start falling down.

0x105<2>

Particles stop falling down.

0x105<3> speed

Sets the horizontal speed of the falling particles. Negative speeds indicate leftward movement, while positive speeds indicate rightward movement.

4.49.6 0x106 - Rain

0x106 density

Sets the density of rainfall. Only powers of 2 are used for density in the rhythm game, and 8 is the highest density used.

4.49.7 0x107 - Thunder

0x107

If flag is 1, enables lightning striking each time an enemy is hit, if 0, disables.

4.49.8 0x108 - Portal

0x108 time

The demon portal opens over time ticks.

0x108<1> time

The demon portal closes over time ticks.

4.49.9 0x109 - Demon Size

110 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x109

Sets the size of new demons that appear. size starts at 0 and increases. The highest value used in the game is 3.

4.49.10 0x10A - Text

0x10A

Displays the intro text. Seems to be required to undarken the background, sadly.

0x10A<1>

Displays the “To be continued. . . ” (this is a lie) text.

4.49.11 0x10B - Samurai Enter/Leave

0x10B0

The samurai leaves (enters the house?)

0x10B<1>0

The samurai walks on screen.

4.49.12 0x10C - Pinwheel

0x10C

If flag is 1, demons have pinwheels. If 0, they don’t.

4.49.13 0x10D - Practice Demon

0x10D

A demon flies onto the screen from the top.

0x10D<1>

The demon flies into the house.

4.49.14 List of subs

All the following are asynchronous. 0x56 0x100 0. 0x57 0x100 1. 0x58 A whirlwind combo cue. First demon appears immediately.

4.49. Samurai Slice (0x30) 111 Tickompiler Documentation, Release 1.9.0

4.50 See-Saw (0x31)

4.50.1 0x100 - See-Saw Animations & Cues

0x1001

Start executing See-Saw cues, reading the positions from a location in memory as a sequence of bytes. More on this in 0x104 documentation.

0x100<2> index,0

One of the inspectors does a beat animation. Values for index are: • 0: Right • 1: Left

0x100<3> index, pos

Sets the position of the specified inspector to pos. Values for pos are: • 0: On the outside of the see-saw. • 1: On the inside of the see-saw. • 2: On the ground besides the see-saw.

4.50.2 0x102 - Enable/Disable High Jumps

0x102 flag

If flag is 1, enable high jumps (the inspectors will jump much higher than usual when on the outside). If 0, disable.

4.50.3 0x103 - Explode

0x103

The inspectors explode.

4.50.4 0x104 - Set Position Sequences

0x104 index, ptr

Sets the sequence of positions the specified inspector will have when doing cues to the one at ptr. This is a sequence of bytes, each representing a single jump. 0 means outside, 1 means inside, 2 means on the ground beside the see-saw, and 5 ends the sequence.

112 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.51 Packing Pests (0x32)

4.51.1 0x100 - Spawn Object/Input

0x100 type

Spawns an object, with corresponding input and sound effects. Input is 1 beat later. Values for type are: • 0: Candy • 1: Spider • 2: Paycheck

4.51.2 0x101 - Background Objects

0x101 idx, type

Spawns an object for the idx th background worker (from the front?) starting at 0. type is identical to the one in 0x100.

0x101<1> type

Spawns an object for all background workers.

0x101<2> time, type

Spawns an object of type type for all background workers, in random order and with random delays, over the next time ticks.

0x101<3> time

Spawns a spider or candy randomly for all background workers, in random order and with random delays, over the next time ticks.

4.51.3 0x102 - View Change

0x102<2> time

The view shifts to the initial view over time ticks.

0x102<4> time

The view shifts to view your worker’s head over time ticks.

4.51.4 0x103 - Clap

0x103

Your worker claps for a while. (used in practice)

4.51. Packing Pests (0x32) 113 Tickompiler Documentation, Release 1.9.0

4.51.5 0x104 - Background Workers

0x104

Spawns the background workers.

0x104<2> time

The background workers shift into view over time ticks.

4.51.6 0x105 - Worker Animations

0x105

Small beat/bob animation (used when a candy is spawned).

0x105<1>

Double up! animation.

4.51.7 0x106 - Curtain

0x106

Spawns the curtain.

0x106<1>

Removes the curtain by sliding to the left.

4.51.8 0x107 - Text

0x107 flag, type

If flag is 1, text appears above your worker according to type. If 0, text is removed. Values for type are: • 0: Double up! • 1: !!

4.51.9 List of subs

All the following are asynchronous. 0x56 “Double up!” appears for 2 beats. 0x57 “!!” appears for 1.5 beats. 0x58 A candy is spawned, with a beat animation. Input after 1 beat. 0x59 A spider is spawned, with a beat animation. Input after 1 beat. 0x5A A paycheck is spawned, with a beat animation. Input after 1 beat. (unused)

114 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x5B A regular pattern (candy then spider, 2 beats apart). First input after 1 beat. 0x5C A different pattern (candy then spider, 1.5 beats apart). First input after 1 beat. (unused) 0x5D The 0x5C pattern. First input after 1.5 beats. (unused) 0x5E A paycheck is spawned, with a beat animation. Input after 1 beat. 0x5F A full “Double up!” cue (candy, then spider after 1.5 beats, then another a beat later). First input after 1 beat. 0x60 “!!” appears after 3.5 beats, along with a sound effect. (unused) 0x61 A candy is spawned for all background workers. (unused) 0x62 A spider is spawned for all background workers. 0x63 A paycheck is spawned for all background workers. 0x64 A regular pattern is spawned for all background workers (candy then spider after 2 beats). 0x65 A “Double up!” pattern is spawned for all background workers. 0x66 The different pattern is spawned for all background workers (candy after a half beat, then spider after 1.5 beats).

4.52 Monkey Watch (0x33)

4.52.1 0x100 - Input

0x100 time

Cues up an input for after time ticks.

4.52.2 0x101 - Camera Movement

0x101<3> angle, time

The camera moves angle degrees around the clock in time ticks.

4.52.3 0x102 - View Change

0x102 type, flag

Changes the view. If flag is not 0, the change is instantaneous. Values for type are: • 0: Default view (following your monkey). • 1: Zoomed-out view of wrist.

4.52.4 0x103 - Watch Monkey Doors

0x103 pos, flag

The pos th monkey’s (from the top of the watch, starting from 0) door opens and the monkey comes out. If flag is 1, this is instantaneous.

4.52. Monkey Watch (0x33) 115 Tickompiler Documentation, Release 1.9.0

4.52.5 0x104 - Watch Monkeys

0x104<1>

The next monkey after your position on the clock stretches its arm out.

0x104<2>

The next monkey after your position on the clock stretches its arm back in preparation for a high-five.

0x104<3>n

The n th monkey after your position, starting at 0, becomes purple.

4.52.6 0x106 - Watch Beat Animation

0x106

Beat animation for the monkey head in the center of the watch.

4.52.7 0x107 - Balloon Control

The exact workings of this operation are as of yet unknown.

4.52.8 List of subs

All the following are asynchronous. 0x57 The 3rd and 4th monkeys from your position are purple (Starting at 0). 0x58 The 4th and 5th monkeys from your position are purple. 0x59 Sound effects for purple monkeys (“Oo-kii ooki-ki”) 0x5C Monkeys stretch back their arms every 2 beats forever.

4.53 Blue Bear (0x34)

4.53.1 0x100 - Input/Spawn Food

0x100 type, long, ???

Spawns a food to be eaten. If long is nonzero, a longer animation will be used for eating the food. The third argument is unknown, and is always zero. Values for type are: • 0: Donut (right side, 2 beats) • 1: Cake (left side, 3 beats)

116 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.53.2 0x101 - Bear Animations

0x101

The bear pushes on the left bag, ejecting a cake. (animation body_push_L in the cellanim)

0x101<1>

The bear pushes on the right bag, ejecting a donut. (animation body_push_R in the cellanim)

0x101<2>

The bear pushes on both bags. (animation body_push in the cellanim)

0x101<3>

The bear opens its mouth to catch food. (animation face_ready in the cellanim)

4.53.3 0x102 - Memory Animations

0x102 slot, name

Performs the animation with the name specified by name (as an ASCII string). It will fade in according to (hardcoded?) rules. A slot is also specified to allow two to run at the same time. Slot 0 is used for the right side, and 1 for the left. Animations used in the rhythm game with this operation are: • girl_in_R00, girl_in_R01 • girl_in_L00, girl_in_L01 • lostlove_inL, lostlove_inR

0x102<1> slot

The animation in slot fades out, according to the corresponding out animation (hardcoded?).

4.53.4 0x103 - Misc. Bear Animations

0x103 body, face

Does the animation specified by body as an ASCII string for the bear’s body (or all of the bear), and the animation specified by face (again as an ASCII string) for the bear’s face.

0x103<1>

Returns the body to the animation body_wait and the face to the animation face_wait (crying if necessary).

0x103<2> body, face

Same as 0x103 but returns to wait animations after the animations are done.

4.53. Blue Bear (0x34) 117 Tickompiler Documentation, Release 1.9.0

4.53.5 0x104 - Crying Flag

0x104f

If f is nonzero, the bear is now crying. Otherwise, it is not.

4.53.6 0x105 - Wind Animation

0x105

Does the wind animation from the cellanim.

4.53.7 0x106 - Dream Background Switch

0x106

Enables the epilogue background showing it was all a dream.

4.54 Animal Acrobat (0x35)

4.54.1 0x100 - Nothing

0x100

Do nothing.

4.54.2 0x101 - Intro Stuff

0x101

Beat animation.

0x101<1> time

Jump off the initial platform, to grab the first animal in time ticks.

4.54.3 0x102 - Pattern Loading

0x102 delay

Start executing a loaded byte array pattern, with the first animal being grabbed in delay ticks. This makes the animals start swinging.

0x102<1> location, size

Loads a byte array of size bytes, describing the game’s patterns. Every byte is an animal. Byte arrays can be created in Tickflow using the bytes command. Values for bytes are:

118 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

• 0: Single white monkey • 1: Elephant • 2: Multiple white monkeys • 3: Giraffe • 4: Final platform/end

4.54.4 0x103 - Spotlight

0x103f

If f is nonzero, turns spotlights on, otherwise turns them off.

4.54.5 0x104 - Ending Stuff

0x104

The monkey lands.

0x104<1>

The balloon takes off. (used in Jungle Gymnast only)

4.54.6 0x106 - Waterfall

0x106 ???

A waterfall appears. The argument is presumably some sort of distance or time argument, and is 0x21C in every instance.

4.54.7 0x107 - Vine

0x107 ???

A vine appears in the foreground. The argument is like in 106, but is 0x320.

4.54.8 0x108 - Particle Effects

0x108

Confetti appears.

0x108<1>

Leaves appear. (at the end of Jungle Gymnast)

4.54. Animal Acrobat (0x35) 119 Tickompiler Documentation, Release 1.9.0

4.55 Tongue Lashing (0x36)

4.55.1 0x100 - Yellow bug control

0x100

Spawns a yellow bug. Other 0x100 operations (except 0x100<1>) crash if this is not executed beforehand.

0x100<1> distO, distP1, distP2, sound

Sets the path for a yellow bug. distO determines the distance away from the tongue orthogonally that it starts at (in pixels?), distP1 is the distance to the chameleon, parallel to the tongue, at the start of its path, and distP2 is the distance parallel to the tongue at the end of its path. Note that negative parallel distances are to the front of the chameleon. sound determines the sound effect produced when eaten by the chameleon: 0x1001134 is the regular gulp sound, while 0x1001135 is a shorter gulp sound.

0x100<2> time

Sets the bug moving toward the chameleon, to be eaten after time ticks.

0x100<3>

Beat animation. Also applies to red bugs.

0x100<5>

Despawns the bug. Also applies to red bugs.

4.55.2 0x101 - Red bug control

0x101

Spawns a red bug.

0x101<1> distO1, distP1, distO2, distP2, distP3, sound

Sets the path for a red bug. distO1 determines the orthogonal distance at the start, distP1 the parallel distance at the start, distO2 the orthogonal distance when it stops and starts to feint, distP2 the parallel distance at that same point, and finally, distP3 is the parallel distance when eaten. sound is like in 0x100<1>.

0x101<2> time

Moves the bug to its stopping point over time ticks.

0x101<4> type

Does a feint. The final feint before it’s eaten has type of 1; maybe slightly more extreme feint?

0x101<5> time

Moves the bug from its stopping point to the tongue, to be eaten after time ticks.

0x101<6>

Stops the bug?

120 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

4.55.3 0x102 - Zoom

0x102<1>z

Sets the zoom to a factor of z/0x100

4.55.4 0x103 - Chameleon Position

0x103 x, y, tx, ty

Sets the position and target vector of the chameleon. (x, y) is the position of the chameleon, and (tx, ty) is the target position, which determines the direction the chameleon is facing. X values are in units to the right of the middle of the scene; Y values are in units down from the middle of the scene.

4.55.5 0x104 - Chameleon Animations

0x104

Beat animation.

0x104<1> start, end, time

The chameleon moves along its target axis. It starts at start away from its set position along the target axis, and ends at end. The movement takes time ticks.

0x104<2> start, end, time, delay

Identical to 0x104<1>, but only starts after delay ticks.

4.55.6 0x105 - Zoom+Position

0x105 z, x, y, tx, ty, delay

This is a combination of 0x102<1> and 0x103. It takes place after delay ticks.

4.55.7 0x106 - Chameleon Grin

0x106

Start recording player performance.

0x106<1>

If the player hasn’t missed, grin, else do a sad animation.

0x106<2>

Stop recording player performance.

4.55. Tongue Lashing (0x36) 121 Tickompiler Documentation, Release 1.9.0

4.55.8 0x107 - Perch

0x107<1> type, delay

Changes what the chameleon is perched on after delay ticks. Values for type are: • 0: Hand • 1: Foot

4.55.9 0x108 - Global Camera Control for whatever reason

0x108 x, y, zoom, delay

Sets the global camera pan to (x, y) and the global camera zoom to zoom after delay ticks. Note that this is distinct from the other zoom factor in 103/105.

4.55.10 0x109 - Update Effects

0x109

Updates location and size of visual effects to line up with the camera’s parameters. If not used, visual effects will retain the location and size they previously had after a camera change.

4.55.11 0x10A - The two guys

0x10A i, flag

Sets the specified guy visible if the flag is nonzero, and invisible otherwise. Values for i are: • 0: Nose guy • 1: Cool guy

0x10A<1> i, x, y

Sets the position of guy i to (x, y)

0x10A<2> i, x1, x2, time

Moves guy i horizontally from x1 to x2 over time ticks.

0x10A<3> 0x10A<4>

Parts of the animations after the bug is either eaten or missed. These should be placed 3/4 beats apart.

4.55.12 List of subs

Each is asynchronous. 0x56 Spawns a yellow bug and does its animations. The “three” sound effect happens two beats after the start, and thus the input is 4 beats after the start.

122 Chapter 4. Game Engines Tickompiler Documentation, Release 1.9.0

0x57 Spawns a red bug and does its animations. It starts feinting after 3 beats; the input is after 6 beats. 0x58 Identical to 0x57, but includes operations for the two guys’ animations.

4.56 Super Samurai Slice (0x37)

4.56.1 0x100 - Input Cue

0x100 type, time

Cues up an input for after time ticks. type determines both the type of input and the Samurai’s attack animation. Values for type are: • 0: Regular slice (press A) • 1: 1st in sequence of slices (press A) • 2: 2nd in sequence of slices (press A) • 3: 3rd in sequence of slices (press A) • 4: 4th in sequence of slices (press A) • 5: Block large enemy (start holding B) • 6: Slice large enemy (release B)

4.56.2 0x101 - Samurai Animations

0x101

Beat animation.

4.56. Super Samurai Slice (0x37) 123