From 0ec39fd968d7bd02b65fed9f768350c80cd69fed Mon Sep 17 00:00:00 2001 From: Fatbag Date: Wed, 23 Jan 2013 15:58:58 -0600 Subject: [PATCH] Added hitasm --- CMakeLists.txt | 4 +- Libraries/FileHandler/Image.cpp | 2 +- Libraries/FileHandler/tga/elf.dat | Bin 0 -> 304 bytes Libraries/FileHandler/tga/elf.txt | 93 + Libraries/FileHandler/tga/hitutils.h | 461 ++ Libraries/FileHandler/tga/read_tga.c | 35 +- Libraries/FileHandler/tga/read_tga.h | 17 + Libraries/FileHandler/tga/tsov2.txt | 10644 +++++++++++++++++++++++++ Tools/hitutils/elf.dat | Bin 0 -> 304 bytes Tools/hitutils/elf.txt | 131 + Tools/hitutils/hitasm.c | 608 +- Tools/hitutils/hitdump.c | 381 +- Tools/hitutils/hitutils.h | 452 ++ Tools/iff2html/image.c | 2 +- Tools/rtti-reader/rtti-reader.cpp | 7 +- 15 files changed, 12469 insertions(+), 368 deletions(-) create mode 100644 Libraries/FileHandler/tga/elf.dat create mode 100644 Libraries/FileHandler/tga/elf.txt create mode 100644 Libraries/FileHandler/tga/hitutils.h create mode 100644 Libraries/FileHandler/tga/read_tga.h create mode 100644 Libraries/FileHandler/tga/tsov2.txt create mode 100644 Tools/hitutils/elf.dat create mode 100644 Tools/hitutils/elf.txt create mode 100644 Tools/hitutils/hitutils.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b0483e..17ea320 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(RCFLAGS "") set(CFLAGS_LANG_C "-ansi") - set(CFLAGS_LANG_CPP "-fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-threadsafe-statics") + set(CFLAGS_LANG_CPP "-fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-threadsafe-statics -D__STDC_LIMIT_MACROS") if(64BIT) set(CFLAGS "-m64 ${CFLAGS}") @@ -70,7 +70,7 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(LDFLAGS_SPEED "${LDFLAGS} -s -fwhole-program -flto -fno-stack-protector") else() # Debug - set(CFLAGS_DEBUG "${CFLAGS} -O0 -g3 -fstack-protector-all") + set(CFLAGS_DEBUG "${CFLAGS} -O0 -g3 -fstack-protector-all -D_FORTIFY_SOURCE=2 -DDEBUG") set(LDFLAGS_DEBUG "${LDFLAGS} -fstack-protector-all") set(CFLAGS_SIZE "${CFLAGS_DEBUG}") set(LDFLAGS_SIZE "${LDFLAGS_DEBUG}") diff --git a/Libraries/FileHandler/Image.cpp b/Libraries/FileHandler/Image.cpp index 7c04adf..408dc4c 100644 --- a/Libraries/FileHandler/Image.cpp +++ b/Libraries/FileHandler/Image.cpp @@ -17,10 +17,10 @@ */ #include "FileHandler.hpp" -#include //Used for libpng #include #include #include +#include //Used for libpng #include "bmp/read_bmp.h" namespace File { diff --git a/Libraries/FileHandler/tga/elf.dat b/Libraries/FileHandler/tga/elf.dat new file mode 100644 index 0000000000000000000000000000000000000000..fcf6fa759b6ecd7d9d4517c7be2e80da1f3bfbab GIT binary patch literal 304 zcmb<-^>JflWMqH=5DUR$U~qu)O~48?7}yw?z${V;n7M2?G{Wp;2g) + Author(s): Fatbag + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#ifndef min + #define min(x,y) ((x) < (y) ? (x) : (y)) +#endif +#ifndef max + #define max(x,y) ((x) > (y) ? (x) : (y)) +#endif + +#ifndef read_int32 + #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) + #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) +#endif + +#ifndef write_int32 + #define write_uint32(dest, src) do {\ + (dest)[0] = ((src)&0x000000FF)>>(8*0); \ + (dest)[1] = ((src)&0x0000FF00)>>(8*1); \ + (dest)[2] = ((src)&0x00FF0000)>>(8*2); \ + (dest)[3] = ((src)&0xFF000000)>>(8*3); \ + } while(0) + #define write_uint16(dest, src) do {\ + (dest)[0] = ((src)&0x00FF)>>(8*0); \ + (dest)[1] = ((src)&0xFF00)>>(8*1); \ + } while(0) +#endif + +extern char *strdup (const char *__s) + __THROW __attribute_malloc__ __nonnull ((1)); + +static void Shutdown(); + +static void Shutdown_M(const char * Message, ...){ + va_list args; + va_start(args, Message); + vfprintf(stderr, Message, args); + va_end(args); + + Shutdown(); + exit(EXIT_FAILURE); +} + +enum { + VERSION_TS1 = 1, VERSION_TSO +}; + +#define OPERAND_BYTES(x) (x) +#define OPERAND(x, y) ((y)<<((x)*4+4)) +#define UNIMPLEMENTED ((uint32_t)~0) + +enum operand_t { + o_byte = 1, + o_dword, + o_address, + o_variable, + o_jump +}; + +typedef struct { + const char * Name; + uint32_t Operands; +} instruction_t; + +typedef struct { + const char * Name; + uint32_t Value; +} variable_t; + +typedef struct { + uint8_t * Data; + size_t Size; +} ByteReaderContext; + +static const uint8_t HITHeader[] = {'H','I','T','!',0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,'T','R','A','X'}; + +#define InstructionCount 96 +static const instruction_t Instructions[] = { + {"note", UNIMPLEMENTED}, + {"note_on", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"note_off", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"loadb", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_byte)}, + {"loadl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"set", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"call", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"return", OPERAND_BYTES(0)}, + {"wait", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"callentrypoint", UNIMPLEMENTED}, + {"wait_samp", OPERAND_BYTES(0)}, + {"end", OPERAND_BYTES(0)}, + {"jump", OPERAND_BYTES(1) | OPERAND(0, o_jump)}, + {"test", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"nop", OPERAND_BYTES(0)}, + {"add", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"sub", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"div", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"mul", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"cmp", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"less", UNIMPLEMENTED}, + {"greater", UNIMPLEMENTED}, + {"not", UNIMPLEMENTED}, + {"rand", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"abs", UNIMPLEMENTED}, + {"limit", UNIMPLEMENTED}, + {"error", UNIMPLEMENTED}, + {"assert", UNIMPLEMENTED}, + {"add_to_group", UNIMPLEMENTED}, + {"remove_from_group", UNIMPLEMENTED}, + {"get_var", UNIMPLEMENTED}, + {"loop", OPERAND_BYTES(0)}, + {"set_loop", OPERAND_BYTES(0)}, + {"callback", UNIMPLEMENTED}, + {"smart_add", UNIMPLEMENTED}, + {"smart_remove", UNIMPLEMENTED}, + {"smart_removeall", UNIMPLEMENTED}, + {"smart_setcrit", UNIMPLEMENTED}, + {"smart_choose", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"and", UNIMPLEMENTED}, + {"nand", UNIMPLEMENTED}, + {"or", UNIMPLEMENTED}, + {"nor", UNIMPLEMENTED}, + {"xor", UNIMPLEMENTED}, + {"max", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"min", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"inc", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"dec", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"printreg", UNIMPLEMENTED}, + {"play_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"kill_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"push", UNIMPLEMENTED}, + {"push_mask", UNIMPLEMENTED}, + {"push_vars", UNIMPLEMENTED}, + {"call_mask", UNIMPLEMENTED}, + {"call_push", UNIMPLEMENTED}, + {"pop", UNIMPLEMENTED}, + {"test1", OPERAND_BYTES(0)}, + {"test2", OPERAND_BYTES(0)}, + {"test3", OPERAND_BYTES(0)}, + {"test4", OPERAND_BYTES(0)}, + {"ifeq", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifne", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifgt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"iflt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifge", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifle", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"smart_setlist", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"seqgroup_kill", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, + {"seqgroup_wait", UNIMPLEMENTED}, + {"seqgroup_return", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, + {"getsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"seqgroup_trkid", OPERAND_BYTES(2) | OPERAND(0, o_byte) | OPERAND(1, o_byte)}, + {"setll", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"setlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"settl", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waiteq", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitne", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitgt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitge", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitle", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"duck", OPERAND_BYTES(0)}, + {"unduck", OPERAND_BYTES(0)}, + {"testx", UNIMPLEMENTED}, + {"setlg", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"setgl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"throw", UNIMPLEMENTED}, + {"setsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"stop_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"setchanreg", UNIMPLEMENTED}, + {"play_note", UNIMPLEMENTED}, + {"stop_note", UNIMPLEMENTED}, + {"kill_note", UNIMPLEMENTED}, + {"smart_index", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"note_on_loop", OPERAND_BYTES(1) | OPERAND(0, o_variable)} +}; + +#define TSOVariableCount 82 +static const variable_t TSOVariables[] = { + {"arg0", 0x00}, + {"arg1", 0x01}, + {"arg2", 0x02}, + {"arg3", 0x03}, + {"arg4", 0x04}, + {"v1", 0x05}, + {"v2", 0x06}, + {"v3", 0x07}, + {"v4", 0x08}, + {"v5", 0x09}, + {"v6", 0x0A}, + {"v7", 0x0B}, + {"v8", 0x0C}, + {"h1", 0x0D}, + {"h2", 0x0E}, + {"h3", 0x0F}, + {"argstype", 0x10}, + {"trackdatasource", 0x11}, + {"patch", 0x12}, + {"priority", 0x13}, + {"vol", 0x14}, + {"extvol", 0x15}, + {"pan", 0x16}, + {"pitch", 0x17}, + {"paused", 0x18}, + {"fxtype", 0x19}, + {"fxlevel", 0x1a}, + {"duckpri", 0x1b}, + {"Is3d", 0x1c}, + {"IsHeadRelative", 0x1d}, + {"MinDistance", 0x1e}, + {"MaxDistance", 0x1f}, + {"X", 0x20}, + {"Y", 0x21}, + {"Z", 0x22}, + {"attack", 0x23}, + {"decay", 0x24}, + {"IsStreamed", 0x25}, + {"bufsizemult", 0x26}, + {"fade_dest", 0x27}, + {"fade_var", 0x28}, + {"fade_speed", 0x29}, + {"fade_on", 0x2a}, + {"Preload", 0x2b}, + {"isplaying", 0x2c}, + {"whattodowithupdate", 0x2d}, + {"tempo", 0x2e}, + {"target", 0x2f}, + {"ctrlgroup", 0x30}, + {"interrupt", 0x31}, + {"ispositioned", 0x32}, + {"AppObjectId", 0x34}, + {"callbackarg", 0x35}, + {"pitchrandmin", 0x36}, + {"pitchrandmax", 0x37}, + {"spl", 0x38}, + {"sem", 0x39}, + {"starttrackid", 0x3a}, + {"endtrackid", 0x3b}, + {"startdelay", 0x3c}, + {"fadeinspeed", 0x3d}, + {"fadeoutspeed", 0x3e}, + {"hitlist", 0x3f}, + {"SimSpeed", 0x64}, + {"test_g1", 0x65}, + {"test_g2", 0x66}, + {"test_g3", 0x67}, + {"test_g4", 0x68}, + {"test_g5", 0x69}, + {"test_g6", 0x6a}, + {"test_g7", 0x6b}, + {"test_g8", 0x6c}, + {"test_g9", 0x6d}, + {"main_songnum", 0x6e}, + {"main_musichitlistid", 0x6f}, + {"campfire_nexttrack", 0x70}, + {"campfire_busy", 0x71}, + {"main_duckpri", 0x7b}, + {"main_vol", 0x7c}, + {"main_fxtype", 0x7d}, + {"main_fxlevel", 0x7e}, + {"main_pause", 0x7f}, +}; + +#define TS1VariableCount 87 +static const variable_t TS1Variables[] = { + {"arg0", 0x00}, + {"arg1", 0x01}, + {"arg2", 0x02}, + {"arg3", 0x03}, + {"arg4", 0x04}, + {"v1", 0x05}, + {"v2", 0x06}, + {"v3", 0x07}, + {"v4", 0x08}, + {"v5", 0x09}, + {"v6", 0x0a}, + {"v7", 0x0b}, + {"v8", 0x0c}, + {"h1", 0x0d}, + {"h2", 0x0e}, + {"h3", 0x0f}, + {"priority", 0x11}, + {"vol", 0x12}, + {"extvol", 0x13}, + {"pan", 0x14}, + {"pitch", 0x15}, + {"paused", 0x16}, + {"fxtype", 0x17}, + {"fxlevel", 0x18}, + {"duckpri", 0x19}, + {"Is3d", 0x1a}, + {"IsHeadRelative", 0x1b}, + {"MinDistance", 0x1c}, + {"MaxDistance", 0x1d}, + {"X", 0x1e}, + {"Y", 0x1f}, + {"Z", 0x20}, + {"filter_type", 0x21}, + {"filter_cutoff", 0x22}, + {"filter_level", 0x23}, + {"attack", 0x24}, + {"decay", 0x25}, + {"IsStreamed", 0x26}, + {"BufSizeMult", 0x27}, + {"fade_dest", 0x28}, + {"fade_var", 0x29}, + {"fade_speed", 0x2a}, + {"Preload", 0x2b}, + {"IsLooped", 0x2c}, + {"fade_on", 0x2d}, + {"isplaying", 0x2e}, + {"source", 0x2f}, + {"patch", 0x32}, + {"WhatToDoWithUpdate", 0x33}, + {"tempo", 0x34}, + {"target", 0x35}, + {"mutegroup", 0x36}, + {"interrupt", 0x37}, + {"IsPositioned", 0x38}, + {"Spl", 0x39}, + {"MultipleInstances", 0x3a}, + {"AssociatedTrack1", 0x3b}, + {"AssociatedTrack2", 0x3c}, + {"AssociatedTrack3", 0x3d}, + {"AssociatedTrack4", 0x3e}, + {"AssociatedTrack5", 0x3f}, + {"AssociatedTrack6", 0x40}, + {"AssociatedTrack7", 0x41}, + {"AssociatedTrack8", 0x42}, + {"SimSpeed", 0x64}, + {"test_g1", 0x65}, + {"test_g2", 0x66}, + {"test_g3", 0x67}, + {"test_g4", 0x68}, + {"test_g5", 0x69}, + {"test_g6", 0x6a}, + {"test_g7", 0x6b}, + {"test_g8", 0x6c}, + {"test_g9", 0x6d}, + {"main_songnum", 0x6e}, + {"main_musichitlistid", 0x6f}, + {"campfire_nexttrack", 0x70}, + {"campfire_busy", 0x71}, + {"main_duckpri", 0x7b}, + {"main_vol", 0x7c}, + {"main_fxtype", 0x7d}, + {"main_fxlevel", 0x7e}, + {"main_pause", 0x7f}, +}; + +#define ConstantCount 72 +static const variable_t Constants[] = { + {"duckpri_always", 0x0}, + {"duckpri_low", 0xa}, + {"duckpri_normal", 0x14}, + {"duckpri_high", 0x1e}, + {"duckpri_higher", 0x28}, + {"duckpri_evenhigher", 0x32}, + {"duckpri_never", 0x64}, + {"spl_infinite", 0x0}, + {"spl_loud", 0xa}, + {"spl_normal", 0x14}, + {"spl_quiet", 0x64}, + {"Instance", 0x0}, + {"Gender", 0x1}, + {"GroupMusic", 0x1}, + {"GroupDialogMain", 0x2}, + {"GroupDialogOverlay", 0x3}, + {"PchDishwasherClose", 0x32}, + {"PchDishwasherLoad", 0x33}, + {"PchDishwasherLoad2", 0x34}, + {"PchDishwasherOpen", 0x35}, + {"PchDishwasherTurnDial", 0x39}, + {"PchDishwasherTurnDial2", 0x3a}, + {"TrkRadioStationCountry", 0x104}, + {"TrkRadioStationBossaNova", 0x10e}, + {"TrkRadioStationClassical", 0x10d}, + {"TrkRadioStationRock", 0x118}, + {"kSndobPlay", 1}, + {"kSndobStop", 2}, + {"kSndobKill", 3}, + {"kSndobUpdate", 4}, + {"kSndobSetVolume", 5}, + {"kSndobSetPitch", 6}, + {"kSndobSetPan", 7}, + {"kSndobSetPosition", 8}, + {"kSndobSetFxType", 9}, + {"kSndobSetFxLevel", 10}, + {"kSndobPause", 11}, + {"kSndobUnpause", 12}, + {"kSndobLoad", 13}, + {"kSndobUnload", 14}, + {"kSndobCache", 15}, + {"kSndobUncache", 16}, + {"kSndobCancelNote", 19}, + {"kPlayPiano", 43}, + {"kSetMusicMode", 36}, + {"kLive", 0}, + {"kBuy", 1}, + {"kBuild", 2}, + {"kHood", 3}, + {"kFrontEnd", 4}, + {"kGroupSfx", 1}, + {"kGroupMusic", 2}, + {"kGroupVox", 3}, + {"kAction", 1000}, + {"kComedy", 1001}, + {"kRomance", 1002}, + {"kNews", 1003}, + {"kCountry", 1004}, + {"kRock", 1005}, + {"kJazz", 1006}, + {"kClassical", 1007}, + {"kArgsNormal", 0}, + {"kArgsVolPan", 1}, + {"kArgsIdVolPan", 2}, + {"kArgsXYZ", 3}, + {"kKillAll", 20}, + {"kPause", 21}, + {"kUnpause", 22}, + {"kKillInstance", 23}, + {"kTurnOnTv", 30}, + {"kTurnOffTv", 31}, + {"kUpdateSourceVolPan", 32}, +}; + +static const uint8_t ObjectHeader[] = { + 0x7F, 0x45, 0x4C, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, + 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 +}; \ No newline at end of file diff --git a/Libraries/FileHandler/tga/read_tga.c b/Libraries/FileHandler/tga/read_tga.c index 01fb27d..3087033 100644 --- a/Libraries/FileHandler/tga/read_tga.c +++ b/Libraries/FileHandler/tga/read_tga.c @@ -14,4 +14,37 @@ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file +*/ + +#include +#include +#include +#include "read_tga.h" + +#ifndef read_uint32 + #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) + #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) +#endif + +int tga_read_header(tgaheader_t * TGAHeader, const uint8_t * Buffer, size_t FileSize){ + unsigned padding; + if(FileSize < ?) return 0; + TGAHeader->IDLength = read_uint8(Buffer); + TGAHeader->ColorMapType = read_uint8(Buffer+1); + TGAHeader->ImageType = read_uint8(Buffer+2); + + /* Color map */ + TGAHeader->FirstEntry = read_uint16(Buffer+3); + TGAHeader->ColorMapLength = read_uint16(Buffer+5); + TGAHeader->EntrySize = read_uint8(Buffer+7); + + /* Image */ + TGAHeader->XOrigin = read_uint16(Buffer+8); + TGAHeader->YOrigin = read_uint16(Buffer+10); + TGAHeader->Width = read_uint16(Buffer+12); + TGAHeader->Height = read_uint16(Buffer+14); + TGAHeader->ImageDepth = read_uint8(Buffer+16); + TGAHeader->Descriptor = read_uint8(Buffer+17); + + return 1; +} diff --git a/Libraries/FileHandler/tga/read_tga.h b/Libraries/FileHandler/tga/read_tga.h new file mode 100644 index 0000000..168d13e --- /dev/null +++ b/Libraries/FileHandler/tga/read_tga.h @@ -0,0 +1,17 @@ +/* + FileHandler - General-purpose file handling library for Niotso + read_tga.h - Copyright (c) 2012 Niotso Project + Author(s): Fatbag + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ \ No newline at end of file diff --git a/Libraries/FileHandler/tga/tsov2.txt b/Libraries/FileHandler/tga/tsov2.txt new file mode 100644 index 0000000..3261a93 --- /dev/null +++ b/Libraries/FileHandler/tga/tsov2.txt @@ -0,0 +1,10644 @@ +BASEID_TRACKDATA 15000 + +; +; generated by MakeTrax. +; + +; useful symbols: +; kSndobPlay = 1 +; tkd_Generic 1 +; tkd_GenericLooped 2 +; tkd_GenericHitList 3 + +INCLUDE defaultsyms.txt +INCLUDE SimsGlobals.txt + +LIST [Options] Version=1 +LIST [Options] LoadPriority=2 + +;LIST [EventMappingEquate] kSndobPlay=1 +; --- end of standard intro text --- + +SYMBOLFILE tsov2.hsm +INIFILE tsov2.ini + +# User data include +INCLUDE tsov2_userdata.txt + +BINARY +[ +Vox_huggee_good_tso + loadl v1 #16962 + loadl v2 #16963 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tradee_reject_loop + loadl v1 #17238 + loadl v2 #17239 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_tease_sit + loadl v1 #17218 + loadl v2 #17219 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_silly_throwup + loadl v1 #17168 + loadl v2 #17169 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gametimer_break + loadl v1 #17391 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobobject_light_flash + loadl v1 #17427 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tutorial_lpa_sfx + loadl v1 #15014 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_bunkbed_top_make + loadl v1 #15127 + loadl v2 #15128 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_insultee_tso + loadl v1 #16994 + loadl v2 #16995 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boo_sit + loadl v1 #15119 + loadl v2 #15120 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_success_vox + loadl v1 #16449 + loadl v2 #16450 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_handshakee + loadl v1 #16946 + loadl v2 #16947 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_swingee + loadl v1 #16733 + loadl v2 #16734 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_booer + loadl v1 #16623 + loadl v2 #16624 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_call_rec_next + loadl v1 #17536 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Pinata_swingha_vox + loadl v1 #16478 + loadl v2 #16479 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_kisser_sweet + loadl v1 #17014 + loadl v2 #17015 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_repair + loadl v1 #15056 + loadl v2 #15057 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraida_loopa + loadl v1 #16518 + loadl v2 #16519 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +game_piece_put + loadl v1 #17381 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_insult_kneel + loadl v1 #16988 + loadl v2 #16989 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraida_loopb + loadl v1 #16520 + loadl v2 #16521 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_fuse_slap + loadl v1 #17422 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +flower_throw_down + loadl v1 #17372 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sexy_mgrowl + loadl v1 #17150 + loadl v2 #17151 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraida_loopc + loadl v1 #16522 + loadl v2 #16523 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_swingmc_vox + loadl v1 #16488 + loadl v2 #16489 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_askint + loadl v1 #17212 + loadl v2 #17213 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_lpa_vox + loadl v1 #15237 + loadl v2 #15238 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_handshaker + loadl v1 #16948 + loadl v2 #16949 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_swinger + loadl v1 #16735 + loadl v2 #16736 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_teleport_swapskin + loadl v1 #15235 + loadl v2 #15236 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_appear_close + loadl v1 #17462 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +game_draw_place + loadl v1 #17378 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_erasec_vox + loadl v1 #16399 + loadl v2 #16400 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +nails_file_a + loadl v1 #15280 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +nails_file_b + loadl v1 #15281 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +nails_file_c + loadl v1 #15282 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_switch + loadl v1 #17417 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_dough_throw + loadl v1 #17467 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_breaker_friendship + loadl v1 #16647 + loadl v2 #16648 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tickler_extreme + loadl v1 #17230 + loadl v2 #17231 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_guts_putback + loadl v1 #17352 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_piano_start + loadl v1 #17503 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_armkissee + loadl v1 #16557 + loadl v2 #16558 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_foot_stomp_missera + loadl v1 #16870 + loadl v2 #16871 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_eyepoker_tso + loadl v1 #16815 + loadl v2 #16816 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_foot_stomp_misserb + loadl v1 #16872 + loadl v2 #16873 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_cheerupee_pos + loadl v1 #16653 + loadl v2 #16654 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flyhuggee_neg_tso + loadl v1 #16856 + loadl v2 #16857 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +trashcompact_open + loadl v1 #15275 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_read_unroll + loadl v1 #17441 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_read_reada + loadl v1 #17437 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobbody_success_vox + loadl v1 #16433 + loadl v2 #16434 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_read_readb + loadl v1 #17438 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_gmoneyer_reject + loadl v1 #16910 + loadl v2 #16911 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_read_readc + loadl v1 #17439 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_armkisser + loadl v1 #16559 + loadl v2 #16560 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_spin + loadl v1 #17310 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_bunkbed_bottom_make + loadl v1 #15123 + loadl v2 #15124 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_typew_stop + loadl v1 #17506 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_angryc_loopa + loadl v1 #16551 + loadl v2 #16552 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gamecomp_hit_hard + loadl v1 #17386 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_angryc_loopb + loadl v1 #16553 + loadl v2 #16554 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_angryc_loopc + loadl v1 #16555 + loadl v2 #16556 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_deal_lp + loadl v1 #15010 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vpoker_lpc_sfx + loadl v1 #15020 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_oven_break + loadl v1 #17468 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_proposer_no + loadl v1 #17100 + loadl v2 #17101 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_visitor_kickee + loadl v1 #17258 + loadl v2 #17259 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_pout + loadl v1 #17088 + loadl v2 #17089 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_trader_rejecta_start + loadl v1 #17252 + loadl v2 #17253 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_breakee_friendship + loadl v1 #16645 + loadl v2 #16646 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +elevator_open + loadl v1 #15024 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +smokears + loadl v1 #17519 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_flirt_stand + loadl v1 #16854 + loadl v2 #16855 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_fight_sissyer_pushee + loadl v1 #16823 + loadl v2 #16824 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +door_turnstile_open + loadl v1 #17364 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_stay_vox + loadl v1 #16395 + loadl v2 #16396 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_mhead_putback + loadl v1 #17354 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +compact_close + loadl v1 #17332 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +ctrunk_wlocker_close + loadl v1 #17342 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_prep_dough + loadl v1 #17475 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Latin_feet + loadl v1 #17433 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_vote_ballot + loadl v1 #15155 + loadl v2 #15156 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_visitor_kicker + loadl v1 #17260 + loadl v2 #17261 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_giftgetter + loadl v1 #16898 + loadl v2 #16899 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_chess_start + loadl v1 #15181 + loadl v2 #15182 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hatrack_consider + loadl v1 #15167 + loadl v2 #15168 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_eeeew + loadl v1 #16803 + loadl v2 #16804 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_fight_sissyer_pusher + loadl v1 #16825 + loadl v2 #16826 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_gnome_lp + loadl v1 #17496 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_erasea + loadl v1 #17314 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_eraseb + loadl v1 #17315 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_erasec + loadl v1 #17316 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_drunk + loadl v1 #16801 + loadl v2 #16802 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_erased + loadl v1 #17317 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_td + loadl v1 #16741 + loadl v2 #16742 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_tired_vox + loadl v1 #15077 + loadl v2 #15078 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gametimer_button + loadl v1 #17392 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_bawl + loadl v1 #16603 + loadl v2 #16604 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Door_stall_open + loadl v1 #15066 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_appear_raise + loadl v1 #17464 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_dancee_slow_reject + loadl v1 #16745 + loadl v2 #16746 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_vogue + loadl v1 #17262 + loadl v2 #17263 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_score_start_vox + loadl v1 #15111 + loadl v2 #15112 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +foodtray_give_voxnffod + loadl v1 #15309 + loadl v2 #15309 + loadl v3 #15309 + call #generic_fm_smartlists + end +] + +BINARY +[ +ctrunk_scifi_change + loadl v1 #17341 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_vote_start + loadl v1 #15159 + loadl v2 #15160 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +coin_toss + loadl v1 #17331 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cannonball_pickup + loadl v1 #17303 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tipjar_money_getf + loadl v1 #17524 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_tickler_wetself + loadl v1 #17232 + loadl v2 #17233 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_comp_start + loadl v1 #15183 + loadl v2 #15184 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +slotc_win + loadl v1 #17518 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +fart_sfx + loadl v1 #15256 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_proposee_yes + loadl v1 #17098 + loadl v2 #17099 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +mic_adjust + loadl v1 #17442 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_monologue + loadl v1 #17064 + loadl v2 #17065 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_fuse_bang + loadl v1 #17421 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobmech_ponderc_vox + loadl v1 #16447 + loadl v2 #16448 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +sting_death + loadl v1 #15267 + call #userdata_sting_death + end +] + +BINARY +[ +foodtray_order_voxnffod + loadl v1 #15310 + loadl v2 #15310 + loadl v3 #15310 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarket_phone_putf + loadl v1 #17531 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tipjar_money_gett + loadl v1 #17525 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_shakefist + loadl v1 #17188 + loadl v2 #17189 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_push_lever + loadl v1 #17411 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_insulter_tso + loadl v1 #16996 + loadl v2 #16997 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_roomater_kickout + loadl v1 #17118 + loadl v2 #17119 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarket_phone_puts + loadl v1 #17532 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +gamecomp_hit_soft + loadl v1 #17388 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_gymnastic + loadl v1 #16940 + loadl v2 #16941 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +blackjack_cards_shuffle + loadl v1 #17285 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sword_swallow + loadl v1 #17208 + loadl v2 #17209 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Ctrunk_mlocker_open + loadl v1 #17339 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_spin_stop + loadl v1 #15262 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +typewriter_loop + loadl v1 #17533 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_yawn_stretch + loadl v1 #17272 + loadl v2 #17273 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flyhugger_start_tso + loadl v1 #16864 + loadl v2 #16865 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_easel_start + loadl v1 #17494 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +ui_letter_send + loadl v1 #17540 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_boredc_loopa + loadl v1 #16637 + loadl v2 #16638 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gamecomp_target_hit + loadl v1 #17390 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_boredc_loopb + loadl v1 #16639 + loadl v2 #16640 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boredc_loopc + loadl v1 #16641 + loadl v2 #16642 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_chin_ticklee_bat + loadl v1 #15131 + loadl v2 #15132 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_start_vox + loadl v1 #16474 + loadl v2 #16475 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +foodtray_greet_voxnffod + loadl v1 #15311 + loadl v2 #15311 + loadl v3 #15311 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_cheeruper_pos + loadl v1 #16657 + loadl v2 #16658 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_piledrivera + loadl v1 #17084 + loadl v2 #17085 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_piledriverb + loadl v1 #17086 + loadl v2 #17087 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_backrubber_refused + loadl v1 #16599 + loadl v2 #16600 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_lpc_vox + loadl v1 #15075 + loadl v2 #15076 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +door_vault_close + loadl v1 #17365 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +bunkbed_bottom_getout + loadl v1 #17291 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pinata_swing_hita + loadl v1 #17456 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_write_final + loadl v1 #17319 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pinata_swing_hitb + loadl v1 #17457 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pinata_swing_hitc + loadl v1 #17458 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_deal_idlea_vox + loadl v1 #15099 + loadl v2 #15100 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_draw_start + loadl v1 #15151 + loadl v2 #15152 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovyb_loopa + loadl v1 #16920 + loadl v2 #16921 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovyb_loopb + loadl v1 #16922 + loadl v2 #16923 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovyb_loopc + loadl v1 #16924 + loadl v2 #16925 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_brow_wipe + loadl v1 #16649 + loadl v2 #16650 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_call_rec_first + loadl v1 #17535 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writef_vox + loadl v1 #16421 + loadl v2 #16422 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pinata_coins_grab + loadl v1 #17454 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +dingbat_kiss + loadl v1 #17362 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_cards_deal + loadl v1 #17282 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_mbull_start + loadl v1 #15205 + loadl v2 #15206 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_heartee_pullout + loadl v1 #16954 + loadl v2 #16955 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_food_give_seated + loadl v1 #15145 + loadl v2 #15146 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_normal + loadl v1 #15229 + loadl v2 #15230 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sit_bored_sigh + loadl v1 #17176 + loadl v2 #17177 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_teleport_insideout + loadl v1 #15233 + loadl v2 #15234 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_mirror_stop + loadl v1 #15209 + loadl v2 #15210 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gamecomp_target_full + loadl v1 #17389 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_fight_sissyer_start + loadl v1 #16827 + loadl v2 #16828 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +slotb_lose + loadl v1 #17513 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_hiphop + loadl v1 #16715 + loadl v2 #16716 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarketer_react_good_vox + loadl v1 #16514 + loadl v2 #16515 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_cheerupee_pup_pos + loadl v1 #15291 + loadl v2 #15292 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sigh_weak + loadl v1 #17166 + loadl v2 #17167 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_laugh_happy + loadl v1 #17046 + loadl v2 #17047 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tradee_rejecta_start + loadl v1 #17240 + loadl v2 #17241 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_proposer_tso + loadl v1 #17102 + loadl v2 #17103 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_dancee_slow_stop + loadl v1 #16747 + loadl v2 #16748 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobobject_sequencea + loadl v1 #17430 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobobject_sequenceb + loadl v1 #17431 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_cont_wina + loadl v1 #15048 + loadl v2 #15049 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobobject_sequencec + loadl v1 #17432 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_cont_winb + loadl v1 #15050 + loadl v2 #15051 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tutorial_lpc_vox + loadl v1 #15117 + loadl v2 #15118 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_cont_idlea + loadl v1 #16882 + loadl v2 #16883 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_cont_idleb + loadl v1 #16884 + loadl v2 #16885 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_cont_idlec + loadl v1 #16886 + loadl v2 #16887 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fiver_react_bad + loadl v1 #16837 + loadl v2 #16838 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_reader_loopa_vox + loadl v1 #16466 + loadl v2 #16467 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_exmach_stop + loadl v1 #15195 + loadl v2 #15196 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roulette_spin + loadl v1 #15261 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_guitar_start + loadl v1 #17498 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_tease_stand + loadl v1 #17220 + loadl v2 #17221 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_typew_lp + loadl v1 #17504 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_door_open + loadl v1 #17466 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writec_vox + loadl v1 #16415 + loadl v2 #16416 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_peck_acceptee + loadl v1 #17070 + loadl v2 #17071 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_prep_cheese + loadl v1 #17474 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_cards_play_vox + loadl v1 #15097 + loadl v2 #15098 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_whisper_secret + loadl v1 #17264 + loadl v2 #17265 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +door_turnstile_close + loadl v1 #17363 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_fight_sissyee_cower + loadl v1 #16819 + loadl v2 #16820 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Ctrunk_Scifi_Button + loadl v1 #17340 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_tangoee + loadl v1 #16737 + loadl v2 #16738 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +door_vault_open + loadl v1 #17367 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_scream_primal + loadl v1 #17142 + loadl v2 #17143 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_gnome_start + loadl v1 #15197 + loadl v2 #15198 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +blackjack_chip_place + loadl v1 #17287 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_peck_accepter + loadl v1 #17072 + loadl v2 #17073 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_discoee + loadl v1 #16705 + loadl v2 #16706 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_repair_start + loadl v1 #15022 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writea + loadl v1 #17320 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tmarketee_react_good_vox + loadl v1 #16508 + loadl v2 #16509 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writeb + loadl v1 #17321 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_coin_flippee_lose + loadl v1 #16665 + loadl v2 #16666 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_call_send + loadl v1 #17537 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writec + loadl v1 #17322 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +lot_enter + loadl v1 #15025 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_chin_ticklee_back + loadl v1 #15129 + loadl v2 #15130 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writed + loadl v1 #17323 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_tangoer + loadl v1 #16739 + loadl v2 #16740 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writee + loadl v1 #17324 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_hitme + loadl v1 #17289 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writef + loadl v1 #17325 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_arrogc_loopb + loadl v1 #16573 + loadl v2 #16574 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writeg + loadl v1 #17326 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_belly + loadl v1 #16701 + loadl v2 #16702 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_arrogc_loopc + loadl v1 #16575 + loadl v2 #16576 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writeh + loadl v1 #17327 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +scoreboard_repair + loadl v1 #15069 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +gem_pickaxe_get + loadl v1 #15001 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_scratch_vox + loadl v1 #16407 + loadl v2 #16408 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_pickup + loadl v1 #17307 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_discoer + loadl v1 #16707 + loadl v2 #16708 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_lpb_sfx + loadl v1 #15003 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +foodtray_loop_voxnffod + loadl v1 #15308 + loadl v2 #15308 + loadl v3 #15308 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_evil_laugh + loadl v1 #16807 + loadl v2 #16808 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +game_vote_scribblea + loadl v1 #17383 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +game_vote_scribbleb + loadl v1 #17384 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +bunkbed_bottom_getin + loadl v1 #17290 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_puppeter_get_petted + loadl v1 #15303 + loadl v2 #15304 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +mic_tap + loadl v1 #17443 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jar_seal + loadl v1 #17407 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_cards_pickup + loadl v1 #17284 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_cheeruper_start + loadl v1 #16659 + loadl v2 #16660 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pinata_swing_missa + loadl v1 #17459 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_inlovea_loopa + loadl v1 #16970 + loadl v2 #16971 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_nav_loopa + loadl v1 #15271 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pinata_swing_missb + loadl v1 #17460 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_inlovea_loopb + loadl v1 #16972 + loadl v2 #16973 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_backcracker_accept + loadl v1 #16589 + loadl v2 #16590 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roulette_bet_place_sfx + loadl v1 #15259 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_nav_loopb + loadl v1 #15272 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pinata_swing_missc + loadl v1 #17461 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_inlovea_loopc + loadl v1 #16974 + loadl v2 #16975 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_nav_loopc + loadl v1 #15273 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_friend_makee + loadl v1 #16878 + loadl v2 #16879 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_giftgiver + loadl v1 #16900 + loadl v2 #16901 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_reader_defeated_vox + loadl v1 #0 + loadl v2 #16465 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +eyepoke + loadl v1 #17368 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_jitteree + loadl v1 #16723 + loadl v2 #16724 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarket_paper_get + loadl v1 #17528 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_tantrum + loadl v1 #17214 + loadl v2 #17215 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_chin_tickler_bat + loadl v1 #15135 + loadl v2 #15136 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_mirror_lp + loadl v1 #17501 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_mbull_lp + loadl v1 #17499 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_ticklee_extreme + loadl v1 #17224 + loadl v2 #17225 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_roomatee_invite + loadl v1 #17112 + loadl v2 #17113 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_grovelee_deny_tso + loadl v1 #16934 + loadl v2 #16935 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sadc_loopa + loadl v1 #17132 + loadl v2 #17133 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_friend_maker + loadl v1 #16880 + loadl v2 #16881 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sadc_loopb + loadl v1 #17134 + loadl v2 #17135 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_can_lp + loadl v1 #17485 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_sadc_loopc + loadl v1 #17136 + loadl v2 #17137 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_trader_accept_loop + loadl v1 #17244 + loadl v2 #17245 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_armpump + loadl v1 #17018 + loadl v2 #17019 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_groove + loadl v1 #16713 + loadl v2 #16714 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_fail_vox + loadl v1 #16427 + loadl v2 #16428 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_piano_lp + loadl v1 #17502 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tipjar_putt_vox + loadl v1 #16504 + loadl v2 #16505 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_jitterer + loadl v1 #16725 + loadl v2 #16726 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tipjar_getf_vox + loadl v1 #16498 + loadl v2 #16499 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_mbull_stop + loadl v1 #15207 + loadl v2 #15208 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_nav_loopc_vox + loadl v1 #16459 + loadl v2 #16460 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobobject_loop + loadl v1 #17428 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_hugger_refuse_tso + loadl v1 #16968 + loadl v2 #16969 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_nav_celebrate_vox + loadl v1 #16451 + loadl v2 #16452 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Backdrop_start + loadl v1 #17275 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_dcage_start + loadl v1 #15187 + loadl v2 #15188 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tutorial_lpb_sfx + loadl v1 #15015 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_eyepokee + loadl v1 #16813 + loadl v2 #16814 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_airkisser_accept + loadl v1 #16537 + loadl v2 #16538 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_typew_start + loadl v1 #15215 + loadl v2 #15216 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_entrance + loadl v1 #16805 + loadl v2 #16806 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_swinghb_vox + loadl v1 #16480 + loadl v2 #16481 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_joke_tell + loadl v1 #17000 + loadl v2 #17001 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_compliment_stand + loadl v1 #16681 + loadl v2 #16682 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_flex_musclea + loadl v1 #16842 + loadl v2 #16843 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +npc_bj_cards_dhit_vox + loadl v1 #15253 + loadl v2 #15253 + loadl v3 #15253 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_flex_muscleb + loadl v1 #15247 + loadl v2 #15248 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_flex_musclec + loadl v1 #15141 + loadl v2 #15142 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tapdance_feet + loadl v1 #17523 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_juggler_stop + loadl v1 #17002 + loadl v2 #17003 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_lpb_vox + loadl v1 #15239 + loadl v2 #15240 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_start + loadl v1 #17311 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_appear_open + loadl v1 #17463 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_kneel_pout + loadl v1 #17036 + loadl v2 #17037 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_bored_check_watch + loadl v1 #16625 + loadl v2 #16626 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_stand_laugha + loadl v1 #17204 + loadl v2 #17205 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_stand_laughb + loadl v1 #17206 + loadl v2 #17207 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidc_loopa + loadl v1 #0 + loadl v2 #16530 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidc_loopb + loadl v1 #16531 + loadl v2 #16532 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_letter_rec + loadl v1 #17539 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_hitme_vox + loadl v1 #16393 + loadl v2 #16394 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidc_loopc + loadl v1 #16533 + loadl v2 #16534 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_break + loadl v1 #15000 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_pickup_hand_sfx + loadl v1 #15012 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_huggee_refuse_tso + loadl v1 #16964 + loadl v2 #16965 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_call_q_full + loadl v1 #17534 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +crackback_crack + loadl v1 #17337 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_watcha_vox + loadl v1 #15091 + loadl v2 #15092 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_bkcase_lp + loadl v1 #17480 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Death_possess_in + loadl v1 #17356 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_giddy + loadl v1 #16888 + loadl v2 #16889 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_exmach_lp + loadl v1 #17495 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_getpaper + loadl v1 #17413 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_typeswitch + loadl v1 #17420 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +hatrack_hat_take + loadl v1 #17400 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +gem_start_vox + loadl v1 #15083 + loadl v2 #15084 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_comp_lp + loadl v1 #17490 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_sing_serenade_short + loadl v1 #17170 + loadl v2 #17171 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +npc_bj_chip_give_vox + loadl v1 #15255 + loadl v2 #15255 + loadl v3 #15255 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_ticklee_wetself + loadl v1 #17226 + loadl v2 #17227 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +giddy_footsteps + loadl v1 #17396 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +coin_catch + loadl v1 #15278 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_death_marblee_rej + loadl v1 #16761 + loadl v2 #16762 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_piano_start + loadl v1 #15211 + loadl v2 #15212 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roulette_pay_sfx + loadl v1 #15260 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tipjar_money_putf + loadl v1 #17526 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Pinata_swingma_vox + loadl v1 #16484 + loadl v2 #16485 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_pipe_break + loadl v1 #17424 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_guitar_start + loadl v1 #15201 + loadl v2 #15202 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dancee_reject + loadl v1 #16743 + loadl v2 #16744 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_mhead_remove + loadl v1 #17355 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_headspin + loadl v1 #16952 + loadl v2 #16953 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_erasea_vox + loadl v1 #16397 + loadl v2 #16398 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_kissee_sweet + loadl v1 #17008 + loadl v2 #17009 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_sultry_acceptee + loadl v1 #16731 + loadl v2 #16732 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_coin_flipper_start + loadl v1 #16671 + loadl v2 #16672 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tipjar_money_putt + loadl v1 #17527 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_roomatee_kickout + loadl v1 #17114 + loadl v2 #17115 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_repair_start_vox + loadl v1 #15079 + loadl v2 #15080 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_cards_stop_sfx + loadl v1 #15008 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_angryb_loopa + loadl v1 #16545 + loadl v2 #16546 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_easel_lp + loadl v1 #17493 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_angryb_loopb + loadl v1 #16547 + loadl v2 #16548 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hotdog_choose + loadl v1 #15312 + loadl v2 #15313 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_angryb_loopc + loadl v1 #16549 + loadl v2 #16550 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +heart_pullout + loadl v1 #17401 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +slotb_wheels_spin + loadl v1 #17514 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_hugger_good_tso + loadl v1 #16966 + loadl v2 #16967 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_peck_rejectee + loadl v1 #17076 + loadl v2 #17077 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_score_lp_vox + loadl v1 #15109 + loadl v2 #15110 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_chess_lp + loadl v1 #17489 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cannonball_load + loadl v1 #17301 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_compliment_appreciate + loadl v1 #16675 + loadl v2 #16676 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_kisser_passion_tso + loadl v1 #17010 + loadl v2 #17011 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_backcrackee_reject + loadl v1 #16587 + loadl v2 #16588 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_cheeruper_pup_neg + loadl v1 #15289 + loadl v2 #15290 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shakefist + loadl v1 #17152 + loadl v2 #17153 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +blackjack_cards_check_vox + loadl v1 #16391 + loadl v2 #16392 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_peck_rejecter + loadl v1 #17078 + loadl v2 #17079 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tickler_ext_reject + loadl v1 #17228 + loadl v2 #17229 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_backrubbee_stop + loadl v1 #16597 + loadl v2 #16598 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_model + loadl v1 #17062 + loadl v2 #17063 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarketee_sell_vox + loadl v1 #16510 + loadl v2 #16511 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_lpa_sfx + loadl v1 #15018 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_greet_wave_tso + loadl v1 #16912 + loadl v2 #16913 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_coin_flipper_lose + loadl v1 #16669 + loadl v2 #16670 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_chin_tickler_back + loadl v1 #15133 + loadl v2 #15134 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_repaira_vox + loadl v1 #16494 + loadl v2 #16495 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_celebrate_vox + loadl v1 #16472 + loadl v2 #16473 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sit_sigh + loadl v1 #17190 + loadl v2 #17191 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fivee_reject + loadl v1 #16835 + loadl v2 #16836 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_host_read + loadl v1 #15054 + loadl v2 #15055 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +hat_head_on + loadl v1 #17398 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_backrubbee_refused + loadl v1 #16595 + loadl v2 #16596 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +logo_intel_filtered + loadl v1 #15284 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_handlepull + loadl v1 #17414 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_kissee_reject + loadl v1 #17006 + loadl v2 #17007 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_easel_stop + loadl v1 #15191 + loadl v2 #15192 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +hat_head_off + loadl v1 #17397 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Death_fhead_dribble + loadl v1 #17349 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_kneel_booa + loadl v1 #17020 + loadl v2 #17021 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_boob + loadl v1 #17022 + loadl v2 #17023 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_booc + loadl v1 #17024 + loadl v2 #17025 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_muscle_kiss + loadl v1 #15245 + loadl v2 #15246 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_gmoneyer_accept + loadl v1 #16908 + loadl v2 #16909 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_wipebrow + loadl v1 #17040 + loadl v2 #17041 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tradee_accept_loop + loadl v1 #17234 + loadl v2 #17235 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_smokears + loadl v1 #17200 + loadl v2 #17201 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_primp_male + loadl v1 #17092 + loadl v2 #17093 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_spookee + loadl v1 #16773 + loadl v2 #16774 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_joke_respond_pos + loadl v1 #16998 + loadl v2 #16999 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_subtle + loadl v1 #15231 + loadl v2 #15232 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Ctrunk_wlockerq_close + loadl v1 #17344 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_mbull_lp + loadl v1 #15203 + loadl v2 #15204 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +backdrop_pull + loadl v1 #17274 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_ticklee_ext_reject + loadl v1 #17222 + loadl v2 #17223 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_gnome_stop + loadl v1 #15199 + loadl v2 #15200 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_typew_stop + loadl v1 #15217 + loadl v2 #15218 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +click_heels + loadl v1 #17328 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_giggle + loadl v1 #16902 + loadl v2 #16903 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_break_metal + loadl v1 #17483 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_wipebrow + loadl v1 #17192 + loadl v2 #17193 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_spooker + loadl v1 #15042 + loadl v2 #15043 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kickfloor + loadl v1 #17004 + loadl v2 #17005 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +foot_stomp + loadl v1 #15264 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Death_eyeball_remove + loadl v1 #17348 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_prep_mush + loadl v1 #17476 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +npc_bj_win_declare_vox + loadl v1 #15254 + loadl v2 #15254 + loadl v3 #15254 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_stop_vox + loadl v1 #15085 + loadl v2 #15086 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flirt_kneel + loadl v1 #16848 + loadl v2 #16849 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +bunkbed_top_getout + loadl v1 #17294 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +logo_intel + loadl v1 #15283 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_lookatme + loadl v1 #17052 + loadl v2 #17053 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_paperget_vox + loadl v1 #16431 + loadl v2 #16432 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_pondera_vox + loadl v1 #16443 + loadl v2 #16444 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jar_put_crate + loadl v1 #17406 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_woohoo + loadl v1 #17194 + loadl v2 #17195 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dipkissee + loadl v1 #16797 + loadl v2 #16798 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gametimer_buzzer + loadl v1 #17393 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vpoker_repair_stop + loadl v1 #15274 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_bored_stretch + loadl v1 #15058 + loadl v2 #15059 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +flower_stomp + loadl v1 #17371 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobmech_trans_bang + loadl v1 #17425 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +sissy_slap_shoulders + loadl v1 #15270 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Bunkbed_step_wood + loadl v1 #17292 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_deal_idleb_vox + loadl v1 #15101 + loadl v2 #15102 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_easel_start + loadl v1 #15189 + loadl v2 #15190 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boredb_loopa + loadl v1 #16631 + loadl v2 #16632 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boredb_loopb + loadl v1 #16633 + loadl v2 #16634 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boredb_loopc + loadl v1 #16635 + loadl v2 #16636 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dipkisser + loadl v1 #16799 + loadl v2 #16800 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_marbler_rej + loadl v1 #15034 + loadl v2 #15035 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +blackjack_chip_give + loadl v1 #17286 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_bunkbed_bottom_getup + loadl v1 #15121 + loadl v2 #15122 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_getin_vox + loadl v1 #16429 + loadl v2 #16430 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_scream_startled + loadl v1 #17146 + loadl v2 #17147 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writeg_vox + loadl v1 #16423 + loadl v2 #16424 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groveler_accept_tso + loadl v1 #16936 + loadl v2 #16937 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +door_vault_lock + loadl v1 #17366 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cardtable_dealer_brush + loadl v1 #17305 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Death_eyeball_collide + loadl v1 #17346 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Puzzle_twoper_close + loadl v1 #17478 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_groovya_loopa + loadl v1 #16914 + loadl v2 #16915 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovya_loopb + loadl v1 #16916 + loadl v2 #16917 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovya_loopc + loadl v1 #16918 + loadl v2 #16919 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_nails_file + loadl v1 #17068 + loadl v2 #17069 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +fridge_med_loop + loadl v1 #15249 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + loop +] + +BINARY +[ +vox_dance_popstar + loadl v1 #15137 + loadl v2 #15138 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_blowkiss + loadl v1 #16621 + loadl v2 #16622 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_benchpresseea + loadl v1 #16605 + loadl v2 #16606 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_lpa_vox + loadl v1 #15071 + loadl v2 #15072 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_benchpresseeb + loadl v1 #16607 + loadl v2 #16608 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +sissy_slap_head + loadl v1 #17511 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_grovelee_accept_tso + loadl v1 #16932 + loadl v2 #16933 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tutorial_start + loadl v1 #15017 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_berate_stand + loadl v1 #16619 + loadl v2 #16620 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_gift_appreciatee + loadl v1 #16890 + loadl v2 #16891 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +foodtray_start_voxnffod + loadl v1 #15307 + loadl v2 #15307 + loadl v3 #15307 + call #generic_fm_smartlists + end +] + +BINARY +[ +scoreboard_button + loadl v1 #17507 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_reader_loopb_vox + loadl v1 #16468 + loadl v2 #16469 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_oven_repaira + loadl v1 #17471 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_deal_start_vox + loadl v1 #15105 + loadl v2 #15106 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_oven_repairb + loadl v1 #17472 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_oven_put + loadl v1 #17470 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_oven_repairc + loadl v1 #17473 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +balloons_pop + loadl v1 #15063 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writed_vox + loadl v1 #16417 + loadl v2 #16418 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_gift_appreciater + loadl v1 #16892 + loadl v2 #16893 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_trader_acceptb_start + loadl v1 #17248 + loadl v2 #17249 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_guts + loadl v1 #15030 + loadl v2 #15031 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_spooka + loadl v1 #17358 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +ctrunk_wlockerq_open + loadl v1 #17345 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_success_vox + loadl v1 #16439 + loadl v2 #16440 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_spookb + loadl v1 #17359 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_boo + loadl v1 #17174 + loadl v2 #17175 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_happy_woohoo + loadl v1 #16950 + loadl v2 #16951 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Conveyer_on + loadl v1 #17336 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_death_mheadless + loadl v1 #15036 + loadl v2 #15037 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_hustlee + loadl v1 #16717 + loadl v2 #16718 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +butt_kick + loadl v1 #17295 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_attackee_win + loadl v1 #16579 + loadl v2 #16580 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Ctrunk_mlocker_close + loadl v1 #17338 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +fruit_pot_stir + loadl v1 #15251 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobobject_paper_appear + loadl v1 #17429 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_tapfunk + loadl v1 #15061 + loadl v2 #15062 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_proposee_no + loadl v1 #17094 + loadl v2 #17095 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_comp_stop + loadl v1 #15185 + loadl v2 #15186 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sign_write_stop + loadl v1 #15219 + loadl v2 #15220 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_gmoneyee_reject + loadl v1 #16906 + loadl v2 #16907 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_eng_sports + loadl v1 #15223 + loadl v2 #15224 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +piledrivea + loadl v1 #17452 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +piledriveb + loadl v1 #17453 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_hustler + loadl v1 #16719 + loadl v2 #16720 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_piano_stop + loadl v1 #15213 + loadl v2 #15214 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_lpc_sfx + loadl v1 #15004 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_fight_sissyee_start + loadl v1 #16821 + loadl v2 #16822 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_putdown + loadl v1 #17308 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tutorial_lpa_vox + loadl v1 #15115 + loadl v2 #15116 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +fridge_cheap_loop + loadl v1 #15060 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + loop +] + +BINARY +[ +repair_dcage_lp + loadl v1 #17492 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +gametimer_repair_lp + loadl v1 #17394 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_backrubber_stop + loadl v1 #16601 + loadl v2 #16602 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_repair_stop_vox + loadl v1 #15081 + loadl v2 #15082 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_letter_q_full + loadl v1 #17538 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_arrogb_loopa + loadl v1 #16567 + loadl v2 #16568 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_pull_lever + loadl v1 #17410 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_arrogb_loopb + loadl v1 #16569 + loadl v2 #16570 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_meltdown + loadl v1 #17056 + loadl v2 #17057 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_arrogb_loopc + loadl v1 #16571 + loadl v2 #16572 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_complimentor_tso + loadl v1 #16689 + loadl v2 #16690 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writea_vox + loadl v1 #16411 + loadl v2 #16412 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shove_blockee + loadl v1 #17158 + loadl v2 #17159 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_proposee_think + loadl v1 #17096 + loadl v2 #17097 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_collect_cards_sfx + loadl v1 #15009 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_insult_stand + loadl v1 #16992 + loadl v2 #16993 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_inlovec_loopb + loadl v1 #16982 + loadl v2 #16983 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_inlovec_loopc + loadl v1 #16984 + loadl v2 #16985 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +fruit_pot_put + loadl v1 #17375 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +game_piece_get + loadl v1 #17380 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_slapfightee + loadl v1 #17196 + loadl v2 #17197 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +trashcompact_close + loadl v1 #15276 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_berate + loadl v1 #16613 + loadl v2 #16614 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fiver_react_good + loadl v1 #16839 + loadl v2 #0 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_foot_stomp_misseea + loadl v1 #16866 + loadl v2 #16867 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_foot_stomp_misseeb + loadl v1 #16868 + loadl v2 #16869 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +phone_ring_pizza + loadl v1 #17449 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_can_start + loadl v1 #15173 + loadl v2 #15174 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shove_blocker + loadl v1 #17160 + loadl v2 #17161 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +hatrack_hat_put + loadl v1 #17399 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vpoker_repair_vox + loadl v1 #15243 + loadl v2 #15244 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_guitar_lp + loadl v1 #17497 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_slapfighter + loadl v1 #17198 + loadl v2 #17199 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +fiver_clap + loadl v1 #17370 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_laugha + loadl v1 #17180 + loadl v2 #17181 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sit_laughb + loadl v1 #17182 + loadl v2 #17183 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +fruit_chop + loadl v1 #17374 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_laughc + loadl v1 #17184 + loadl v2 #17185 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_fheadless + loadl v1 #15028 + loadl v2 #15029 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sadb_loopa + loadl v1 #17126 + loadl v2 #17127 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_bunkbed_top_getup + loadl v1 #15125 + loadl v2 #15126 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_deal_stop_vox + loadl v1 #15107 + loadl v2 #15108 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sadb_loopb + loadl v1 #17128 + loadl v2 #17129 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sadb_loopc + loadl v1 #17130 + loadl v2 #17131 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_pull_hair + loadl v1 #17106 + loadl v2 #17107 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +dice_repair + loadl v1 #15070 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tutorial_lpc_sfx + loadl v1 #15016 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_gift_stompee + loadl v1 #16894 + loadl v2 #16895 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_possee + loadl v1 #16767 + loadl v2 #16768 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_freakee + loadl v1 #16709 + loadl v2 #16710 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_worship + loadl v1 #17270 + loadl v2 #17271 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_tease_kneel + loadl v1 #17216 + loadl v2 #17217 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_swinghc_vox + loadl v1 #16482 + loadl v2 #16483 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_compliment_sit + loadl v1 #16679 + loadl v2 #16680 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_stop + loadl v1 #17312 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_gest + loadl v1 #15153 + loadl v2 #15154 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_berate_sit + loadl v1 #16617 + loadl v2 #16618 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fivee_react_good + loadl v1 #16833 + loadl v2 #16834 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_gift_stomper + loadl v1 #16896 + loadl v2 #16897 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_jazz + loadl v1 #16721 + loadl v2 #16722 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_posser + loadl v1 #15038 + loadl v2 #15039 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_lpc_vox + loadl v1 #15241 + loadl v2 #15242 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_freaker + loadl v1 #16711 + loadl v2 #16712 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_cards_play_sfx + loadl v1 #15007 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_eat_seated + loadl v1 #15139 + loadl v2 #15140 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_cheerupee_start + loadl v1 #16655 + loadl v2 #16656 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_marblee_acc + loadl v1 #16759 + loadl v2 #16760 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_oven_buzzer + loadl v1 #17469 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_cheeruper_pup_start + loadl v1 #15285 + loadl v2 #15286 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +moneyee_rub_hands + loadl v1 #15279 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_armpump + loadl v1 #17172 + loadl v2 #17173 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_insult + loadl v1 #16986 + loadl v2 #16987 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_gametimer_repair_start + loadl v1 #15163 + loadl v2 #15164 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +money_count + loadl v1 #17444 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_watchb_vox + loadl v1 #15093 + loadl v2 #15094 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_break_glass + loadl v1 #17482 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_bet_change + loadl v1 #15258 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_scoreboard_repair + loadl v1 #17140 + loadl v2 #17141 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gamecomp_ball_collide + loadl v1 #17385 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_nav_loopa_vox + loadl v1 #16455 + loadl v2 #16456 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flyhugger_pos_tso + loadl v1 #16862 + loadl v2 #16863 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dancer_invite_tso + loadl v1 #16751 + loadl v2 #16752 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +joblogic_type + loadl v1 #17418 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_cheerupee_pup_neg + loadl v1 #15293 + loadl v2 #15294 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidb_loopa + loadl v1 #16524 + loadl v2 #16525 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidb_loopb + loadl v1 #16526 + loadl v2 #16527 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_exmach_start + loadl v1 #15193 + loadl v2 #15194 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_afraidb_loopc + loadl v1 #16528 + loadl v2 #16529 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_repair_lp + loadl v1 #15005 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +sting_death_fish + loadl v1 #15268 + call #userdata_sting_death_fish + end +] + +BINARY +[ +slotc_lose + loadl v1 #17516 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_foot_stompee + loadl v1 #16874 + loadl v2 #16875 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_puppetee_pet + loadl v1 #15305 + loadl v2 #15306 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_cry + loadl v1 #16691 + loadl v2 #16692 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jar_get_pot + loadl v1 #17405 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_fight_sissyer_taunt + loadl v1 #16829 + loadl v2 #16830 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_guts_remove + loadl v1 #17353 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Game_comp_buzzer + loadl v1 #17376 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sexy_fgrowl + loadl v1 #17148 + loadl v2 #17149 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarket_paper_put + loadl v1 #17529 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dance_break + loadl v1 #16703 + loadl v2 #16704 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flirt_male + loadl v1 #16850 + loadl v2 #16851 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_frustrate_vox + loadl v1 #16405 + loadl v2 #16406 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_attacker_win + loadl v1 #16583 + loadl v2 #16584 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_foot_stomper + loadl v1 #16876 + loadl v2 #16877 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_swingmb_vox + loadl v1 #16486 + loadl v2 #16487 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fart + loadl v1 #16817 + loadl v2 #16818 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_bkcase_lp + loadl v1 #15169 + loadl v2 #15170 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +heart_stomp + loadl v1 #17402 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +compact_open + loadl v1 #17333 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_eyepoke_blockee + loadl v1 #16809 + loadl v2 #16810 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shovee_tso + loadl v1 #17162 + loadl v2 #17163 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groveler_deny_tso + loadl v1 #16938 + loadl v2 #16939 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dancee_stop + loadl v1 #16749 + loadl v2 #16750 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +lot_exit + loadl v1 #15026 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_comp_start + loadl v1 #17491 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +jobmech_fail_vox + loadl v1 #16441 + loadl v2 #16442 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shandshakee + loadl v1 #17154 + loadl v2 #17155 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hat_admire + loadl v1 #15165 + loadl v2 #15166 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_euraka_vox + loadl v1 #16401 + loadl v2 #16402 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tradee_acceptb_start + loadl v1 #17236 + loadl v2 #17237 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_angry + loadl v1 #15221 + loadl v2 #15222 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_eyepoke_blocker + loadl v1 #16811 + loadl v2 #16812 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_bored_stretch + loadl v1 #17028 + loadl v2 #17029 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_can_lp + loadl v1 #15171 + loadl v2 #15172 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +sign_write_lp + loadl v1 #17509 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_nav_start_vox + loadl v1 #16461 + loadl v2 #16462 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_host_idleb + loadl v1 #15052 + loadl v2 #15053 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shandshaker + loadl v1 #17156 + loadl v2 #17157 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_belch + loadl v1 #15269 + loadl v2 #15269 + loadl v3 #15269 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_cry + loadl v1 #17030 + loadl v2 #17031 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_buzzer_read_lp + loadl v1 #15149 + loadl v2 #15150 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_catcall + loadl v1 #16651 + loadl v2 #16652 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_complimentee_tso + loadl v1 #16685 + loadl v2 #16686 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +game_vote_ballot + loadl v1 #17382 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +game_draw_write + loadl v1 #17379 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_trader_rejectb_start + loadl v1 #17254 + loadl v2 #17255 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_scream_pup + loadl v1 #17144 + loadl v2 #17145 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_salute_herioc + loadl v1 #17138 + loadl v2 #17139 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_scat + loadl v1 #16729 + loadl v2 #16730 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_finale_vox + loadl v1 #16403 + loadl v2 #16404 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_angrya_loopa + loadl v1 #16539 + loadl v2 #16540 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_angrya_loopb + loadl v1 #16541 + loadl v2 #16542 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_handkiss_rejectee + loadl v1 #16942 + loadl v2 #16943 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_angrya_loopc + loadl v1 #16543 + loadl v2 #16544 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_backflip + loadl v1 #16593 + loadl v2 #16594 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_compliment_kneel + loadl v1 #16677 + loadl v2 #16678 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +sissy_slap_hands + loadl v1 #17510 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_attacker_tso + loadl v1 #16581 + loadl v2 #16582 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_piledriveea + loadl v1 #17080 + loadl v2 #17081 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_piledriveeb + loadl v1 #17082 + loadl v2 #17083 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +magic_repair + loadl v1 #15277 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vpoker_lpb_sfx + loadl v1 #15019 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tipjar_gett_vox + loadl v1 #16500 + loadl v2 #16501 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_repairb_vox + loadl v1 #16496 + loadl v2 #16497 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_handkiss_rejecter + loadl v1 #16944 + loadl v2 #16945 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_woohoo + loadl v1 #17042 + loadl v2 #17043 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_paper_slot + loadl v1 #17409 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +coin_catch_slap + loadl v1 #17330 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_cboard_start + loadl v1 #17488 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +JobObject_Conveyor_Loop + loadl v1 #17426 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_door_close + loadl v1 #17465 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cardtable_cardscrape + loadl v1 #17304 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +fridge_exp_loop + loadl v1 #15250 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + loop +] + +BINARY +[ +vox_roomater_invite + loadl v1 #17116 + loadl v2 #17117 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_score_stop_vox + loadl v1 #15113 + loadl v2 #15114 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sit_cry + loadl v1 #17178 + loadl v2 #17179 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_coin_flippee_start + loadl v1 #16667 + loadl v2 #16668 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_break_elec + loadl v1 #17481 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_kneel_bored_sigh + loadl v1 #17026 + loadl v2 #17027 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +game_draw_draw + loadl v1 #17377 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_death_marbler_acc + loadl v1 #15032 + loadl v2 #15033 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_order_vox + loadl v1 #16490 + loadl v2 #16491 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Pinata_swingf_vox + loadl v1 #16476 + loadl v2 #16477 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flyhugger_neg_tso + loadl v1 #16860 + loadl v2 #16861 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_attackee_lose + loadl v1 #16577 + loadl v2 #16578 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_complimenter_reject_tso + loadl v1 #16687 + loadl v2 #16688 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hebejebe_a + loadl v1 #16958 + loadl v2 #16959 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +slotb_win + loadl v1 #17515 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vpoker_repair_lp + loadl v1 #15021 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_nails_blowon + loadl v1 #17066 + loadl v2 #17067 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +joblogic_type_load + loadl v1 #17419 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Dice_button_push + loadl v1 #17360 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +pizza_prep_vox + loadl v1 #16492 + loadl v2 #16493 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_ponderb_vox + loadl v1 #16445 + loadl v2 #16446 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_backcrackee_accept + loadl v1 #16585 + loadl v2 #16586 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Jobbody_Light_Flash + loadl v1 #17408 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_rasp_tso + loadl v1 #17108 + loadl v2 #17109 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobbody_weary_vox + loadl v1 #16435 + loadl v2 #16436 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vpoker_start + loadl v1 #15023 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_read_rollup + loadl v1 #17440 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_refuse + loadl v1 #17110 + loadl v2 #17111 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_eyeball_putback + loadl v1 #17347 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_spin_start_vox + loadl v1 #15089 + loadl v2 #15089 + loadl v3 #15089 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dice_repair + loadl v1 #16795 + loadl v2 #16796 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_coinflip_talk + loadl v1 #16673 + loadl v2 #16674 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_deal_idlec_vox + loadl v1 #15103 + loadl v2 #15104 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Conveyer_off + loadl v1 #17335 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +spades_score_lp_sfx + loadl v1 #15013 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +ui_online_sim + loadl v1 #17544 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_talk_eng_vacation + loadl v1 #15225 + loadl v2 #15226 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_can_stop + loadl v1 #17486 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Death_possess_out + loadl v1 #17357 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +chalkb_writeh_vox + loadl v1 #16425 + loadl v2 #16426 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squarea + loadl v1 #16777 + loadl v2 #16778 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squareb + loadl v1 #16779 + loadl v2 #16780 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_food_return_seated + loadl v1 #15147 + loadl v2 #15148 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squarec + loadl v1 #16781 + loadl v2 #16782 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +bunkbed_top_getin + loadl v1 #17293 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_death_squared + loadl v1 #16783 + loadl v2 #16784 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarketer_react_bad_vox + loadl v1 #16512 + loadl v2 #16513 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_complimentee_reject_tso + loadl v1 #16683 + loadl v2 #16684 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squaree + loadl v1 #16785 + loadl v2 #16786 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_shover_tso + loadl v1 #17164 + loadl v2 #17165 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_revitalee + loadl v1 #15040 + loadl v2 #15041 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squaref + loadl v1 #16787 + loadl v2 #16788 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squareg + loadl v1 #16789 + loadl v2 #16790 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_tude + loadl v1 #17256 + loadl v2 #17257 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squareh + loadl v1 #16791 + loadl v2 #16792 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_death_squarei + loadl v1 #16793 + loadl v2 #16794 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boreda_loopa + loadl v1 #16627 + loadl v2 #16628 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarketer_sell_vox + loadl v1 #16516 + loadl v2 #16517 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_boreda_loopb + loadl v1 #16629 + loadl v2 #16630 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gamecomp_hit_med + loadl v1 #17387 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +ui_online_prop + loadl v1 #17543 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_fist_shake + loadl v1 #16831 + loadl v2 #16832 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_airkissee_accept + loadl v1 #16535 + loadl v2 #16536 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_break_wood + loadl v1 #17484 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_nav_defeated_vox + loadl v1 #15064 + loadl v2 #15065 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gametimer_repair_start + loadl v1 #17395 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_groovyc_loopa + loadl v1 #16926 + loadl v2 #16927 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_trader_reject_loop + loadl v1 #17250 + loadl v2 #17251 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovyc_loopb + loadl v1 #16928 + loadl v2 #16929 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_groovyc_loopc + loadl v1 #16930 + loadl v2 #16931 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_make_enemy + loadl v1 #17054 + loadl v2 #17055 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +slotc_wheels_spin + loadl v1 #17517 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_chip_take + loadl v1 #17288 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +repair_medcab_lp + loadl v1 #17500 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cardtable_dealer_deal + loadl v1 #17306 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_kneel_sigh + loadl v1 #17038 + loadl v2 #17039 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_offline_sim + loadl v1 #17542 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +gem_pickaxe_lpb_vox + loadl v1 #15073 + loadl v2 #15074 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tipjar_putf_vox + loadl v1 #16502 + loadl v2 #16503 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cardtable_dealer_shuffle + loadl v1 #17309 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_dancer_reject + loadl v1 #16753 + loadl v2 #16754 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_reader_loopc_vox + loadl v1 #16470 + loadl v2 #16471 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hotdog_receive + loadl v1 #15314 + loadl v2 #15315 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_fhead_remove + loadl v1 #17351 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +roulette_bet_place_vox + loadl v1 #15087 + loadl v2 #15088 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_whyme_cry + loadl v1 #17266 + loadl v2 #17267 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +joblogic_fail_vox + loadl v1 #16437 + loadl v2 #16438 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +stove_bubble + loadl v1 #15263 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + loop +] + +BINARY +[ +chalkb_writee_vox + loadl v1 #16419 + loadl v2 #16420 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jobmech_pipe_bang + loadl v1 #17423 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_insult_sit + loadl v1 #16990 + loadl v2 #16991 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_think_vox + loadl v1 #16409 + loadl v2 #16410 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +soccer_score + loadl v1 #17522 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +cardtable_dealer_unfold + loadl v1 #17313 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_ctrunk_app + loadl v1 #16693 + loadl v2 #16694 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pizza_prep_pep + loadl v1 #17477 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_tradee_rejectb_start + loadl v1 #17242 + loadl v2 #17243 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_food_get_seated + loadl v1 #15143 + loadl v2 #15144 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ctrunk_wlocker_open + loadl v1 #17343 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +piggyb_shakef + loadl v1 #17450 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_puppeter_converse + loadl v1 #15301 + loadl v2 #15302 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_latin_steps + loadl v1 #17044 + loadl v2 #17045 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_stop_sfx + loadl v1 #15006 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +joblogic_fist_pound + loadl v1 #17412 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_kneel_laugha + loadl v1 #17032 + loadl v2 #17033 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kneel_laughb + loadl v1 #17034 + loadl v2 #17035 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_primp_female + loadl v1 #17090 + loadl v2 #17091 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_backcracker_reject + loadl v1 #16591 + loadl v2 #16592 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flirt_sit + loadl v1 #16852 + loadl v2 #16853 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_trader_accepta_start + loadl v1 #17246 + loadl v2 #17247 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +cannonball_pack + loadl v1 #17302 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +blackjack_cards_hit + loadl v1 #17283 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +piggyb_shaket + loadl v1 #17451 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_cboard_start + loadl v1 #15177 + loadl v2 #15178 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_intense + loadl v1 #15227 + loadl v2 #15228 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_fiver_start + loadl v1 #16840 + loadl v2 #16841 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Door_stall_close + loadl v1 #15067 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_psychee + loadl v1 #15265 + loadl v2 #15266 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_kisser_reject + loadl v1 #17012 + loadl v2 #17013 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_kissmyding + loadl v1 #17016 + loadl v2 #17017 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +joblogic_putpaper + loadl v1 #17416 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sit_pout + loadl v1 #17186 + loadl v2 #17187 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_break_enemy + loadl v1 #16643 + loadl v2 #16644 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_puppeter_enta + loadl v1 #15297 + loadl v2 #15298 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_puppeter_entb + loadl v1 #15299 + loadl v2 #15300 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_chin_ticklee + loadl v1 #16661 + loadl v2 #16662 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_writeb_vox + loadl v1 #16413 + loadl v2 #16414 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Death_fhead_putback + loadl v1 #17350 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_heels_click + loadl v1 #16960 + loadl v2 #16961 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +map_reader_celebrate_vox + loadl v1 #16463 + loadl v2 #16464 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_psycher + loadl v1 #15090 + loadl v2 #0 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_chin_tickler + loadl v1 #16663 + loadl v2 #16664 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flyhuggee_pos_tso + loadl v1 #16858 + loadl v2 #16859 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_repair_cboard_stop + loadl v1 #15179 + loadl v2 #15180 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_arroga_loopa + loadl v1 #16561 + loadl v2 #16562 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +joblogic_pullpaper + loadl v1 #17415 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_arroga_loopb + loadl v1 #16563 + loadl v2 #16564 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Conveyer_loop + loadl v1 #17334 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_arroga_loopc + loadl v1 #16565 + loadl v2 #16566 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_ctrunk_dis + loadl v1 #16695 + loadl v2 #16696 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_hearter_pullout + loadl v1 #16956 + loadl v2 #16957 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_inloveb_loopa + loadl v1 #16976 + loadl v2 #16977 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_inloveb_loopb + loadl v1 #16978 + loadl v2 #16979 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_inloveb_loopc + loadl v1 #16980 + loadl v2 #16981 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_talk_anim + loadl v1 #17210 + loadl v2 #17211 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +gem_pickaxe_lpa_sfx + loadl v1 #15002 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +Vox_berate_kneel + loadl v1 #16615 + loadl v2 #16616 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_cheeruper_pup_pos + loadl v1 #15287 + loadl v2 #15288 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_ctrunk_rummagea + loadl v1 #16697 + loadl v2 #16698 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +tmarket_phone_get + loadl v1 #17530 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_ctrunk_rummageb + loadl v1 #16699 + loadl v2 #16700 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roommate_poke + loadl v1 #15257 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_peck_psychee + loadl v1 #17074 + loadl v2 #0 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Puzzle_twoper_open + loadl v1 #17479 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_game_cont_losea + loadl v1 #15044 + loadl v2 #15045 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_cont_loseb + loadl v1 #15046 + loadl v2 #15047 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +spades_deal_start_sfx + loadl v1 #15011 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +npc_bj_cards_hit_vox + loadl v1 #15252 + loadl v2 #15252 + loadl v3 #15252 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_meyepokee + loadl v1 #17058 + loadl v2 #17059 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +ui_offline_prop + loadl v1 #17541 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_stand_boo + loadl v1 #17202 + loadl v2 #17203 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_gmoneyee_accept + loadl v1 #16904 + loadl v2 #16905 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roulette_pay_vox + loadl v1 #15027 + loadl v2 #15027 + loadl v3 #15027 + call #generic_fm_smartlists + end +] + +BINARY +[ +finger_snap + loadl v1 #17369 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_sada_loopa + loadl v1 #17120 + loadl v2 #17121 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_peck_psycher + loadl v1 #17075 + loadl v2 #0 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sada_loopb + loadl v1 #17122 + loadl v2 #17123 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_vote_stop + loadl v1 #15161 + loadl v2 #15162 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_puppeter_start + loadl v1 #15295 + loadl v2 #15296 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_sada_loopc + loadl v1 #17124 + loadl v2 #17125 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_benchpressera + loadl v1 #16609 + loadl v2 #16610 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_benchpresserb + loadl v1 #16611 + loadl v2 #16612 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +Vox_flirt_female + loadl v1 #16846 + loadl v2 #16847 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_meyepoker + loadl v1 #17060 + loadl v2 #17061 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_game_vote_lp + loadl v1 #15157 + loadl v2 #15158 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_typew_start + loadl v1 #17505 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +tmarketee_react_bad_vox + loadl v1 #16506 + loadl v2 #16507 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_dance_rap + loadl v1 #16727 + loadl v2 #16728 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +roulette_watchc_vox + loadl v1 #15095 + loadl v2 #15096 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +pinata_swing_final + loadl v1 #17455 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_repair_can_stop + loadl v1 #15175 + loadl v2 #15176 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_listen_blowoff + loadl v1 #17048 + loadl v2 #17049 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +jar_fill_fruit + loadl v1 #17404 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +vox_wiggle_sexy + loadl v1 #17268 + loadl v2 #17269 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +vox_listen_tso + loadl v1 #17050 + loadl v2 #17051 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +chalkb_hands_rub + loadl v1 #17318 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +map_nav_loopb_vox + loadl v1 #16457 + loadl v2 #16458 + loadl v3 #0 + call #generic_fm_smartlists + end +] + +BINARY +[ +repair_cboard_lp + loadl v1 #17487 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + +BINARY +[ +heart_throwdown + loadl v1 #17403 + smart_setlist v1 + smart_choose v1 + set patch v1 + set_loop + note_on v1 + wait_samp + end +] + + +BINARY +[ +; ENTP + 69 + 78 + 84 + 80 + + #20663 #Vox_huggee_good_tso + #20803 #vox_tradee_reject_loop + #20793 #Vox_tease_sit + #20768 #vox_silly_throwup + #24159 #gametimer_break + #24195 #jobobject_light_flash + #17809 #tutorial_lpa_sfx + #20039 #vox_bunkbed_top_make + #20679 #vox_insultee_tso + #20035 #vox_boo_sit + #20396 #jobmech_success_vox + #20655 #vox_handshakee + #20547 #vox_dance_swingee + #20488 #vox_booer + #24305 #ui_call_rec_next + #20415 #Pinata_swingha_vox + #20689 #Vox_kisser_sweet + #17839 #vox_game_repair + #20435 #vox_afraida_loopa + #24149 #game_piece_put + #20676 #Vox_insult_kneel + #20436 #vox_afraida_loopb + #24190 #jobmech_fuse_slap + #24140 #flower_throw_down + #20759 #vox_sexy_mgrowl + #20437 #vox_afraida_loopc + #20420 #Pinata_swingmc_vox + #20790 #vox_talk_askint + #20094 #vpoker_lpa_vox + #20656 #vox_handshaker + #20548 #vox_dance_swinger + #20093 #vox_teleport_swapskin + #24230 #pizza_appear_close + #24146 #game_draw_place + #20371 #chalkb_erasec_vox + #20365 #nails_file_a + #20366 #nails_file_b + #20398 #nails_file_c + #24185 #joblogic_switch + #24235 #pizza_dough_throw + #20500 #vox_breaker_friendship + #20799 #vox_tickler_extreme + #24120 #Death_guts_putback + #24271 #repair_piano_start + #20455 #vox_armkissee + #20617 #vox_foot_stomp_missera + #20588 #vox_eyepoker_tso + #20618 #vox_foot_stomp_misserb + #20507 #Vox_cheerupee_pos + #20610 #Vox_flyhuggee_neg_tso + #18376 #trashcompact_open + #24209 #map_read_unroll + #24205 #map_read_reada + #20388 #jobbody_success_vox + #24206 #map_read_readb + #20637 #vox_gmoneyer_reject + #24207 #map_read_readc + #20456 #vox_armkisser + #24078 #cardtable_dealer_spin + #20037 #vox_bunkbed_bottom_make + #24274 #repair_typew_stop + #20452 #vox_angryc_loopa + #24154 #gamecomp_hit_hard + #20453 #vox_angryc_loopb + #20454 #vox_angryc_loopc + #17805 #spades_deal_lp + #17815 #vpoker_lpc_sfx + #24236 #pizza_oven_break + #20733 #Vox_proposer_no + #20813 #vox_visitor_kickee + #20727 #vox_pout + #20810 #vox_trader_rejecta_start + #20499 #Vox_breakee_friendship + #17819 #elevator_open + #24287 #smokears + #20609 #Vox_flirt_stand + #20592 #Vox_fight_sissyer_pushee + #24132 #door_turnstile_open + #20369 #blackjack_stay_vox + #24122 #Death_mhead_putback + #24100 #compact_close + #24110 #ctrunk_wlocker_close + #24243 #pizza_prep_dough + #24201 #Latin_feet + #20053 #vox_game_vote_ballot + #20814 #vox_visitor_kicker + #20631 #Vox_giftgetter + #20066 #vox_repair_chess_start + #20059 #vox_hatrack_consider + #20582 #vox_eeeew + #20593 #Vox_fight_sissyer_pusher + #24264 #repair_gnome_lp + #24082 #chalkb_erasea + #24083 #chalkb_eraseb + #24084 #chalkb_erasec + #20581 #vox_drunk + #24085 #chalkb_erased + #20551 #vox_dance_td + #20013 #gem_pickaxe_tired_vox + #24160 #gametimer_button + #20478 #vox_bawl + #20101 #Door_stall_open + #24232 #pizza_appear_raise + #20553 #Vox_dancee_slow_reject + #20815 #vox_vogue + #20031 #spades_score_start_vox + #20924 #foodtray_give_voxnffod + #24109 #ctrunk_scifi_change + #20055 #vox_game_vote_start + #24099 #coin_toss + #24071 #cannonball_pickup + #24293 #tipjar_money_getf + #20800 #vox_tickler_wetself + #20067 #vox_repair_comp_start + #24286 #slotc_win + #20139 #fart_sfx + #20732 #Vox_proposee_yes + #24210 #mic_adjust + #20714 #vox_monologue + #24189 #jobmech_fuse_bang + #20395 #jobmech_ponderc_vox + #20352 #sting_death + #20925 #foodtray_order_voxnffod + #24300 #tmarket_phone_putf + #24294 #tipjar_money_gett + #20778 #vox_sit_shakefist + #24179 #jobbody_push_lever + #20680 #vox_insulter_tso + #20743 #vox_roomater_kickout + #24301 #tmarket_phone_puts + #24156 #gamecomp_hit_soft + #20652 #vox_gymnastic + #24053 #blackjack_cards_shuffle + #20788 #vox_sword_swallow + #24107 #Ctrunk_mlocker_open + #20156 #roulette_spin_stop + #24302 #typewriter_loop + #20820 #vox_yawn_stretch + #20614 #Vox_flyhugger_start_tso + #24262 #repair_easel_start + #24309 #ui_letter_send + #20495 #vox_boredc_loopa + #24158 #gamecomp_target_hit + #20496 #vox_boredc_loopb + #20497 #vox_boredc_loopc + #20041 #vox_chin_ticklee_bat + #20413 #Pinata_start_vox + #20926 #foodtray_greet_voxnffod + #20509 #Vox_cheeruper_pos + #20725 #vox_piledrivera + #20726 #vox_piledriverb + #20476 #Vox_backrubber_refused + #20012 #gem_pickaxe_lpc_vox + #24133 #door_vault_close + #24059 #bunkbed_bottom_getout + #24224 #pinata_swing_hita + #24087 #chalkb_write_final + #24225 #pinata_swing_hitb + #24226 #pinata_swing_hitc + #20025 #spades_deal_idlea_vox + #20051 #vox_game_draw_start + #20642 #vox_groovyb_loopa + #20643 #vox_groovyb_loopb + #20644 #vox_groovyb_loopc + #20501 #vox_brow_wipe + #24304 #ui_call_rec_first + #20382 #chalkb_writef_vox + #24222 #pinata_coins_grab + #24130 #dingbat_kiss + #24050 #blackjack_cards_deal + #20078 #vox_repair_mbull_start + #20659 #vox_heartee_pullout + #20048 #vox_food_give_seated + #20090 #vox_talk_normal + #20772 #vox_sit_bored_sigh + #20092 #vox_teleport_insideout + #20080 #vox_repair_mirror_stop + #24157 #gamecomp_target_full + #20594 #Vox_fight_sissyer_start + #24281 #slotb_lose + #20538 #vox_dance_hiphop + #20433 #tmarketer_react_good_vox + #20867 #vox_cheerupee_pup_pos + #20767 #vox_sigh_weak + #20705 #vox_laugh_happy + #20804 #vox_tradee_rejecta_start + #20734 #Vox_proposer_tso + #20554 #Vox_dancee_slow_stop + #24198 #jobobject_sequencea + #24199 #jobobject_sequenceb + #17835 #vox_game_cont_wina + #24200 #jobobject_sequencec + #17836 #vox_game_cont_winb + #20034 #tutorial_lpc_vox + #20623 #vox_game_cont_idlea + #20624 #vox_game_cont_idleb + #20625 #vox_game_cont_idlec + #20599 #vox_fiver_react_bad + #20405 #map_reader_loopa_vox + #20073 #vox_repair_exmach_stop + #20155 #roulette_spin + #24266 #repair_guitar_start + #20794 #Vox_tease_stand + #24272 #repair_typew_lp + #24234 #pizza_door_open + #20379 #chalkb_writec_vox + #20717 #vox_peck_acceptee + #24242 #pizza_prep_cheese + #20024 #spades_cards_play_vox + #20816 #Vox_whisper_secret + #24131 #door_turnstile_close + #20590 #Vox_fight_sissyee_cower + #24108 #Ctrunk_Scifi_Button + #20549 #vox_dance_tangoee + #24135 #door_vault_open + #20755 #vox_scream_primal + #20074 #vox_repair_gnome_start + #24055 #blackjack_chip_place + #20718 #vox_peck_accepter + #20533 #vox_dance_discoee + #17817 #vpoker_repair_start + #24088 #chalkb_writea + #20430 #tmarketee_react_good_vox + #24089 #chalkb_writeb + #20513 #vox_coin_flippee_lose + #24306 #ui_call_send + #24090 #chalkb_writec + #17820 #lot_enter + #20040 #vox_chin_ticklee_back + #24091 #chalkb_writed + #20550 #vox_dance_tangoer + #24092 #chalkb_writee + #24057 #blackjack_hitme + #24093 #chalkb_writef + #20463 #vox_arrogc_loopb + #24094 #chalkb_writeg + #20531 #vox_dance_belly + #20464 #vox_arrogc_loopc + #24095 #chalkb_writeh + #17855 #scoreboard_repair + #17796 #gem_pickaxe_get + #20375 #chalkb_scratch_vox + #24075 #cardtable_dealer_pickup + #20534 #vox_dance_discoer + #17798 #gem_pickaxe_lpb_sfx + #20923 #foodtray_loop_voxnffod + #20584 #vox_evil_laugh + #24151 #game_vote_scribblea + #24152 #game_vote_scribbleb + #24058 #bunkbed_bottom_getin + #20880 #vox_puppeter_get_petted + #24211 #mic_tap + #24175 #jar_seal + #24052 #blackjack_cards_pickup + #20510 #Vox_cheeruper_start + #24227 #pinata_swing_missa + #20667 #vox_inlovea_loopa + #20359 #map_nav_loopa + #24228 #pinata_swing_missb + #20668 #vox_inlovea_loopb + #20471 #vox_backcracker_accept + #20153 #roulette_bet_place_sfx + #20360 #map_nav_loopb + #24229 #pinata_swing_missc + #20669 #vox_inlovea_loopc + #20361 #map_nav_loopc + #20621 #vox_friend_makee + #20632 #Vox_giftgiver + #20404 #map_reader_defeated_vox + #24136 #eyepoke + #20542 #vox_dance_jitteree + #24297 #tmarket_paper_get + #20791 #Vox_tantrum + #20043 #vox_chin_tickler_bat + #24269 #repair_mirror_lp + #24267 #repair_mbull_lp + #20796 #vox_ticklee_extreme + #20740 #vox_roomatee_invite + #20649 #vox_grovelee_deny_tso + #20750 #vox_sadc_loopa + #20622 #vox_friend_maker + #20751 #vox_sadc_loopb + #24253 #repair_can_lp + #20752 #Vox_sadc_loopc + #20806 #vox_trader_accept_loop + #20691 #vox_kneel_armpump + #20537 #vox_dance_groove + #20385 #jobbody_fail_vox + #24270 #repair_piano_lp + #20428 #tipjar_putt_vox + #20543 #vox_dance_jitterer + #20425 #tipjar_getf_vox + #20079 #vox_repair_mbull_stop + #20401 #map_nav_loopc_vox + #24196 #jobobject_loop + #20666 #Vox_hugger_refuse_tso + #20397 #map_nav_celebrate_vox + #24043 #Backdrop_start + #20069 #vox_repair_dcage_start + #17810 #tutorial_lpb_sfx + #20587 #vox_eyepokee + #20445 #vox_airkisser_accept + #20083 #vox_repair_typew_start + #20583 #vox_entrance + #20416 #Pinata_swinghb_vox + #20682 #vox_joke_tell + #20521 #Vox_compliment_stand + #20603 #vox_flex_musclea + #20133 #npc_bj_cards_dhit_vox + #20099 #vox_flex_muscleb + #20046 #vox_flex_musclec + #24292 #tapdance_feet + #20683 #vox_juggler_stop + #20095 #vpoker_lpb_vox + #24079 #cardtable_dealer_start + #24231 #pizza_appear_open + #20700 #vox_kneel_pout + #20489 #vox_bored_check_watch + #20786 #vox_stand_laugha + #20787 #vox_stand_laughb + #20441 #vox_afraidc_loopa + #20442 #vox_afraidc_loopb + #24308 #ui_letter_rec + #20368 #blackjack_hitme_vox + #20443 #vox_afraidc_loopc + #17795 #gem_break + #17807 #spades_pickup_hand_sfx + #20664 #Vox_huggee_refuse_tso + #24303 #ui_call_q_full + #24105 #crackback_crack + #20021 #roulette_watcha_vox + #24248 #repair_bkcase_lp + #24124 #Death_possess_in + #20626 #vox_giddy + #24263 #repair_exmach_lp + #24181 #joblogic_getpaper + #24188 #joblogic_typeswitch + #24168 #hatrack_hat_take + #20016 #gem_start_vox + #24258 #repair_comp_lp + #20769 #Vox_sing_serenade_short + #20135 #npc_bj_chip_give_vox + #20797 #vox_ticklee_wetself + #24164 #giddy_footsteps + #20362 #coin_catch + #20561 #vox_death_marblee_rej + #20081 #vox_repair_piano_start + #20154 #roulette_pay_sfx + #24295 #tipjar_money_putf + #20418 #Pinata_swingma_vox + #24192 #jobmech_pipe_break + #20076 #vox_repair_guitar_start + #20552 #vox_dancee_reject + #24123 #Death_mhead_remove + #20658 #vox_headspin + #20370 #chalkb_erasea_vox + #20686 #Vox_kissee_sweet + #20546 #vox_dance_sultry_acceptee + #20516 #vox_coin_flipper_start + #24296 #tipjar_money_putt + #20741 #vox_roomatee_kickout + #20014 #gem_repair_start_vox + #17803 #spades_cards_stop_sfx + #20449 #vox_angryb_loopa + #24261 #repair_easel_lp + #20450 #vox_angryb_loopb + #20927 #vox_hotdog_choose + #20451 #vox_angryb_loopc + #24169 #heart_pullout + #24282 #slotb_wheels_spin + #20665 #Vox_hugger_good_tso + #20721 #vox_peck_rejectee + #20030 #spades_score_lp_vox + #24257 #repair_chess_lp + #24069 #cannonball_load + #20518 #Vox_compliment_appreciate + #20687 #Vox_kisser_passion_tso + #20470 #vox_backcrackee_reject + #20866 #vox_cheeruper_pup_neg + #20760 #vox_shakefist + #20367 #blackjack_cards_check_vox + #20722 #vox_peck_rejecter + #20798 #vox_tickler_ext_reject + #20475 #Vox_backrubbee_stop + #20713 #vox_model + #20431 #tmarketee_sell_vox + #17813 #vpoker_lpa_sfx + #20638 #vox_greet_wave_tso + #20515 #vox_coin_flipper_lose + #20042 #vox_chin_tickler_back + #20423 #pizza_repaira_vox + #20412 #Pinata_celebrate_vox + #20779 #vox_sit_sigh + #20598 #vox_fivee_reject + #17838 #vox_game_host_read + #24166 #hat_head_on + #20474 #Vox_backrubbee_refused + #20411 #logo_intel_filtered + #24182 #joblogic_handlepull + #20685 #Vox_kissee_reject + #20071 #vox_repair_easel_stop + #24165 #hat_head_off + #24117 #Death_fhead_dribble + #20692 #vox_kneel_booa + #20693 #vox_kneel_boob + #20694 #vox_kneel_booc + #20098 #vox_muscle_kiss + #20636 #vox_gmoneyer_accept + #20702 #vox_kneel_wipebrow + #20801 #vox_tradee_accept_loop + #20784 #Vox_smokears + #20729 #vox_primp_male + #20567 #vox_death_spookee + #20681 #vox_joke_respond_pos + #20091 #vox_talk_subtle + #24112 #Ctrunk_wlockerq_close + #20077 #vox_repair_mbull_lp + #24042 #backdrop_pull + #20795 #vox_ticklee_ext_reject + #20075 #vox_repair_gnome_stop + #20084 #vox_repair_typew_stop + #24096 #click_heels + #20633 #vox_giggle + #24251 #repair_break_metal + #20780 #vox_sit_wipebrow + #17832 #vox_death_spooker + #20684 #vox_kickfloor + #19455 #foot_stomp + #24116 #Death_eyeball_remove + #24244 #pizza_prep_mush + #20134 #npc_bj_win_declare_vox + #20017 #gem_stop_vox + #20606 #Vox_flirt_kneel + #24062 #bunkbed_top_getout + #20410 #logo_intel + #20708 #vox_lookatme + #20387 #jobbody_paperget_vox + #20393 #jobmech_pondera_vox + #24174 #jar_put_crate + #20781 #vox_sit_woohoo + #20579 #vox_dipkissee + #24161 #gametimer_buzzer + #20364 #vpoker_repair_stop + #17840 #vox_sit_bored_stretch + #24139 #flower_stomp + #24193 #jobmech_trans_bang + #20358 #sissy_slap_shoulders + #24060 #Bunkbed_step_wood + #20026 #spades_deal_idleb_vox + #20070 #vox_repair_easel_start + #20492 #vox_boredb_loopa + #20493 #vox_boredb_loopb + #20494 #vox_boredb_loopc + #20580 #vox_dipkisser + #17828 #vox_death_marbler_rej + #24054 #blackjack_chip_give + #20036 #vox_bunkbed_bottom_getup + #20386 #jobbody_getin_vox + #20757 #Vox_scream_startled + #20383 #chalkb_writeg_vox + #20650 #vox_groveler_accept_tso + #24134 #door_vault_lock + #24073 #cardtable_dealer_brush + #24114 #Death_eyeball_collide + #24246 #Puzzle_twoper_close + #20639 #vox_groovya_loopa + #20640 #vox_groovya_loopb + #20641 #vox_groovya_loopc + #20716 #vox_nails_file + #20350 #fridge_med_loop + #20044 #vox_dance_popstar + #20487 #Vox_blowkiss + #20479 #vox_benchpresseea + #19890 #gem_pickaxe_lpa_vox + #20480 #vox_benchpresseeb + #24279 #sissy_slap_head + #20648 #vox_grovelee_accept_tso + #17812 #tutorial_start + #20486 #Vox_berate_stand + #20627 #Vox_gift_appreciatee + #20922 #foodtray_start_voxnffod + #24275 #scoreboard_button + #20406 #map_reader_loopb_vox + #24239 #pizza_oven_repaira + #20028 #spades_deal_start_vox + #24240 #pizza_oven_repairb + #24238 #pizza_oven_put + #24241 #pizza_oven_repairc + #17823 #balloons_pop + #20380 #chalkb_writed_vox + #20628 #Vox_gift_appreciater + #20808 #vox_trader_acceptb_start + #17826 #vox_death_guts + #24126 #Death_spooka + #24113 #ctrunk_wlockerq_open + #20391 #joblogic_success_vox + #24127 #Death_spookb + #20771 #vox_sit_boo + #20657 #vox_happy_woohoo + #24104 #Conveyer_on + #17829 #vox_death_mheadless + #20539 #vox_dance_hustlee + #24063 #butt_kick + #20466 #vox_attackee_win + #24106 #Ctrunk_mlocker_close + #20105 #fruit_pot_stir + #24197 #jobobject_paper_appear + #17842 #vox_dance_tapfunk + #20730 #Vox_proposee_no + #20068 #vox_repair_comp_stop + #20085 #vox_sign_write_stop + #20635 #vox_gmoneyee_reject + #20087 #vox_talk_eng_sports + #24220 #piledrivea + #24221 #piledriveb + #20540 #vox_dance_hustler + #20082 #vox_repair_piano_stop + #17799 #gem_pickaxe_lpc_sfx + #20591 #Vox_fight_sissyee_start + #24076 #cardtable_dealer_putdown + #20033 #tutorial_lpa_vox + #20349 #fridge_cheap_loop + #24260 #repair_dcage_lp + #24162 #gametimer_repair_lp + #20477 #Vox_backrubber_stop + #20015 #gem_repair_stop_vox + #24307 #ui_letter_q_full + #20460 #vox_arrogb_loopa + #24178 #jobbody_pull_lever + #20461 #vox_arrogb_loopb + #20710 #vox_meltdown + #20462 #vox_arrogb_loopc + #20525 #vox_complimentor_tso + #20377 #chalkb_writea_vox + #20763 #vox_shove_blockee + #20731 #Vox_proposee_think + #17804 #spades_collect_cards_sfx + #20678 #Vox_insult_stand + #20673 #vox_inlovec_loopb + #20674 #vox_inlovec_loopc + #24143 #fruit_pot_put + #24148 #game_piece_get + #20782 #vox_slapfightee + #18377 #trashcompact_close + #20483 #vox_berate + #20600 #vox_fiver_react_good + #20615 #vox_foot_stomp_misseea + #20616 #vox_foot_stomp_misseeb + #24217 #phone_ring_pizza + #20062 #vox_repair_can_start + #20764 #vox_shove_blocker + #24167 #hatrack_hat_put + #20097 #vpoker_repair_vox + #24265 #repair_guitar_lp + #20783 #vox_slapfighter + #24138 #fiver_clap + #20774 #vox_sit_laugha + #20775 #vox_sit_laughb + #24142 #fruit_chop + #20776 #vox_sit_laughc + #17825 #vox_death_fheadless + #20747 #vox_sadb_loopa + #20038 #vox_bunkbed_top_getup + #20029 #spades_deal_stop_vox + #20748 #vox_sadb_loopb + #20749 #vox_sadb_loopc + #20737 #vox_pull_hair + #17856 #dice_repair + #17811 #tutorial_lpc_sfx + #20629 #Vox_gift_stompee + #20564 #vox_death_possee + #20535 #vox_dance_freakee + #20819 #vox_worship + #20792 #Vox_tease_kneel + #20417 #Pinata_swinghc_vox + #20520 #vox_compliment_sit + #24080 #cardtable_dealer_stop + #20052 #vox_game_gest + #20485 #Vox_berate_sit + #20597 #vox_fivee_react_good + #20630 #Vox_gift_stomper + #20541 #vox_dance_jazz + #17830 #vox_death_posser + #20096 #vpoker_lpc_vox + #20536 #vox_dance_freaker + #17802 #spades_cards_play_sfx + #20045 #vox_eat_seated + #20508 #Vox_cheerupee_start + #20560 #vox_death_marblee_acc + #24237 #pizza_oven_buzzer + #20864 #vox_cheeruper_pup_start + #20363 #moneyee_rub_hands + #20770 #vox_sit_armpump + #20675 #vox_insult + #20057 #vox_gametimer_repair_start + #24212 #money_count + #20022 #roulette_watchb_vox + #24250 #repair_break_glass + #20152 #roulette_bet_change + #20754 #vox_scoreboard_repair + #24153 #gamecomp_ball_collide + #20399 #map_nav_loopa_vox + #20613 #Vox_flyhugger_pos_tso + #20556 #vox_dancer_invite_tso + #24186 #joblogic_type + #20875 #vox_cheerupee_pup_neg + #20438 #vox_afraidb_loopa + #20439 #vox_afraidb_loopb + #20072 #vox_repair_exmach_start + #20440 #vox_afraidb_loopc + #17800 #gem_repair_lp + #20353 #sting_death_fish + #24284 #slotc_lose + #20619 #vox_foot_stompee + #20881 #vox_puppetee_pet + #20526 #vox_cry + #24173 #jar_get_pot + #20595 #Vox_fight_sissyer_taunt + #24121 #Death_guts_remove + #24144 #Game_comp_buzzer + #20758 #vox_sexy_fgrowl + #24298 #tmarket_paper_put + #20532 #vox_dance_break + #20607 #Vox_flirt_male + #20374 #chalkb_frustrate_vox + #20468 #vox_attacker_win + #20620 #vox_foot_stomper + #20419 #Pinata_swingmb_vox + #20589 #vox_fart + #20060 #vox_repair_bkcase_lp + #24170 #heart_stomp + #24101 #compact_open + #20585 #vox_eyepoke_blockee + #20765 #vox_shovee_tso + #20651 #vox_groveler_deny_tso + #20555 #vox_dancee_stop + #17821 #lot_exit + #24259 #repair_comp_start + #20392 #jobmech_fail_vox + #20761 #vox_shandshakee + #20058 #vox_hat_admire + #20372 #chalkb_euraka_vox + #20802 #vox_tradee_acceptb_start + #20086 #vox_talk_angry + #20586 #vox_eyepoke_blocker + #20696 #vox_kneel_bored_stretch + #20061 #vox_repair_can_lp + #24277 #sign_write_lp + #20402 #map_nav_start_vox + #17837 #vox_game_host_idleb + #20762 #vox_shandshaker + #20356 #vox_belch + #20697 #vox_kneel_cry + #20050 #vox_game_buzzer_read_lp + #20506 #Vox_catcall + #20523 #vox_complimentee_tso + #24150 #game_vote_ballot + #24147 #game_draw_write + #20811 #vox_trader_rejectb_start + #20756 #vox_scream_pup + #20753 #vox_salute_herioc + #20545 #vox_dance_scat + #20373 #chalkb_finale_vox + #20446 #vox_angrya_loopa + #20447 #vox_angrya_loopb + #20653 #vox_handkiss_rejectee + #20448 #vox_angrya_loopc + #20473 #vox_backflip + #20519 #Vox_compliment_kneel + #24278 #sissy_slap_hands + #20467 #vox_attacker_tso + #20723 #vox_piledriveea + #20724 #vox_piledriveeb + #18379 #magic_repair + #17814 #vpoker_lpb_sfx + #20426 #tipjar_gett_vox + #20424 #pizza_repairb_vox + #20654 #vox_handkiss_rejecter + #20703 #vox_kneel_woohoo + #24177 #jobbody_paper_slot + #24098 #coin_catch_slap + #24256 #repair_cboard_start + #24194 #JobObject_Conveyor_Loop + #24233 #pizza_door_close + #24072 #cardtable_cardscrape + #20351 #fridge_exp_loop + #20742 #vox_roomater_invite + #20032 #spades_score_stop_vox + #20773 #vox_sit_cry + #20514 #vox_coin_flippee_start + #24249 #repair_break_elec + #20695 #vox_kneel_bored_sigh + #24145 #game_draw_draw + #17827 #vox_death_marbler_acc + #20421 #pizza_order_vox + #20414 #Pinata_swingf_vox + #20612 #Vox_flyhugger_neg_tso + #20465 #vox_attackee_lose + #20524 #vox_complimenter_reject_tso + #20661 #vox_hebejebe_a + #24283 #slotb_win + #17816 #vpoker_repair_lp + #20715 #vox_nails_blowon + #24187 #joblogic_type_load + #24128 #Dice_button_push + #20422 #pizza_prep_vox + #20394 #jobmech_ponderb_vox + #20469 #vox_backcrackee_accept + #24176 #Jobbody_Light_Flash + #20738 #vox_rasp_tso + #20389 #jobbody_weary_vox + #17818 #vpoker_start + #24208 #map_read_rollup + #20739 #vox_refuse + #24115 #Death_eyeball_putback + #20019 #roulette_spin_start_vox + #20578 #vox_dice_repair + #20517 #vox_coinflip_talk + #20027 #spades_deal_idlec_vox + #24103 #Conveyer_off + #17808 #spades_score_lp_sfx + #24313 #ui_online_sim + #20088 #vox_talk_eng_vacation + #24254 #repair_can_stop + #24125 #Death_possess_out + #20384 #chalkb_writeh_vox + #20569 #vox_death_squarea + #20570 #vox_death_squareb + #20049 #vox_food_return_seated + #20571 #vox_death_squarec + #24061 #bunkbed_top_getin + #20572 #vox_death_squared + #20432 #tmarketer_react_bad_vox + #20522 #Vox_complimentee_reject_tso + #20573 #vox_death_squaree + #20766 #vox_shover_tso + #17831 #vox_death_revitalee + #20574 #vox_death_squaref + #20575 #vox_death_squareg + #20812 #vox_tude + #20576 #vox_death_squareh + #20577 #vox_death_squarei + #20490 #vox_boreda_loopa + #20434 #tmarketer_sell_vox + #20491 #vox_boreda_loopb + #24155 #gamecomp_hit_med + #24312 #ui_online_prop + #20596 #Vox_fist_shake + #20444 #vox_airkissee_accept + #24252 #repair_break_wood + #17824 #map_nav_defeated_vox + #24163 #gametimer_repair_start + #20645 #vox_groovyc_loopa + #20809 #vox_trader_reject_loop + #20646 #vox_groovyc_loopb + #20647 #vox_groovyc_loopc + #20709 #vox_make_enemy + #24285 #slotc_wheels_spin + #24056 #blackjack_chip_take + #24268 #repair_medcab_lp + #24074 #cardtable_dealer_deal + #20701 #vox_kneel_sigh + #24311 #ui_offline_sim + #20011 #gem_pickaxe_lpb_vox + #20427 #tipjar_putf_vox + #24077 #cardtable_dealer_shuffle + #20557 #vox_dancer_reject + #20407 #map_reader_loopc_vox + #20928 #vox_hotdog_receive + #24119 #Death_fhead_remove + #20018 #roulette_bet_place_vox + #20817 #vox_whyme_cry + #20390 #joblogic_fail_vox + #20348 #stove_bubble + #20381 #chalkb_writee_vox + #24191 #jobmech_pipe_bang + #20677 #Vox_insult_sit + #20376 #chalkb_think_vox + #24290 #soccer_score + #24081 #cardtable_dealer_unfold + #20527 #vox_ctrunk_app + #24245 #pizza_prep_pep + #20805 #vox_tradee_rejectb_start + #20047 #vox_food_get_seated + #24111 #ctrunk_wlocker_open + #24218 #piggyb_shakef + #20879 #vox_puppeter_converse + #20704 #vox_latin_steps + #17801 #gem_stop_sfx + #24180 #joblogic_fist_pound + #20698 #vox_kneel_laugha + #20699 #vox_kneel_laughb + #20728 #vox_primp_female + #20472 #vox_backcracker_reject + #20608 #Vox_flirt_sit + #20807 #vox_trader_accepta_start + #24070 #cannonball_pack + #24051 #blackjack_cards_hit + #24219 #piggyb_shaket + #20064 #vox_repair_cboard_start + #20089 #vox_talk_intense + #20601 #vox_fiver_start + #20102 #Door_stall_close + #19456 #vox_psychee + #20688 #Vox_kisser_reject + #20690 #vox_kissmyding + #24184 #joblogic_putpaper + #20777 #vox_sit_pout + #20498 #vox_break_enemy + #20877 #vox_puppeter_enta + #20878 #vox_puppeter_entb + #20511 #vox_chin_ticklee + #20378 #chalkb_writeb_vox + #24118 #Death_fhead_putback + #20662 #vox_heels_click + #20403 #map_reader_celebrate_vox + #20020 #vox_psycher + #20512 #vox_chin_tickler + #20611 #Vox_flyhuggee_pos_tso + #20065 #vox_repair_cboard_stop + #20457 #vox_arroga_loopa + #24183 #joblogic_pullpaper + #20458 #vox_arroga_loopb + #24102 #Conveyer_loop + #20459 #vox_arroga_loopc + #20528 #vox_ctrunk_dis + #20660 #vox_hearter_pullout + #20670 #vox_inloveb_loopa + #20671 #vox_inloveb_loopb + #20672 #vox_inloveb_loopc + #20789 #vox_talk_anim + #17797 #gem_pickaxe_lpa_sfx + #20484 #Vox_berate_kneel + #20865 #vox_cheeruper_pup_pos + #20529 #vox_ctrunk_rummagea + #24299 #tmarket_phone_get + #20530 #vox_ctrunk_rummageb + #20151 #roommate_poke + #20719 #vox_peck_psychee + #24247 #Puzzle_twoper_open + #17833 #vox_game_cont_losea + #17834 #vox_game_cont_loseb + #17806 #spades_deal_start_sfx + #20132 #npc_bj_cards_hit_vox + #20711 #vox_meyepokee + #24310 #ui_offline_prop + #20785 #vox_stand_boo + #20634 #vox_gmoneyee_accept + #17822 #roulette_pay_vox + #24137 #finger_snap + #20744 #vox_sada_loopa + #20720 #vox_peck_psycher + #20745 #vox_sada_loopb + #20056 #vox_game_vote_stop + #20876 #vox_puppeter_start + #20746 #vox_sada_loopc + #20481 #vox_benchpressera + #20482 #vox_benchpresserb + #20605 #Vox_flirt_female + #20712 #vox_meyepoker + #20054 #vox_game_vote_lp + #24273 #repair_typew_start + #20429 #tmarketee_react_bad_vox + #20544 #vox_dance_rap + #20023 #roulette_watchc_vox + #24223 #pinata_swing_final + #20063 #vox_repair_can_stop + #20706 #vox_listen_blowoff + #24172 #jar_fill_fruit + #20818 #vox_wiggle_sexy + #20707 #vox_listen_tso + #24086 #chalkb_hands_rub + #20400 #map_nav_loopb_vox + #24255 #repair_cboard_lp + #24171 #heart_throwdown + + + ; EENT + 69 + 69 + 78 + 84 +] + +BINARY +[ +;note_on equ 2 +;v1 equ 5 +;wait_samp equ 11 +;end equ 12 +;loop equ 32 + +Generic + note_on v1 + wait_samp + end + +GenericLooped + note_on v1 + wait_samp + loop + end + +GenericInterrupt + loadb interrupt 1 + note_on v1 + wait_samp + end + +; Heeeeeere's a useful one. v1 and v2 are female and male hitlist ID's, respectively +; This track chooses the smartlist based on gender, picks a patch from that smartlist, +; plays it. It also kills anything else the instance (person) is saying. +; New! Now works for kids! v3 = kid smartlist + +generic_fm_smartlists + ; Kill this actor's vocals + seqgroup_kill Instance + + ; If it's male then redo it for male + loadb v7 0 ;v7 = field ID (0 = gender) + getsrcdatafield v7 arg1 v7 ;arg1 = source ID + ; if gender is 0 then use v1 is correct (male) + ifeq #_gotit + ; otherwise set v1 to female list + set v1 v2 + ; if gender == 1 then v1 is correct (female) + loadb v6 1 + cmp v7 v6 + ifeq #_gotit + ; it's a kid - set v1 to kid smartlist + set v1 v3 +_gotit + ; v1 = smartlist id + test v1 + ifeq #generic_fm_smartlists_end + smart_setlist v1 + smart_choose v1 + set patch v1 + note_on v1 + wait_samp +generic_fm_smartlists_end + end +] + diff --git a/Tools/hitutils/elf.dat b/Tools/hitutils/elf.dat new file mode 100644 index 0000000000000000000000000000000000000000..fcf6fa759b6ecd7d9d4517c7be2e80da1f3bfbab GIT binary patch literal 304 zcmb<-^>JflWMqH=5DUR$U~qu)O~48?7}yw?z${V;n7M2?G{Wp;2g) +#include #include +#include +#include +#include +#include "hitutils.h" + +static uint8_t ObjectHeader[] = { + 0x7F, 0x45, 0x4C, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, + 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 +}; + +enum { + txt, out, filecount +}; + +typedef struct { + uint8_t * Data; + size_t Position; + size_t Size; + char * Name; +} ByteWriterContext; + +static void bw_expand(ByteWriterContext *bwc){ + bwc->Data = realloc(bwc->Data, (bwc->Size <<= 1)); + if(!bwc->Data) + Shutdown_M("%sCould not allocate memory for %s section.\n", "hitasm: Error: ", bwc->Name); +} + +static void bw_write32(ByteWriterContext *bwc, uint32_t value){ + if(bwc->Size-bwc->Position < 4) + bw_expand(bwc); + write_uint32(bwc->Data+bwc->Position, value); + bwc->Position += 4; +} + +static void bw_write8(ByteWriterContext *bwc, uint8_t value){ + if(bwc->Size-bwc->Position < 1) + bw_expand(bwc); + bwc->Data[bwc->Position] = value; + bwc->Position += 1; +} + +static void bw_write_memory(ByteWriterContext *bwc, const uint8_t *ptr, size_t size){ + while(bwc->Size-bwc->Position < size) + bw_expand(bwc); + do bwc->Data[bwc->Position++] = *ptr++; + while(--size); +} + +static void bw_write_string(ByteWriterContext *bwc, const char *string){ + do bw_write8(bwc, *string); + while(*string++); +} + +typedef struct { + char * Token; + size_t Line, NextLine; + size_t Col, NextCol; + int GaveLastToken; + ByteReaderContext brc; +} ParserContext; + +enum { + TK_CROSSLINES = 1, + CN_LABELONLY = 1 +}; + +static FILE *hFile = NULL; +static char *path[filecount] = {NULL}; +static uint8_t *data[filecount] = {NULL}; +static ByteWriterContext TextSection = {0,0,1024,"text"}; +static ByteWriterContext SymbolTable = {0,0,1024,"symtab"}; +static ByteWriterContext StringTable = {0,0,1024,"strtab"}; +static ByteWriterContext RelocationTable = {0,0,1024,".rel.text"}; + +static uint8_t * add_symbol(const char * Name){ + bw_write32(&SymbolTable, StringTable.Position); + bw_write32(&SymbolTable, 0); + bw_write32(&SymbolTable, 0); + bw_write32(&SymbolTable, 18); + bw_write_string(&StringTable, Name); + return SymbolTable.Data + SymbolTable.Position - 16; +} + +static uint8_t * find_symbol_by_name(const char * Name, uint32_t * SymbolIndex){ + uint32_t p; + for(p=48; p>4; + return SymbolTable.Data + p; + } + } + + if(SymbolIndex) *SymbolIndex = p>>4; + return NULL; +} + +static __inline int whitespace(const uint8_t *Data){ + return (Data[0] == ' ' || Data[0] == '\t' || Data[0] == '\r' || Data[0] == '\n' || Data[0] == '\0'); +} + +static __inline int comment(const uint8_t *Data){ + return (Data[0] == ';' || (Data[0] == '#' && whitespace(Data+1))); +} + +static int parser_next_token(ParserContext *pc, int CrossLines){ + if(!pc->brc.Size) return 0; + + if(pc->GaveLastToken){ + pc->GaveLastToken = 0; + /* find the start of the next token */ + while(1){ + if(whitespace(pc->brc.Data)){ + if(pc->brc.Data[0] == '\n'){ + pc->NextLine++; pc->NextCol = 1; + }else if(pc->brc.Data[0] == '\t'){ + pc->NextCol += 4 - ((pc->NextCol-1)%4); + }else{ + pc->NextCol++; + } + }else if(comment(pc->brc.Data)){ + /* skip to the end of the line */ + pc->NextLine++; pc->NextCol = 1; + do { + if(!--pc->brc.Size) return 0; + pc->brc.Data++; + } while(pc->brc.Data[0] != '\n'); + }else break; + + if(!--pc->brc.Size) return 0; + pc->brc.Data++; + } + } + if(!CrossLines && pc->Line != pc->NextLine) return 0; + pc->Token = (char*)pc->brc.Data; + pc->Line = pc->NextLine; + pc->Col = pc->NextCol++; + pc->GaveLastToken = 1; + + /* mark the end of this token with a null character */ + while(1){ + if(!--pc->brc.Size) return 1; + pc->brc.Data++; + + if(whitespace(pc->brc.Data)){ + if(pc->brc.Data[0] == '\n'){ + pc->NextLine++; pc->NextCol = 1; + }else if(pc->brc.Data[0] == '\t'){ + pc->NextCol += 4 - ((pc->NextCol-1)%4); + }else{ + pc->NextCol++; + } + break; + }else if(comment(pc->brc.Data)){ + /* skip to the end of the line */ + pc->NextLine++; pc->NextCol = 1; + do { + if(!--pc->brc.Size) return 1; + pc->brc.Data++; + } while(pc->brc.Data[0] != '\n'); + break; + }else pc->NextCol++; + } + pc->brc.Size--; + pc->brc.Data[0] = '\0'; + pc->brc.Data++; + + return 1; +} + +static __inline void verify_eol(ParserContext *pc){ + if(parser_next_token(pc, 0)) + Shutdown_M("%s:%u:%u: error: expected newline before '%s'\n", + path[txt], pc->Line, pc->Col, pc->Token); +} + +static void verify_name(const ParserContext *pc, const char *thistoken, const char *nexttoken){ + const char *Name; + for(Name = pc->Token; *Name; Name++) + if((Name == pc->Token || *Name < '0' || *Name > '9') + && (*Name < 'A' || *Name > 'Z') && (*Name < '_' || *Name > '_') && (*Name < 'a' || *Name > 'z')) + Shutdown_M("%s:%u:%u: error: expected %s before '%c'\n", + path[txt], pc->Line, pc->Col, (Name == pc->Token) ? thistoken : nexttoken, *Name); +} + +static __inline void parser_add_symbol(const ParserContext *pc){ + uint8_t * Symbol; + verify_name(pc, "label or integer constant", "newline"); + + /* we're using the ELF st_size field (offset 8) to hold the line number temporarily */ + Symbol = find_symbol_by_name(pc->Token, NULL); + if(Symbol){ + if(read_uint32(Symbol+4)) + Shutdown_M("%s:%u:%u: error: label '%s' redefined (previous definition at %s:%u:1)\n", + path[txt], pc->Line, pc->Col, pc->Token, path[txt], read_uint32(Symbol+8)); + }else Symbol = add_symbol(pc->Token); + + write_uint32(Symbol+4, TextSection.Position); + write_uint32(Symbol+8, pc->Line); +} + +static __inline void parser_add_reference(const ParserContext *pc){ + uint32_t SymbolIndex; + verify_name(pc, "label", "operand or newline"); + + if(!find_symbol_by_name(pc->Token, &SymbolIndex)) + add_symbol(pc->Token); + + bw_write32(&RelocationTable, TextSection.Position); + bw_write32(&RelocationTable, (SymbolIndex<<8)|0x02); +} + +static uint32_t read_integer(const ParserContext *pc, uint32_t maxval){ + unsigned long value; + char * endptr; + + if(pc->Token[0] == '-') + Shutdown_M("%s:%u:%u: error: integer constant '%s' may not be negative\n", + path[txt], pc->Line, pc->Col, pc->Token); + if(pc->Token[0] < '0' || pc->Token[0] > '9') + Shutdown_M("%s:%u:%u: error: expected integer constant before '%s'\n", + path[txt], pc->Line, pc->Col, pc->Token); + if(pc->Token[0] == '0' && (pc->Token[1] == 'x' || pc->Token[1] == '0' || pc->Token[1] == 'o')) + Shutdown_M("%s:%u:%u: error: illegal %s prefix '%s%c' on integer constant '%s'\n", + path[txt], pc->Line, pc->Col, pc->Token[1] == 'x' ? "hexadecimal" : "octal", + pc->Token[1] != '0' ? "0" : "", pc->Token[1], pc->Token); + + value = strtoul(pc->Token, &endptr, 10); + if(*endptr == '.') + Shutdown_M("%s:%u:%u: error: illegal floating point constant '%s'\n", + path[txt], pc->Line, pc->Col, endptr, pc->Token); + if(*endptr != '\0') + Shutdown_M("%s:%u:%u: error: illegal suffix '%s' on integer constant '%s'\n", + path[txt], pc->Line, pc->Col, endptr, pc->Token); + if(value > (unsigned long) maxval || errno == ERANGE) + Shutdown_M("%s:%u:%u: error: integer constant '%s' is out of range\n", + path[txt], pc->Line, pc->Col, pc->Token); + + return (uint32_t)value; +} + +static uint32_t read_constant(ParserContext *pc, int Type, uint32_t maxval){ + unsigned i; + if(pc->Token[0] == '#') /* note that the tokens "#" and "" will never be returned by the parser */ + pc->Token++; + + if((pc->Token[0] >= '0' && pc->Token[0] <= '9') || pc->Token[0] == '-' || pc->Token[0] == '.'){ + if(Type == CN_LABELONLY) + Shutdown_M("%s:%u:%u: error: explicit address '%s' is forbidden\n", + path[txt], pc->Line, pc->Col, pc->Token); + return read_integer(pc, maxval); + } + + verify_name(pc, "constant or label", "operand or newline"); + for(i=0; iToken)){ + if(Constants[i].Value > maxval) + Shutdown_M("%s:%u:%u: error: integer constant '%s' (%u) is out of range\n", + path[txt], pc->Line, pc->Col, pc->Token, Constants[i].Value); + return Constants[i].Value; + } + } + + if(maxval != 0xFFFFFFFF) + Shutdown_M("%s:%u:%u: error: address referenced by label '%s' is out of range\n", + path[txt], pc->Line, pc->Col, pc->Token); + parser_add_reference(pc); + return 0; +} + +static __inline uint8_t read_instruction(const ParserContext *pc, uint32_t *operands){ + uint8_t i; + verify_name(pc, "instruction", "operand or newline"); + + for(i=0; iToken, Instructions[i].Name)){ + *operands = Instructions[i].Operands; + return i+1; + } + } + + return 0; +} + +static __inline uint8_t read_variable(const ParserContext *pc, const variable_t *Variables, size_t VariableCount){ + unsigned i; + verify_name(pc, "variable", "operand or newline"); + + for(i=0; iToken)) + return Variables[i].Value; + + Shutdown_M("%s:%u:%u: error: unrecognized variable '%s'\n", + path[txt], pc->Line, pc->Col, pc->Token); + return 0; +} + +static void Shutdown(){ + unsigned i; + for(i=0; i.\n" + "hitutils is maintained by the Niotso project.\n" + "Home page: \n"); + return 0; + } + for(i=1; i<(unsigned)argc-1; i++){ + if(!strcmp(argv[i], "-ts1")) SimsVersion = VERSION_TS1; + else if(!strcmp(argv[i], "-tso")) SimsVersion = VERSION_TSO; + else if(!strcmp(argv[i], "-f")) overwrite = 1; + else if(i != (unsigned)argc-2){ + if(!strcmp(argv[i], "-o")) path[out] = argv[++i]; + else break; + } + else break; + } + path[txt] = argv[i]; + for(i=0; i= '0' && pc.Token[0] <= '9') || pc.Token[0] == '-' || pc.Token[0] == '.' + || pc.Token[0] == '#' || !(opcode = read_instruction(&pc, &operands))){ + /* declare bytes (db and dd pseudo-instructions) */ + do { + if(pc.Token[0] != '#') + bw_write8(&TextSection, read_integer(&pc, 0x000000FF)); + else + bw_write32(&TextSection, read_constant(&pc, 0, 0xFFFFFFFF)); + } while(parser_next_token(&pc, 0)); + continue; + }else{ + const char * InstructionName = pc.Token; + + printf("Instruction: %s\n", pc.Token); + bw_write8(&TextSection, opcode); + + for(i=0; (operands >>= 4) != 0; i++){ + int type = operands & 15; + const char *position[] = {"one","two","three","four"}; + + if(!parser_next_token(&pc, 0)){ + int j; + for(j=i+1; (operands >>= 4) != 0; j++); + Shutdown_M("%s:%u:%u: error: instruction '%s' wants %s operands but only %s supplied\n", + path[txt], pc.Line, pc.Col, pc.Token, InstructionName, position[j], position[i]); + } + + printf("Operand: %s\n", pc.Token); + + if(type == o_byte) + bw_write8(&TextSection, read_constant(&pc, 0, 0x000000FF)); + else if(type == o_dword) + bw_write32(&TextSection, read_constant(&pc, 0, 0xFFFFFFFF)); + else if(type == o_address) + bw_write32(&TextSection, read_constant(&pc, CN_LABELONLY, 0xFFFFFFFF)); + else if(type == o_variable) + bw_write8(&TextSection, read_variable(&pc, Variables, VariableCount)); + else if(type == o_jump){ + /* TODO: Change this */ + bw_write32(&TextSection, read_constant(&pc, CN_LABELONLY, 0xFFFFFFFF)); + } + } + } + } + + verify_eol(&pc); + } + + if(InBinary) + Shutdown_M("%s:%u:%u: error: expected ']' for end of BINARY section before end of file\n", + path[txt], pc.Line, pc.Col); + + for(i=48+8; i.\n" - "hitutils is maintained by the Niotso project.\n" - "Home page: \n"); return 0; } \ No newline at end of file diff --git a/Tools/hitutils/hitdump.c b/Tools/hitutils/hitdump.c index 571b58f..4c5423b 100644 --- a/Tools/hitutils/hitdump.c +++ b/Tools/hitutils/hitdump.c @@ -21,326 +21,20 @@ #include #include #include - -#ifndef min - #define min(x,y) ((x) < (y) ? (x) : (y)) -#endif -#ifndef max - #define max(x,y) ((x) > (y) ? (x) : (y)) -#endif - -#ifndef read_int32 - #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) - #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) -#endif - -static void Shutdown_M(const char * Message, ...); +#include "hitutils.h" enum { hsm, hot, evt, hit, out, filecount }; -enum { - VERSION_TS1 = 1, VERSION_TSO -}; - -#define OPERAND_BYTES(x) (x) -#define OPERAND(x, y) ((y)<<((x)*4+4)) -#define UNIMPLEMENTED ((uint32_t)~0) - -enum operand_t { - o_byte = 1, - o_dword, - o_address, - o_variable, - o_jump -}; - -typedef struct { - const char * Name; - uint32_t Operands; -} instruction_t; - -typedef struct { - const char * Name; - uint32_t Value; -} global_t; - -static const uint8_t HITHeader[] = {'H','I','T','!',0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,'T','R','A','X'}; - -static const instruction_t Instructions[] = { - {"note", UNIMPLEMENTED}, - {"note_on", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"note_off", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"loadb", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_byte)}, - {"loadl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"set", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"call", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"return", OPERAND_BYTES(0)}, - {"wait", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"callentrypoint", UNIMPLEMENTED}, - {"wait_samp", OPERAND_BYTES(0)}, - {"end", OPERAND_BYTES(0)}, - {"jump", OPERAND_BYTES(1) | OPERAND(0, o_jump)}, - {"test", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"nop", OPERAND_BYTES(0)}, - {"add", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"sub", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"div", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"mul", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"cmp", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"less", UNIMPLEMENTED}, - {"greater", UNIMPLEMENTED}, - {"not", UNIMPLEMENTED}, - {"rand", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"abs", UNIMPLEMENTED}, - {"limit", UNIMPLEMENTED}, - {"error", UNIMPLEMENTED}, - {"assert", UNIMPLEMENTED}, - {"add_to_group", UNIMPLEMENTED}, - {"remove_from_group", UNIMPLEMENTED}, - {"get_var", UNIMPLEMENTED}, - {"loop", OPERAND_BYTES(0)}, - {"set_loop", OPERAND_BYTES(0)}, - {"callback", UNIMPLEMENTED}, - {"smart_add", UNIMPLEMENTED}, - {"smart_remove", UNIMPLEMENTED}, - {"smart_removeall", UNIMPLEMENTED}, - {"smart_setcrit", UNIMPLEMENTED}, - {"smart_choose", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"and", UNIMPLEMENTED}, - {"nand", UNIMPLEMENTED}, - {"or", UNIMPLEMENTED}, - {"nor", UNIMPLEMENTED}, - {"xor", UNIMPLEMENTED}, - {"max", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"min", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"inc", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"dec", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"printreg", UNIMPLEMENTED}, - {"play_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"kill_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"push", UNIMPLEMENTED}, - {"push_mask", UNIMPLEMENTED}, - {"push_vars", UNIMPLEMENTED}, - {"call_mask", UNIMPLEMENTED}, - {"call_push", UNIMPLEMENTED}, - {"pop", UNIMPLEMENTED}, - {"test1", OPERAND_BYTES(0)}, - {"test2", OPERAND_BYTES(0)}, - {"test3", OPERAND_BYTES(0)}, - {"test4", OPERAND_BYTES(0)}, - {"ifeq", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifne", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifgt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"iflt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifge", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifle", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"smart_setlist", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"seqgroup_kill", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, - {"seqgroup_wait", UNIMPLEMENTED}, - {"seqgroup_return", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, - {"getsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"seqgroup_trkid", OPERAND_BYTES(2) | OPERAND(0, o_byte) | OPERAND(1, o_byte)}, - {"setll", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"setlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"settl", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waiteq", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitne", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitgt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitge", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitle", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"duck", OPERAND_BYTES(0)}, - {"unduck", OPERAND_BYTES(0)}, - {"testx", UNIMPLEMENTED}, - {"setlg", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"setgl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"throw", UNIMPLEMENTED}, - {"setsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"stop_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"setchanreg", UNIMPLEMENTED}, - {"play_note", UNIMPLEMENTED}, - {"stop_note", UNIMPLEMENTED}, - {"kill_note", UNIMPLEMENTED}, - {"smart_index", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"note_on_loop", OPERAND_BYTES(1) | OPERAND(0, o_variable)} -}; - -static const char *Registers[] = { - "arg0", - "arg1", - "arg2", - "arg3", - "arg4", - "v1", - "v2", - "v3", - "v4", - "v5", - "v6", - "v7", - "v8", - "h1", - "h2", - "h3", - "h4" -}; - -#define TSOGlobalCount 66 -static const global_t TSOGlobals[] = { - {"argstype", 0x10}, - {"trackdatasource", 0x11}, - {"patch", 0x12}, - {"priority", 0x13}, - {"vol", 0x14}, - {"extvol", 0x15}, - {"pan", 0x16}, - {"pitch", 0x17}, - {"paused", 0x18}, - {"fxtype", 0x19}, - {"fxlevel", 0x1a}, - {"duckpri", 0x1b}, - {"Is3d", 0x1c}, - {"IsHeadRelative", 0x1d}, - {"MinDistance", 0x1e}, - {"MaxDistance", 0x1f}, - {"X", 0x20}, - {"Y", 0x21}, - {"Z", 0x22}, - {"attack", 0x23}, - {"decay", 0x24}, - {"IsStreamed", 0x25}, - {"bufsizemult", 0x26}, - {"fade_dest", 0x27}, - {"fade_var", 0x28}, - {"fade_speed", 0x29}, - {"fade_on", 0x2a}, - {"Preload", 0x2b}, - {"isplaying", 0x2c}, - {"whattodowithupdate", 0x2d}, - {"tempo", 0x2e}, - {"target", 0x2f}, - {"ctrlgroup", 0x30}, - {"interrupt", 0x31}, - {"ispositioned", 0x32}, - {"AppObjectId", 0x34}, - {"callbackarg", 0x35}, - {"pitchrandmin", 0x36}, - {"pitchrandmax", 0x37}, - {"spl", 0x38}, - {"sem", 0x39}, - {"starttrackid", 0x3a}, - {"endtrackid", 0x3b}, - {"startdelay", 0x3c}, - {"fadeinspeed", 0x3d}, - {"fadeoutspeed", 0x3e}, - {"hitlist", 0x3f}, - {"SimSpeed", 0x64}, - {"test_g1", 0x65}, - {"test_g2", 0x66}, - {"test_g3", 0x67}, - {"test_g4", 0x68}, - {"test_g5", 0x69}, - {"test_g6", 0x6a}, - {"test_g7", 0x6b}, - {"test_g8", 0x6c}, - {"test_g9", 0x6d}, - {"main_songnum", 0x6e}, - {"main_musichitlistid", 0x6f}, - {"campfire_nexttrack", 0x70}, - {"campfire_busy", 0x71}, - {"main_duckpri", 0x7b}, - {"main_vol", 0x7c}, - {"main_fxtype", 0x7d}, - {"main_fxlevel", 0x7e}, - {"main_pause", 0x7f} -}; - -#define TS1GlobalCount 71 -static const global_t TS1Globals[] = { - {"priority", 0x11}, - {"vol", 0x12}, - {"extvol", 0x13}, - {"pan", 0x14}, - {"pitch", 0x15}, - {"paused", 0x16}, - {"fxtype", 0x17}, - {"fxlevel", 0x18}, - {"duckpri", 0x19}, - {"Is3d", 0x1a}, - {"IsHeadRelative", 0x1b}, - {"MinDistance", 0x1c}, - {"MaxDistance", 0x1d}, - {"X", 0x1e}, - {"Y", 0x1f}, - {"Z", 0x20}, - {"filter_type", 0x21}, - {"filter_cutoff", 0x22}, - {"filter_level", 0x23}, - {"attack", 0x24}, - {"decay", 0x25}, - {"IsStreamed", 0x26}, - {"BufSizeMult", 0x27}, - {"fade_dest", 0x28}, - {"fade_var", 0x29}, - {"fade_speed", 0x2a}, - {"Preload", 0x2b}, - {"IsLooped", 0x2c}, - {"fade_on", 0x2d}, - {"isplaying", 0x2e}, - {"source", 0x2f}, - {"patch", 0x32}, - {"WhatToDoWithUpdate", 0x33}, - {"tempo", 0x34}, - {"target", 0x35}, - {"mutegroup", 0x36}, - {"interrupt", 0x37}, - {"IsPositioned", 0x38}, - {"Spl", 0x39}, - {"MultipleInstances", 0x3a}, - {"AssociatedTrack1", 0x3b}, - {"AssociatedTrack2", 0x3c}, - {"AssociatedTrack3", 0x3d}, - {"AssociatedTrack4", 0x3e}, - {"AssociatedTrack5", 0x3f}, - {"AssociatedTrack6", 0x40}, - {"AssociatedTrack7", 0x41}, - {"AssociatedTrack8", 0x42}, - {"SimSpeed", 0x64}, - {"test_g1", 0x65}, - {"test_g2", 0x66}, - {"test_g3", 0x67}, - {"test_g4", 0x68}, - {"test_g5", 0x69}, - {"test_g6", 0x6a}, - {"test_g7", 0x6b}, - {"test_g8", 0x6c}, - {"test_g9", 0x6d}, - {"main_songnum", 0x6e}, - {"main_musichitlistid", 0x6f}, - {"campfire_nexttrack", 0x70}, - {"campfire_busy", 0x71}, - {"main_duckpri", 0x7b}, - {"main_vol", 0x7c}, - {"main_fxtype", 0x7d}, - {"main_fxlevel", 0x7e}, - {"main_pause", 0x7f}, -}; - -static __inline const char * find_global(uint32_t x, const global_t * Globals, size_t GlobalCount){ +static __inline const char * find_variable(uint32_t x, const variable_t * Variables, size_t VariableCount){ size_t i; - for(i=0; i 96) + if(opcode == 0 || opcode > InstructionCount) Shutdown_M("%sIllegal opcode 0x%02X at address 0x%08X.\n", "hitdump: Error: ", opcode, addr); instruction = Instructions + opcode - 1; @@ -910,14 +594,12 @@ int main(int argc, char *argv[]){ else fprintf(hFile, " #%u", LogicalAddress); addr += 4; }else if(type == o_variable){ - int x = data[hit][addr]; - if(x > 16){ - const char * Global = find_global(x, Globals, GlobalCount); - if(Global == NULL) - Shutdown_M("%sInvalid %s operand 0x%02X for '%s' instruction at address 0x%08X (expected %s).\n", - "hitdump: Error: ", position[i], x, instruction->Name, addr, "argument, register, or global"); - fprintf(hFile, " %s", Global); - } else fprintf(hFile, " %s", Registers[x]); + unsigned x = data[hit][addr]; + const char * Variable = find_variable(x, Variables, VariableCount); + if(Variable == NULL) + Shutdown_M("%sInvalid %s operand 0x%02X for '%s' instruction at address 0x%08X (expected variable).\n", + "hitdump: Error: ", position[i], x, instruction->Name, addr); + fprintf(hFile, " %s", Variable); addr += 1; }else if(type == o_jump){ unsigned x = 0; @@ -934,14 +616,13 @@ int main(int argc, char *argv[]){ else fprintf(hFile, " #%u", x); addr += 4; }else{ + const char * Variable; x = data[hit][addr]; - if(x > 16){ - const char * Global = find_global(x, Globals, GlobalCount); - if(Global == NULL) - Shutdown_M("%sInvalid %s operand 0x%02X for '%s' instruction at address 0x%08X (expected %s).\n", - "hitdump: Error: ", position[i], x, instruction->Name, addr, "argument, register, or global"); - fprintf(hFile, " %s", Global); - } else fprintf(hFile, " %s", Registers[x]); + Variable = find_variable(x, Variables, VariableCount); + if(Variable == NULL) + Shutdown_M("%sInvalid %s operand 0x%02X for '%s' instruction at address 0x%08X (expected variable).\n", + "hitdump: Error: ", position[i], x, instruction->Name, addr); + fprintf(hFile, " %s", Variable); addr += (data[hit][addr] != 0x05 && data[hit][addr] != 0x06) ? 4 : 1; } } diff --git a/Tools/hitutils/hitutils.h b/Tools/hitutils/hitutils.h new file mode 100644 index 0000000..a1d1e56 --- /dev/null +++ b/Tools/hitutils/hitutils.h @@ -0,0 +1,452 @@ +/* + hitutils - The Sims HIT (dis)assembler and linker + hitutils.h - Copyright (c) 2012 Niotso Project + Author(s): Fatbag + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#ifndef min + #define min(x,y) ((x) < (y) ? (x) : (y)) +#endif +#ifndef max + #define max(x,y) ((x) > (y) ? (x) : (y)) +#endif + +#ifndef read_int32 + #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) + #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) +#endif + +#ifndef write_int32 + #define write_uint32(dest, src) do {\ + (dest)[0] = ((src)&0x000000FF)>>(8*0); \ + (dest)[1] = ((src)&0x0000FF00)>>(8*1); \ + (dest)[2] = ((src)&0x00FF0000)>>(8*2); \ + (dest)[3] = ((src)&0xFF000000)>>(8*3); \ + } while(0) + #define write_uint16(dest, src) do {\ + (dest)[0] = ((src)&0x00FF)>>(8*0); \ + (dest)[1] = ((src)&0xFF00)>>(8*1); \ + } while(0) +#endif + +extern char *strdup (const char *__s); + +static void Shutdown(); + +static void Shutdown_M(const char * Message, ...){ + va_list args; + va_start(args, Message); + vfprintf(stderr, Message, args); + va_end(args); + + Shutdown(); + exit(EXIT_FAILURE); +} + +enum { + VERSION_TS1 = 1, VERSION_TSO +}; + +#define OPERAND_BYTES(x) (x) +#define OPERAND(x, y) ((y)<<((x)*4+4)) +#define UNIMPLEMENTED ((uint32_t)~0) + +enum operand_t { + o_byte = 1, + o_dword, + o_address, + o_variable, + o_jump +}; + +typedef struct { + const char * Name; + uint32_t Operands; +} instruction_t; + +typedef struct { + const char * Name; + uint32_t Value; +} variable_t; + +typedef struct { + uint8_t * Data; + size_t Size; +} ByteReaderContext; + +static const uint8_t HITHeader[] = {'H','I','T','!',0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,'T','R','A','X'}; + +#define InstructionCount 96 +static const instruction_t Instructions[] = { + {"note", UNIMPLEMENTED}, + {"note_on", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"note_off", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"loadb", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_byte)}, + {"loadl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"set", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"call", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"return", OPERAND_BYTES(0)}, + {"wait", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"callentrypoint", UNIMPLEMENTED}, + {"wait_samp", OPERAND_BYTES(0)}, + {"end", OPERAND_BYTES(0)}, + {"jump", OPERAND_BYTES(1) | OPERAND(0, o_jump)}, + {"test", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"nop", OPERAND_BYTES(0)}, + {"add", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"sub", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"div", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"mul", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"cmp", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"less", UNIMPLEMENTED}, + {"greater", UNIMPLEMENTED}, + {"not", UNIMPLEMENTED}, + {"rand", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"abs", UNIMPLEMENTED}, + {"limit", UNIMPLEMENTED}, + {"error", UNIMPLEMENTED}, + {"assert", UNIMPLEMENTED}, + {"add_to_group", UNIMPLEMENTED}, + {"remove_from_group", UNIMPLEMENTED}, + {"get_var", UNIMPLEMENTED}, + {"loop", OPERAND_BYTES(0)}, + {"set_loop", OPERAND_BYTES(0)}, + {"callback", UNIMPLEMENTED}, + {"smart_add", UNIMPLEMENTED}, + {"smart_remove", UNIMPLEMENTED}, + {"smart_removeall", UNIMPLEMENTED}, + {"smart_setcrit", UNIMPLEMENTED}, + {"smart_choose", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"and", UNIMPLEMENTED}, + {"nand", UNIMPLEMENTED}, + {"or", UNIMPLEMENTED}, + {"nor", UNIMPLEMENTED}, + {"xor", UNIMPLEMENTED}, + {"max", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"min", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"inc", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"dec", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"printreg", UNIMPLEMENTED}, + {"play_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"kill_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"push", UNIMPLEMENTED}, + {"push_mask", UNIMPLEMENTED}, + {"push_vars", UNIMPLEMENTED}, + {"call_mask", UNIMPLEMENTED}, + {"call_push", UNIMPLEMENTED}, + {"pop", UNIMPLEMENTED}, + {"test1", OPERAND_BYTES(0)}, + {"test2", OPERAND_BYTES(0)}, + {"test3", OPERAND_BYTES(0)}, + {"test4", OPERAND_BYTES(0)}, + {"ifeq", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifne", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifgt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"iflt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifge", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"ifle", OPERAND_BYTES(4) | OPERAND(0, o_address)}, + {"smart_setlist", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"seqgroup_kill", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, + {"seqgroup_wait", UNIMPLEMENTED}, + {"seqgroup_return", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, + {"getsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"seqgroup_trkid", OPERAND_BYTES(2) | OPERAND(0, o_byte) | OPERAND(1, o_byte)}, + {"setll", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"setlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"settl", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waiteq", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitne", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitgt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitge", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"waitle", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"duck", OPERAND_BYTES(0)}, + {"unduck", OPERAND_BYTES(0)}, + {"testx", UNIMPLEMENTED}, + {"setlg", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"setgl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, + {"throw", UNIMPLEMENTED}, + {"setsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, + {"stop_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, + {"setchanreg", UNIMPLEMENTED}, + {"play_note", UNIMPLEMENTED}, + {"stop_note", UNIMPLEMENTED}, + {"kill_note", UNIMPLEMENTED}, + {"smart_index", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, + {"note_on_loop", OPERAND_BYTES(1) | OPERAND(0, o_variable)} +}; + +#define TSOVariableCount 82 +static const variable_t TSOVariables[] = { + {"arg0", 0x00}, + {"arg1", 0x01}, + {"arg2", 0x02}, + {"arg3", 0x03}, + {"arg4", 0x04}, + {"v1", 0x05}, + {"v2", 0x06}, + {"v3", 0x07}, + {"v4", 0x08}, + {"v5", 0x09}, + {"v6", 0x0A}, + {"v7", 0x0B}, + {"v8", 0x0C}, + {"h1", 0x0D}, + {"h2", 0x0E}, + {"h3", 0x0F}, + {"argstype", 0x10}, + {"trackdatasource", 0x11}, + {"patch", 0x12}, + {"priority", 0x13}, + {"vol", 0x14}, + {"extvol", 0x15}, + {"pan", 0x16}, + {"pitch", 0x17}, + {"paused", 0x18}, + {"fxtype", 0x19}, + {"fxlevel", 0x1a}, + {"duckpri", 0x1b}, + {"Is3d", 0x1c}, + {"IsHeadRelative", 0x1d}, + {"MinDistance", 0x1e}, + {"MaxDistance", 0x1f}, + {"X", 0x20}, + {"Y", 0x21}, + {"Z", 0x22}, + {"attack", 0x23}, + {"decay", 0x24}, + {"IsStreamed", 0x25}, + {"bufsizemult", 0x26}, + {"fade_dest", 0x27}, + {"fade_var", 0x28}, + {"fade_speed", 0x29}, + {"fade_on", 0x2a}, + {"Preload", 0x2b}, + {"isplaying", 0x2c}, + {"whattodowithupdate", 0x2d}, + {"tempo", 0x2e}, + {"target", 0x2f}, + {"ctrlgroup", 0x30}, + {"interrupt", 0x31}, + {"ispositioned", 0x32}, + {"AppObjectId", 0x34}, + {"callbackarg", 0x35}, + {"pitchrandmin", 0x36}, + {"pitchrandmax", 0x37}, + {"spl", 0x38}, + {"sem", 0x39}, + {"starttrackid", 0x3a}, + {"endtrackid", 0x3b}, + {"startdelay", 0x3c}, + {"fadeinspeed", 0x3d}, + {"fadeoutspeed", 0x3e}, + {"hitlist", 0x3f}, + {"SimSpeed", 0x64}, + {"test_g1", 0x65}, + {"test_g2", 0x66}, + {"test_g3", 0x67}, + {"test_g4", 0x68}, + {"test_g5", 0x69}, + {"test_g6", 0x6a}, + {"test_g7", 0x6b}, + {"test_g8", 0x6c}, + {"test_g9", 0x6d}, + {"main_songnum", 0x6e}, + {"main_musichitlistid", 0x6f}, + {"campfire_nexttrack", 0x70}, + {"campfire_busy", 0x71}, + {"main_duckpri", 0x7b}, + {"main_vol", 0x7c}, + {"main_fxtype", 0x7d}, + {"main_fxlevel", 0x7e}, + {"main_pause", 0x7f}, +}; + +#define TS1VariableCount 87 +static const variable_t TS1Variables[] = { + {"arg0", 0x00}, + {"arg1", 0x01}, + {"arg2", 0x02}, + {"arg3", 0x03}, + {"arg4", 0x04}, + {"v1", 0x05}, + {"v2", 0x06}, + {"v3", 0x07}, + {"v4", 0x08}, + {"v5", 0x09}, + {"v6", 0x0a}, + {"v7", 0x0b}, + {"v8", 0x0c}, + {"h1", 0x0d}, + {"h2", 0x0e}, + {"h3", 0x0f}, + {"priority", 0x11}, + {"vol", 0x12}, + {"extvol", 0x13}, + {"pan", 0x14}, + {"pitch", 0x15}, + {"paused", 0x16}, + {"fxtype", 0x17}, + {"fxlevel", 0x18}, + {"duckpri", 0x19}, + {"Is3d", 0x1a}, + {"IsHeadRelative", 0x1b}, + {"MinDistance", 0x1c}, + {"MaxDistance", 0x1d}, + {"X", 0x1e}, + {"Y", 0x1f}, + {"Z", 0x20}, + {"filter_type", 0x21}, + {"filter_cutoff", 0x22}, + {"filter_level", 0x23}, + {"attack", 0x24}, + {"decay", 0x25}, + {"IsStreamed", 0x26}, + {"BufSizeMult", 0x27}, + {"fade_dest", 0x28}, + {"fade_var", 0x29}, + {"fade_speed", 0x2a}, + {"Preload", 0x2b}, + {"IsLooped", 0x2c}, + {"fade_on", 0x2d}, + {"isplaying", 0x2e}, + {"source", 0x2f}, + {"patch", 0x32}, + {"WhatToDoWithUpdate", 0x33}, + {"tempo", 0x34}, + {"target", 0x35}, + {"mutegroup", 0x36}, + {"interrupt", 0x37}, + {"IsPositioned", 0x38}, + {"Spl", 0x39}, + {"MultipleInstances", 0x3a}, + {"AssociatedTrack1", 0x3b}, + {"AssociatedTrack2", 0x3c}, + {"AssociatedTrack3", 0x3d}, + {"AssociatedTrack4", 0x3e}, + {"AssociatedTrack5", 0x3f}, + {"AssociatedTrack6", 0x40}, + {"AssociatedTrack7", 0x41}, + {"AssociatedTrack8", 0x42}, + {"SimSpeed", 0x64}, + {"test_g1", 0x65}, + {"test_g2", 0x66}, + {"test_g3", 0x67}, + {"test_g4", 0x68}, + {"test_g5", 0x69}, + {"test_g6", 0x6a}, + {"test_g7", 0x6b}, + {"test_g8", 0x6c}, + {"test_g9", 0x6d}, + {"main_songnum", 0x6e}, + {"main_musichitlistid", 0x6f}, + {"campfire_nexttrack", 0x70}, + {"campfire_busy", 0x71}, + {"main_duckpri", 0x7b}, + {"main_vol", 0x7c}, + {"main_fxtype", 0x7d}, + {"main_fxlevel", 0x7e}, + {"main_pause", 0x7f}, +}; + +#define ConstantCount 72 +static const variable_t Constants[] = { + {"duckpri_always", 0x0}, + {"duckpri_low", 0xa}, + {"duckpri_normal", 0x14}, + {"duckpri_high", 0x1e}, + {"duckpri_higher", 0x28}, + {"duckpri_evenhigher", 0x32}, + {"duckpri_never", 0x64}, + {"spl_infinite", 0x0}, + {"spl_loud", 0xa}, + {"spl_normal", 0x14}, + {"spl_quiet", 0x64}, + {"Instance", 0x0}, + {"Gender", 0x1}, + {"GroupMusic", 0x1}, + {"GroupDialogMain", 0x2}, + {"GroupDialogOverlay", 0x3}, + {"PchDishwasherClose", 0x32}, + {"PchDishwasherLoad", 0x33}, + {"PchDishwasherLoad2", 0x34}, + {"PchDishwasherOpen", 0x35}, + {"PchDishwasherTurnDial", 0x39}, + {"PchDishwasherTurnDial2", 0x3a}, + {"TrkRadioStationCountry", 0x104}, + {"TrkRadioStationBossaNova", 0x10e}, + {"TrkRadioStationClassical", 0x10d}, + {"TrkRadioStationRock", 0x118}, + {"kSndobPlay", 1}, + {"kSndobStop", 2}, + {"kSndobKill", 3}, + {"kSndobUpdate", 4}, + {"kSndobSetVolume", 5}, + {"kSndobSetPitch", 6}, + {"kSndobSetPan", 7}, + {"kSndobSetPosition", 8}, + {"kSndobSetFxType", 9}, + {"kSndobSetFxLevel", 10}, + {"kSndobPause", 11}, + {"kSndobUnpause", 12}, + {"kSndobLoad", 13}, + {"kSndobUnload", 14}, + {"kSndobCache", 15}, + {"kSndobUncache", 16}, + {"kSndobCancelNote", 19}, + {"kPlayPiano", 43}, + {"kSetMusicMode", 36}, + {"kLive", 0}, + {"kBuy", 1}, + {"kBuild", 2}, + {"kHood", 3}, + {"kFrontEnd", 4}, + {"kGroupSfx", 1}, + {"kGroupMusic", 2}, + {"kGroupVox", 3}, + {"kAction", 1000}, + {"kComedy", 1001}, + {"kRomance", 1002}, + {"kNews", 1003}, + {"kCountry", 1004}, + {"kRock", 1005}, + {"kJazz", 1006}, + {"kClassical", 1007}, + {"kArgsNormal", 0}, + {"kArgsVolPan", 1}, + {"kArgsIdVolPan", 2}, + {"kArgsXYZ", 3}, + {"kKillAll", 20}, + {"kPause", 21}, + {"kUnpause", 22}, + {"kKillInstance", 23}, + {"kTurnOnTv", 30}, + {"kTurnOffTv", 31}, + {"kUpdateSourceVolPan", 32}, +}; + +static const char SHStringTable[] = + "\0.text" + "\0.shstrtab" + "\0.symtab" + "\0.strtab" + "\0.rel.text" +; + +static const uint8_t SymbolTableHeader[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xF1, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00 +}; \ No newline at end of file diff --git a/Tools/iff2html/image.c b/Tools/iff2html/image.c index ca7c0f0..6991658 100644 --- a/Tools/iff2html/image.c +++ b/Tools/iff2html/image.c @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include /* Used for libpng */ #include "opngreduc.h" int WritePNG(const char * OutName, const IFFChunk * ChunkData, int ZBuffer, diff --git a/Tools/rtti-reader/rtti-reader.cpp b/Tools/rtti-reader/rtti-reader.cpp index f970a7d..b314425 100644 --- a/Tools/rtti-reader/rtti-reader.cpp +++ b/Tools/rtti-reader/rtti-reader.cpp @@ -26,8 +26,9 @@ #include #include #include -#include #include +#include +#include #ifndef read_int32 #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) @@ -408,7 +409,7 @@ int main(int argc, char *argv[]){ Shutdown_M("Unexpectedly reached end of binary"); DLL.lookat(DLL.rdata); - COL.VTableAddress = (DLL.find32(COLAddress)) ? DLL.brc.position + ImageBase + 4: (uint32_t)-1; + COL.VTableAddress = (DLL.find32(COLAddress)) ? DLL.brc.position + ImageBase + 4 : (uint32_t)-1; if(newclass){ if(!DLL.seek(COL.Fields.ClassDescriptorAddress - ImageBase)) @@ -517,7 +518,7 @@ int main(int argc, char *argv[]){ printf(";"); } - printf("\n\nCompleted RTTI report.\nDependencies provided for %u of %u classes.\n", RCL.Count, TotalClassCount); + printf("\n\nCompleted RTTI report.\nDependencies provided for %u of %u classes.\n", (unsigned)RCL.Count, TotalClassCount); return 0; } \ No newline at end of file