diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17ea320..31aea05 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,158 +1,57 @@
#########################################
#### CMake generator file for Niotso ####
-
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 3.21)
+project(Niotso)
+set(CMAKE_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_ROOT_DIR})
enable_language(ASM)
-set(CMAKE_C_COMPILER "gcc")
-set(CMAKE_CXX_COMPILER "gcc")
-set(CMAKE_ASM_COMPILER "gcc")
-project(Niotso)
+include(ConfigureTarget)
-# Installation directory
-if(WIN32)
- set(CMAKE_INSTALL_PREFIX "c:/Program Files (x86)/Maxis/The Sims Online/Niotso" CACHE FILEPATH "Installation directory")
-else()
- set(CMAKE_INSTALL_PREFIX "/usr/bin" CACHE FILEPATH "Installation directory")
-endif()
-
-# Build type
-if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build configurations: Release Debug Release-MakeProfile Release-UseProfile")
-else()
- set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build configurations: Release Debug")
-endif()
+#########################################
+#### Options
+option(BUILD_SHARED_LIBS "Build using shared libraries" ON) # default cmake
+option(NIOTSO_BUILD_EXAMPLES "Build the render demos" OFF)
+option(NIOTSO_BUILD_TOOLS "Build niotso tools" ON)
if(WIN32)
- set(64BIT 0)
+ set(DIST_NAME "windows" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+ if(BUILD_SHARED_LIBS)
+ # TODO-jip: this is terrible for release
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+ endif()
+elseif(APPLE)
+ set(DIST_NAME "mac" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
+elseif(UNIX)
+ set(DIST_NAME "linux" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
else()
- set(64BIT 1)
+ set(DIST_NAME "unknown" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
endif()
-
-if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- # Base options
- set(CFLAGS "-Wall -Wextra -Wabi -pedantic -mmmx -msse -msse2 -msse3 -fvisibility=hidden")
- set(LDFLAGS "-static-libgcc")
- set(RCFLAGS "")
-
- set(CFLAGS_LANG_C "-ansi")
- set(CFLAGS_LANG_CPP "-fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-threadsafe-statics -D__STDC_LIMIT_MACROS")
-
- if(64BIT)
- set(CFLAGS "-m64 ${CFLAGS}")
- set(LDFLAGS "-m64 ${LDFLAGS}")
- set(RCFLAGS "${RCFLAGS} -F pe-x86-64")
- else()
- set(CFLAGS "-m32 ${CFLAGS}")
- set(LDFLAGS "-m32 ${LDFLAGS}")
- set(RCFLAGS "${RCFLAGS} -F pe-i386")
- endif()
-
- ####
- ## [Profiles]
-
- if(NOT (CMAKE_BUILD_TYPE MATCHES "Debug"))
- if(CMAKE_BUILD_TYPE MATCHES "Release-MakeProfile")
- set(CFLAGS "${CFLAGS} -fprofile-generate")
- set(LDFLAGS "${LDFLAGS} -lgcov")
- elseif(CMAKE_BUILD_TYPE MATCHES "Release-UseProfile")
- set(CFLAGS "${CFLAGS} -fprofile-use")
- endif()
-
- # Size
- set(CFLAGS_SIZE "${CFLAGS} -Os -g0 -fomit-frame-pointer -mfpmath=both -msahf -malign-double -mpc32 -ffast-math -fmerge-all-constants -funsafe-loop-optimizations -fsched-pressure -mstringop-strategy=rep_byte -fno-stack-protector")
- set(LDFLAGS_SIZE "${LDFLAGS} -s -fwhole-program -flto -fno-stack-protector")
-
- # Speed
- set(CFLAGS_SPEED "${CFLAGS} -O3 -g0 -fomit-frame-pointer -mfpmath=both -msahf -malign-double -mpc32 -ffast-math -fmerge-all-constants -funsafe-loop-optimizations -fsched-pressure -fno-stack-protector -fmodulo-sched -fmodulo-sched-allow-regmoves -fgcse-sm -fgcse-las -fsched-spec-load -fsched-spec-load-dangerous -fsched-stalled-insns=0 -fsched-stalled-insns-dep -fsched2-use-superblocks -fipa-pta -fipa-matrix-reorg -ftree-loop-linear -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity -floop-parallelize-all -ftree-loop-distribution -ftree-loop-im -ftree-loop-ivcanon -fivopts -fvect-cost-model -fvariable-expansion-in-unroller -fbranch-target-load-optimize -maccumulate-outgoing-args -flto")
- set(LDFLAGS_SPEED "${LDFLAGS} -s -fwhole-program -flto -fno-stack-protector")
- else()
- # Debug
- 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}")
- set(CFLAGS_SPEED "${CFLAGS_DEBUG}")
- set(LDFLAGS_SPEED "${LDFLAGS_DEBUG}")
- endif()
-
- set(CMAKE_C_FLAGS "${CFLAGS_LANG_C} ${CFLAGS_SIZE}")
- set(CMAKE_CXX_FLAGS "${CFLAGS_LANG_CPP} ${CFLAGS_SIZE}")
- if(64BIT)
- set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fpic")
- set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fpic")
- set(CMAKE_SHARED_LIBRARY_ASM_FLAGS "-fpic")
- else()
- set(CMAKE_SHARED_LIBRARY_C_FLAGS "")
- set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "")
- set(CMAKE_SHARED_LIBRARY_ASM_FLAGS "")
- endif()
- set(CMAKE_SHARED_LINKER_FLAGS "-shared ${LDFLAGS} ${LDFLAGS_SIZE}")
- set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS} ${LDFLAGS_SIZE}")
- set(CMAKE_RC_FLAGS "${RCFLAGS}")
- set(CMAKE_ASM_FLAGS "${CFLAGS}")
-
- if(WIN32)
- set(DIST_NAME "windows" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
- elseif(APPLE)
- set(DIST_NAME "mac" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
- elseif(UNIX)
- set(DIST_NAME "linux" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
- else()
- set(DIST_NAME "unknown" CACHE STRING "Output folder name for the _dist folder (no start or end slash)")
- endif()
-
-endif()
-
-#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") (-flto means our archive files should not be redistributed)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
-if(WIN32)
- set(FREETYPE_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/freetype/include ${CMAKE_SOURCE_DIR}/_deps/freetype/include/freetype/config)
- set(LIBJPEGTURBO_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libjpeg-turbo)
- set(LIBMPG123_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libmpg123)
- set(LIBPNG_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpng)
- set(LIBPQ_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpq ${CMAKE_SOURCE_DIR}/_deps/libpq/include ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port/win32 ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port)
- set(ZLIB_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/zlib)
+#########################################
+#### Dependencies
+add_subdirectory(deps)
- add_subdirectory(_deps/freetype)
- add_subdirectory(_deps/libjpeg-turbo)
- add_subdirectory(_deps/libmpg123)
- add_subdirectory(_deps/libpng)
- add_subdirectory(_deps/libpq)
- add_subdirectory(_deps/zlib)
+#########################################
+#### Project
+add_subdirectory(niotso)
- set(FREETYPE_LINK freetype_shared)
- set(LIBJPEG_LINK jpegturbo_static)
- set(LIBMPG123_LINK libmpg123_static)
- set(LIBPNG_LINK libpng_static)
- set(LIBPQ_LINK libpq_shared)
- set(ZLIB_LINK zlib_static)
-else()
- set(FREETYPE_LINK freetype)
- set(LIBJPEG_LINK jpeg)
- set(LIBMPG123_LINK mpg123)
- set(LIBPNG_LINK png)
- set(LIBPQ_LINK pq)
- set(ZLIB_LINK z)
+if(NIOTSO_BUILD_TOOLS)
+ add_subdirectory(tools)
endif()
-set(FILEHANDLER_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/FileHandler)
-set(LIBGLDEMO_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libgldemo)
-set(LIBVITABOY_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libvitaboy)
-
-if(WIN32)
- set(GLDEMO_EXE WIN32)
- set(GLDEMO_LINK mingw32 libgldemo_static opengl32 glu32)
-else()
- set(GLDEMO_EXE "")
- set(GLDEMO_LINK libgldemo_static Xxf86vm rt Xext X11 GL GLU)
+if(NIOTSO_BUILD_EXAMPLES)
+ add_subdirectory(examples)
endif()
-add_subdirectory(Client)
-add_subdirectory(Libraries)
-add_subdirectory(Server)
-add_subdirectory(Tools)
+#########################################
+#### Unset Options
+unset(BUILD_SHARED_LIBS CACHE)
+unset(NIOTSO_BUILD_EXAMPLES CACHE)
+unset(NIOTSO_BUILD_TOOLS CACHE)
\ No newline at end of file
diff --git a/Client/Audio/Audio.hpp b/Client/Audio/Audio.hpp
deleted file mode 100644
index 78ab719..0000000
--- a/Client/Audio/Audio.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Audio/Audio.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "windows/xaudio2.hpp"
-#ifdef PlaySound //defined by the Windows API
- #undef PlaySound
-#endif
-
-struct PlayableSound_t {
- bool Playing;
- uint8_t * Data;
- IXAudio2SourceVoice* pSourceVoice;
-};
-
-namespace Audio {
- int Initialize();
- PlayableSound_t * LoadSound(const Sound_t * Sound);
- bool PlaySound(PlayableSound_t * Sound);
- bool StopSound(PlayableSound_t * Sound);
- void DeleteSound(PlayableSound_t * Sound);
- void Shutdown();
-}
\ No newline at end of file
diff --git a/Client/Audio/Startup.cpp b/Client/Audio/Startup.cpp
deleted file mode 100644
index 93496b6..0000000
--- a/Client/Audio/Startup.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Audio/Startup.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-namespace Audio {
-
-IXAudio2 *pXAudio2 = NULL;
-IXAudio2MasteringVoice *MasterVoice = NULL;
-
-int Initialize(){
- HRESULT result;
-
- result = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE | COINIT_SPEED_OVER_MEMORY);
- if(result != S_OK){
- MessageBox(Window::hWnd, "Failed to initialize Microsoft COM.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_AUDIO_INIT_COM;
- }
-
- result = XAudio2Create(&pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR);
- if(result != S_OK){
- MessageBox(Window::hWnd, "Failed to initialize XAudio2. Please download the latest DirectX runtime for your system.",
- NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_AUDIO_INIT_XAUDIO2;
- }
-
- result = pXAudio2->CreateMasteringVoice(&MasterVoice, 2, 44100, 0, 0, NULL);
- if(result != S_OK){
- MessageBox(Window::hWnd, "Failed to create the mastering voice for XAudio2.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_AUDIO_CREATE_VOICE;
- }
- return 0;
-}
-
-PlayableSound_t * LoadSound(const Sound_t * Sound){
- const WAVEFORMATEX wfx = {
- WAVE_FORMAT_PCM, //wFormatTag
- Sound->Channels, //nChannels
- Sound->SamplingRate, //nSamplesPerSec
- ((Sound->Channels * Sound->BitDepth) >> 3) * Sound->SamplingRate, //nAvgBytesPerSec
- ((Sound->Channels * Sound->BitDepth) >> 3), //nBlockAlign
- Sound->BitDepth, //wBitsPerSample
- 0 //cbSize
- };
-
- const XAUDIO2_BUFFER buffer = {
- 0, //Flags
- Sound->Duration * wfx.nBlockAlign, //AudioBytes
- Sound->Data, //pAudioData
- 0, //PlayBegin
- 0, //PlayLength
- 0, //LoopBegin
- 0, //LoopLength
- XAUDIO2_LOOP_INFINITE, //LoopCount
- NULL, //pContext
- };
-
- IXAudio2SourceVoice* pSourceVoice;
- if(FAILED(pXAudio2->CreateSourceVoice(&pSourceVoice, &wfx)))
- return NULL;
- if(FAILED(pSourceVoice->SubmitSourceBuffer(&buffer)))
- return NULL;
-
- PlayableSound_t * PlayableSound = (PlayableSound_t*) malloc(sizeof(PlayableSound_t));
- if(!PlayableSound)
- return NULL;
- PlayableSound->pSourceVoice = pSourceVoice;
- PlayableSound->Playing = false;
- PlayableSound->Data = Sound->Data;
- return PlayableSound;
-}
-
-bool PlaySound(PlayableSound_t * Sound){
- if(!Sound->Playing && !FAILED(Sound->pSourceVoice->Start(0))){
- Sound->Playing = true;
- return true;
- }
- return false;
-}
-
-bool StopSound(PlayableSound_t * Sound){
- int success = false;
- if(Sound->Playing && !FAILED(Sound->pSourceVoice->Stop(0)))
- success = true;
- Sound->Playing = false;
- return success;
-}
-
-void DeleteSound(PlayableSound_t * Sound){
- StopSound(Sound);
- //Sound->pSourceVoice->Release();
-}
-
-void Shutdown(){
- if(MasterVoice){
- MasterVoice->DestroyVoice();
- MasterVoice = NULL;
- }
- if(pXAudio2){
- pXAudio2->Release();
- pXAudio2 = NULL;
- }
-}
-
-}
\ No newline at end of file
diff --git a/Client/Audio/windows/xaudio2.cpp b/Client/Audio/windows/xaudio2.cpp
deleted file mode 100644
index 669d706..0000000
--- a/Client/Audio/windows/xaudio2.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#include
-
-DEFINE_GUID(CLSID_XAudio2, 0xe21a7345, 0xeb21, 0x468e, 0xbe, 0x50, 0x80, 0x4d, 0xb9, 0x7c, 0xf7, 0x08);
-DEFINE_GUID(CLSID_XAudio2_Debug, 0xf7a76c21, 0x53d4, 0x46bb, 0xac, 0x53, 0x8b, 0x45, 0x9c, 0xae, 0x46, 0xbd);
-DEFINE_GUID(IID_IXAudio2, 0x8bcf1f58, 0x9fe7, 0x4583, 0x8a, 0xc6, 0xe2, 0xad, 0xc4, 0x65, 0xc8, 0xbb);
\ No newline at end of file
diff --git a/Client/Audio/windows/xaudio2.hpp b/Client/Audio/windows/xaudio2.hpp
deleted file mode 100644
index 758539e..0000000
--- a/Client/Audio/windows/xaudio2.hpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- xaudio2.hpp (2010-08-14)
- author: OV2
-
- ruby-specific header to provide mingw-friendly xaudio2 interfaces
-*/
-
-#include
-#include
-
-DEFINE_GUID(CLSID_XAudio2, 0xe21a7345, 0xeb21, 0x468e, 0xbe, 0x50, 0x80, 0x4d, 0xb9, 0x7c, 0xf7, 0x08);
-DEFINE_GUID(CLSID_XAudio2_Debug, 0xf7a76c21, 0x53d4, 0x46bb, 0xac, 0x53, 0x8b, 0x45, 0x9c, 0xae, 0x46, 0xbd);
-DEFINE_GUID(IID_IXAudio2, 0x8bcf1f58, 0x9fe7, 0x4583, 0x8a, 0xc6, 0xe2, 0xad, 0xc4, 0x65, 0xc8, 0xbb);
-
-DECLARE_INTERFACE(IXAudio2Voice);
-
-#define XAUDIO2_COMMIT_NOW 0
-#define XAUDIO2_DEFAULT_CHANNELS 0
-#define XAUDIO2_DEFAULT_SAMPLERATE 0
-#define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f
-#define XAUDIO2_DEBUG_ENGINE 0x0001
-#define XAUDIO2_LOOP_INFINITE 255
-#define XAUDIO2_VOICE_NOSRC 0x0004
-
-enum XAUDIO2_DEVICE_ROLE
-{
- NotDefaultDevice = 0x0,
- DefaultConsoleDevice = 0x1,
- DefaultMultimediaDevice = 0x2,
- DefaultCommunicationsDevice = 0x4,
- DefaultGameDevice = 0x8,
- GlobalDefaultDevice = 0xf,
- InvalidDeviceRole = ~GlobalDefaultDevice
-};
-
-struct XAUDIO2_DEVICE_DETAILS
-{
- WCHAR DeviceID[256];
- WCHAR DisplayName[256];
- XAUDIO2_DEVICE_ROLE Role;
- WAVEFORMATEXTENSIBLE OutputFormat;
-};
-
-struct XAUDIO2_VOICE_DETAILS
-{
- UINT32 CreationFlags;
- UINT32 InputChannels;
- UINT32 InputSampleRate;
-};
-
-typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
-{
- Processor1 = 0x00000001,
- Processor2 = 0x00000002,
- Processor3 = 0x00000004,
- Processor4 = 0x00000008,
- Processor5 = 0x00000010,
- Processor6 = 0x00000020,
- Processor7 = 0x00000040,
- Processor8 = 0x00000080,
- Processor9 = 0x00000100,
- Processor10 = 0x00000200,
- Processor11 = 0x00000400,
- Processor12 = 0x00000800,
- Processor13 = 0x00001000,
- Processor14 = 0x00002000,
- Processor15 = 0x00004000,
- Processor16 = 0x00008000,
- Processor17 = 0x00010000,
- Processor18 = 0x00020000,
- Processor19 = 0x00040000,
- Processor20 = 0x00080000,
- Processor21 = 0x00100000,
- Processor22 = 0x00200000,
- Processor23 = 0x00400000,
- Processor24 = 0x00800000,
- Processor25 = 0x01000000,
- Processor26 = 0x02000000,
- Processor27 = 0x04000000,
- Processor28 = 0x08000000,
- Processor29 = 0x10000000,
- Processor30 = 0x20000000,
- Processor31 = 0x40000000,
- Processor32 = 0x80000000,
- XAUDIO2_ANY_PROCESSOR = 0xffffffff,
- XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
-} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR;
-
-struct XAUDIO2_VOICE_SENDS
-{
- UINT32 OutputCount;
- IXAudio2Voice* *pOutputVoices;
-};
-
-struct XAUDIO2_EFFECT_DESCRIPTOR
-{
- IUnknown *pEffect;
- BOOL InitialState;
- UINT32 OutputChannels;
-};
-
-struct XAUDIO2_EFFECT_CHAIN
-{
- UINT32 EffectCount;
- const XAUDIO2_EFFECT_DESCRIPTOR *pEffectDescriptors;
-};
-
-enum XAUDIO2_FILTER_TYPE
-{
- LowPassFilter,
- BandPassFilter,
- HighPassFilter
-};
-
-struct XAUDIO2_FILTER_PARAMETERS
-{
- XAUDIO2_FILTER_TYPE Type;
- float Frequency;
- float OneOverQ;
-};
-
-struct XAUDIO2_BUFFER
-{
- UINT32 Flags;
- UINT32 AudioBytes;
- const BYTE *pAudioData;
- UINT32 PlayBegin;
- UINT32 PlayLength;
- UINT32 LoopBegin;
- UINT32 LoopLength;
- UINT32 LoopCount;
- void *pContext;
-};
-
-struct XAUDIO2_BUFFER_WMA
-{
- const UINT32 *pDecodedPacketCumulativeBytes;
- UINT32 PacketCount;
-};
-
-struct XAUDIO2_VOICE_STATE
-{
- void *pCurrentBufferContext;
- UINT32 BuffersQueued;
- UINT64 SamplesPlayed;
-};
-
-struct XAUDIO2_PERFORMANCE_DATA
-{
- UINT64 AudioCyclesSinceLastQuery;
- UINT64 TotalCyclesSinceLastQuery;
- UINT32 MinimumCyclesPerQuantum;
- UINT32 MaximumCyclesPerQuantum;
- UINT32 MemoryUsageInBytes;
- UINT32 CurrentLatencyInSamples;
- UINT32 GlitchesSinceEngineStarted;
- UINT32 ActiveSourceVoiceCount;
- UINT32 TotalSourceVoiceCount;
- UINT32 ActiveSubmixVoiceCount;
- UINT32 TotalSubmixVoiceCount;
- UINT32 ActiveXmaSourceVoices;
- UINT32 ActiveXmaStreams;
-};
-
-struct XAUDIO2_DEBUG_CONFIGURATION
-{
- UINT32 TraceMask;
- UINT32 BreakMask;
- BOOL LogThreadID;
- BOOL LogFileline;
- BOOL LogFunctionName;
- BOOL LogTiming;
-};
-
-DECLARE_INTERFACE(IXAudio2EngineCallback)
-{
- STDMETHOD_(void, OnProcessingPassStart) (void);
- STDMETHOD_(void, OnProcessingPassEnd) (void);
- STDMETHOD_(void, OnCriticalError) (HRESULT Error);
-};
-
-DECLARE_INTERFACE(IXAudio2VoiceCallback)
-{
- STDMETHOD_(void, OnVoiceProcessingPassStart) (UINT32 BytesRequired);
- STDMETHOD_(void, OnVoiceProcessingPassEnd) (void);
- STDMETHOD_(void, OnStreamEnd) (void);
- STDMETHOD_(void, OnBufferStart) (void *pBufferContext);
- STDMETHOD_(void, OnBufferEnd) (void *pBufferContext);
- STDMETHOD_(void, OnLoopEnd) (void *pBufferContext);
- STDMETHOD_(void, OnVoiceError) (void *pBufferContext, HRESULT Error);
-};
-
-DECLARE_INTERFACE(IXAudio2Voice)
-{
- STDMETHOD_(void, GetVoiceDetails) (XAUDIO2_VOICE_DETAILS *pVoiceDetails);
- STDMETHOD(SetOutputVoices) (const XAUDIO2_VOICE_SENDS *pSendList);
- STDMETHOD(SetEffectChain) (const XAUDIO2_EFFECT_CHAIN *pEffectChain);
- STDMETHOD(EnableEffect) (UINT32 EffectIndex, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD(DisableEffect) (UINT32 EffectIndex, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetEffectState) (UINT32 EffectIndex, BOOL *pEnabled);
- STDMETHOD(SetEffectParameters) (UINT32 EffectIndex, const void *pParameters, UINT32 ParametersByteSize,
- UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD(GetEffectParameters) (UINT32 EffectIndex, void *pParameters, UINT32 ParametersByteSize);
- STDMETHOD(SetFilterParameters) (const XAUDIO2_FILTER_PARAMETERS *pParameters, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetFilterParameters) (XAUDIO2_FILTER_PARAMETERS *pParameters);
- STDMETHOD(SetVolume) (float Volume, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetVolume) (float *pVolume);
- STDMETHOD(SetChannelVolumes) (UINT32 Channels, const float *pVolumes, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetChannelVolumes) (UINT32 Channels, float *pVolumes);
- STDMETHOD(SetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels, UINT32 DestinationChannels,
- const float *pLevelMatrix, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels,
- UINT32 DestinationChannels, float *pLevelMatrix);
- STDMETHOD_(void, DestroyVoice) (void);
-};
-
-DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice){};
-
-DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice){};
-
-DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice)
-{
- STDMETHOD(Start) (UINT32 Flags, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD(Stop) (UINT32 Flags, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD(SubmitSourceBuffer) (const XAUDIO2_BUFFER *pBuffer, const XAUDIO2_BUFFER_WMA *pBufferWMA = NULL);
- STDMETHOD(FlushSourceBuffers) (void);
- STDMETHOD(Discontinuity) (void);
- STDMETHOD(ExitLoop) (UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetState) (XAUDIO2_VOICE_STATE *pVoiceState);
- STDMETHOD(SetFrequencyRatio) (float Ratio, UINT32 OperationSet = XAUDIO2_COMMIT_NOW);
- STDMETHOD_(void, GetFrequencyRatio) (float *pRatio);
-};
-
-DECLARE_INTERFACE_(IXAudio2, IUnknown)
-{
- STDMETHOD(GetDeviceCount) (UINT32 *pCount);
- STDMETHOD(GetDeviceDetails) (UINT32 Index, XAUDIO2_DEVICE_DETAILS *pDeviceDetails);
- STDMETHOD(Initialize) (UINT32 Flags = 0, XAUDIO2_PROCESSOR XAudio2Processor = XAUDIO2_DEFAULT_PROCESSOR);
- STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback *pCallback);
- STDMETHOD_(void, UnregisterForCallbacks) (IXAudio2EngineCallback *pCallback);
- STDMETHOD(CreateSourceVoice) (IXAudio2SourceVoice* *ppSourceVoice, const WAVEFORMATEX *pSourceFormat, UINT32 Flags = 0,
- float MaxFrequencyRatio = XAUDIO2_DEFAULT_FREQ_RATIO, IXAudio2VoiceCallback *pCallback = NULL,
- const XAUDIO2_VOICE_SENDS *pSendList = NULL, const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL);
- STDMETHOD(CreateSubmixVoice) (IXAudio2SubmixVoice* *ppSubmixVoice, UINT32 InputChannels, UINT32 InputSampleRate,
- UINT32 Flags = 0, UINT32 ProcessingStage = 0, const XAUDIO2_VOICE_SENDS *pSendList = NULL,
- const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL);
- STDMETHOD(CreateMasteringVoice) (IXAudio2MasteringVoice* *ppMasteringVoice,
- UINT32 InputChannels = XAUDIO2_DEFAULT_CHANNELS, UINT32 InputSampleRate = XAUDIO2_DEFAULT_SAMPLERATE,
- UINT32 Flags = 0, UINT32 DeviceIndex = 0, const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL);
- STDMETHOD(StartEngine) (void);
- STDMETHOD_(void, StopEngine) (void);
- STDMETHOD(CommitChanges) (UINT32 OperationSet);
- STDMETHOD_(void, GetPerformanceData) (XAUDIO2_PERFORMANCE_DATA *pPerfData);
- STDMETHOD_(void, SetDebugConfiguration) (const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration, void *pReserved = NULL);
-};
-
-inline HRESULT XAudio2Create(IXAudio2* *ppXAudio2, UINT32 Flags = 0,
- XAUDIO2_PROCESSOR XAudio2Processor = XAUDIO2_DEFAULT_PROCESSOR)
-{
- IXAudio2 *pXAudio2;
- HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? CLSID_XAudio2_Debug : CLSID_XAudio2, NULL,
- CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2);
- if(SUCCEEDED(hr)){
- hr = pXAudio2->Initialize(Flags, XAudio2Processor);
- if(SUCCEEDED(hr))
- *ppXAudio2 = pXAudio2;
- else
- pXAudio2->Release();
- }
- return hr;
-}
\ No newline at end of file
diff --git a/Client/CHANGES b/Client/CHANGES
deleted file mode 100644
index aacc0cb..0000000
--- a/Client/CHANGES
+++ /dev/null
@@ -1,2 +0,0 @@
-Technical Preview 1
- * Initial release
\ No newline at end of file
diff --git a/Client/CMakeLists.txt b/Client/CMakeLists.txt
deleted file mode 100644
index fc096e0..0000000
--- a/Client/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(NiotsoClient)
-
-include_directories(${FILEHANDLER_INCLUDE} ${FREETYPE_INCLUDE})
-
-if(WIN32)
- set(NIOTSOCLIENT_SOURCES
- Client.cpp
- Audio/Startup.cpp
- Audio/windows/XAudio2.cpp
- Graphics/Font.cpp
- Graphics/Startup.cpp
- Graphics/Viewport.cpp
- Resources/Resource.rc
- Scene/LoginScreen/LoginScreen.cpp
- System/System.cpp
- Window/Window.cpp
- )
- add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES})
- target_link_libraries(TSO ole32 opengl32)
- target_link_libraries(TSO FileHandler_shared ${FREETYPE_LINK})
-endif()
\ No newline at end of file
diff --git a/Client/COPYING b/Client/COPYING
deleted file mode 100644
index acdc1dc..0000000
--- a/Client/COPYING
+++ /dev/null
@@ -1,642 +0,0 @@
-IMPORTANT:
-Niotso is distributed under the terms of the GNU GPLv3.
-
-While this license does permit others to compile, distribute, change,
-and distribute changes to Niotso, in reality, many of these freedoms
-cannot legally be enacted by anybody.
-
-Specifically, if you make changes to Niotso such that it significantly
-changes the "game experience as presented to the player", it cannot
-be distributed to others. You also may not distribute a version of
-Niotso that has stripped the EA or Maxis trademarked names or logos
-anywhere from the game. Personal use of these modifications is okay.
-
-These restrictions are not enforced by us, but may potentially be used
-by EA in attempt to take down your game.
-
-If you have any questions, you may visit
-
-
----
-
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/Client/Client.cpp b/Client/Client.cpp
deleted file mode 100644
index 15c8d70..0000000
--- a/Client/Client.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Client.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "EngineInterface.hpp"
-
-static void Shutdown();
-Scene * CurrentScene;
-
-#ifdef _WIN32
-
-/* MinGW bonus feature; saves 66 kB in the binary :) */
-/* */ void* __CRTDECL operator new(unsigned size){return malloc(size);}
-/* */ void __CRTDECL operator delete(void *ptr){free(ptr);}
-/* */ extern "C" void __CRTDECL __cxa_pure_virtual(){}
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
-{
- int result;
-
- //Disallow multiple instances of the game from running
- CreateMutex(NULL, TRUE, "Global\\TSO_NIOTSO_MUTEX");
- if(GetLastError() == ERROR_ALREADY_EXISTS){
- HWND hWnd = FindWindow("TSO_NIOTSO", "The Sims Online");
- if(hWnd != NULL){
- ShowWindow(hWnd, SW_RESTORE);
- SetForegroundWindow(hWnd);
- SetFocus(hWnd);
- }
- return ERROR_INIT_ANOTHERINSTRUNNING;
- }
-
- Window::Width = 800;
- Window::Height = 600;
- Window::Fullscreen = false;
- System::hInst = hInstance;
-
- result = Window::Initialize();
- if(result != 0){
- Shutdown();
- return ERROR_INIT | ERROR_INIT_WINDOW | result;
- }
-
- result = System::Initialize();
- if(result != 0){
- Shutdown();
- return ERROR_INIT | ERROR_INIT_SYSTEM | result;
- }
-
- result = Graphics::Initialize();
- if(result != 0){
- Shutdown();
- return ERROR_INIT | ERROR_INIT_GRAPHICS | result;
- }
-
- result = Audio::Initialize();
- if(result != 0){
- Shutdown();
- return ERROR_INIT | ERROR_INIT_AUDIO | result;
- }
-
- CurrentScene = new LoginScreen();
- if(CurrentScene == NULL || System::SceneFailed){
- Shutdown();
- return ERROR_INIT | ERROR_INIT_LOGIC | ERROR_LOGIC_CREATE_SCENE;
- }
-
- ShowWindow(Window::hWnd, SW_SHOW);
- SetForegroundWindow(Window::hWnd);
- SetFocus(Window::hWnd);
-
- LARGE_INTEGER PreviousTime;
- QueryPerformanceCounter(&PreviousTime);
-
- while(true){
- LARGE_INTEGER CurrentTime;
- QueryPerformanceCounter(&CurrentTime);
- float TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart;
- PreviousTime = CurrentTime;
- if(TimeDelta < 0 || TimeDelta >= 5) //Safe-guard in case of system delay
- continue;
-
- memcpy(&System::UserInput, (const void*) &System::UserInput_v, sizeof(System::UserInput_t));
-
- int result = CurrentScene->RunFor(TimeDelta);
- if(result == System::SHUTDOWN)
- break;
- if(result > 0){
- glClear(GL_COLOR_BUFFER_BIT);
- CurrentScene->Render();
- SwapBuffers(Graphics::hDC);
- }
-
- //Sleep for the remainder of the frame
- PreviousTime.QuadPart = CurrentTime.QuadPart;
- QueryPerformanceCounter(&CurrentTime);
- float SleepDuration =
- (System::FramePeriod - (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart) * 1000;
- if(SleepDuration > 1 && SleepDuration < 100) Sleep((unsigned) SleepDuration);
- }
-
- ShowWindow(Window::hWnd, SW_HIDE);
- delete CurrentScene;
-
- Shutdown();
- return 0;
-}
-
-static void Shutdown()
-{
- Audio::Shutdown();
- Graphics::Shutdown();
- System::Shutdown();
- Window::Shutdown();
-}
-
-#endif
\ No newline at end of file
diff --git a/Client/EngineInterface.hpp b/Client/EngineInterface.hpp
deleted file mode 100644
index 17dce67..0000000
--- a/Client/EngineInterface.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- EngineInterface.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-//Compiler/platform constants
-#ifdef _WIN32
- #define WINVER 0x0502
- #define _WIN32_WINNT 0x0502
- #define _CRT_SECURE_NO_WARNINGS
-#endif
-
-//Standard libraries
-#include
-#include
-#include
-#include
-#ifdef _WIN32
- #define WIN32_LEAN_AND_MEAN
- #include
- #undef NULL
- #define NULL 0
-#endif
-
-//Codebase libraries
-#include "FileHandler.hpp"
-#include "ft2build.h"
-#include FT_FREETYPE_H
-
-//Macro definitions
-#ifndef min
- #define min(x,y) ((x)<(y)?(x):(y))
-#endif
-#ifndef max
- #define max(x,y) ((x)>(y)?(x):(y))
-#endif
-
-//Codebase version, branding, linker resources
-#include "version.h"
-#include "Resources/Resource.h"
-
-//Components
-#include "Audio/Audio.hpp"
-#include "Graphics/Graphics.hpp"
-#include "System/System.hpp"
-#include "Window/Window.hpp"
-
-#include "Scene/Scene.hpp"
\ No newline at end of file
diff --git a/Client/Graphics/Font.cpp b/Client/Graphics/Font.cpp
deleted file mode 100644
index 10941d6..0000000
--- a/Client/Graphics/Font.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Graphics/Font.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-namespace Graphics {
-
-FT_Library FreeTypeLibrary;
-FT_Face FontFace;
-
-static void FindStringSize(const wchar_t * String, unsigned * width, unsigned * height, int * xoffset, int * yoffset, int font){
- int x = 0, y = 0;
- int lowestx = 0, lowesty = 0, highestx = 0, highesty = 0;
-
- for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){
- int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER);
- if(error) continue;
-
- int bottomx = x + FontFace->glyph->bitmap_left;
- int bottomy = y + FontFace->glyph->bitmap_top - FontFace->glyph->bitmap.rows;
- if(bottomx < lowestx) lowestx = bottomx;
- if(bottomy < lowesty) lowesty = bottomy;
-
- int topx = x + FontFace->glyph->bitmap_left + FontFace->glyph->bitmap.width;
- int topy = y + FontFace->glyph->bitmap_top;
- if(topx > highestx) highestx = topx;
- if(topy > highesty) highesty = topy;
-
- x += FontFace->glyph->advance.x >> 6;
- y += FontFace->glyph->advance.y >> 6;
- }
-
- *width = highestx-lowestx, *height = highesty-lowesty;
- *xoffset = -lowestx, *yoffset = -lowesty;
-}
-
-void DrawText(Image_t * Image, const wchar_t * String, int x, int y, unsigned width, unsigned height,
- TextAlignment Alignment, int font, COLORREF Color){
- //x, y, width, height form the bounding rectangle into which the text should be drawn.
- //(x,y) defines the offset to the top-left of the rectangle from the top left of the background.
- //The destination image must be stored in bottom-up order.
-
- if(x >= (signed)Image->Width || y >= (signed)Image->Height) return;
-
- //(stringx,stringy) will refer to the top-left of the string in bottom-up coordinates
- int stringx, stringy;
- unsigned StringWidth, StringHeight;
- FindStringSize(String, &StringWidth, &StringHeight, &stringx, &stringy, font);
-
- //Horizontal alignment
- if(Alignment < 2) stringx = x; //Left
- else if(Alignment < 4) stringx = x+(width-StringWidth+1)/2; //Middle
- else stringx = x+width-StringWidth; //Right
- //Vertical alignment
- if(!(Alignment&1)) stringy = y; //Top
- else stringy = y+(height-StringHeight+1)/2; //Middle
- stringy = Image->Height-stringy-StringHeight;
-
- //Now that we've done the alignment, we can crop the bounding box within the limits of the background image
- if(x < 0){ Image->Width += x; x = 0; }
- if(y < 0){ Image->Height += y; y = 0; }
- if(width > Image->Width) width = Image->Width;
- if(height > Image->Height) height = Image->Height;
-
- for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){
- int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER);
- if(error) continue;
-
- int cWidth = FontFace->glyph->bitmap.width, cHeight = FontFace->glyph->bitmap.rows;
- if(cWidth && cHeight){
- uint8_t * cRender; /* Convert to Bottom-up */
- uint8_t * OriginalRender = FontFace->glyph->bitmap.buffer;
- if(FontFace->glyph->bitmap.pitch > 0){
- cRender = (uint8_t *) malloc(cWidth * cHeight);
- for(int i=0; iglyph->bitmap_left;
- stringy += FontFace->glyph->bitmap_top-cHeight;
- for(int i=max(-stringy, 0); iData + 3*((stringy+i)*width + (stringx+j));
-
- int originalcolor;
- originalcolor = *ptr;
- *ptr++ = (uint8_t) (originalcolor + (int)((GetBValue(Color)-originalcolor)*2*value+255)/510);
- originalcolor = *ptr;
- *ptr++ = (uint8_t) (originalcolor + (int)((GetGValue(Color)-originalcolor)*2*value+255)/510);
- originalcolor = *ptr;
- *ptr++ = (uint8_t) (originalcolor + (int)((GetRValue(Color)-originalcolor)*2*value+255)/510);
- }
- }
- stringx -= FontFace->glyph->bitmap_left;
- stringy -= FontFace->glyph->bitmap_top-cHeight;
-
- if(FontFace->glyph->bitmap.pitch > 0) free(cRender);
- }
- stringx += FontFace->glyph->advance.x >> 6;
- stringy += FontFace->glyph->advance.y >> 6;
- }
-}
-
-Image_t * StringImage(const wchar_t * String, int font, COLORREF Color){
- Image_t * Image = (Image_t*) malloc(sizeof(Image_t));
- if(Image == NULL) return NULL;
-
- unsigned StringWidth, StringHeight;
- int stringx, stringy;
- FindStringSize(String, &StringWidth, &StringHeight, &stringx, &stringy, font);
-
- Image->Data = (uint8_t*) malloc(4 * StringWidth * StringHeight);
- if(Image->Data == NULL){
- free(Image);
- return NULL;
- }
- for(unsigned i=0; i<4*StringWidth*StringHeight;){
- Image->Data[i++] = GetBValue(Color);
- Image->Data[i++] = GetGValue(Color);
- Image->Data[i++] = GetRValue(Color);
- Image->Data[i++] = 0;
- }
-
- for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){
- int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER);
- if(error) continue;
-
- int cWidth = FontFace->glyph->bitmap.width, cHeight = FontFace->glyph->bitmap.rows;
- if(cWidth && cHeight){
- uint8_t * cRender; /* Convert to Bottom-up */
- uint8_t * OriginalRender = FontFace->glyph->bitmap.buffer;
- if(FontFace->glyph->bitmap.pitch > 0){
- cRender = (uint8_t *) malloc(cWidth * cHeight);
- for(int i=0; iglyph->bitmap_left;
- stringy += FontFace->glyph->bitmap_top-cHeight;
- for(int i=0; iData + 4*((stringy+i)*StringWidth + (stringx+j));
- ptr[3] = cRender[i*cWidth + j];
- }
- }
- stringx -= FontFace->glyph->bitmap_left;
- stringy -= FontFace->glyph->bitmap_top-cHeight;
-
- if(FontFace->glyph->bitmap.pitch > 0) free(cRender);
- }
- stringx += FontFace->glyph->advance.x >> 6;
- stringy += FontFace->glyph->advance.y >> 6;
- }
-
- Image->Width = StringWidth;
- Image->Height = StringHeight;
- Image->Format = FIMG_BGRA32;
- return Image;
-}
-
-}
\ No newline at end of file
diff --git a/Client/Graphics/Graphics.hpp b/Client/Graphics/Graphics.hpp
deleted file mode 100644
index f9e5a85..0000000
--- a/Client/Graphics/Graphics.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Graphics/Graphics.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include
-#include
-
-//Graphics/Startup.cpp
-namespace Graphics {
- int Initialize();
- void Shutdown();
- extern HDC hDC;
- extern HGLRC hRC;
-
- int InitGL();
- void ResizeViewport(unsigned width, unsigned height);
-
- enum TextAlignment {
- ALIGN_LEFT_TOP,
- ALIGN_LEFT_CENTER,
- ALIGN_CENTER_TOP,
- ALIGN_CENTER_CENTER,
- ALIGN_RIGHT_TOP,
- ALIGN_RIGHT_CENTER
- };
-
- //Font.cpp
- extern FT_Library FreeTypeLibrary;
- extern FT_Face FontFace;
- void DrawText(Image_t * Image, const wchar_t * String, int x, int y, unsigned width, unsigned height,
- TextAlignment Alignment, int font, COLORREF Color);
- Image_t * StringImage(const wchar_t * String, int font, COLORREF Color);
-}
\ No newline at end of file
diff --git a/Client/Graphics/Startup.cpp b/Client/Graphics/Startup.cpp
deleted file mode 100644
index 35f44ae..0000000
--- a/Client/Graphics/Startup.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Graphics/Startup.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-namespace Graphics {
-
-HDC hDC;
-HGLRC hRC;
-
-int Initialize(){
- hDC = GetDC(Window::hWnd);
- if(hDC == NULL){
- MessageBox(Window::hWnd, "Failed to obtain the device context.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_GRAPHICS_OBTAIN_DC;
- }
-
- const PIXELFORMATDESCRIPTOR pfd = {
- sizeof(PIXELFORMATDESCRIPTOR), 1, //Size and version
- PFD_DRAW_TO_WINDOW | //dwFlags
- PFD_SUPPORT_OPENGL |
- PFD_DOUBLEBUFFER,
- PFD_TYPE_RGBA, //iPixelType
- 24, //cColorBits
- 0, 0, 0, 0, 0, 0, 0, 0, //R,G,B,A bits
- 0, 0, 0, 0, 0, //Accumulation buffer bits
- 16, //cDepthBits
- 0, //cStencilBits
- 0, //cAuxBuffers
- PFD_MAIN_PLANE, //iLayerType
- 0, //Reserved
- 0, 0, 0 //Masks
- };
-
- unsigned PixelFormat = ChoosePixelFormat(hDC, &pfd);
- if(!PixelFormat){
- MessageBox(Window::hWnd, "Failed to find a suitable pixel format for the device context.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_GRAPHICS_FIND_PIXELFORMAT;
- }
-
- if(!SetPixelFormat(hDC, PixelFormat, &pfd)){
- MessageBox(Window::hWnd, "Failed to set the pixel format for the device context.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_GRAPHICS_SET_PIXELFORMAT;
- }
-
- hRC = wglCreateContext(hDC);
- if(!hRC){
- MessageBox(Window::hWnd, "Failed to create an OpenGL rendering context.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_GRAPHICS_CREATE_GLRC;
- }
-
- if(!wglMakeCurrent(hDC, hRC)){
- MessageBox(Window::hWnd, "Failed to activate the OpenGL device context.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_GRAPHICS_ACTIVATE_GLRC;
- }
-
- BOOL (WINAPI *wglSwapIntervalEXT)(int) = (BOOL (WINAPI *)(int)) wglGetProcAddress("wglSwapIntervalEXT");
- if(wglSwapIntervalEXT) wglSwapIntervalEXT(1);
- int (WINAPI *wglGetSwapIntervalEXT)(void) = (int (WINAPI *)(void)) wglGetProcAddress("wglGetSwapIntervalEXT");
- if(wglGetSwapIntervalEXT) wglGetSwapIntervalEXT(); //Seems necessary on some cards
-
- int result = InitGL();
- if(result != 0){
- Shutdown();
- return ERROR_GRAPHICS_INIT_GLSCENE | result;
- }
-
- ResizeViewport(Window::Width, Window::Height);
- return 0;
-}
-
-int InitGL(){
- glShadeModel(GL_SMOOTH);
- glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
- glClearDepth(1.0f);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_RESCALE_NORMAL);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glDepthFunc(GL_LEQUAL);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
- return 0;
-}
-
-void Shutdown(){
- if(Graphics::hRC){
- wglMakeCurrent(NULL, NULL);
- wglDeleteContext(Graphics::hRC);
- Graphics::hRC = NULL;
- }
- if(Graphics::hDC){
- ReleaseDC(Window::hWnd, Graphics::hDC);
- Graphics::hDC = NULL;
- }
-}
-
-}
\ No newline at end of file
diff --git a/Client/Graphics/Viewport.cpp b/Client/Graphics/Viewport.cpp
deleted file mode 100644
index c39c9b0..0000000
--- a/Client/Graphics/Viewport.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Graphics/Viewport.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-void Graphics::ResizeViewport(unsigned width, unsigned height){
- if(width == 0) width++;
- if(height == 0) height++;
-
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- glOrtho(0, width, 0, height, 0.0, 1.0);
-}
\ No newline at end of file
diff --git a/Client/Resources/Resource.h b/Client/Resources/Resource.h
deleted file mode 100644
index 04d4a13..0000000
--- a/Client/Resources/Resource.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define ID_VERSIONINFO 1
-#define IDI_TSO 2
diff --git a/Client/Resources/Resource.rc b/Client/Resources/Resource.rc
deleted file mode 100644
index 574970b..0000000
--- a/Client/Resources/Resource.rc
+++ /dev/null
@@ -1,32 +0,0 @@
-#include
-#include "../version.h"
-#include "Resource.h"
-
-IDI_TSO ICON "TSO.ico"
-
-ID_VERSIONINFO VERSIONINFO
-FILEVERSION VERSION_A,VERSION_B,VERSION_C,VERSION_D
-PRODUCTVERSION VERSION_A,VERSION_B,VERSION_C,VERSION_D
-FILEOS 0x00040000L //Windows 32-bit+
-FILETYPE 1 //1 is exe, 2 is dll, and so on.
- //The list can be found at
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904B0"
- BEGIN
- VALUE "CompanyName", "Maxis™"
- VALUE "FileDescription", "The Sims Online"
- VALUE "FileVersion", VERSIONSTR
- VALUE "InternalName", "TSO_NIOTSO"
- VALUE "LegalCopyright", "Copyright © 2002-2005 Maxis™"
- VALUE "OriginalFilename", "TSO.exe"
- VALUE "ProductName", "The Sims Online"
- VALUE "ProductVersion", VERSIONSTR
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0409, 0x04B0
- END
-END
diff --git a/Client/Resources/TSO.ico b/Client/Resources/TSO.ico
deleted file mode 100644
index ee94659..0000000
Binary files a/Client/Resources/TSO.ico and /dev/null differ
diff --git a/Client/Scene/LoginScreen/LoginScreen.cpp b/Client/Scene/LoginScreen/LoginScreen.cpp
deleted file mode 100644
index 7e7c9bc..0000000
--- a/Client/Scene/LoginScreen/LoginScreen.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Scene/LoginScreen/LoginScreen.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../../EngineInterface.hpp"
-
-static const wchar_t * const StatusStrings[] = {
- L"Extruding Terrain Web",
- L"Adjusting Emotional Weights",
- L"Calibrating Personality Matrix",
-
- L"Calculating Domestic Coefficients",
- L"Readjusting Career Ladder",
- L"Accessing Money Supply",
- L"Hacking the Social Network",
- L"Tweaking Chaos Control",
- L"Downloading Reticulated Splines"
-};
-static const char * const images[] = {"eagames.bmp", "maxis.png", "setup.bmp"};
-
-static const char * const sounds[] = {"loadloop.wav"};
-
-LoginScreen::LoginScreen() : Scene(0){
- Screen = Screen_EAGames;
- Time = 0;
- ScrollPos = -1;
- memset(image, 0, IMG_COUNT * sizeof(Image_t *));
- memset(texture, 0, TEX_COUNT * sizeof(GLuint));
- memset(sound, 0, SND_COUNT * sizeof(PlayableSound_t *));
-
- glMatrixMode(GL_TEXTURE);
- glGenTextures(TEX_COUNT, texture);
-
- FT_Set_Char_Size(Graphics::FontFace, 0, 22*64, 0, 0);
-
- for(int i=TEX_EAGAMES; i<=TEX_SETUP; i++){
- Image_t * Image = File::ReadImageFile(images[i]);
- if(!Image){
- const char * Message;
- switch(File::Error){
- case FERR_NOT_FOUND:
- Message = "%s does not exist.";
- break;
- case FERR_OPEN:
- Message = "%s could not be opened for reading.";
- break;
- case FERR_BLANK:
- case FERR_UNRECOGNIZED:
- case FERR_INVALIDDATA:
- Message = "%s is corrupt or invalid.";
- break;
- case FERR_MEMORY:
- Message = "Memory for %s could not be allocated.";
- break;
- default:
- Message = "%s could not be read.";
- }
-
- char Buffer[1024];
- sprintf(Buffer, Message, images[i]);
- MessageBox(Window::hWnd, Buffer, NULL, MB_OK | MB_ICONERROR);
- EXIT_SCENE();
- }
-
- if(i == TEX_MAXIS){
- Graphics::DrawText(Image, L"Maxis\x2122 is an Electronic Arts\x2122 brand.", 0, 600-146, 800, 146,
- Graphics::ALIGN_CENTER_CENTER, 0, RGB(0xef, 0xe3, 0x8c));
- }
-
- glBindTexture(GL_TEXTURE_2D, texture[i]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Image->Width, Image->Height, 0, GL_BGR, GL_UNSIGNED_BYTE, Image->Data);
- free(Image->Data);
- free(Image);
- }
-
- image[IMG_COPYRIGHT] = Graphics::StringImage(L"(c) 2002, 2003 Electronic Arts Inc. All rights reserved.",
- 0, RGB(0xef, 0xe3, 0x8c));
- if(image[IMG_COPYRIGHT] == NULL){
- EXIT_SCENE();
- }
- glBindTexture(GL_TEXTURE_2D, texture[TEX_COPYRIGHT]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image[IMG_COPYRIGHT]->Width, image[IMG_COPYRIGHT]->Height, 0, GL_BGRA,
- GL_UNSIGNED_BYTE, image[IMG_COPYRIGHT]->Data);
- free(image[IMG_COPYRIGHT]->Data);
-
- for(int i=0; i<9; i++){
- image[IMG_STATUS+i] = Graphics::StringImage(StatusStrings[i], 0, RGB(0xef, 0xe3, 0x8c));
- if(image[IMG_STATUS+i] == NULL){
- EXIT_SCENE();
- }
- glBindTexture(GL_TEXTURE_2D, texture[TEX_STATUS+i]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image[IMG_STATUS+i]->Width, image[IMG_STATUS+i]->Height, 0, GL_BGRA,
- GL_UNSIGNED_BYTE, image[IMG_STATUS+i]->Data);
- free(image[IMG_STATUS+i]->Data);
- }
-
- for(int i=0; iData);
- free(sound[i]);
- }
- }
-}
-
-int LoginScreen::Run(float TimeDelta){
- Time += TimeDelta;
- if(ScrollPos != 8){
- ScrollPos += TimeDelta*0.75;
- if(ScrollPos > 8) ScrollPos = 8;
- }
-
- if(Screen != Screen_Setup && Time >= 4.0){
- Screen = (Screen==Screen_EAGames) ? Screen_Maxis : Screen_Setup;
- Time = 0;
- }
-
- if(System::UserInput.CloseWindow){
- return SCENE_EXIT;
- }
- return SCENE_NEED_REDRAW;
-}
-
-void LoginScreen::Render(){
- glMatrixMode(GL_TEXTURE);
-
- //Background
- glBindTexture(GL_TEXTURE_2D, texture[Screen]);
- glBegin(GL_QUADS);
- glTexCoord2i(0,0); glVertex2i(0,0);
- glTexCoord2i(1,0); glVertex2i(800,0);
- glTexCoord2i(1,1); glVertex2i(800,600);
- glTexCoord2i(0,1); glVertex2i(0,600);
- glEnd();
-
- if(Screen != Screen_Setup) return;
-
- glBindTexture(GL_TEXTURE_2D, texture[TEX_COPYRIGHT]);
- glBegin(GL_QUADS);
- glTexCoord2i(0,0); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2,58);
- glTexCoord2i(1,0); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2 + image[IMG_COPYRIGHT]->Width,58);
- glTexCoord2i(1,1); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2 + image[IMG_COPYRIGHT]->Width,image[IMG_COPYRIGHT]->Height + 58);
- glTexCoord2i(0,1); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2,image[IMG_COPYRIGHT]->Height + 58);
- glEnd();
-
- for(int i=0; i<9; i++){
- glBindTexture(GL_TEXTURE_2D, texture[TEX_STATUS+i]);
- glBegin(GL_QUADS);
- glTexCoord2i(0,0); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2,20);
- glTexCoord2i(1,0); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2 + image[IMG_STATUS+i]->Width,20);
- glTexCoord2i(1,1); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2 + image[IMG_STATUS+i]->Width,image[IMG_STATUS+i]->Height + 20);
- glTexCoord2i(0,1); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2,image[IMG_STATUS+i]->Height + 20);
- glEnd();
- }
-}
\ No newline at end of file
diff --git a/Client/Scene/LoginScreen/LoginScreen.hpp b/Client/Scene/LoginScreen/LoginScreen.hpp
deleted file mode 100644
index a3d30a0..0000000
--- a/Client/Scene/LoginScreen/LoginScreen.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Scene/LoginScreen/LoginScreen.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-class LoginScreen : public Scene {
- enum {
- IMG_COPYRIGHT,
- IMG_STATUS, //value = 1..9
- IMG_COUNT = 10
- };
-
- enum {
- TEX_EAGAMES,
- TEX_MAXIS,
- TEX_SETUP,
- TEX_COPYRIGHT,
- TEX_STATUS, //value = 4..12
- TEX_COUNT = 13
- };
-
- enum {
- SND_LOADLOOP,
- SND_COUNT
- };
-
- enum { Screen_EAGames, Screen_Maxis, Screen_Setup } Screen;
- float Time;
- float ScrollPos;
- Image_t * image[IMG_COUNT];
- GLuint texture[TEX_COUNT];
- PlayableSound_t * sound[SND_COUNT];
-
- public:
- LoginScreen();
- ~LoginScreen();
- void Render();
-
- private:
- int Run(float TimeDelta);
-};
\ No newline at end of file
diff --git a/Client/Scene/Scene.hpp b/Client/Scene/Scene.hpp
deleted file mode 100644
index 97133b5..0000000
--- a/Client/Scene/Scene.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Scene/Scene.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#define EXIT_SCENE() do { System::SceneFailed = true; delete this; return; } while(0)
-#define SCENE_EXIT 0
-#define SCENE_NEED_REDRAW 1
-#define SCENE_NO_REDRAW -1
-
-class Scene {
- const float TickPeriod;
- float RealTimeDelta;
- virtual int Run(float TimeDelta) = 0;
-
- protected:
- float TimeDelta;
- Scene(float c) : TickPeriod(c), RealTimeDelta(0) {}
-
- public:
- int RunFor(float TimeDelta) {
- if(TickPeriod == 0){
- return Run(TimeDelta);
- }
-
- bool Redraw = false;
- RealTimeDelta += TimeDelta;
- while(RealTimeDelta >= 0){
- int result = Run(TickPeriod);
- if(result == System::SHUTDOWN)
- return System::SHUTDOWN;
- if(result > 0) Redraw = true;
- RealTimeDelta -= TickPeriod;
- }
- return (Redraw) ? 1 : -1;
- }
-
- virtual void Render() = 0;
- virtual ~Scene() {};
-};
-
-/****
-** Scenes
-*/
-
-#include "LoginScreen/LoginScreen.hpp"
\ No newline at end of file
diff --git a/Client/System/System.cpp b/Client/System/System.cpp
deleted file mode 100644
index 1ebf8c3..0000000
--- a/Client/System/System.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- System/System.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-namespace System {
-
-HINSTANCE hInst = NULL;
-LARGE_INTEGER ClockFreq;
-volatile float FramePeriod;
-UserInput_t UserInput = UserInput_t();
-volatile UserInput_t UserInput_v;
-bool SceneFailed = false;
-
-int Initialize(){
- QueryPerformanceFrequency(&ClockFreq);
-
- DEVMODE dm;
- EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
- System::FramePeriod = 1.0f/dm.dmDisplayFrequency;
-
- if(FT_Init_FreeType(&Graphics::FreeTypeLibrary)){
- MessageBox(Window::hWnd, "Failed to initialize FreeType.", NULL, MB_OK | MB_ICONERROR);
- Graphics::FreeTypeLibrary = NULL;
- Shutdown();
- return ERROR_SYSTEM_INIT_FREETYPE;
- };
- if(FT_New_Face(Graphics::FreeTypeLibrary, "simdialogue-uni-game.ttf", 0, &Graphics::FontFace)){
- MessageBox(Window::hWnd, "simdialogue-uni-game.ttf does not exist or is corrupt or invalid.",
- NULL, MB_OK | MB_ICONERROR);
- Graphics::FontFace = NULL;
- Shutdown();
- return ERROR_SYSTEM_MISSING_FONT;
- }
-
- return 0;
-}
-
-void Shutdown(){
- if(Graphics::FontFace){
- FT_Done_Face(Graphics::FontFace);
- Graphics::FontFace = NULL;
- }
- if(Graphics::FreeTypeLibrary){
- FT_Done_FreeType(Graphics::FreeTypeLibrary);
- Graphics::FreeTypeLibrary = NULL;
- }
-}
-
-}
\ No newline at end of file
diff --git a/Client/System/System.hpp b/Client/System/System.hpp
deleted file mode 100644
index 9306529..0000000
--- a/Client/System/System.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- System/System.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-namespace System {
- int Initialize();
- void Shutdown();
-
- extern HINSTANCE hInst;
- extern LARGE_INTEGER ClockFreq;
- extern volatile float FramePeriod;
-
- struct UserInput_t {
- bool Keys[256];
- bool MouseDown;
- bool CloseWindow;
- };
- extern UserInput_t UserInput;
- extern volatile UserInput_t UserInput_v;
-
- extern bool SceneFailed;
-
- //Constants
- enum {
- SHUTDOWN = 0
- };
-}
-
-/****
-** Program exit codes
-** (Return 0 for success)
-*/
-
-#define ERROR_INIT 0x1000
-#define ERROR_INIT_ANOTHERINSTRUNNING 0x1001
-
-//Engine errors
-//Use: return ERROR_INIT | result;
-#define ERROR_INIT_WINDOW 0x0100
- enum {
- ERROR_WINDOW_SYNCOBJECT = 1,
- ERROR_WINDOW_CREATE_THREAD,
- ERROR_WINDOW_SYNCHRONIZE,
- ERROR_WINDOW_REGISTER_CLASS,
- ERROR_WINDOW_CREATE,
- ERROR_WINDOW_HANDLE
- };
-#define ERROR_INIT_SYSTEM 0x0200
- enum {
- ERROR_SYSTEM_INIT_FREETYPE = 1,
- ERROR_SYSTEM_MISSING_FONT
- };
-#define ERROR_INIT_GRAPHICS 0x0300
- enum {
- ERROR_GRAPHICS_OBTAIN_DC = 1,
- ERROR_GRAPHICS_FIND_PIXELFORMAT,
- ERROR_GRAPHICS_SET_PIXELFORMAT,
- ERROR_GRAPHICS_CREATE_GLRC,
- ERROR_GRAPHICS_ACTIVATE_GLRC,
- ERROR_GRAPHICS_INIT_GLSCENE
- };
-#define ERROR_INIT_AUDIO 0x0400
- enum {
- ERROR_AUDIO_INIT_COM = 1,
- ERROR_AUDIO_INIT_XAUDIO2,
- ERROR_AUDIO_CREATE_VOICE
- };
-#define ERROR_INIT_LOGIC 0x0500
- enum {
- ERROR_LOGIC_CREATE_SCENE = 1
- };
\ No newline at end of file
diff --git a/Client/TODO b/Client/TODO
deleted file mode 100644
index 8f37171..0000000
--- a/Client/TODO
+++ /dev/null
@@ -1,21 +0,0 @@
-Because there are too many long-term things to list that we still have "to do" to reach the next development phase (e.g.
-alpha to beta), this file contains only the things that are worked on currently or that will be in the very near future.
-
-While anybody is free to work on _anything_ at any point during Niotso's time, this list shall ONLY contain those relevant
-to complete the criteria for the next development phase, which can be found here:
-
-
-//----------//
-
-Development Phase: Planning
-
-Technical Preview 1
-Schedule: (Not very subject to change)
- 1. Implement cst, uis, ini, and xml parsers with support for UTF-8 [20%]
- 2. Replicate functionality up until the login dialog [90%]
- 3. Implement the audio engine
- 4. Implement the OpenGL-based windowing system
- 5. Replicate character selection and creation features and the city selection dialog
- 6. Implement debug logging and support for configuration files
- 7. Implement the code needed to allow the game to read all necessary files from the TSOClient folder
- 8. Port the client to Linux
\ No newline at end of file
diff --git a/Client/Window/Window.cpp b/Client/Window/Window.cpp
deleted file mode 100644
index e7add39..0000000
--- a/Client/Window/Window.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Window/Window.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include "../EngineInterface.hpp"
-
-namespace Window {
-
-unsigned Width, Height;
-bool Fullscreen;
-HWND hWnd;
-
-static HANDLE Response = NULL;
-static HANDLE Thread = NULL;
-static DWORD ThreadID = NULL;
-static volatile int Result = NULL;
-
-static DWORD WINAPI Procedure(LPVOID);
-static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-static int CreateWindowInvisible(HINSTANCE hInst, unsigned Width, unsigned Height, bool Fullscreen);
-
-int Initialize(){
- Response = CreateEvent(NULL, FALSE, FALSE, NULL);
- if(Response == NULL){
- MessageBox(NULL, "Failed to create the message loop synchronization object.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_WINDOW_SYNCOBJECT;
- }
-
- Thread = CreateThread(NULL, 1024 /* very tiny stack size is needed */, Window::Procedure, NULL, 0, &ThreadID);
- if(Thread == NULL){
- MessageBox(NULL, "Failed to create the message loop thread.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_WINDOW_CREATE_THREAD;
- }
-
- if(WaitForSingleObject(Window::Response, INFINITE) != WAIT_OBJECT_0){
- MessageBox(NULL, "Failed to synchronize with the message loop thread.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_WINDOW_SYNCHRONIZE;
- }
-
- if(Result != 0){
- Shutdown();
- return Result;
- }
-
- hWnd = FindWindow("TSO_NIOTSO", "The Sims Online");
- if(hWnd == NULL){
- MessageBox(NULL, "Failed to obtain a handle for the window.", NULL, MB_OK | MB_ICONERROR);
- Shutdown();
- return ERROR_WINDOW_HANDLE;
- }
-
- return 0;
-}
-
-void Shutdown(){
- if(hWnd){
- DestroyWindow(hWnd);
- hWnd = NULL;
- }
- if(Thread){
- DWORD value;
- while(GetExitCodeThread(Thread, &value) && value){
- PostThreadMessage(ThreadID, WM_QUIT, 0, 0);
- Sleep(1);
- }
- Thread = NULL;
- }
- if(Response){
- CloseHandle(Response);
- Response = NULL;
- }
-
- UnregisterClass("TSO_NIOTSO", System::hInst);
-}
-
-static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
- switch(uMsg){
-
- case WM_SETCURSOR:
- SetCursor(NULL);
- break;
-
- case WM_KEYDOWN:
- case WM_KEYUP:
- System::UserInput_v.Keys[wParam] = (uMsg == WM_KEYDOWN);
- return 0;
-
- case WM_CLOSE:
- System::UserInput_v.CloseWindow = true;
- return 0;
-
- case WM_DEVMODECHANGE: {
- DEVMODE dm;
- EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
- System::FramePeriod = 1.0f/dm.dmDisplayFrequency;
- } return 0;
-
- }
- return DefWindowProc(hWnd, uMsg, wParam, lParam);
-}
-
-static DWORD WINAPI Procedure(LPVOID){
- int result = CreateWindowInvisible(System::hInst, Window::Width, Window::Height, Window::Fullscreen);
- if(result != 0){
- Window::Result = result;
- SetEvent(Window::Response);
- return 0;
- }
- SetEvent(Window::Response);
-
- MSG msg;
- while(GetMessage(&msg, NULL, 0, 0)){
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
- return 0;
-}
-
-static int CreateWindowInvisible(HINSTANCE hInst, unsigned Width, unsigned Height, bool Fullscreen)
-{
- const WNDCLASS wc = {
- CS_OWNDC, //style
- WndProc, //lpfnWndProc
- 0, //cbClsExtra
- 0, //cbWndExtra
- hInst, //hInstance
- (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_TSO), //hIcon
- IMAGE_ICON, 0, 0, LR_SHARED | LR_DEFAULTSIZE),
- NULL, //hCursor
- NULL, //hbrBackground
- NULL, //lpszMenuName
- "TSO_NIOTSO" //lpszClassName
- };
-
- if(!RegisterClass(&wc)){
- MessageBox(NULL, "Failed to register the window class.", NULL, MB_OK | MB_ICONERROR);
- return ERROR_WINDOW_REGISTER_CLASS;
- }
- SetCursor(NULL);
-
- HWND hWnd = NULL;
- if(Fullscreen){
- DEVMODE dmScreenSettings;
- dmScreenSettings.dmSize = sizeof(dmScreenSettings);
- dmScreenSettings.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
- dmScreenSettings.dmPelsWidth = Width;
- dmScreenSettings.dmPelsHeight = Height;
- dmScreenSettings.dmBitsPerPel = 32;
-
- if(ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL){
- MessageBox(NULL, "Fullscreen mode is not supported by your setup. It has been turned off.", NULL,
- MB_OK | MB_ICONERROR);
- Fullscreen = 0;
- }else{
- hWnd = CreateWindowEx(WS_EX_APPWINDOW, "TSO_NIOTSO", "The Sims Online", WS_POPUP,
- 0, 0, Width, Height, 0, 0, hInst, NULL);
- }
- }
- if(hWnd == NULL){
- Fullscreen = false;
- RECT WindowRect = {0, 0, Width, Height};
-
- //Use a style of WS_OVERLAPPEDWINDOW to allow resizing
- AdjustWindowRectEx(&WindowRect, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, FALSE,
- WS_EX_APPWINDOW); //This finds the dimensions of a window with a client area of our specified dimensions
-
- //Note: Windows can be positioned anywhere, even outside the visible workspace,
- //but their sizes are limited to the size of the workspace on the primary display.
- unsigned WindowWidth = WindowRect.right-WindowRect.left, WindowHeight = WindowRect.bottom-WindowRect.top;
- RECT WorkspaceRect;
- SystemParametersInfo(SPI_GETWORKAREA, 0, &WorkspaceRect, 0);
-
- hWnd = CreateWindowEx(WS_EX_APPWINDOW, "TSO_NIOTSO", "The Sims Online",
- WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
- ((WorkspaceRect.right-WorkspaceRect.left - WindowWidth)>>1) + WorkspaceRect.left,
- ((WorkspaceRect.bottom-WorkspaceRect.top - WindowHeight)>>1) + WorkspaceRect.top,
- WindowWidth, WindowHeight, 0, 0, hInst, NULL);
- }
-
- if(hWnd == NULL){
- MessageBox(NULL, "Failed to create the window.", NULL, MB_OK | MB_ICONERROR);
- return ERROR_WINDOW_CREATE;
- }
-
- return 0;
-}
-
-}
\ No newline at end of file
diff --git a/Client/Window/Window.hpp b/Client/Window/Window.hpp
deleted file mode 100644
index 08fd040..0000000
--- a/Client/Window/Window.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Niotso - The New Implementation of The Sims Online
- Window/Window.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-namespace Window {
- int Initialize();
- void Shutdown();
-
- extern unsigned Width, Height;
- extern bool Fullscreen;
- extern HWND hWnd;
-}
\ No newline at end of file
diff --git a/Client/version.h b/Client/version.h
deleted file mode 100644
index 27ce87a..0000000
--- a/Client/version.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#define VERSION_A 0
-#define VERSION_B 0
-#define VERSION_C 0
-#define VERSION_D 0
-
-//You don't have to touch the following
-#define xstr(x) str(x)
-#define str(x) #x //Yes, double levels is required. See
-#define VERSIONSTR "" \
- xstr(VERSION_A) "." xstr(VERSION_B) "." xstr(VERSION_C) "." xstr(VERSION_D)
diff --git a/Libraries/CMakeLists.txt b/Libraries/CMakeLists.txt
deleted file mode 100644
index 9f2cf98..0000000
--- a/Libraries/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-if(WIN32)
- set(GLDEMO_EXE WIN32)
- set(GLDEMO_LIBS mingw32 libgldemo_static opengl32 glu32)
-else()
- set(GLDEMO_EXE "")
- set(GLDEMO_LIBS libgldemo_static Xxf86vm rt Xext X11 GL GLU)
-endif()
-
-add_subdirectory(FileHandler)
-add_subdirectory(libgldemo)
-add_subdirectory(libvitaboy)
diff --git a/Libraries/FileHandler/CMakeLists.txt b/Libraries/FileHandler/CMakeLists.txt
deleted file mode 100644
index cb02914..0000000
--- a/Libraries/FileHandler/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(FileHandler)
-
-set(FILEHANDLER_SERIES 0)
-set(FILEHANDLER_MAJOR 0)
-set(FILEHANDLER_MINOR 0)
-
-if(64BIT)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
-endif()
-
-add_subdirectory(far)
-add_subdirectory(iff)
-add_subdirectory(utk)
-add_subdirectory(xa)
-
-set(FILEHANDLER_SOURCES
- Audio.cpp
- File.cpp
- Image.cpp
- bmp/read_bmp.c
- cst/cst.c
- utk/read_utk.c
- wav/read_wav.c
- xa/read_xa.c
-)
-if(WIN32)
- set(FILEHANDLER_SOURCES ${FILEHANDLER_SOURCES} resource.rc)
-endif()
-
-include_directories(${FILEHANDLER_INCLUDE} ${LIBMPG123_INCLUDE} ${LIBJPEGTURBO_INCLUDE} ${LIBPNG_INCLUDE})
-
-#### Static library (uncomment to build)
-#add_library(FileHandler_static STATIC ${FILEHANDLER_SOURCES})
-#set_target_properties(FileHandler_static PROPERTIES
-# OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}"
-# PREFIX ""
-# CLEAN_DIRECT_OUTPUT 1)
-
-add_library(FileHandler_shared SHARED ${FILEHANDLER_SOURCES})
-if(WIN32)
- set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}")
-else()
- set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler")
-endif()
-set_target_properties(FileHandler_shared PROPERTIES
- VERSION ${FILEHANDLER_SERIES}.${FILEHANDLER_MAJOR}.${FILEHANDLER_MINOR}
- PREFIX ""
- IMPORT_PREFIX ""
- CLEAN_DIRECT_OUTPUT 1)
-
-target_link_libraries(FileHandler_shared far_static iff_static ${LIBJPEG_LINK} ${LIBMPG123_LINK} ${LIBPNG_LINK} ${ZLIB_LINK} m)
diff --git a/Libraries/FileHandler/Image.cpp b/Libraries/FileHandler/Image.cpp
deleted file mode 100644
index 408dc4c..0000000
--- a/Libraries/FileHandler/Image.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- Image.cpp - Copyright (c) 2011-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.
-*/
-
-#include "FileHandler.hpp"
-#include
-#include
-#include
-#include //Used for libpng
-#include "bmp/read_bmp.h"
-
-namespace File {
-
-enum ImageType {
- FIMG_BMP,
- FIMG_JPEG,
- FIMG_PNG,
- FIMG_TGACUR,
- FIMG_COUNT
-};
-
-static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize);
-static uint8_t * ReadBMP(Image_t * Image, const uint8_t * InData, size_t FileSize);
-static uint8_t * ReadPNG(Image_t * Image, const uint8_t * InData, size_t FileSize);
-static uint8_t * ReadTGA(Image_t * Image, const uint8_t * InData, size_t FileSize);
-static uint8_t * ReadCUR(Image_t * Image, const uint8_t * InData, size_t FileSize);
-
-static uint8_t * ReadTGACUR(Image_t * Image, const uint8_t * InData, size_t FileSize){
- //Microsoft and Truevision, y u no more creative with your file signatures?
- //In many cases we're going to see these bytes, exactly, at the beginning in both formats:
- //00 00 02 00 01 00
- //So screw it. Try parsing the file first as a TGA, then as a CUR.
-
- uint8_t * Result = ReadTGA(Image, InData, FileSize);
- return Result ? Result : ReadCUR(Image, InData, FileSize);
-}
-
-static const uint8_t Signature[] = {
- 'B', //BMP
- 0xFF, //JPEG
- 0x89, //PNG
- 0x00 //TGA or CUR
-};
-static uint8_t* (* const ImageFunction[])(Image_t*, const uint8_t*, size_t) = {
- ReadBMP,
- ReadJPG,
- ReadPNG,
- ReadTGACUR
-};
-
-Image_t * ReadImageFile(const char * Filename){
- uint8_t * InData = File::ReadFile(Filename);
- if(InData == NULL) return NULL;
-
- if(File::FileSize < 4){
- free(InData);
- File::Error = FERR_INVALIDDATA;
- return NULL;
- }
-
- Image_t * Image = (Image_t*) malloc(sizeof(Image_t));
- if(Image == NULL){
- free(InData);
- File::Error = FERR_MEMORY;
- return NULL;
- }
-
- for(int i=0; iWidth = BMPHeader.biWidth;
- Image->Height = BMPHeader.biHeight;
- Image->Format = FIMG_BGR24;
- Image->Data = OutData;
- return OutData;
-}
-
-
-// libjpeg-turbo v6 doesn't support jpeg_mem_src, so we have to implement it here
-static void term_source(j_decompress_ptr){}
-static int fill_mem_input_buffer(j_decompress_ptr cinfo){
- ERREXIT(cinfo, JERR_FILE_READ);
- return FALSE;
-}
-static void skip_input_data(j_decompress_ptr cinfo, long bytes)
-{
- jpeg_source_mgr * src = cinfo->src;
-
- if(bytes > (long) src->bytes_in_buffer){
- ERREXIT(cinfo, JERR_FILE_READ);
- return;
- }
- src->next_input_byte += bytes;
- src->bytes_in_buffer -= bytes;
-}
-static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize){
- //Initialize
- jpeg_decompress_struct cinfo;
- jpeg_error_mgr jerr;
- cinfo.err = jpeg_std_error(&jerr);
- jpeg_create_decompress(&cinfo);
-
- if (cinfo.src == NULL)
- cinfo.src = (jpeg_source_mgr *)
- (*cinfo.mem->alloc_small)((j_common_ptr) &cinfo, JPOOL_PERMANENT, sizeof(jpeg_source_mgr));
-
- jpeg_source_mgr *src = cinfo.src;
- src->init_source = term_source;
- src->fill_input_buffer = fill_mem_input_buffer;
- src->skip_input_data = skip_input_data;
- src->resync_to_restart = jpeg_resync_to_restart;
- src->term_source = term_source;
- src->bytes_in_buffer = FileSize;
- src->next_input_byte = InData;
-
- if(jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK){
- jpeg_destroy_decompress(&cinfo);
- return NULL;
- }
- cinfo.out_color_space = JCS_EXT_BGR;
- if(!jpeg_start_decompress(&cinfo)){
- jpeg_destroy_decompress(&cinfo);
- return NULL;
- }
-
- //Read
- unsigned row_stride = cinfo.output_width * cinfo.output_components;
- uint8_t * OutData = (uint8_t*) malloc(cinfo.output_width * cinfo.output_height * cinfo.output_components);
- if(OutData == NULL){
- jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
- return NULL;
- }
- for(unsigned i=cinfo.output_height; i; i--){
- //According to the libjpeg documentation,
- //jpeg_read_scanlines can only really read 1 scanline at a time.
- //We need to convert to bottom-up format anyway.
- uint8_t * Location = OutData + (i-1)*row_stride;
- if(!jpeg_read_scanlines(&cinfo, &Location, 1)){
- free(OutData);
- jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
- return NULL;
- }
- }
-
- //Close up
- jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
- if(Image){
- Image->Width = cinfo.output_width;
- Image->Height = cinfo.output_height;
- Image->Format = FIMG_BGR24;
- Image->Data = OutData;
- }
- return OutData;
-}
-
-struct pngdata_t {
- const uint8_t * buffer;
- size_t size;
-};
-static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length){
- pngdata_t *pngdata = (pngdata_t *) png_get_io_ptr(png_ptr);
- if(length > pngdata->size) png_error(png_ptr, "");
- memcpy(data, pngdata->buffer, length);
- pngdata->buffer += length;
- pngdata->size -= length;
-}
-static uint8_t * ReadPNG(Image_t * Image, const uint8_t * InData, size_t FileSize){
- pngdata_t pngdata;
-
- png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
- if(png_ptr == NULL) return 0;
- png_infop info_ptr = png_create_info_struct(png_ptr);
- if(info_ptr == NULL){
- png_destroy_read_struct(&png_ptr, NULL, NULL);
- return NULL;
- }
- if(setjmp(png_jmpbuf(png_ptr))){
- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
- return NULL;
- }
-
- pngdata.buffer = InData;
- pngdata.size = FileSize;
- png_set_read_fn(png_ptr, &pngdata, user_read_data);
- png_set_user_limits(png_ptr, 4096, 4096);
- png_read_png(png_ptr, info_ptr,
- PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA |
- PNG_TRANSFORM_PACKING | PNG_TRANSFORM_GRAY_TO_RGB | PNG_TRANSFORM_BGR, NULL);
-
- //png_get_IHDR does not work in high-level mode.
- unsigned width = png_get_image_width(png_ptr, info_ptr);
- unsigned height = png_get_image_height(png_ptr, info_ptr);
- uint8_t * OutData = (uint8_t *) malloc(width*height*3);
- if(OutData == NULL){
- png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
- return NULL;
- }
-
- uint8_t **Scanlines = png_get_rows(png_ptr, info_ptr);
- for(unsigned i=0; iWidth = width;
- Image->Height = height;
- Image->Format = FIMG_BGR24;
- Image->Data = OutData;
- return OutData;
-}
-
-static uint8_t * ReadTGA(Image_t * Image, const uint8_t * InData, size_t FileSize){
- return NULL;
-}
-
-static uint8_t * ReadCUR(Image_t * Image, const uint8_t * InData, size_t FileSize){
- return NULL;
-}
-
-}
diff --git a/Libraries/FileHandler/cur/read_cur.h b/Libraries/FileHandler/cur/read_cur.h
deleted file mode 100644
index 78ba594..0000000
--- a/Libraries/FileHandler/cur/read_cur.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- read_cur.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/far/CMakeLists.txt b/Libraries/FileHandler/far/CMakeLists.txt
deleted file mode 100644
index dad2be1..0000000
--- a/Libraries/FileHandler/far/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(far)
-
-set(FAR_SOURCES
- far.c
- refpack_dec.c
-)
-
-add_library(far_static STATIC ${FAR_SOURCES})
-set_target_properties(far_static PROPERTIES
- OUTPUT_NAME "far"
- CLEAN_DIRECT_OUTPUT 1)
-
-#### Shared library (uncomment to build)
-#add_library(far_shared SHARED ${FAR_SOURCES})
-#set_target_properties(far_shared PROPERTIES
-# OUTPUT_NAME "far"
-# PREFIX ""
-# CLEAN_DIRECT_OUTPUT 1)
-
-add_executable(farextract farextract.c)
-target_link_libraries(farextract far_static)
\ No newline at end of file
diff --git a/Libraries/FileHandler/hit/hit.c b/Libraries/FileHandler/hit/hit.c
deleted file mode 100644
index f6605b8..0000000
--- a/Libraries/FileHandler/hit/hit.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- hit.c - 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/hit/hot.c b/Libraries/FileHandler/hit/hot.c
deleted file mode 100644
index e64b182..0000000
--- a/Libraries/FileHandler/hit/hot.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- hot.c - 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/hit/hsm.c b/Libraries/FileHandler/hit/hsm.c
deleted file mode 100644
index 1603dc4..0000000
--- a/Libraries/FileHandler/hit/hsm.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- hsm.c - 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/iff/CMakeLists.txt b/Libraries/FileHandler/iff/CMakeLists.txt
deleted file mode 100644
index b7e0197..0000000
--- a/Libraries/FileHandler/iff/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(iff)
-
-set(IFF_SOURCES
- bhav.c
- cats.c
- iff.c
- bcon.c
- dgrp.c
- fcns.c
- glob.c
- objf.c
- palt.c
- rsmp.c
- spr.c
- spr2.c
- str.c
- string.c
- tmpl.c
- trcn.c
-)
-
-add_library(iff_static STATIC ${IFF_SOURCES})
-set_target_properties(iff_static PROPERTIES
- OUTPUT_NAME "iff"
- PREFIX ""
- CLEAN_DIRECT_OUTPUT 1)
-
-#### Shared library (uncomment to build)
-#add_library(iff_shared SHARED ${IFF_SOURCES})
-#set_target_properties(iff_shared PROPERTIES
-# OUTPUT_NAME "iff"
-# PREFIX ""
-# CLEAN_DIRECT_OUTPUT 1)
-
-add_executable(iffexport iffexport.c)
-target_link_libraries(iffexport iff_static)
\ No newline at end of file
diff --git a/Libraries/FileHandler/ini/read_ini.c b/Libraries/FileHandler/ini/read_ini.c
deleted file mode 100644
index da8eed1..0000000
--- a/Libraries/FileHandler/ini/read_ini.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- read_ini.c - 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/elf.dat b/Libraries/FileHandler/tga/elf.dat
deleted file mode 100644
index fcf6fa7..0000000
Binary files a/Libraries/FileHandler/tga/elf.dat and /dev/null differ
diff --git a/Libraries/FileHandler/tga/elf.txt b/Libraries/FileHandler/tga/elf.txt
deleted file mode 100644
index a193ff0..0000000
--- a/Libraries/FileHandler/tga/elf.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-* Elf32_Word sh_name:
-* Elf32_Word sh_type:
-* Elf32_Word sh_flags:
-* Elf32_Addr sh_addr:
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link:
-* Elf32_Word sh_info:
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize:
-
-ELF Header:
-* e_ident:
- * Elf32_Word EI_MAG0: (7F 45 4C 46)
- * unsigned char EI_CLASS: ELFCLASS32 (01)
- * unsigned char EI_DATA: ELFDATA2LSB (01)
- * unsigned char EI_VERSION: EV_CURRENT (01)
- * unsigned char EI_PAD[9]: (00 00 00 00 00 00 00 00 00)
-* Elf32_Half e_type: ET_REL (01 00)
-* Elf32_Half e_machine: EM_NONE (00 00)
-* Elf32_Word e_version: EV_CURRENT (01 00 00 00)
-* Elf32_Addr e_entry: 0 (00 00 00 00)
-* Elf32_Off e_phoff: 0 (00 00 00 00)
-* Elf32_Off e_shoff: 64 (40 00 00 00)
-* Elf32_Word e_flags: 0x00000001 (01 00 00 00)
-* Elf32_Half e_ehsize: 52 (34 00)
-* Elf32_Half e_phentsize: 0 (00 00)
-* Elf32_Half e_phnum: 0 (00 00)
-* Elf32_Half e_shentsize: 40 (28 00)
-* Elf32_Half e_shnum: 6 (06 00)
-* Elf32_Half e_shstrndx: 2 (02 00)
-* unsigned char padding[12] = (00 00 00 00 00 00 00 00 00 00 00 00)
-
-Section headers
-0 (""): All 0s
-1 (".text"):
-* Elf32_Word sh_name: 1 (01 00 00 00)
-* Elf32_Word sh_type: SHT_PROGBITS (01 00 00 00)
-* Elf32_Word sh_flags: SHF_ALLOC | SHF_EXECINSTR (06 00 00 00)
-* Elf32_Addr sh_addr: 0x00000010 (10 00 00 00)
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link: 0 (00 00 00 00)
-* Elf32_Word sh_info: 0 (00 00 00 00)
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize: 0 (00 00 00 00)
-2 (".shstrtab"):
-* Elf32_Word sh_name: 7 (07 00 00 00)
-* Elf32_Word sh_type: SHT_STRTAB (03 00 00 00)
-* Elf32_Word sh_flags: 0 (00 00 00 00)
-* Elf32_Addr sh_addr: 0 (00 00 00 00)
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link: 0 (00 00 00 00)
-* Elf32_Word sh_info: 0 (00 00 00 00)
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize: 0 (00 00 00 00)
-3 (".symtab"):
-* Elf32_Word sh_name: 17 (11 00 00 00)
-* Elf32_Word sh_type: SHT_SYMTAB (02 00 00 00)
-* Elf32_Word sh_flags: 0 (00 00 00 00)
-* Elf32_Addr sh_addr: 0 (00 00 00 00)
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link: 4 (04 00 00 00)
-* Elf32_Word sh_info: 5 (05 00 00 00)
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize: 16 (10 00 00 00)
-4 (".strtab"):
-* Elf32_Word sh_name: 25 (19 00 00 00)
-* Elf32_Word sh_type: SHT_STRTAB (03 00 00 00)
-* Elf32_Word sh_flags: 0 (00 00 00 00)
-* Elf32_Addr sh_addr: 0 (00 00 00 00)
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link: 0 (00 00 00 00)
-* Elf32_Word sh_info: 0 (00 00 00 00)
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize: 0 (00 00 00 00)
-5 (".rel.text"):
-* Elf32_Word sh_name: 33 (21 00 00 00)
-* Elf32_Word sh_type: SHT_REL (09 00 00 00)
-* Elf32_Word sh_flags: 0 (00 00 00 00)
-* Elf32_Addr sh_addr: 0 (00 00 00 00)
-* Elf32_Off sh_offset: (?? ?? ?? ??)
-* Elf32_Word sh_size: (?? ?? ?? ??)
-* Elf32_Word sh_link: 3 (03 00 00 00)
-* Elf32_Word sh_info: 1 (01 00 00 00)
-* Elf32_Word sh_addralign: 1 (01 00 00 00)
-* Elf32_Word sh_entsize: 8 (08 00 00 00)
-
-Symbols:
-0: All 0s
\ No newline at end of file
diff --git a/Libraries/FileHandler/tga/hitutils.h b/Libraries/FileHandler/tga/hitutils.h
deleted file mode 100644
index 04100ec..0000000
--- a/Libraries/FileHandler/tga/hitutils.h
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- 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)
- __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
deleted file mode 100644
index 3087033..0000000
--- a/Libraries/FileHandler/tga/read_tga.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- FileHandler - General-purpose file handling library for Niotso
- read_tga.c - 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.
-*/
-
-#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
deleted file mode 100644
index 168d13e..0000000
--- a/Libraries/FileHandler/tga/read_tga.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- 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
deleted file mode 100644
index 3261a93..0000000
--- a/Libraries/FileHandler/tga/tsov2.txt
+++ /dev/null
@@ -1,10644 +0,0 @@
-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/Libraries/libvitaboy/AUTHORS b/Libraries/libvitaboy/AUTHORS
deleted file mode 100644
index 256626b..0000000
--- a/Libraries/libvitaboy/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Fatbag
\ No newline at end of file
diff --git a/Server/AUTHORS b/Server/AUTHORS
deleted file mode 100644
index 256626b..0000000
--- a/Server/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Fatbag
\ No newline at end of file
diff --git a/Server/CHANGES b/Server/CHANGES
deleted file mode 100644
index aacc0cb..0000000
--- a/Server/CHANGES
+++ /dev/null
@@ -1,2 +0,0 @@
-Technical Preview 1
- * Initial release
\ No newline at end of file
diff --git a/Server/CMakeLists.txt b/Server/CMakeLists.txt
deleted file mode 100644
index 46c3647..0000000
--- a/Server/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(NiotsoServer)
-
-if(WIN32)
-else()
- set(NIOTSOSERVER_SOURCES
- Server.cpp
- )
- add_executable(niotsod-vanilla ${NIOTSOSERVER_SOURCES})
- target_link_libraries(niotsod-vanilla)
-endif()
diff --git a/Server/COPYING b/Server/COPYING
deleted file mode 100644
index acdc1dc..0000000
--- a/Server/COPYING
+++ /dev/null
@@ -1,642 +0,0 @@
-IMPORTANT:
-Niotso is distributed under the terms of the GNU GPLv3.
-
-While this license does permit others to compile, distribute, change,
-and distribute changes to Niotso, in reality, many of these freedoms
-cannot legally be enacted by anybody.
-
-Specifically, if you make changes to Niotso such that it significantly
-changes the "game experience as presented to the player", it cannot
-be distributed to others. You also may not distribute a version of
-Niotso that has stripped the EA or Maxis trademarked names or logos
-anywhere from the game. Personal use of these modifications is okay.
-
-These restrictions are not enforced by us, but may potentially be used
-by EA in attempt to take down your game.
-
-If you have any questions, you may visit
-
-
----
-
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/Server/Server.cpp b/Server/Server.cpp
deleted file mode 100644
index 82b38be..0000000
--- a/Server/Server.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- Niotso Server - Niotso daemon based on PostgreSQL
- Server.cpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "Server.hpp"
-
-#define SHUTDOWN(X) do { syslog(LOG_INFO, " Could not recover from errors. Shutting down."); \
- exitval = EXIT_FAILURE; goto X; } while(0)
-#define SHUTDOWN_M(X, Y) do { syslog(LOG_ERR, " %s (%s)", X, strerror(errno)); \
- SHUTDOWN(Y); } while(0)
-
-//IPV6_V6ONLY
-
-static void term(int)
-{
-}
-
-int main(int, char **)
-{
- const pid_t pid = fork();
- if(pid < 0){
- const char *msg1 = " Failed to create child process (%s).", *msg2 = strerror(errno);
- openlog(SERVER_NAME, 0, LOG_DAEMON);
- syslog(LOG_ERR, msg1, msg2);
- closelog();
- fprintf(stderr, msg1, msg2);
- fprintf(stderr, "\n");
- return EXIT_FAILURE;
- }else if(pid > 0)
- return EXIT_SUCCESS;
-
- int exitval = EXIT_SUCCESS, sockfd, epollfd;
- { //New scope required for error handling
- int ret;
- FILE * fd;
-
- umask(0);
-
- openlog(SERVER_NAME, LOG_PID, LOG_DAEMON);
-
- if(setsid() < 0)
- SHUTDOWN_M("Failed to create session", close_msg);
-
- if(chdir(CONFIG_DIR) < 0)
- SHUTDOWN_M("Failed to change into \""CONFIG_DIR"\"", close_msg);
-
- close(STDIN_FILENO);
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
-
- struct sigaction sigact;
- sigact.sa_handler = term;
- sigemptyset(&sigact.sa_mask);
- sigact.sa_flags = 0;
- sigaction(SIGTERM, &sigact, NULL);
- sigaction(SIGINT, &sigact, NULL);
-
- syslog(LOG_INFO, " "SERVER_NAME" (version "VERSIONSTR") is starting...");
-
- fd = fopen("network.conf", "r");
- if(!fd)
- SHUTDOWN_M("Failed to open \""CONFIG_DIR"/network.conf\"", close_msg);
- unsigned int port = 0;
- ret = fscanf(fd, "%u", &port);
- fclose(fd);
- if(ret < 0)
- SHUTDOWN_M("Failed to read \""CONFIG_DIR"/network.conf\"", close_msg);
- if(port > 65535){
- syslog(LOG_ERR, " Invalid port '%u' specified in \""CONFIG_DIR"/network.conf\".", port);
- SHUTDOWN(close_msg);
- }
-
- sockfd = socket(AF_INET6, SOCK_DGRAM, 0);
- if(sockfd < 0)
- SHUTDOWN_M("Failed to open socket", close_msg);
-
- int flags = fcntl(sockfd, F_GETFL, 0);
- if(flags < 0)
- SHUTDOWN_M("Failed to read socket flags", close_socket);
- if(fcntl(sockfd, F_SETFL, flags | O_NONBLOCK) < 0)
- SHUTDOWN_M("Failed to set socket flags", close_socket);
-
- sockaddr_in6 server_addr, client_addr;
- memset(&server_addr, 0, sizeof(sockaddr_in6));
- memset(&client_addr, 0, sizeof(sockaddr_in6));
- server_addr.sin6_family = AF_INET6;
- server_addr.sin6_port = htons((uint16_t) port);
- server_addr.sin6_addr = in6addr_any;
- client_addr.sin6_family = AF_INET6;
- client_addr.sin6_addr = in6addr_any;
-
- if(bind(sockfd, (const sockaddr*) &server_addr, sizeof(sockaddr_in6)) < 0)
- SHUTDOWN_M("Failed to bind to socket", close_socket);
-
- epollfd = epoll_create(1);
- if(epollfd < 0)
- SHUTDOWN_M("Failed to create an epoll handle", close_socket);
-
- epoll_event epev[1];
- epev[0].events = EPOLLIN | EPOLLPRI;
- epev[0].data.fd = sockfd;
- if(epoll_ctl(epollfd, EPOLL_CTL_ADD, sockfd, epev) < 0)
- SHUTDOWN_M("Failed to register the socket to the epoll handle", close_epoll);
-
- //Now that we're running, stop being terminate-on-failure-happy
- syslog(LOG_INFO, " Running.");
-
- /****
- ** Listen loop
- */
-
- int eventcount;
- while((eventcount = epoll_wait(epollfd, epev, 1, -1)) >= 0){
- if(eventcount == 0)
- continue;
- else if(epev[0].events & EPOLLERR)
- SHUTDOWN_M("Socket closed unexpectedly with EPOLLERR", close_epoll);
- else if(epev[0].events & EPOLLHUP)
- SHUTDOWN_M("Socket closed unexpectedly with EPOLLHUP", close_epoll);
- else if(!(epev[0].events & EPOLLIN) && !(epev[0].events & EPOLLPRI))
- continue;
-
- uint8_t packetdata[1500];
- socklen_t addrlen = sizeof(sockaddr_in6);
- ssize_t packetsize = recvfrom(epev[0].data.fd, packetdata, 1500, 0, (sockaddr*) &client_addr, &addrlen);
- if(packetsize < 0){
- if(errno == EINTR || errno == ECONNRESET || errno == ENOTCONN || errno == ETIMEDOUT ||
- errno == EAGAIN || errno == EWOULDBLOCK)
- continue;
-
- SHUTDOWN_M("Socket closed unexpectedly on call to recvfrom", close_epoll);
- }
-
- //Pass the packet down (even zero-length packets might be meaningful in the protocol)
- //...
- }
-
- /****
- ** Shutdown
- */
-
- }
- close_epoll: close(epollfd);
- close_socket: close(sockfd);
- close_msg: syslog(LOG_INFO, " Shut down gracefully.");
- closelog();
-
- return exitval;
-}
diff --git a/Server/Server.hpp b/Server/Server.hpp
deleted file mode 100644
index 77e83f9..0000000
--- a/Server/Server.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- Niotso Server - Niotso daemon based on PostgreSQL
- Server.hpp
- Copyright (c) 2012 Niotso Project
- Author(s): Fatbag
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-#define SERVER_NAME "niotsod-vanilla"
-#define CONFIG_DIR "/etc/"SERVER_NAME
-
-#define VERSIONSTR "0.0.0"
diff --git a/Server/TODO b/Server/TODO
deleted file mode 100644
index 7bb4f49..0000000
--- a/Server/TODO
+++ /dev/null
@@ -1,10 +0,0 @@
-Because there are too many long-term things to list that we still have "to do" to reach the next development phase (e.g.
-alpha to beta), this file contains only the things that are worked on currently or that will be in the very near future.
-
-While anybody is free to work on _anything_ at any point during Niotso's time, this list shall ONLY contain those relevant
-to complete the criteria for the next development phase, which can be found here:
-
-
-//----------//
-
-Tasks will be added for the server when the development phase reaches Alpha.
\ No newline at end of file
diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt
index 5709862..06ce7b5 100644
--- a/Tools/CMakeLists.txt
+++ b/Tools/CMakeLists.txt
@@ -1,5 +1,7 @@
-add_subdirectory(FARDive)
-add_subdirectory(hitutils)
-add_subdirectory(iff2html)
-add_subdirectory(rtti-reader)
-add_subdirectory(tsoscan)
\ No newline at end of file
+add_subdirectory(far-extract)
+
+#add_subdirectory(FARDive)
+#add_subdirectory(hitutils)
+#add_subdirectory(iff2html)
+#add_subdirectory(rtti-reader)
+#add_subdirectory(tsoscan)
\ No newline at end of file
diff --git a/Tools/FARDive/CMakeLists.txt b/Tools/FARDive/CMakeLists.txt
index b31d59e..252ae03 100644
--- a/Tools/FARDive/CMakeLists.txt
+++ b/Tools/FARDive/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(FARDive)
if(WIN32)
diff --git a/Tools/Translate Tool/CMakeLists.txt b/Tools/Translate Tool/CMakeLists.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/Tools/Translate Tool/TranslateTool.hpp b/Tools/Translate Tool/TranslateTool.hpp
deleted file mode 100644
index 7b604e6..0000000
--- a/Tools/Translate Tool/TranslateTool.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- The Sims Online Translation Tool - Graphical Translation Writer for TSO
- TranslateTool.hpp - 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.
-*/
-
-namespace Translation {
- extern wchar_t Path[1024], Filename[1024];
-
- extern bool IsOpen;
- extern bool IsModified;
-
- bool Add(const wchar_t * Path);
- bool Close();
- bool Open();
- bool PopulateEntries();
- bool Save();
- bool SaveAs();
- bool SetWorkspace();
-}
\ No newline at end of file
diff --git a/Tools/far-extract/CMakeLists.txt b/Tools/far-extract/CMakeLists.txt
new file mode 100644
index 0000000..bf30983
--- /dev/null
+++ b/Tools/far-extract/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.6...3.29)
+project(far-extract)
+
+include_directories(${format_SOURCE_DIR})
+add_executable(farextract farextract.c)
+target_link_libraries(farextract far)
+
+set_target_properties(farextract PROPERTIES FOLDER tools)
\ No newline at end of file
diff --git a/Tools/far-extract/HOWTO_EXTRACT.txt b/Tools/far-extract/HOWTO_EXTRACT.txt
new file mode 100644
index 0000000..98e3fee
--- /dev/null
+++ b/Tools/far-extract/HOWTO_EXTRACT.txt
@@ -0,0 +1,9 @@
+.\farextract.exe -tso "./Avatardata/skeletons/skeletons.dat" "./out/skeletons"
+.\farextract.exe -tso "./Avatardata/animations/animations.dat" "./out/animations"
+
+.\farextract.exe -tso "./Avatardata/bodies/meshes/meshes.dat" "./out/bodies/meshes"
+.\farextract.exe -tso "./Avatardata/bodies/textures/textures.dat" "./out/bodies/textures"
+.\farextract.exe -tso "./Avatardata/heads/meshes/meshes.dat" "./out/heads/meshes"
+.\farextract.exe -tso "./Avatardata/heads/textures/textures.dat" "./out/heads/textures"
+.\farextract.exe -tso "./Avatardata/hands/meshes/meshes.dat" "./out/hands/meshes"
+.\farextract.exe -tso "./Avatardata/hands/textures/textures.dat" "./out/hands/textures"
\ No newline at end of file
diff --git a/Libraries/FileHandler/far/farextract.c b/Tools/far-extract/farextract.c
similarity index 99%
rename from Libraries/FileHandler/far/farextract.c
rename to Tools/far-extract/farextract.c
index 1824a3e..d12b9f8 100644
--- a/Libraries/FileHandler/far/farextract.c
+++ b/Tools/far-extract/farextract.c
@@ -20,11 +20,10 @@
#include
#include
#include
-#include
#include
#include
#include
-#include "far.h"
+#include "far/far.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)))
diff --git a/Libraries/FileHandler/far/libfar.svg b/Tools/far-extract/libfar.svg
similarity index 100%
rename from Libraries/FileHandler/far/libfar.svg
rename to Tools/far-extract/libfar.svg
diff --git a/Client/Bootstrap/Bootstrap.hpp b/Tools/far-extract/out/animations/.gitkeep
similarity index 100%
rename from Client/Bootstrap/Bootstrap.hpp
rename to Tools/far-extract/out/animations/.gitkeep
diff --git a/Client/README b/Tools/far-extract/out/bodies/meshes/.gitkeep
similarity index 100%
rename from Client/README
rename to Tools/far-extract/out/bodies/meshes/.gitkeep
diff --git a/Client/Window/SetCursor.cpp b/Tools/far-extract/out/bodies/textures/.gitkeep
similarity index 100%
rename from Client/Window/SetCursor.cpp
rename to Tools/far-extract/out/bodies/textures/.gitkeep
diff --git a/Libraries/FileHandler/TODO b/Tools/far-extract/out/hands/meshes/.gitkeep
similarity index 100%
rename from Libraries/FileHandler/TODO
rename to Tools/far-extract/out/hands/meshes/.gitkeep
diff --git a/Libraries/FileHandler/iff/tprp.c b/Tools/far-extract/out/hands/textures/.gitkeep
similarity index 100%
rename from Libraries/FileHandler/iff/tprp.c
rename to Tools/far-extract/out/hands/textures/.gitkeep
diff --git a/Libraries/FileHandler/iff/ttab.c b/Tools/far-extract/out/heads/meshes/.gitkeep
similarity index 100%
rename from Libraries/FileHandler/iff/ttab.c
rename to Tools/far-extract/out/heads/meshes/.gitkeep
diff --git a/Server/README b/Tools/far-extract/out/heads/textures/.gitkeep
similarity index 100%
rename from Server/README
rename to Tools/far-extract/out/heads/textures/.gitkeep
diff --git a/Tools/Server GUI/CMakeLists.txt b/Tools/far-extract/out/skeletons/.gitkeep
similarity index 100%
rename from Tools/Server GUI/CMakeLists.txt
rename to Tools/far-extract/out/skeletons/.gitkeep
diff --git a/Tools/hitutils/CMakeLists.txt b/Tools/hitutils/CMakeLists.txt
index 97c1029..d247d6c 100644
--- a/Tools/hitutils/CMakeLists.txt
+++ b/Tools/hitutils/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(hitutils)
set(HITDUMP_SOURCES
diff --git a/Tools/iff-export/CMakeLists.txt b/Tools/iff-export/CMakeLists.txt
new file mode 100644
index 0000000..9d3d622
--- /dev/null
+++ b/Tools/iff-export/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 2.6...3.29)
+project(iff-export)
+
+add_executable(iffexport iffexport.c)
+target_link_libraries(iffexport iff)
\ No newline at end of file
diff --git a/Libraries/FileHandler/iff/iffexport.c b/Tools/iff-export/iffexport.c
similarity index 100%
rename from Libraries/FileHandler/iff/iffexport.c
rename to Tools/iff-export/iffexport.c
diff --git a/Tools/iff2html/CMakeLists.txt b/Tools/iff2html/CMakeLists.txt
index 3772bfd..843a7da 100644
--- a/Tools/iff2html/CMakeLists.txt
+++ b/Tools/iff2html/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(iff2html)
set(IFF2HTML_SOURCES
diff --git a/Tools/rtti-reader/CMakeLists.txt b/Tools/rtti-reader/CMakeLists.txt
index 251b0eb..297fbf7 100644
--- a/Tools/rtti-reader/CMakeLists.txt
+++ b/Tools/rtti-reader/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(rtti-reader)
set(RTTIREADER_SOURCES
diff --git a/Tools/tsoscan/CMakeLists.txt b/Tools/tsoscan/CMakeLists.txt
index e9adf88..1e1f07f 100644
--- a/Tools/tsoscan/CMakeLists.txt
+++ b/Tools/tsoscan/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(tsoscan)
set(TSOSCAN_SOURCES
diff --git a/Libraries/FileHandler/utk/CMakeLists.txt b/Tools/utk-decode/CMakeLists.txt
similarity index 70%
rename from Libraries/FileHandler/utk/CMakeLists.txt
rename to Tools/utk-decode/CMakeLists.txt
index 041261d..07de27c 100644
--- a/Libraries/FileHandler/utk/CMakeLists.txt
+++ b/Tools/utk-decode/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(utk)
set(UTK_SOURCES
diff --git a/Libraries/FileHandler/utk/utkdecode.c b/Tools/utk-decode/utkdecode.c
similarity index 100%
rename from Libraries/FileHandler/utk/utkdecode.c
rename to Tools/utk-decode/utkdecode.c
diff --git a/Libraries/FileHandler/xa/CMakeLists.txt b/Tools/xa-decode/CMakeLists.txt
similarity index 69%
rename from Libraries/FileHandler/xa/CMakeLists.txt
rename to Tools/xa-decode/CMakeLists.txt
index 921ad0a..eedd1bd 100644
--- a/Libraries/FileHandler/xa/CMakeLists.txt
+++ b/Tools/xa-decode/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.6...3.29)
project(xa)
set(XA_SOURCES
diff --git a/Libraries/FileHandler/xa/xadecode.c b/Tools/xa-decode/xadecode.c
similarity index 100%
rename from Libraries/FileHandler/xa/xadecode.c
rename to Tools/xa-decode/xadecode.c
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
new file mode 100644
index 0000000..b06af5d
--- /dev/null
+++ b/deps/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_subdirectory(zlib)
+add_subdirectory(libpng)
+add_subdirectory(libjpeg-turbo)
+#add_subdirectory(libmpg123)
+#add_subdirectory(libpq)
+add_subdirectory(freetype)
\ No newline at end of file
diff --git a/deps/freetype/CMakeLists.txt b/deps/freetype/CMakeLists.txt
new file mode 100644
index 0000000..7361f87
--- /dev/null
+++ b/deps/freetype/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 2.6...3.29)
+project(freetype)
+
+set(FREETYPE_SOURCES
+ src/autofit/autofit.c
+ src/base/ftbase.c
+ src/base/ftbitmap.c
+ src/base/ftglyph.c
+ src/base/ftinit.c
+ src/base/ftsystem.c
+ src/raster/raster.c
+ src/sfnt/sfnt.c
+ src/smooth/smooth.c
+ src/truetype/truetype.c
+)
+
+file(GLOB_RECURSE FREETYPE_HEADERS ${PROJECT_SOURCE_DIR}/include/*.h)
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+add_definitions(-DFT2_BUILD_LIBRARY)
+
+add_library(freetype STATIC ${FREETYPE_SOURCES} ${FREETYPE_HEADERS}) # remove static, cmake should take care of that
+target_include_directories(freetype PUBLIC ${FREETYPE_HEADERS})
+
+set_target_properties(freetype PROPERTIES FOLDER deps)
\ No newline at end of file
diff --git a/deps/freetype/ChangeLog b/deps/freetype/ChangeLog
new file mode 100644
index 0000000..23b23d8
--- /dev/null
+++ b/deps/freetype/ChangeLog
@@ -0,0 +1,4312 @@
+2012-06-15 Werner Lemberg
+
+ * Version 2.4.10 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-10'.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.10.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.
+
+ * builds/unix/configure.raw (version_info): Set to 15:0:9.
+
+2012-06-15 Alexei Podtelezhnikov
+
+ * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.
+
+ * docs/CHANGES: Updated.
+
+2012-06-14 suzuki toshiya
+
+ * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.
+
+ to pass special compiler/linker flags under cross development.
+ Suggested by Savannah bug #36367.
+
+ ChangeLog on 2010-07-15 saying as they were removed was wrong
+ for the official trunk of FreeType2. This commit is the first
+ introduction of them.
+
+2012-06-14 Werner Lemberg
+
+ * docs/CHANGES: Updated.
+
+2012-06-14 suzuki toshiya
+
+ [truetype] Add new versions of NEC FA family to tricky font list.
+
+ NEC FA family dated in 1996 have different checksum.
+ Reported by Johnson Y. Yan ; see
+
+ http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html
+
+ * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
+ of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
+ FA-RoundedGothicM, FA-RoundedGothicB are added. The family
+ names in sample PDF are truncated, thus the list of the
+ family names in tt_check_trickyness_family() is not updated yet.
+
+2012-06-06 Werner Lemberg
+
+ [ftraster] Fix rounding issue causing visual artifacts.
+
+ Problem reported by jola ; see
+
+ http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html
+
+ * src/raster/ftraster.c (SMulDiv_No_Round): New macro.
+ (Line_Up): Use it.
+ * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.
+
+2012-05-28 Alexei Podtelezhnikov
+
+ * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.
+
+ We now use the cross product of the direction vectors to compute the
+ outline's orientation.
+
+2012-05-28 Werner Lemberg
+
+ * docs/CHANGES: Updated.
+
+2012-05-28 Alexei Podtelezhnikov
+
+ New function FT_Outline_EmboldenXY.
+
+ * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.
+
+ * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
+ simplified embolding algorithm.
+ (FT_Outline_Embolden): Make it a special case of
+ `FT_Outline_EmboldenXY'
+
+2012-05-07 Werner Lemberg
+
+ [type1] Fix Savannah bug #36386.
+
+ * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
+ not valid.
+
+2012-04-07 Werner Lemberg
+
+ Remove compiler warning.
+
+ * src/truetype/ttgload.c (TT_Load_Glyph)
+ [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.
+
+2012-03-28 Werner Lemberg
+
+ [autofit] Properly copy scaler flags to script metrics object.
+
+ Without this patch, only the dummy and cjk autohinter modules get
+ them (since they copy the whole scaler object).
+
+ * src/autofit/aflatin.c (af_latin_metrics_scale),
+ src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.
+
+2012-03-22 Alexei Podtelezhnikov
+
+ [bdflib] Remove redundant macro.
+
+ * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
+ is exactly the same.
+
+2012-03-20 suzuki toshiya
+
+ [configure] Fix Savannah bug #35644.
+
+ * builds/unix/configure.raw: Check `-ansi' flag works even if gcc
+ is used. Bionic libc headers for Android lose the consistency
+ when they are parsed with __STDC_VERSION__ older than 199901L or
+ __STRICT_ANSI__.
+
+2012-03-20 Werner Lemberg
+
+ [bdf] Improvement to Savannah bug #35656.
+
+ * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.
+
+2012-03-17 Chris Liddell
+
+ [type1] Fix Savannah bug #35847.
+
+ * src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
+ we want to exit when we have run out of data.
+
+2012-03-16 Werner Lemberg
+
+ [bdf] Really fix Savannah bug #35658.
+
+ * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.
+
+2012-03-14 Yann Droneaud
+
+ [sfnt] Make arrays static like all others.
+
+ * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
+ src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
+ fields.
+
+2012-03-14 Huw Davies
+
+ [sfnt] A refinement of the previous commit.
+
+ * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
+ tt_name_entry_ascii_from_other): Stop at null byte.
+
+2012-03-14 Huw Davies
+
+ [sfnt] Add `name' table compatibility to MS Windows.
+
+ * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
+ tt_name_entry_ascii_from_other): Don't replace `\0' with question
+ marks when converting strings.
+
+2012-03-14 Werner Lemberg
+
+ Fix Savannah bug #35833.
+
+ Based on the patch given in the bug report.
+
+ * src/type1/t1load.c (IS_INCREMENTAL): New macro.
+ (read_binary_data): Add parameter `incremental'.
+ Update all callers using `IS_INCREMENTAL'.
+
+2012-03-11 Werner Lemberg
+
+ [autofit] Return correct linear advance width values.
+
+ This was quite a subtle bug which accidentally showed up with glyph
+ `afii10023' of arial.ttf (version 2.76). This glyph is a composite;
+ the first component, `E', has an advance width of 1366 font units,
+ while the advance width of the composite itself (which looks like
+ uppercase `E' with dieresis) is 1367 font units. I think this is
+ actually a bug in the font itself, because there is no reason that
+ this glyph has not the same width as uppercase `E' without the
+ dieresis. Anyway, it helped identify this problem.
+
+ Using the TrueType hinter, the correct value (1367) of `afii10023'
+ was returned, but the autohinter mysteriously returned 1366.
+
+ Digging in the code showed that the autohinter recursively calls
+ FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
+ flag. However, the `linearHoriAdvance' field is still returned as a
+ scaled value. To avoid scaling twice, the old code in autofit reset
+ `linearHoriAdvance', using the `horiAdvance' field. This seemed to
+ work since FT_LOAD_NO_SCALE was in use, but it failed actually,
+ because `horiAdvance' is defined as the distance of the first
+ subglyph's phantom points, which in turn are initialized using the
+ advance width of the first subglyph. And as the given example
+ shows, these widths can differ.
+
+ * src/autofit/afloader.c (af_loader_load_g): Temporarily set
+ FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
+ values for the linear advance widths.
+
+2012-03-10 Werner Lemberg
+
+ [truetype] Fix SSW instruction.
+
+ * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units. For
+ verification, it took some time to find a font which actually uses
+ this instruction.
+
+2012-03-09 Vinnie Falco
+
+ Prepare source code for amalgamation.
+
+ * include/freetype/freetype.h: Swap order of preprocessor blocks.
+
+2012-03-08 Werner Lemberg
+
+ * Version 2.4.9 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-9'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.9.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9.
+
+ * builds/unix/configure.raw (version_info): Set to 14:1:8.
+
+2012-03-08 Werner Lemberg
+
+ [bdf] Add missing overflow check.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs) : Add threshold for
+ `glyph->bpr'.
+
+2012-03-07 Vinnie Falco
+
+ Prepare source code for amalgamation.
+
+ * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
+ src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
+ src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
+ src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
+ src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
+ src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
+ src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
+ src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
+ Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.
+
+2012-03-03 Werner Lemberg
+
+ Fix Savannah bug #35660.
+
+ For some divisions, we use casts to 32bit entities. Always guard
+ against division by zero with these casts also.
+
+ * src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
+ (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
+ (FT_DivFix): Add 32bit cast (this omission triggered the bug).
+
+2012-03-03 Werner Lemberg
+
+ [psaux] Fix handling of track kerning.
+
+ * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
+ for `min_kern'. It is indeed quite common that track kerning
+ *increases* spacing for very small sizes.
+
+2012-03-02 Werner Lemberg
+
+ [truetype] Fix Savannah bug #35689.
+
+ * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
+ point.
+
+2012-03-01 Werner Lemberg
+
+ [bdf] Fix Savannah bug #35656.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
+ of nibble characters instead of accessing `a2i' array.
+
+2012-03-01 Werner Lemberg
+
+ [winfonts] Fix Savannah bug #35659.
+
+ * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.
+
+2012-03-01 Werner Lemberg
+
+ [bdf] Fix Savannah bug #35658.
+
+ * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
+ properly.
+
+2012-03-01 Werner Lemberg
+
+ [psaux] Fix Savannah bug #35657.
+
+ If in function `skip_spaces' the routine `skip_comment' comes to the
+ end of buffer, `cur' is still increased by one, so we need to check
+ for `p >= limit' and not `p == limit'.
+
+ * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
+ PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.
+
+2012-03-01 Werner Lemberg
+
+ [truetype] Fix Savannah bug #35646.
+
+ * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The
+ code is now in sync with the other operators (e.g. MSIRP) which
+ modify twilight points.
+
+2012-03-01 Werner Lemberg
+
+ [bdf] Fix Savannah bug #35643.
+
+ * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
+ comment before `_bdf_list_split', this is, really allocate at least
+ five `field' elements.
+
+2012-03-01 Werner Lemberg
+
+ [bdf] Fix Savannah bug #35641.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs) : Abort if
+ _BDF_ENCODING isn't set. We need this because access to the `glyph'
+ variable might be undefined otherwise.
+
+2012-03-01 Werner Lemberg
+
+ [truetype] Fix Savannah bug #35640.
+
+ * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
+ for NPUSHB and NPUSHW instructions.
+
+2012-02-29 Werner Lemberg
+
+ [truetype] Fix Savannah bug #35601.
+
+ * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
+ last point for loop.
+ Also remove redundant boundary check.
+
+2012-02-29 Werner Lemberg
+
+ [truetype] Remove redundant check.
+
+ * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
+ second check for ordered contour start points.
+
+2012-02-29 Werner Lemberg
+
+ [truetype] Make SHC instruction behave similar to MS rasterizer.
+
+ * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
+ twilight zone.
+
+2012-02-29 Alexei Podtelezhnikov
+
+ Avoid modulo operators against a power-of-two denominator.
+
+ * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
+ (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
+ ,
+ src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
+ src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
+ `&' operator.
+
+2012-02-29 Werner Lemberg
+
+ [autofit] Don't synchronize digit widths for light rendering mode.
+
+ We don't hint horizontally in this mode.
+
+ * src/autofit/afloader.c (af_loader_load_g) :
+ Implement it.
+
+2012-02-26 Alexei Podtelezhnikov
+
+ [type42] Minor code optimization (again).
+
+ * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.
+
+2012-02-26 Mateusz Jurczyk
+ Werner Lemberg
+
+ [smooth] Fix Savannah bug #35604.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
+ instead of `FT_UInt' for some variables and update comparisons
+ accordingly. A detailed analysis can be found in the bug report.
+
+2012-02-26 Alexei Podtelezhnikov
+
+ [type42] Minor code optimization.
+
+ * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
+ modulo operator.
+
+2012-02-26 Werner Lemberg
+
+ * docs/CHANGES: Updated.
+
+2012-02-26 Werner Lemberg
+
+ [type1] Fix Savannah bug #35608.
+
+ * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
+ dictionaries.
+
+2012-02-26 Werner Lemberg
+
+ [bdf] Support `ENCODING -1 ' format.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs) : Implement it.
+
+2012-02-26 Werner Lemberg
+
+ [bdf] Fix Savannah bug #35607.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs) : Normalize
+ negative encoding values.
+
+2012-02-26 Werner Lemberg
+
+ [type1] Fix Savannah bug #35606.
+
+ * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.
+
+ * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
+ only if cur < limit.
+
+2012-02-25 Werner Lemberg
+
+ [pcf] Fix Savannah bug #35603.
+
+ * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
+ `strings' array.
+
+2012-02-25 Werner Lemberg
+
+ [type42] Fix Savannah bug #35602.
+
+ * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
+ thoroughly.
+
+2012-02-25 Werner Lemberg
+
+ [bdf] Fix Savannah bugs #35599 and #35600.
+
+ * src/bdf/bdflib.c (ACMSG16): New warning message.
+ (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.
+
+2012-02-24 Werner Lemberg
+
+ [bdf] Fix Savannah bugs #35597 and #35598.
+
+ * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.
+
+2012-02-24Â Vinnie Falco
+
+ Prepare source code for amalgamation (6/6).
+
+ * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.
+
+ * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
+ s/t1_init_loader/cid_init_loader/.
+ s/t1_done_loader/cid_done_loader/.
+
+ * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.
+
+ * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.
+
+ * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.
+
+2012-02-24Â Vinnie Falco
+
+ Prepare source code for amalgamation (5/6).
+
+ * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
+ using it.
+
+2012-02-22Â Vinnie Falco
+
+ Prepare source code for amalgamation (4/6).
+
+ * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
+ RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.
+
+ * src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
+ s/PRaster/black_PRaster/.
+ * src/raster/ftraster.c: s/TRaster/gray_TRaster/,
+ s/PRaster/gray_PRaster/.
+
+2012-02-20Â Vinnie Falco
+
+ Prepare source code for amalgamation (3/6).
+
+ * src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
+ s/PWorker/black_PWorker/.
+ * src/raster/ftraster.c: s/TWorker/gray_TWorker/,
+ s/PWorker/gray_PWorker/.
+
+2012-02-20Â Vinnie Falco
+
+ Prepare source code for amalgamation (2/6).
+
+ * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
+ CEILING, TRUNC, and SCALED before defining it.
+
+2012-02-20Â Vinnie Falco
+
+ Prepare source code for amalgamation (1/6).
+
+ See discussion starting at
+
+ http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html
+
+ * src/smooth/ftgrays.c: s/TBand/gray_TBand/.
+ * src/raster/ftraster.c: s/TBand/black_TBand/.
+
+2012-02-17 Alexei Podtelezhnikov
+
+ [autofit] Fix outline flags.
+
+ * src/autofit/afloader.c (af_loader_load_g): Don't reassign
+ `outline.flags' so that this information is preserved. See
+ discussion starting at
+
+ http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html
+
+2012-02-11 Werner Lemberg
+
+ [truetype] Fix Savannah bug #35466.
+
+ Jump instructions are now bound to the current function. The MS
+ Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.
+
+ * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
+ * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.
+
+ * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
+ bound of jump address.
+ (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.
+
+2012-02-11 Werner Lemberg
+
+ We don't use `extensions'.
+
+ * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
+ `extensions' field.
+
+2012-02-11 Werner Lemberg
+
+ Clean up `generic' fields.
+
+ * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
+ Remove `generic' field since users can't access it.
+
+ * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
+ advertised in the documentation of FT_Generic.
+ (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.
+
+2012-02-07 Werner Lemberg
+
+ [autofit] Harmonize function arguments.
+
+ * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
+ `load_flags'.
+
+2012-02-07 Werner Lemberg
+
+ * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.
+
+2012-01-17 suzuki toshiya
+
+ [gxvalid] Fix Savannah bug #35286.
+
+ Patch submitted by anonymous reporter.
+
+ * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
+ gxv_set_length_by_ulong_offset() must be called with 3, not 4,
+ the number of the subtables in the state tables; classTable,
+ stateArray, entryTable.
+
+2012-01-17 suzuki toshiya
+
+ [raccess] Modify for PIC build.
+
+ Based on the patch provided by Erik Dahlstrom ,
+ http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html
+
+ Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
+ are renamed with `ft_' suffixes.
+
+ * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
+ to `ft_raccess_rule_by_darwin_vfs()'.
+ * src/base/ftobjs.c: Ditto.
+
+ * src/base/ftrfork.c: Declarations of FT_RFork_Rule,
+ raccess_guess_rec, are moved to...
+ * include/freetype/internal/ftrfork.h: Here.
+
+ * include/freetype/internal/ftrfork.h:
+ FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
+ to replace raccess_guess_table[] in both of PIC and non-PIC
+ modes.
+ * src/base/ftrfork.c: raccess_guess_table[] array is rewritten
+ by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.
+
+ * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
+ storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
+ the function pointer from `ft_raccess_guess_table' storage in
+ `BasePIC' structure.
+ * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
+ FT_RACCESS_GUESS_TABLE_GET.
+ (raccess_get_rule_type_from_rule_index): Add `library' as the
+ first argument to the function, to retrieve the storage of
+ `ft_raccess_guess_table' from it. Also `raccess_guess_table'
+ is replaced by FT_RACCESS_GUESS_TABLE_GET.
+ (ft_raccess_rule_by_darwin_vfs): Ditto.
+
+2012-01-16 suzuki toshiya
+
+ Remove trailing spaces.
+
+2012-01-16 suzuki toshiya
+
+ Formatting PIC related sources.
+
+ * src/autofit/afpic.c: Harmonize to FT2 coding conventions.
+ * src/base/basepic.c: Ditto.
+ * src/base/ftpic.c: Ditto.
+ * src/cff/cffpic.c: Ditto.
+ * src/pshinter/pshpic.c: Ditto.
+ * src/psnames/pspic.c: Ditto.
+ * src/raster/rastpic.c: Ditto.
+ * src/sfnt/sfntpic.c: Ditto.
+ * src/smooth/ftspic.c: Ditto.
+ * src/truetype/ttpic.c: Ditto.
+
+2012-01-16 suzuki toshiya
+
+ [autofit] Fix the inclusion of `aflatin2.h' in PIC file.
+
+ * src/autofit/afpic.c: Include `aflatin2.h' when
+ FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
+ Unconditionally inclusion causes declared but unimplemented
+ warning by GCC 4.6.
+
+2012-01-16 suzuki toshiya
+
+ [cff] Remove redundant declarations of cff_cmap_XXX_class_rec.
+
+ * src/cff/cffpic.c: The declarations of
+ FT_Init_Class_cff_cmap_encoding_class_rec() and
+ FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
+ They can be obtained by the inclusion of cffcmap.h.
+ cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
+ FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.
+
+2012-01-15 suzuki toshiya
+
+ Fix redundant declaration warning in PIC mode.
+
+ Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
+ designed to declare xxx_pic_{free,init} by themselves.
+ Because these macros are used at the end of the module
+ interface (e.g. ttdriver.c) and the wrapper source to build
+ a module as a single object (e.g. truetype.c) includes
+ the PIC file (e.g. ttpic.c) before the module interface,
+ these macros are expanded AFTER xxx_pic_{free,init} body
+ when the modules are built as single object.
+ The declaration after the implementation causes the redundant
+ declaration warnings, so the declarations are moved to module
+ PIC headers (e.g. ttpic.h). Separating to other header files
+ are needed for multi build.
+
+ * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
+ Remove class_##_pic_free and class_##_pic_init declarations.
+ * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
+ FT_DEFINE_MODULE): Ditto.
+
+ * src/base/basepic.h: Insert a comment and fix coding style.
+ * src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
+ init}.
+ * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
+ * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
+ init}.
+ * src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
+ init}.
+ * src/raster/rastpic.h: Declare
+ ft_raster{1,5}_renderer_class_pic_{free,init}
+ * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
+ * src/smooth/ftspic.h: Declare
+ ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
+ * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.
+
+2012-01-15 suzuki toshiya
+
+ Make pspic.c to include module error header to fix multi build.
+
+ * src/psnames/pspic.c: Include `psnamerr.h'.
+
+2012-01-14 suzuki toshiya
+
+ [base] Fix a dereference of uninitialized variable in PIC mode.
+
+ * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
+ set before derefering to obtain `library'. The initialization
+ of `clazz', `glyph', `library' and NULL pointer check are
+ reordered to minimize PIC conditonals.
+
+2012-01-14 suzuki toshiya
+
+ [base] Insert explicit cast for GCC 4.6 in PIC mode.
+
+ * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
+ configuration, FT_DEFAULT_MODULES_GET returns
+ FT_Module_Class** pointer, GCC 4.6 warns that
+ const FT_Module_Class* const* variable is warned as
+ inappropriate to store it. To calm it, explicit cast is
+ inserted. Also `library' is checked to prevent the NULL
+ pointer dereference in FT_DEFAULT_MODULES_GET.
+
+2012-01-13 suzuki toshiya
+
+ Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.
+
+ Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
+ take no arguments but derefer the variable named `library'
+ internally.
+
+ * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
+ set it if non-NULL driver is passed.
+ * src/truetype/ttdriver.c (tt_get_interface): Ditto.
+
+ * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
+ under PIC configuration, and set it if non-NULL module is given.
+ * src/psnames/psmodule.c (psnames_get_interface): Ditto.
+
+2012-01-13 suzuki toshiya
+
+ Make PIC files include module error headers, to use the error codes
+ with per-module prefix.
+
+ * src/autofit/afpic.c: Include `aferrors.h'.
+ * src/cff/cffpic.c: Include `cfferrs.h'.
+ * src/pshinter/pshpic.c: Include `pshnterr.h'.
+ * src/raster/rastpic.c: Include `rasterrs.h'.
+ * src/sfnt/sfntpic.c: Include `sferrors.h'.
+ * src/smooth/ftspic.c: Include `ftsmerrs.h'.
+ * src/truetype/ttpic.c: Include `tterrors.h'.
+
+2012-01-04 Tobias Ringström
+
+ [truetype] Fix IP instruction if x_ppem != y_ppem.
+
+ * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
+ properly.
+
+2012-01-02 Werner Lemberg
+
+ Fix tracing message for `loca' table.
+
+ * src/truetype/ttpload.c (tt_face_get_location): Don't emit a
+ warning message if the last `loca' entry references an empty glyph.
+
+2011-12-10 Werner Lemberg
+
+ Add some variable initializations.
+ Reported by Richard COOK .
+
+ * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
+ * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
+ earlier.
+
+2011-12-08 Werner Lemberg
+
+ Fix serious scaling bug in `FT_Get_Advances'.
+
+ * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
+ `FT_Load_Glyph' must be simply multiplied by 1024.
+
+2011-12-08 Werner Lemberg
+
+ * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.
+
+2011-12-02 suzuki toshiya
+
+ [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.
+
+ Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
+ was a configurable macro to disable Carbon-dependent code. Because
+ now configure script sets DARWIN_NO_CARBON by default and disables
+ Darwin & Carbon-dependent codes, these macros can be unified.
+ FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
+ (defined by default) is removed, because DARWIN_NO_CARBON violates
+ FT_XXX naming convention of public macros, and a macro configured by
+ default is not portable for the building without configure (e.g.
+ make devel).
+
+ * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
+ old Mac font support is requested and Carbon is available.
+ * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
+ for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is
+ requested.
+ * include/freetype/config/ftconfig.in: Ditto.
+ * builds/vms/ftconfig.h: Ditto.
+
+ * src/base/ftbase.h: Remove DARWIN_NO_CARBON.
+ * src/base/ftbase.c: Ditto.
+ * src/base/ftobjs.c: Ditto.
+ * src/base/ftrfork.c: Ditto.
+
+ * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
+ (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
+ * builds/mac/ftmac.c: Ditto.
+
+ * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
+ * builds/mac/FreeType.m68k_far.make.txt: Ditto.
+ * builds/mac/FreeType.ppc_classic.make.txt: Ditto.
+ * builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
+
+2011-11-30 suzuki toshiya
+
+ Fix Savannah bug #34728 (`make devel' on Mac OS X).
+
+ * builds/toplevel.mk: Check `/dev/null' to identify the Unix-
+ like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
+ * builds/unix/detect.mk: Ditto.
+
+2011-11-30 suzuki toshiya
+
+ [apinames] Fix the overflow of signed integer hash.
+
+ * src/tools/apinames.c (names_add): Change the type of `h' from
+ int to unsigned int, to prevent undefined behaviour in the
+ overflow of signed integers (overflow of unsigned int is defined
+ to be wrap around). Found by clang test suggested by Sean
+ McBride.
+
+2011-11-30 Werner Lemberg
+
+ [winfonts] Remove casts.
+
+ * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
+ update affected functions.
+ (FNT_Size_Select): Fix number of arguments.
+
+2011-11-30 Werner Lemberg
+
+ [type42] Remove casts.
+
+ * src/type42/t42driver.c (t42_driver_class): Remove all casts and
+ update affected functions.
+
+ * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
+ changes.
+
+2011-11-30 Werner Lemberg
+
+ [type1] Remove casts.
+
+ * src/type1/t1driver.c (t1_driver_class): Remove all casts and
+ update affected functions.
+
+ * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
+ Updated for t1driver changes.
+ src/type1/t1objs.h (T1_Driver): Remove unused typedef.
+ Updated for t1driver changes.
+
+2011-11-27 Werner Lemberg
+
+ [bdf] Fix Savannah bug #34896.
+
+ ENCODING now covers the whole Unicode range.
+
+ Note, however, that this change is quite expensive since it
+ increases the size of three arrays by almost 400kByte in total. The
+ right fix is to replace the logic with something smarter.
+ Additionally, there exist very old BDFs for three-byte CCCII
+ encoding which exceeds the range of Unicode (another reason to have
+ a smarter logic).
+
+ * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
+ arrays.
+ * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.
+
+2011-11-27 Werner Lemberg
+
+ [bdf] Improve tracing.
+
+ * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
+ (_bdf_parse_glyphs): Use them.
+
+2011-11-26 Werner Lemberg
+
+ Improve tracing.
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
+ (PCF_Face_Done): Remove tracing message.
+
+ * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
+ (cff_face_init), src/cid/cidobjs.c (cid_face_init),
+ src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
+ (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
+ src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
+ (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
+ `greeting' message.
+
+ * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
+ (T42_Open_Face): Improve tracing.
+
+2011-11-26 Werner Lemberg
+
+ [cid] Fix error code.
+
+ * src/cid/cidparse.c (cid_parser_new): Do it.
+
+2011-11-26 Werner Lemberg
+
+ [cff] Fix error code.
+
+ * src/cff/cffload.c (cff_font_load): Do it.
+
+2011-11-26 Werner Lemberg
+
+ Add new error code FT_Err_Missing_Module.
+
+ Previously, FreeType misleadingly returned
+ FT_Err_Unknown_File_Format if a module was missing (or a test was
+ missing completely).
+
+ * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.
+
+ * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
+ (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
+ src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
+ (tt_face_init), src/type1/t1objs.c (T1_Face_Init),
+ src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.
+
+ * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
+ (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
+ redundant test for `psaux'.
+
+2011-11-25 Werner Lemberg
+
+ [bdf] Add more error messages.
+
+ * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
+ Add line number argument.
+ Update all callers.
+ (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
+ (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
+ _bdf_parse_glyphs, _bdf_parse_start): Add error messages.
+
+2011-11-24 Werner Lemberg
+
+ * include/freetype/fterrors.h: Remove dead code.
+
+2011-11-15 Werner Lemberg
+
+ * docs/releases: Updated.
+
+2011-11-15 Werner Lemberg
+
+ * Version 2.4.8 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-8'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.8.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
+
+ * builds/unix/configure.raw (version_info): Set to 14:0:8.
+
+2011-11-13 Chris Liddell
+
+ Add FT_Get_PS_Font_Value() API.
+
+ This allows a Type 1 font face to be interrogated to retrieve most
+ of the dictionary keys (keys not relevant to FreeType's Type 1
+ interpreter are not available).
+
+ * include/freetype/internal/services/svpsinfo.h
+ (PS_GetFontValueFunc): New typedef.
+ (PSInfo): Add `ps_get_font_value'.
+ (FT_DEFINE_SERVICE_PSINFOREC): Updated.
+
+ * include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
+ * include/freetype/t1tables.h: Here.
+ (PS_Dict_Keys): New enumeration.
+ (FT_Get_PS_Font_Value): New declaration.
+
+ * src/base/fttype1.c (FT_Get_PS_Font_Value): New function.
+
+ * src/type1/t1driver.c (t1_ps_get_font_value): This new function
+ does the real job.
+ (t1_service_ps_info): Add it.
+
+ * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
+ (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
+ Updated.
+
+2011-11-08 Braden Thomas
+
+ [cid] Various loading fixes.
+
+ * src/cid/cidload.c (cid_load_keyword) ,
+ (parse_font_matrix, parse_expansion_factor): Correctly check number
+ of dictionaries.
+ (cid_read_subrs): Protect against invalid values of `num_subrs'.
+ Assure that the elements of the `offsets' array are ascending.
+
+2011-11-05 Werner Lemberg
+
+ * README: We use copyright ranges also.
+
+ According to
+
+ http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html
+
+ this should be mentioned explicitly.
+
+2011-10-30 suzuki toshiya
+
+ [raccess] Supplement for previous fix.
+
+ * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
+ it on native Mac OS X.
+ * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
+ Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
+ too.
+
+2011-10-30 suzuki toshiya
+
+ [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.
+
+ * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
+ compile on native Mac OS X because it is not used.
+
+2011-10-25 Werner Lemberg
+
+ [truetype] Fix MD instruction for twilight zone.
+
+ * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
+ instruction applied to original coordinates of twilight points
+ always returns zero.
+
+2011-10-18 Werner Lemberg
+
+ * Version 2.4.7 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-7'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.7.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.
+
+ * builds/unix/configure.raw (version_info): Set to 13:2:7.
+
+2011-10-15 Kal Conley
+
+ Fix handling of transformations if no renderer is present.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Thinko.
+
+2011-10-15 Kal Conley
+
+ Fix conditions for autohinting.
+
+ * src/base/ftobjs.c (FT_Load_Glyph): Handle
+ FT_LOAD_IGNORE_TRANSFORM.
+
+2011-10-07 suzuki toshiya
+
+ [gxvalid] Fix a bug to detect too large offset in morx table.
+
+ * src/gxvalid/gxvmorx2.c
+ (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
+ that too large positive offset cannot be detected.
+
+2011-10-01 Braden Thomas
+
+ Handle some border cases.
+
+ * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
+
+ * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
+ value of `target->rows'.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
+ flex start.
+
+ * src/raster/ftrend1.c (ft_raster1_render): Check `width' and
+ `height'.
+
+ * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
+ invalid values in `localpoints' array.
+
+2011-10-01 Werner Lemberg
+
+ [psnames] Handle zapfdingbats.
+ Problem reported by Nicolas Rougier .
+
+ * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
+ `zapfdingbats.txt' file.
+
+ * src/psnames/pstables.h: Regenerated.
+
+2011-09-27 Simon Bünzli
+
+ Fix Savannah bug #34189.
+
+ * src/type1/t1load.c (T1_Open_Face): Initialize
+ `face->len_buildchar'.
+
+2011-09-26 Werner Lemberg
+
+ [cff] Dump SIDs while tracing.
+
+ * src/cff/cffobjs.c (cff_face_init): Do it.
+
+ * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
+ : Identify as SID.
+
+2011-09-17 Werner Lemberg
+
+ Remove unused FT_ALIGNMENT macro.
+
+ * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+ include/freetype/config/ftconfig.h: Do it.
+
+2011-09-17 Alexei Podtelezhnikov
+
+ [smooth] Slightly optimize conic and cubic flatterners.
+
+ * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
+ out some code from the main loop to speed it up.
+
+2011-09-11 Tomas Hoger
+
+ Slightly improve LZW_CLEAR handling.
+
+ * src/lzw/ftzopen.c (ft_lzwstate_io) :
+ Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
+ handled as clear codes. This also re-sets old_code and old_char to
+ predictable values, which is a little better than using `random'
+ ones if the code following LZW_CLEAR is invalid.
+
+2011-09-11 Tomas Hoger
+
+ Add explicit LZW decompression stack size limit.
+
+ Stack larger than 1<prefix[code - 256]
+ when traversing prefix table. Such check is less efficient and
+ should not be required if prefix table is constructed correctly in
+ the first place.
+
+ * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
+
+2011-09-11 Tomas Hoger
+
+ Protect against loops in the prefix table.
+
+ LZW decompressor did not sufficiently check codes read from the
+ input LZW stream. A specially-crafted or corrupted input could
+ create a loop in the prefix table, which leads to memory usage
+ spikes, as there's no decompression stack size limit.
+
+ * src/lzw/ftzopen.c (ft_lzwstate_io) : First
+ code in valid LZW stream must be 0..255.
+ : In the special KwKwK case, code == free_ent,
+ code > free_ent is invalid.
+
+2011-09-09 Werner Lemberg
+
+ Better tracing of metrics.
+
+ * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
+ FT_TRACE.
+
+2011-09-07 Werner Lemberg
+
+ Fix Savannah bug #33816.
+
+ * src/cff/cfftypes.h (CFF_FontRecDictRec): New member
+ `has_font_matrix'.
+ * src/cff/cffparse.c (cff_parse_font_matrix): Set it.
+ Update tracing output.
+ * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
+ can be removed.
+
+2011-08-30 Werner Lemberg
+
+ Better tracing of metrics.
+
+ * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
+ Decorate with FT_TRACE.
+
+2011-08-25 Werner Lemberg
+
+ [cff] Better tracing of the parsing process.
+
+ * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
+ FT_TRACE.
+
+ * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
+ cff_parse_private_dict, cff_parse_cid_ros): Updated.
+ (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
+ CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
+ CFF_FIELD_DELTA): Add argument for ID.
+ (cff_parser_run): Decorate with FT_TRACE.
+
+ * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
+ `id' member.
+
+ * src/cff/cfftoken.h: Add IDs to all fields.
+
+2011-08-16 Werner Lemberg
+
+ Fix Savannah bug #34022.
+
+ * README, docs/INSTALL: Remove references to UPGRADE.UNIX.
+
+2011-08-15 Werner Lemberg
+
+ Fix Savannah bug #34018.
+
+ * docs/UPGRADE.UNIX: Removed. Obsolete.
+
+2011-08-15 David Bevan
+
+ Fix Savannah bug #33992.
+
+ * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
+
+2011-08-12 Werner Lemberg
+
+ Fix Savannah bug #33975.
+
+ * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
+
+2011-07-29 Werner Lemberg
+
+ * Version 2.4.6 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-6'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.6.
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
+
+ * builds/unix/configure.raw (version_info): Set to 13:1:7.
+
+2011-07-29 Werner Lemberg
+
+ [cff] Add some more tracing infos.
+
+ * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
+ cff_parse_cid_ros): Add tracing.
+
+2011-07-22 Dirk Müller
+
+ [psaux, type1] Fix null pointer dereferences.
+
+ Found with font fuzzying.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
+ `decoder->buildchar'.
+
+ * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.
+
+2011-07-20 Chris Morgan
+
+ Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.
+
+ Useful for embedded systems which don't need file stream support.
+
+ * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
+ it.
+
+2011-07-20 Elton Chung
+
+ * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.
+
+2011-07-16 Steven Chu
+
+ [truetype] Fix metrics on size request for scalable fonts.
+
+ * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
+ from TT_Size to FT_Size if scalable font.
+
+ See
+
+ http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html
+
+ for some comparison images.
+
+2011-07-14 Matthias Drochner .
+
+ [psaux] Fix potential sign extension problems.
+
+ When shifting right a signed value, it is not defined by the
+ C standard whether one gets a sign extension or not. Use a macro to
+ do an explicit cast from a signed short (assuming that this is
+ 16bit) to an int.
+
+ * src/psaux/t1decode.c (Fix2Int): New macro.
+ Use it where appropriate.
+
+2011-07-14 Werner Lemberg
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+ : Better handling of subroutine index 0.
+ From Matthias Drochner .
+
+2011-07-10 ÐлекÑей Подтележников
+
+ [psaux] Optimize previous commit.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+ : Move error check down to avoid testing twice for
+ good cases.
+
+2011-07-08 Werner Lemberg
+
+ [psaux] Add better argument check for `callothersubr'.
+
+ * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+ : Reject negative arguments.
+
+2011-07-07 Werner Lemberg
+
+ [sfnt] Try harder to find non-zero values for ascender and descender.
+
+ * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
+ the `hhea' table's values are zero.
+
+2011-07-03 Werner Lemberg
+
+ Fix previous commit.
+
+ We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
+ strikes in the font.
+
+ * src/truetype/ttobjs.c (tt_face_init): Implement it.
+
+ * docs/CHANGES: Updated.
+
+2011-07-02 Just Fill Bugs
+
+ Fix Savannah bug #33246.
+
+ * src/truetype/ttobjs.c (tt_check_single_notdef): New function.
+ (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.
+
+2011-07-02 Werner Lemberg
+
+ * docs/CHANGES: Updated.
+
+2011-07-02 David Bevan
+
+ [ftstroke] Major revision.
+
+ The main problems
+ -----------------
+
+ o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
+ joins (not bevel joins) were generated. Indeed, the meanings of
+ `miter' and `bevel' were incorrectly reversed (consistently) in
+ both the code and comments.
+
+ o The way bevel joins were constructed (whether specified
+ explicitly, or created as a result of exceeding the miter limit)
+ did not match what is required for stroked text in PostScript or
+ PDF.
+
+ The main fixes
+ --------------
+
+ o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
+
+ o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
+ introduced to support PostScript and PDF miter joins.
+
+ o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
+ alias for FT_STROKER_LINEJOIN_MITER.
+
+ Additionally, a variety of stroking errors have been fixed. These
+ would cause various artifacts (including points `at infinity'),
+ especially when stroking poor quality fonts.
+
+ See
+
+ http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html
+
+ for example documents. The FreeType stroker now produces results
+ very similar to that produced by GhostScript and Distiller for these
+ fonts.
+
+ Other problems
+ --------------
+
+ The following problems have been resolved:
+
+ o Inside corners could be generated incorrectly. Intersecting the
+ inside corner could cause a missing triangular area and other
+ effects.
+
+ The intersection point can only be used if the join is between
+ two lines and both lines are long enough. The `optimization'
+ condition in `ft_stroker_inside' has been corrected; this
+ requires the line length to be passed into various functions and
+ stored in `FT_StrokerRec'.
+
+ o Incorrect cubic curves could be generated. The angle
+ calculations in `FT_Stroker_CubicTo' have been corrected to
+ handle the case of the curve crossing the +/-PI direction.
+
+ o If the border radius was greater than the radius of curvature of
+ a curve, then the negative sector would end up outside (not
+ inside) the border. This situation is now recognized and the
+ negative sector is circumnavigated in the opposite direction.
+ (If round line joins are being used, this code is disabled
+ because the line join will always cover the negative sector.)
+
+ o When a curve is split, the arcs may not join smoothly (especially
+ if the curve turns sharply back on itself). Changes in
+ direction between adjacent arcs were not handled. A round
+ corner is now added if the deviation from one arc to the next is
+ greater than a suitable threshold.
+
+ o The current direction wasn't retained if a the outline contained
+ a zero length lineto or a curve that was determined to be
+ `basically a point'. This could cause a spurious join to be
+ added.
+
+ o Cubics with close control points could be mishandled. All eight
+ cases are now distinguished correctly.
+
+ Other improvements
+ ------------------
+
+ o Borders for cubic curves could be too `flat'.
+ FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
+ this.
+
+ o The handling and use of movable points has been simplified a
+ little.
+
+ o Various values are now computed only if the results are actually
+ needed.
+
+ o The directions of the outer and inner borders have been swapped,
+ as recommended by Graham Asher.
+
+ * src/base/ftstroke.c: Revised.
+ * include/freetype/ftstroke.h: Updated.
+
+2011-06-30 İsmail Dönmez
+
+ * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.
+
+2011-06-29 Werner Lemberg
+
+ Fix Savannah bug #33663.
+
+ * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
+ ENCODING correctly.
+
+ * docs/CHANGES: Document it.
+
+2011-06-24 Werner Lemberg
+
+ * Version 2.4.5 released.
+ =========================
+
+
+ Tag sources with `VER-2-4-5'.
+
+ * docs/CHANGES: Updated.
+
+ * docs/VERSION.DLL: Update documentation and bump version number to
+ 2.4.5
+
+ * README, Jamfile (RefDoc),
+ builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
+ builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
+ builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
+ builds/win32/visualc/freetype.dsp,
+ builds/win32/visualc/freetype.vcproj,
+ builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
+ builds/win32/visualce/freetype.vcproj,
+ builds/win32/visualce/index.html,
+ builds/wince/vc2005-ce/freetype.vcproj,
+ builds/wince/vc2005-ce/index.html,
+ builds/wince/vc2008-ce/freetype.vcproj,
+ builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/.
+
+ * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
+
+ * builds/unix/configure.raw (version_info): Set to 13:0:7.
+
+2011-06-20 Werner Lemberg