Copy disabled (too large)
Download .txt
Showing preview only (30,284K chars total). Download the full file to get everything.
Repository: TerryCavanagh/VVVVVV
Branch: master
Commit: 9bcade977606
Files: 3327
Total size: 28.2 MB
Directory structure:
gitextract_64v64ki7/
├── .gitattributes
├── .github/
│ ├── pull_request_template.md
│ └── workflows/
│ ├── android.yml
│ └── ci.yml
├── .gitmodules
├── LICENSE.md
├── License exceptions.md
├── README.md
├── desktop_version/
│ ├── .dockerignore
│ ├── .gitignore
│ ├── AppIcon.xcassets/
│ │ ├── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── CMakeLists.txt
│ ├── CONTRIBUTORS.txt
│ ├── Dockerfile
│ ├── Info.plist
│ ├── README.md
│ ├── TRANSLATORS.txt
│ ├── VVVVVV-android/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── build.gradle
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── distractionware/
│ │ │ │ └── vvvvvv/
│ │ │ │ ├── BaseDirProvider.java
│ │ │ │ ├── FileSystemProvider.java
│ │ │ │ └── VVVVVV.java
│ │ │ └── res/
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ └── settings.gradle
│ ├── fixupMac.sh
│ ├── fonts/
│ │ ├── README.txt
│ │ ├── buttons_10x10.fontmeta
│ │ ├── buttons_12x12.fontmeta
│ │ ├── buttons_8x8.fontmeta
│ │ ├── font.fontmeta
│ │ ├── font_ar.fontmeta
│ │ ├── font_ja.fontmeta
│ │ ├── font_ko.fontmeta
│ │ ├── font_ko_license.txt
│ │ ├── font_sc.fontmeta
│ │ ├── font_sc_tc_license.txt
│ │ └── font_tc.fontmeta
│ ├── icon.rc
│ ├── lang/
│ │ ├── README-programmers.txt
│ │ ├── README-translators.txt
│ │ ├── ar/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ca/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── cy/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── de/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── en/
│ │ │ ├── cutscenes.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── eo/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es_419/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es_AR/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── fa/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── fr/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ga/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── it/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ja/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ko/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── nl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pt_BR/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pt_PT/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ru/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── szl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── tr/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── uk/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── zh/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ └── zh_TW/
│ │ ├── cutscenes.xml
│ │ ├── graphics/
│ │ │ └── spritesmask.xml
│ │ ├── meta.xml
│ │ ├── numbers.xml
│ │ ├── roomnames.xml
│ │ ├── roomnames_special.xml
│ │ ├── strings.xml
│ │ └── strings_plural.xml
│ ├── src/
│ │ ├── ActionSets.h
│ │ ├── Alloc.h
│ │ ├── BinaryBlob.cpp
│ │ ├── BinaryBlob.h
│ │ ├── BlockV.cpp
│ │ ├── BlockV.h
│ │ ├── ButtonGlyphs.cpp
│ │ ├── ButtonGlyphs.h
│ │ ├── CWrappers.cpp
│ │ ├── CWrappers.h
│ │ ├── Constants.h
│ │ ├── Credits.h
│ │ ├── CustomLevels.cpp
│ │ ├── CustomLevels.h
│ │ ├── DeferCallbacks.c
│ │ ├── DeferCallbacks.h
│ │ ├── Editor.cpp
│ │ ├── Editor.h
│ │ ├── Ent.cpp
│ │ ├── Ent.h
│ │ ├── Entity.cpp
│ │ ├── Entity.h
│ │ ├── Enums.h
│ │ ├── Exit.h
│ │ ├── FileSystemUtils.cpp
│ │ ├── FileSystemUtils.h
│ │ ├── Finalclass.cpp
│ │ ├── Finalclass.h
│ │ ├── Font.cpp
│ │ ├── Font.h
│ │ ├── FontBidi.cpp
│ │ ├── FontBidi.h
│ │ ├── GOGNetwork.c
│ │ ├── Game.cpp
│ │ ├── Game.h
│ │ ├── GlitchrunnerMode.c
│ │ ├── GlitchrunnerMode.h
│ │ ├── Graphics.cpp
│ │ ├── Graphics.h
│ │ ├── GraphicsResources.cpp
│ │ ├── GraphicsResources.h
│ │ ├── GraphicsUtil.cpp
│ │ ├── GraphicsUtil.h
│ │ ├── IMERender.cpp
│ │ ├── IMERender.h
│ │ ├── Input.cpp
│ │ ├── Input.h
│ │ ├── InterimVersion.h
│ │ ├── InterimVersion.in.c
│ │ ├── KeyPoll.cpp
│ │ ├── KeyPoll.h
│ │ ├── Labclass.cpp
│ │ ├── Labclass.h
│ │ ├── LevelDebugger.cpp
│ │ ├── LevelDebugger.h
│ │ ├── Localization.cpp
│ │ ├── Localization.h
│ │ ├── LocalizationMaint.cpp
│ │ ├── LocalizationMaint.h
│ │ ├── LocalizationStorage.cpp
│ │ ├── LocalizationStorage.h
│ │ ├── Logic.cpp
│ │ ├── Logic.h
│ │ ├── MakeAndPlay.h
│ │ ├── Map.cpp
│ │ ├── Map.h
│ │ ├── Maths.h
│ │ ├── Music.cpp
│ │ ├── Music.h
│ │ ├── Network.c
│ │ ├── Network.h
│ │ ├── Otherlevel.cpp
│ │ ├── Otherlevel.h
│ │ ├── ReleaseVersion.h
│ │ ├── Render.cpp
│ │ ├── Render.h
│ │ ├── RenderFixed.cpp
│ │ ├── RenderFixed.h
│ │ ├── RoomnameTranslator.cpp
│ │ ├── RoomnameTranslator.h
│ │ ├── SDL_uikit_main.c
│ │ ├── Screen.cpp
│ │ ├── Screen.h
│ │ ├── ScreenSettings.h
│ │ ├── Script.cpp
│ │ ├── Script.h
│ │ ├── Scripts.cpp
│ │ ├── Spacestation2.cpp
│ │ ├── Spacestation2.h
│ │ ├── SteamNetwork.c
│ │ ├── TerminalScripts.cpp
│ │ ├── Textbook.c
│ │ ├── Textbook.h
│ │ ├── Textbox.cpp
│ │ ├── Textbox.h
│ │ ├── ThirdPartyDeps.c
│ │ ├── Tower.cpp
│ │ ├── Tower.h
│ │ ├── TowerBG.h
│ │ ├── UTF8.c
│ │ ├── UTF8.h
│ │ ├── Unreachable.h
│ │ ├── Unused.h
│ │ ├── UtilityClass.cpp
│ │ ├── UtilityClass.h
│ │ ├── VFormat.c
│ │ ├── VFormat.h
│ │ ├── Vlogging.c
│ │ ├── Vlogging.h
│ │ ├── WarpClass.cpp
│ │ ├── WarpClass.h
│ │ ├── XMLUtils.cpp
│ │ ├── XMLUtils.h
│ │ ├── Xoshiro.c
│ │ ├── Xoshiro.h
│ │ ├── lodepng_wrapper.c
│ │ ├── main.cpp
│ │ ├── preloader.cpp
│ │ └── preloader.h
│ └── version.cmake
├── mobile_version/
│ ├── application.xml
│ ├── data/
│ │ ├── c64.fnt
│ │ └── vvvvvv_graphics.xml
│ ├── levels/
│ │ ├── eurogamer fork/
│ │ │ └── eurogamerotherlevelclass.as
│ │ ├── finalclass.as
│ │ ├── labclass.as
│ │ ├── newgameclass.as
│ │ ├── otherlevelclass.as
│ │ ├── spacestation2class.as
│ │ ├── towerclass.as
│ │ └── warpclass.as
│ ├── readme.MD
│ └── src/
│ ├── EditorDataclass.as
│ ├── EmbeddedAssets.as
│ ├── LevelMetaData.as
│ ├── Load.as
│ ├── Main.as
│ ├── bigroom/
│ │ └── input/
│ │ └── KeyPoll.as
│ ├── blockclass.as
│ ├── com/
│ │ └── adobe/
│ │ └── utils/
│ │ └── AGALMiniAssembler.as
│ ├── device.as
│ ├── dwgraphicsclass.as
│ ├── edentitiesclass.as
│ ├── editor.as
│ ├── edlevelclass.as
│ ├── entclass.as
│ ├── entityclass.as
│ ├── gameclass.as
│ ├── helpclass.as
│ ├── includes/
│ │ ├── input.as
│ │ ├── logic.as
│ │ ├── render.as
│ │ ├── scripts.as
│ │ └── terminalscripts.as
│ ├── mapclass.as
│ ├── musicclass.as
│ ├── platformclass.as
│ ├── saveclass.as
│ ├── scoreclass.as
│ ├── scriptclass.as
│ ├── starling/
│ │ ├── animation/
│ │ │ ├── DelayedCall.as
│ │ │ ├── IAnimatable.as
│ │ │ ├── Juggler.as
│ │ │ ├── Transitions.as
│ │ │ └── Tween.as
│ │ ├── assets/
│ │ │ ├── AssetFactory.as
│ │ │ ├── AssetFactoryHelper.as
│ │ │ ├── AssetManager.as
│ │ │ ├── AssetReference.as
│ │ │ ├── AssetType.as
│ │ │ ├── AtfTextureFactory.as
│ │ │ ├── BitmapTextureFactory.as
│ │ │ ├── ByteArrayFactory.as
│ │ │ ├── DataLoader.as
│ │ │ ├── JsonFactory.as
│ │ │ ├── SoundFactory.as
│ │ │ └── XmlFactory.as
│ │ ├── core/
│ │ │ ├── Starling.as
│ │ │ ├── StatsDisplay.as
│ │ │ └── starling_internal.as
│ │ ├── display/
│ │ │ ├── BlendMode.as
│ │ │ ├── Button.as
│ │ │ ├── ButtonState.as
│ │ │ ├── Canvas.as
│ │ │ ├── DisplayObject.as
│ │ │ ├── DisplayObjectContainer.as
│ │ │ ├── Image.as
│ │ │ ├── Mesh.as
│ │ │ ├── MeshBatch.as
│ │ │ ├── MovieClip.as
│ │ │ ├── Quad.as
│ │ │ ├── Sprite.as
│ │ │ ├── Sprite3D.as
│ │ │ └── Stage.as
│ │ ├── errors/
│ │ │ ├── AbstractClassError.as
│ │ │ ├── AbstractMethodError.as
│ │ │ ├── MissingContextError.as
│ │ │ └── NotSupportedError.as
│ │ ├── events/
│ │ │ ├── EnterFrameEvent.as
│ │ │ ├── Event.as
│ │ │ ├── EventDispatcher.as
│ │ │ ├── KeyboardEvent.as
│ │ │ ├── ResizeEvent.as
│ │ │ ├── Touch.as
│ │ │ ├── TouchEvent.as
│ │ │ ├── TouchMarker.as
│ │ │ ├── TouchPhase.as
│ │ │ └── TouchProcessor.as
│ │ ├── filters/
│ │ │ ├── BlurFilter.as
│ │ │ ├── ColorMatrixFilter.as
│ │ │ ├── CompositeFilter.as
│ │ │ ├── DisplacementMapFilter.as
│ │ │ ├── DropShadowFilter.as
│ │ │ ├── FilterChain.as
│ │ │ ├── FilterHelper.as
│ │ │ ├── FragmentFilter.as
│ │ │ ├── GlowFilter.as
│ │ │ └── IFilterHelper.as
│ │ ├── geom/
│ │ │ └── Polygon.as
│ │ ├── rendering/
│ │ │ ├── BatchProcessor.as
│ │ │ ├── BatchToken.as
│ │ │ ├── Effect.as
│ │ │ ├── FilterEffect.as
│ │ │ ├── IndexData.as
│ │ │ ├── MeshEffect.as
│ │ │ ├── Painter.as
│ │ │ ├── Program.as
│ │ │ ├── RenderState.as
│ │ │ ├── VertexData.as
│ │ │ ├── VertexDataAttribute.as
│ │ │ └── VertexDataFormat.as
│ │ ├── styles/
│ │ │ ├── DistanceFieldStyle.as
│ │ │ └── MeshStyle.as
│ │ ├── text/
│ │ │ ├── BitmapChar.as
│ │ │ ├── BitmapFont.as
│ │ │ ├── ITextCompositor.as
│ │ │ ├── MiniBitmapFont.as
│ │ │ ├── TextField.as
│ │ │ ├── TextFieldAutoSize.as
│ │ │ ├── TextFormat.as
│ │ │ ├── TextOptions.as
│ │ │ └── TrueTypeCompositor.as
│ │ ├── textures/
│ │ │ ├── AtfData.as
│ │ │ ├── ConcretePotTexture.as
│ │ │ ├── ConcreteRectangleTexture.as
│ │ │ ├── ConcreteTexture.as
│ │ │ ├── ConcreteVideoTexture.as
│ │ │ ├── RenderTexture.as
│ │ │ ├── SubTexture.as
│ │ │ ├── Texture.as
│ │ │ ├── TextureAtlas.as
│ │ │ ├── TextureOptions.as
│ │ │ └── TextureSmoothing.as
│ │ └── utils/
│ │ ├── Align.as
│ │ ├── AssetManager.as
│ │ ├── Color.as
│ │ ├── MathUtil.as
│ │ ├── MatrixUtil.as
│ │ ├── MeshSubset.as
│ │ ├── MeshUtil.as
│ │ ├── Padding.as
│ │ ├── Pool.as
│ │ ├── RectangleUtil.as
│ │ ├── RenderUtil.as
│ │ ├── ScaleMode.as
│ │ ├── StringUtil.as
│ │ ├── SystemUtil.as
│ │ ├── deg2rad.as
│ │ ├── execute.as
│ │ └── rad2deg.as
│ ├── textboxclass.as
│ └── tmap.as
└── tools/
├── editors/
│ ├── Final Level Editor/
│ │ ├── imports/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ └── intermission/
│ │ │ ├── x41y56.txt
│ │ │ ├── x42y56.txt
│ │ │ ├── x43y56.txt
│ │ │ ├── x44y56.txt
│ │ │ ├── x45y56.txt
│ │ │ ├── x46y56.txt
│ │ │ ├── x47y56.txt
│ │ │ ├── x48y56.txt
│ │ │ ├── x49y56.txt
│ │ │ ├── x50y56.txt
│ │ │ ├── x51y56.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x53y56.txt
│ │ │ └── x54y56.txt
│ │ ├── main.cpp
│ │ ├── maps/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ └── intermission/
│ │ │ ├── x41y56.txt
│ │ │ ├── x42y56.txt
│ │ │ ├── x43y56.txt
│ │ │ ├── x44y56.txt
│ │ │ ├── x45y56.txt
│ │ │ ├── x46y56.txt
│ │ │ ├── x47y56.txt
│ │ │ ├── x48y56.txt
│ │ │ ├── x49y56.txt
│ │ │ ├── x50y56.txt
│ │ │ ├── x51y56.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x53y56.txt
│ │ │ └── x54y56.txt
│ │ ├── tower1/
│ │ │ ├── imports/
│ │ │ │ ├── tower (background).txt
│ │ │ │ ├── tower (foreground).txt
│ │ │ │ └── tower.txt
│ │ │ ├── main.cpp
│ │ │ └── maps/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ └── tower2/
│ │ ├── imports/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ ├── tower (background).txt
│ │ ├── tower (foreground).txt
│ │ └── tower.txt
│ ├── Lab Map Editor/
│ │ ├── imports/
│ │ │ ├── lab/
│ │ │ │ ├── rx50y50.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── otherlevel/
│ │ │ │ ├── x1y1.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ └── x50y50.txt
│ │ │ └── spacestation/
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ └── x53y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── lab/
│ │ ├── x48y52.txt
│ │ ├── x48y53.txt
│ │ ├── x49y51.txt
│ │ ├── x49y52.txt
│ │ ├── x49y53.txt
│ │ ├── x49y54.txt
│ │ ├── x49y55.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x50y52.txt
│ │ ├── x50y53.txt
│ │ ├── x50y54.txt
│ │ ├── x50y55.txt
│ │ ├── x50y58.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x51y53.txt
│ │ ├── x51y54.txt
│ │ ├── x51y55.txt
│ │ ├── x51y58.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x52y53.txt
│ │ ├── x52y54.txt
│ │ ├── x52y55.txt
│ │ ├── x52y56.txt
│ │ ├── x52y57.txt
│ │ ├── x52y58.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y54.txt
│ │ ├── x53y55.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y54.txt
│ │ ├── x54y55.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ ├── x55y52.txt
│ │ ├── x55y53.txt
│ │ └── x55y54.txt
│ ├── Level Mapping Editor/
│ │ ├── import.txt
│ │ ├── lab/
│ │ │ ├── import.txt
│ │ │ └── output.txt
│ │ ├── main.cpp
│ │ ├── output.txt
│ │ ├── space station/
│ │ │ ├── import.txt
│ │ │ └── output.txt
│ │ └── warpzone/
│ │ ├── import.txt
│ │ └── output.txt
│ ├── Original Space Station Map Editor/
│ │ ├── imports/
│ │ │ └── spacestation/
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ └── x53y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── spacestation/
│ │ ├── x49y48.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x49y51.txt
│ │ ├── x49y52.txt
│ │ ├── x50y48.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x50y52.txt
│ │ ├── x51y47.txt
│ │ ├── x51y48.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x51y53.txt
│ │ ├── x51y54.txt
│ │ ├── x52y48.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y47.txt
│ │ ├── x53y48.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ └── x53y52.txt
│ ├── Other Map Editor/
│ │ ├── imports/
│ │ │ └── otherlevel/
│ │ │ ├── x1y1.txt
│ │ │ ├── x46y49.txt
│ │ │ ├── x47y49.txt
│ │ │ ├── x48y49.txt
│ │ │ ├── x48y50.txt
│ │ │ ├── x48y51.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y50.txt
│ │ │ └── x51y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── otherlevel/
│ │ ├── x1y1.txt
│ │ ├── x46y49.txt
│ │ ├── x47y49.txt
│ │ ├── x48y49.txt
│ │ ├── x48y50.txt
│ │ ├── x48y51.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x50y50.txt
│ │ └── x51y50.txt
│ ├── Screenshot Outputting Map Editor/
│ │ ├── imports/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ ├── intermission/
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y56.txt
│ │ │ │ ├── x44y56.txt
│ │ │ │ ├── x45y56.txt
│ │ │ │ ├── x46y56.txt
│ │ │ │ ├── x47y56.txt
│ │ │ │ ├── x48y56.txt
│ │ │ │ ├── x49y56.txt
│ │ │ │ ├── x50y56.txt
│ │ │ │ ├── x51y56.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x53y56.txt
│ │ │ │ └── x54y56.txt
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── otherlevel/
│ │ │ │ ├── x1y1.txt
│ │ │ │ ├── x46y49.txt
│ │ │ │ ├── x47y49.txt
│ │ │ │ ├── x48y49.txt
│ │ │ │ ├── x48y50.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x51y50.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── Space Station 2 Editor/
│ │ ├── imports/
│ │ │ └── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── spacestation2/
│ │ ├── x48y41.txt
│ │ ├── x48y42.txt
│ │ ├── x48y43.txt
│ │ ├── x49y41.txt
│ │ ├── x49y42.txt
│ │ ├── x49y43.txt
│ │ ├── x49y47.txt
│ │ ├── x49y48.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x50y39.txt
│ │ ├── x50y40.txt
│ │ ├── x50y41.txt
│ │ ├── x50y42.txt
│ │ ├── x50y43.txt
│ │ ├── x50y47.txt
│ │ ├── x50y48.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y39.txt
│ │ ├── x51y40.txt
│ │ ├── x51y41.txt
│ │ ├── x51y42.txt
│ │ ├── x51y43.txt
│ │ ├── x51y44.txt
│ │ ├── x51y45.txt
│ │ ├── x51y46.txt
│ │ ├── x51y47.txt
│ │ ├── x51y48.txt
│ │ ├── x51y49.txt
│ │ ├── x52y39.txt
│ │ ├── x52y40.txt
│ │ ├── x52y41.txt
│ │ ├── x52y42.txt
│ │ ├── x52y43.txt
│ │ ├── x52y44.txt
│ │ ├── x52y45.txt
│ │ ├── x52y46.txt
│ │ ├── x52y47.txt
│ │ ├── x52y48.txt
│ │ ├── x52y49.txt
│ │ ├── x53y39.txt
│ │ ├── x53y40.txt
│ │ ├── x53y41.txt
│ │ ├── x53y42.txt
│ │ ├── x53y43.txt
│ │ ├── x53y44.txt
│ │ ├── x53y45.txt
│ │ ├── x53y46.txt
│ │ ├── x53y47.txt
│ │ ├── x53y48.txt
│ │ ├── x53y49.txt
│ │ ├── x54y42.txt
│ │ ├── x54y43.txt
│ │ ├── x54y44.txt
│ │ ├── x54y45.txt
│ │ ├── x54y46.txt
│ │ ├── x54y47.txt
│ │ ├── x54y48.txt
│ │ ├── x54y49.txt
│ │ ├── x55y43.txt
│ │ ├── x55y44.txt
│ │ ├── x55y45.txt
│ │ ├── x55y46.txt
│ │ ├── x55y47.txt
│ │ ├── x56y43.txt
│ │ ├── x56y44.txt
│ │ ├── x56y45.txt
│ │ ├── x56y46.txt
│ │ ├── x56y47.txt
│ │ ├── x56y48.txt
│ │ ├── x56y49.txt
│ │ └── x56y50.txt
│ ├── Tower Map Editor/
│ │ ├── imports/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ ├── tower (background).txt
│ │ ├── tower (foreground).txt
│ │ └── tower.txt
│ ├── Towerhallways Editor/
│ │ ├── imports/
│ │ │ └── towerhallway/
│ │ │ ├── x50y50.txt
│ │ │ ├── x52y50.txt
│ │ │ └── x53y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── towerhallway/
│ │ ├── x50y50.txt
│ │ ├── x52y50.txt
│ │ └── x53y50.txt
│ ├── Warp Zone Map Editor/
│ │ ├── imports/
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── World Map Fork (for Eurogamer)/
│ │ ├── areamap.txt
│ │ ├── areamapin.txt
│ │ ├── backup/
│ │ │ └── imports/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y101.txt
│ │ │ │ ├── x110y102.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y100.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x111y118.txt
│ │ │ │ ├── x111y119.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y118.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ └── x119y113.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── imports/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y111.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x100y117.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y111.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y106.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x105y115.txt
│ │ │ │ ├── x105y118.txt
│ │ │ │ ├── x105y119.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x106y115.txt
│ │ │ │ ├── x106y118.txt
│ │ │ │ ├── x106y119.txt
│ │ │ │ ├── x107y101.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y110.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y112.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y106.txt
│ │ │ │ ├── x108y107.txt
│ │ │ │ ├── x108y108.txt
│ │ │ │ ├── x108y110.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y101.txt
│ │ │ │ ├── x110y102.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y108.txt
│ │ │ │ ├── x110y109.txt
│ │ │ │ ├── x110y110.txt
│ │ │ │ ├── x110y111.txt
│ │ │ │ ├── x110y112.txt
│ │ │ │ ├── x110y113.txt
│ │ │ │ ├── x110y114.txt
│ │ │ │ ├── x110y115.txt
│ │ │ │ ├── x110y116.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y100.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y108.txt
│ │ │ │ ├── x111y109.txt
│ │ │ │ ├── x111y110.txt
│ │ │ │ ├── x111y116.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x111y118.txt
│ │ │ │ ├── x111y119.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y108.txt
│ │ │ │ ├── x112y109.txt
│ │ │ │ ├── x112y110.txt
│ │ │ │ ├── x112y116.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y118.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y114.txt
│ │ │ │ ├── x113y115.txt
│ │ │ │ ├── x113y116.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y114.txt
│ │ │ │ ├── x114y116.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x114y118.txt
│ │ │ │ ├── x114y119.txt
│ │ │ │ ├── x115y114.txt
│ │ │ │ ├── x115y116.txt
│ │ │ │ ├── x115y117.txt
│ │ │ │ ├── x115y118.txt
│ │ │ │ ├── x115y119.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x116y114.txt
│ │ │ │ ├── x116y117.txt
│ │ │ │ ├── x116y119.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x117y112.txt
│ │ │ │ ├── x117y113.txt
│ │ │ │ ├── x117y114.txt
│ │ │ │ ├── x117y115.txt
│ │ │ │ ├── x117y116.txt
│ │ │ │ ├── x117y117.txt
│ │ │ │ ├── x117y118.txt
│ │ │ │ ├── x117y119.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x118y115.txt
│ │ │ │ ├── x118y117.txt
│ │ │ │ ├── x118y119.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y111.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ ├── x119y113.txt
│ │ │ │ ├── x119y114.txt
│ │ │ │ ├── x119y115.txt
│ │ │ │ ├── x119y116.txt
│ │ │ │ ├── x119y117.txt
│ │ │ │ ├── x119y118.txt
│ │ │ │ └── x119y119.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── input.hpp
│ │ ├── logic.hpp
│ │ ├── main.cpp
│ │ ├── map.hpp
│ │ ├── maps/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y111.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x100y117.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y111.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y106.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x105y115.txt
│ │ │ │ ├── x105y118.txt
│ │ │ │ ├── x105y119.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x106y115.txt
│ │ │ │ ├── x106y118.txt
│ │ │ │ ├── x106y119.txt
│ │ │ │ ├── x107y101.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y110.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y112.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y106.txt
│ │ │ │ ├── x108y107.txt
│ │ │ │ ├── x108y108.txt
│ │ │ │ ├── x108y110.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y108.txt
│ │ │ │ ├── x110y109.txt
│ │ │ │ ├── x110y110.txt
│ │ │ │ ├── x110y111.txt
│ │ │ │ ├── x110y112.txt
│ │ │ │ ├── x110y113.txt
│ │ │ │ ├── x110y114.txt
│ │ │ │ ├── x110y115.txt
│ │ │ │ ├── x110y116.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y108.txt
│ │ │ │ ├── x111y109.txt
│ │ │ │ ├── x111y110.txt
│ │ │ │ ├── x111y116.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y108.txt
│ │ │ │ ├── x112y109.txt
│ │ │ │ ├── x112y110.txt
│ │ │ │ ├── x112y116.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y114.txt
│ │ │ │ ├── x113y115.txt
│ │ │ │ ├── x113y116.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y114.txt
│ │ │ │ ├── x114y116.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x114y118.txt
│ │ │ │ ├── x114y119.txt
│ │ │ │ ├── x115y114.txt
│ │ │ │ ├── x115y116.txt
│ │ │ │ ├── x115y117.txt
│ │ │ │ ├── x115y118.txt
│ │ │ │ ├── x115y119.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x116y114.txt
│ │ │ │ ├── x116y117.txt
│ │ │ │ ├── x116y119.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x117y112.txt
│ │ │ │ ├── x117y113.txt
│ │ │ │ ├── x117y114.txt
│ │ │ │ ├── x117y115.txt
│ │ │ │ ├── x117y116.txt
│ │ │ │ ├── x117y117.txt
│ │ │ │ ├── x117y118.txt
│ │ │ │ ├── x117y119.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x118y115.txt
│ │ │ │ ├── x118y117.txt
│ │ │ │ ├── x118y119.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y111.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ ├── x119y113.txt
│ │ │ │ ├── x119y114.txt
│ │ │ │ ├── x119y115.txt
│ │ │ │ ├── x119y116.txt
│ │ │ │ ├── x119y117.txt
│ │ │ │ ├── x119y118.txt
│ │ │ │ └── x119y119.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── misc.hpp
│ │ ├── overworld.txt
│ │ └── render.hpp
│ └── World Mapping Editor/
│ ├── areamap.txt
│ ├── areamapin.txt
│ ├── backup/
│ │ └── imports/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y101.txt
│ │ │ ├── x110y102.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y100.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x111y118.txt
│ │ │ ├── x111y119.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y118.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y112.txt
│ │ │ └── x119y113.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── imports/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── Copy of x102y110.txt
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y111.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x100y117.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y111.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y114.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x105y115.txt
│ │ │ ├── x105y118.txt
│ │ │ ├── x105y119.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x106y115.txt
│ │ │ ├── x106y118.txt
│ │ │ ├── x106y119.txt
│ │ │ ├── x107y101.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y110.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y106.txt
│ │ │ ├── x108y107.txt
│ │ │ ├── x108y108.txt
│ │ │ ├── x108y110.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y101.txt
│ │ │ ├── x110y102.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y108.txt
│ │ │ ├── x110y109.txt
│ │ │ ├── x110y110.txt
│ │ │ ├── x110y111.txt
│ │ │ ├── x110y112.txt
│ │ │ ├── x110y113.txt
│ │ │ ├── x110y114.txt
│ │ │ ├── x110y115.txt
│ │ │ ├── x110y116.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y100.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y108.txt
│ │ │ ├── x111y109.txt
│ │ │ ├── x111y110.txt
│ │ │ ├── x111y116.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x111y118.txt
│ │ │ ├── x111y119.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y108.txt
│ │ │ ├── x112y109.txt
│ │ │ ├── x112y110.txt
│ │ │ ├── x112y116.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y118.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y114.txt
│ │ │ ├── x113y115.txt
│ │ │ ├── x113y116.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y114.txt
│ │ │ ├── x114y116.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x114y118.txt
│ │ │ ├── x114y119.txt
│ │ │ ├── x115y114.txt
│ │ │ ├── x115y116.txt
│ │ │ ├── x115y117.txt
│ │ │ ├── x115y118.txt
│ │ │ ├── x115y119.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x116y105.txt
│ │ │ ├── x116y114.txt
│ │ │ ├── x116y117.txt
│ │ │ ├── x116y119.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x117y106.txt
│ │ │ ├── x117y112.txt
│ │ │ ├── x117y113.txt
│ │ │ ├── x117y114.txt
│ │ │ ├── x117y115.txt
│ │ │ ├── x117y116.txt
│ │ │ ├── x117y117.txt
│ │ │ ├── x117y118.txt
│ │ │ ├── x117y119.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x118y106.txt
│ │ │ ├── x118y115.txt
│ │ │ ├── x118y117.txt
│ │ │ ├── x118y119.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y106.txt
│ │ │ ├── x119y107.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y111.txt
│ │ │ ├── x119y112.txt
│ │ │ ├── x119y113.txt
│ │ │ ├── x119y114.txt
│ │ │ ├── x119y115.txt
│ │ │ ├── x119y116.txt
│ │ │ ├── x119y117.txt
│ │ │ ├── x119y118.txt
│ │ │ └── x119y119.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── input.hpp
│ ├── logic.hpp
│ ├── main.cpp
│ ├── map.hpp
│ ├── maps/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── Copy of x102y110.txt
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y111.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x100y117.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y111.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y114.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x105y115.txt
│ │ │ ├── x105y118.txt
│ │ │ ├── x105y119.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x106y115.txt
│ │ │ ├── x106y118.txt
│ │ │ ├── x106y119.txt
│ │ │ ├── x107y101.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y110.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y106.txt
│ │ │ ├── x108y107.txt
│ │ │ ├── x108y108.txt
│ │ │ ├── x108y110.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y108.txt
│ │ │ ├── x110y109.txt
│ │ │ ├── x110y110.txt
│ │ │ ├── x110y111.txt
│ │ │ ├── x110y112.txt
│ │ │ ├── x110y113.txt
│ │ │ ├── x110y114.txt
│ │ │ ├── x110y115.txt
│ │ │ ├── x110y116.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y108.txt
│ │ │ ├── x111y109.txt
│ │ │ ├── x111y110.txt
│ │ │ ├── x111y116.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y108.txt
│ │ │ ├── x112y109.txt
│ │ │ ├── x112y110.txt
│ │ │ ├── x112y116.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y114.txt
│ │ │ ├── x113y115.txt
│ │ │ ├── x113y116.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y114.txt
│ │ │ ├── x114y116.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x114y118.txt
│ │ │ ├── x114y119.txt
│ │ │ ├── x115y114.txt
│ │ │ ├── x115y116.txt
│ │ │ ├── x115y117.txt
│ │ │ ├── x115y118.txt
│ │ │ ├── x115y119.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x116y105.txt
│ │ │ ├── x116y114.txt
│ │ │ ├── x116y117.txt
│ │ │ ├── x116y119.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x117y106.txt
│ │ │ ├── x117y112.txt
│ │ │ ├── x117y113.txt
│ │ │ ├── x117y114.txt
│ │ │ ├── x117y115.txt
│ │ │ ├── x117y116.txt
│ │ │ ├── x117y117.txt
│ │ │ ├── x117y118.txt
│ │ │ ├── x117y119.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x118y106.txt
│ │ │ ├── x118y115.txt
│ │ │ ├── x118y117.txt
│ │ │ ├── x118y119.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y106.txt
│ │ │ ├── x119y107.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y111.txt
│ │ │ ├── x119y112.txt
│ │ │ ├── x119y113.txt
│ │ │ ├── x119y114.txt
│ │ │ ├── x119y115.txt
│ │ │ ├── x119y116.txt
│ │ │ ├── x119y117.txt
│ │ │ ├── x119y118.txt
│ │ │ └── x119y119.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── misc.hpp
│ ├── overworld.txt
│ └── render.hpp
└── readme.MD
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.as linguist-language=ActionScript
================================================
FILE: .github/pull_request_template.md
================================================
## The Basics
Thanks for making a pull request! Before making a pull request, we have some
things for you to read through first:
- We generally do not accept patches for formatting fixes, unless the formatting
fixes are part of a functional patch (for example, when fixing a bug in a
function you can fix up the lines surrounding it if needed).
- Patches that break compatibility with the original game data or save data will
not be accepted.
- New features and user interface changes will most likely not be accepted
unless they are for improving user accessibility.
- New platforms are acceptable if they use SDL + PhysicsFS and don't mess with
the game source too much.
- (No homebrew console targets, sorry! Maybe do the work in SDL instead?)
- Translations and localizations of the game are not a community effort. If you
want to translate the game, you should contact Terry.
- Pull requests that do not fill out the Legal Stuff will be closed
automatically.
If you understand these notes, you can delete the text in this section. Pull
requests that still have this text will be closed automatically.
## Changes:
Describe your patch here!
## Legal Stuff:
By submitting this pull request, I confirm that...
- [ ] My changes may be used in a future commercial release of VVVVVV
- [ ] I will be credited in a `CONTRIBUTORS` file and the "GitHub Friends"
section of the credits for all of said releases, but will NOT be compensated
for these changes unless there is a prior written agreement
================================================
FILE: .github/workflows/android.yml
================================================
name: CI (Android)
# Only trigger workflow when Android-specific code could have changed.
# This includes C/C++ files that have __ANDROID__ ifdefs.
# If adding new ifdefs, make sure to update these lists.
on:
push:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/ButtonGlyphs.cpp"
- "desktop_version/src/FileSystemUtils.cpp"
- "desktop_version/src/Screen.cpp"
- "desktop_version/src/Vlogging.c"
- "desktop_version/VVVVVV-android/gradlew"
- "desktop_version/VVVVVV-android/gradlew.bat"
- "desktop_version/VVVVVV-android/**/CMakeLists.txt"
- "desktop_version/VVVVVV-android/**.java"
- "desktop_version/VVVVVV-android/**.xml"
- "desktop_version/VVVVVV-android/**.pro"
- "desktop_version/VVVVVV-android/**.mk"
- "desktop_version/VVVVVV-android/**.gradle"
- "desktop_version/VVVVVV-android/**.jar"
- "desktop_version/VVVVVV-android/**.properties"
- ".github/workflows/android.yml"
pull_request:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/ButtonGlyphs.cpp"
- "desktop_version/src/FileSystemUtils.cpp"
- "desktop_version/src/Screen.cpp"
- "desktop_version/src/Vlogging.c"
- "desktop_version/VVVVVV-android/gradlew"
- "desktop_version/VVVVVV-android/gradlew.bat"
- "desktop_version/VVVVVV-android/**/CMakeLists.txt"
- "desktop_version/VVVVVV-android/**.java"
- "desktop_version/VVVVVV-android/**.xml"
- "desktop_version/VVVVVV-android/**.pro"
- "desktop_version/VVVVVV-android/**.mk"
- "desktop_version/VVVVVV-android/**.gradle"
- "desktop_version/VVVVVV-android/**.jar"
- "desktop_version/VVVVVV-android/**.properties"
- ".github/workflows/android.yml"
env:
SRC_DIR_PATH: VVVVVV/desktop_version/VVVVVV-android
jobs:
build:
name: Build (Android)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
path: 'VVVVVV'
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- uses: actions/checkout@v4
with:
repository: libsdl-org/SDL
ref: release-2.30.8
path: 'SDL'
- name: Build SDL
run: |
sudo apt-get -y install ninja-build
cd SDL
./build-scripts/android-prefab.sh
mvn install:install-file -Dfile=build-android-prefab/prefab-2.30.8/SDL2-2.30.8.aar -DpomFile=build-android-prefab/prefab-2.30.8/SDL2-2.30.8.pom
- name: Build
run: |
cd ${SRC_DIR_PATH}
./gradlew build
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
# Only trigger workflow when code changes, or this file is changed.
# Android has a different workflow and different rules.
on:
push:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- "third_party/**"
- ".github/workflows/ci.yml"
pull_request:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- "third_party/**"
- ".github/workflows/ci.yml"
permissions:
contents: read
statuses: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
SRC_DIR_PATH: desktop_version
jobs:
build-mac:
name: Build (macos-latest)
runs-on: macos-latest
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
HOMEBREW_NO_ENV_HINTS: 1 # Suppress brew update hints
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Homebrew packages
id: cache-brew
uses: actions/cache@v3
with:
path: |
/usr/local/Cellar/ninja
/usr/local/Cellar/sdl2
/usr/local/opt/sdl2 # Symlink often used
key: ${{ runner.os }}-brew-${{ hashFiles('/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ninja.rb', '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/sdl2.rb') }} # Using hash of formula files if available, or a fixed key for simplicity if not easily determined
- name: Install dependencies
if: steps.cache-brew.outputs.cache-hit != 'true'
run: brew install ninja sdl2
- name: CMake configure (default version)
run: |
mkdir -p ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake -G Ninja ..
- name: Build (default version)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: ninja -C ${SRC_DIR_PATH}/build
build-lin:
name: Build (Steam Linux Runtime Sniper)
runs-on: ubuntu-latest
container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: CMake configure (default version)
run: |
mkdir -p ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake -G Ninja ..
- name: Build (default version)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -G Ninja -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -G Ninja -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: ninja -C ${SRC_DIR_PATH}/build
build-win:
name: Build (windows-latest)
runs-on: windows-latest
env:
SDL_VERSION: 2.26.0
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache SDL
id: cache-windows-sdl
uses: actions/cache@v3
env:
cache-name: cache-sdl
with:
path: C:\SDL2-*
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.SDL_VERSION }}
- if: ${{ steps.cache-windows-sdl.outputs.cache-hit != 'true' }}
name: Download SDL if not cached
run: |
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -OutFile C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
- name: CMake initial configure/generate
run: |
mkdir $env:SRC_DIR_PATH/build
cd $env:SRC_DIR_PATH/build
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
cmake -G "Visual Studio 17 2022" -A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main" ..
- name: CMake configure (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake ..
- name: Build (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
================================================
FILE: .gitmodules
================================================
[submodule "third_party/lodepng"]
path = third_party/lodepng
url = https://github.com/lvandeve/lodepng
[submodule "third_party/physfs"]
path = third_party/physfs
url = https://github.com/icculus/physfs/
[submodule "third_party/tinyxml2"]
path = third_party/tinyxml2
url = https://github.com/leethomason/tinyxml2/
[submodule "third_party/FAudio"]
path = third_party/FAudio
url = https://github.com/FNA-XNA/FAudio
[submodule "third_party/c-hashmap"]
path = third_party/c-hashmap
url = https://github.com/Mashpoe/c-hashmap
[submodule "third_party/SheenBidi"]
path = third_party/SheenBidi
url = https://github.com/Tehreer/SheenBidi
================================================
FILE: LICENSE.md
================================================
VVVVVV's source code is made available under a custom license. Basically, you can compile yourself a copy, for free, for personal use. But if you want to distribute a compiled version of the game, you might need permission first. See the [License exceptions](License%20exceptions.md) page for more information.
VVVVVV Source Code License v1.0
-------
Last updated on January 7th, 2020.
This repo contains the source code for VVVVVV, including all level content and text from the game. It does not, however, contain any of the icons, art, graphics or music for the game, which are still under a proprietary license. For personal use, you can find these assets for free in the [Make and Play Edition](https://thelettervsixtim.es/makeandplay/).
If you are interested in distributing work that falls outside the terms in the licence below, or if you are interested in distributing work that includes using any part of VVVVVV not included in this repo then please get in touch - we can discuss granting a licence for that on a case by case basis. The purpose of making the contents of this repo available is for others to learn from, to inspire new work, and to allow the creation of new tools and modifications for VVVVVV.
This software available from here is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any claim, damages or other liability arising from the use or in connection with this software. All materials in the repo, with the exception of the contents of the "third_party" directory, are copyright of Terry Cavanagh © 2010-2020.
Permission is granted to anyone to use this software and to alter it and redistribute it freely, subject to the following restrictions:
- You may not alter or redistribute this software in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. This includes, but is not limited to, selling altered or unaltered versions of this software, or including advertisements of any kind in altered or unaltered versions of this software.
- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, you are required to include an acknowledgement in the product that this software is the copyright of Terry Cavanagh and is based on the VVVVVV source code.
- Altered source/binary versions must be plainly marked as such, and must not be misrepresented as being the original software.
- You must not distribute any materials from the game which are not included in this repo unless approved by us in writing.
- This notice may not be removed or altered from any source/binary distribution.
================================================
FILE: License exceptions.md
================================================
VVVVVV's source code is made available under a [custom license](LICENSE.md), which states that you must not distribute any materials from the game (i.e. the game's assets) which are not included in this repo unless approved by us in writing. In general, if you're interested in creating something that falls outside the license terms, get in touch with [Terry](http://distractionware.com/email/)!
There is an important general exception: if you're compiling a [Make
and Play](https://thelettervsixtim.es/makeandplay/) version of the game, then you can you freely distribute the game's assets.
The following is a list of projects which have been given permission by Terry to distribute the assets with distributions of the game, and under what conditions.
Exceptions granted to the VVVVVV source code license
-------
Last updated on January 23rd, 2024.
| Project | Creator | Description | Conditions | Link |
|---|---|---|---|---|
| Any distribution of the VVVVVV: Make and Play edition | | All distributions and packages of the Make and Play edition can freely distribute the data assets, so long as they compile with the makeandplay define and do not distribute the original levels.| Must compile with the makeandplay define set, cannot distribute the original levels. | |
| VVVVVV: Make and Play Edition |[Terry Cavanagh](http://distractionware.com/)|The free and official version of VVVVVV that includes player levels, and the tools to create your own levels, but does not include the original levels from the game.| Must compile with the makeandplay define set, cannot distribute the original levels. | [download](https://thelettervsixtim.es/makeandplay/) |
| Ved | [Dav999 and InfoTeddy](https://github.com/Daaaav/Ved/graphs/contributors) | An external editor for VVVVVV levels. | No conditions. | [download](https://tolp.nl/ved/), [github repo](https://github.com/Daaaav/Ved) |
| VVVVVV: Community Edition | https://github.com/v6cord/VVVVVV-CE/graphs/contributors | Community fork of VVVVVV focused on expanding the capabilities of player levels. | Must compile with the makeandplay define set, cannot distribute the original levels. | [github repo](https://github.com/v6cord/VVVVVV-CE) |
| VVVVVVwasm|kotborealis|Web Assembly port of VVVVVV| Must compile with the makeandplay define set, cannot distribute the original levels. | [github repo](https://github.com/kotborealis/VVVVVVwasm) |
| cursed_vvvvvv.exe | [MustardBucket](https://twitter.com/mustard_bucket/) | Modified version of VVVVVV where instead of flipping gravity you jump normally, can jump multiple times, and wall jump. | Make it impossible to revert to ordinary flipping behaviour. | [download](https://mustardbucket.itch.io/cursed-vvvvvv?secret=O0KvS02wD473pXBF9avreZsww), [twitter gif](https://twitter.com/mustard_bucket/status/1216272971779670016) |
| Haiku Port | [Julius C. Enriquez](https://github.com/win8linux) | Port for the Haiku operating system. | Display the following text in the Haiku package to make it clear that this is an exception: "VVVVVV is a commercial game! The author has given special permission to make this Haiku version available for free. If you enjoy the game, please consider purchasing a copy at [thelettervsixtim.es](http://thelettervsixtim.es)." | [haiku recipe](https://github.com/haikuports/haikuports/tree/master/games-arcade/vvvvvv), [haiku data.zip recipe](https://github.com/haikuports/haikuports/tree/master/games-arcade/vvvvvv_data) |
| Dreamcast Port | [Gustavo Aranda](https://github.com/gusarba/) | Port for the Sega Dreamcast. | Permission is given to distribute a ready-to-use CD image file for the Sega Dreamcast containing the data.zip assets for non commercial use only. | [github repo](https://github.com/gusarba/VVVVVVDC)|
| XBox One/UWP Port | [tunip3](https://github.com/tunip3) | Port for XBOX ONE (DURANGO) via UWP. | Permission is given to distribute a pre-compiled package (containing the data.zip assets) for people to run on development mode xboxes, for non commercial use only. | [github repo](https://github.com/tunip3/DURANGO-V6)|
| armhf Port | [johnnyonFlame](https://github.com/johnnyonFlame/) | Armhf port for Raspberry PI and other SBC devices| Permission is for non commercial use only. Display the following text in the readme to make it clear that this is an exception: "VVVVVV is a commercial game! The author has given special permission to make this port available for free. If you enjoy the game, please consider purchasing a copy at [thelettervsixtim.es](http://thelettervsixtim.es)."| [github release](https://github.com/JohnnyonFlame/VVVVVV/releases/tag/v2.4-r1) |
| PortMaster distributions of the game for Linux Handheld devices | [portmaster](https://portmaster.games/) | A port manager GUI for Linux handheld devices | Permission is for non commercial use only. Display the following text in the readme to make it clear that this is an exception: "VVVVVV is a commercial game! The author has given special permission to make this port available for free. If you enjoy the game, please consider purchasing a copy at [thelettervsixtim.es](http://thelettervsixtim.es)."| [website](https://portmaster.games/detail.html?name=vvvvvv) |
| Wii Port | [Alberto Mardegan](https://github.com/mardy/) | Port for the Nintendo Wii. | Permission is given to distribute a ready-to-use build for the Nintendo Wii containing the data.zip assets for non commercial use only. | [github repo](https://github.com/mardy/VVVVVV/tree/wii) |
| Recalbox Port | [digitalLumberjack](https://gitlab.com/recalbox/recalbox) | Port for Recalbox project. | Display the following text in the readme to make it clear that this is an exception: "VVVVVV is a commercial game! The author has given special permission to make this port available for free. If you enjoy the game, please consider purchasing a copy at [thelettervsixtim.es](http://thelettervsixtim.es)." | [website](https://recalbox.com/) |
================================================
FILE: README.md
================================================

This is the source code to VVVVVV, the 2010 indie game by [Terry Cavanagh](http://distractionware.com/), with music by [Magnus Pålsson](http://souleye.madtracker.net/). You can read the [announcement](http://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/) of the source code release on Terry's blog!
The source code for the desktop version is in [this folder](desktop_version).
VVVVVV is still commercially available at [thelettervsixtim.es](https://thelettervsixtim.es/) if you'd like to support it, but you are completely free to compile the game for your own personal use. If you're interested in distributing a compiled version of the game, see [LICENSE.md](LICENSE.md) for more information.
Discussion about VVVVVV updates mainly happens on the "unofficial" [VVVVVV discord](https://discord.gg/Zf7Nzea), in the `vvvvvv-code` channel.
Credits
-------
- Created by [Terry Cavanagh](http://distractionware.com/)
- Room Names by [Bennett Foddy](http://www.foddy.net)
- Music by [Magnus Pålsson](https://magnuspalsson.com/)
- Metal Soundtrack by [FamilyJules](https://link.space/@familyjules)
- 2.0 Update (C++ Port) by [Simon Roth](http://www.machinestudios.co.uk)
- 2.2 Update (SDL2/PhysicsFS/Steamworks port) by [Ethan Lee](http://www.flibitijibibo.com/)
- Additional coding by [Misa Kai](https://infoteddy.info/)
- Beta Testing by Sam Kaplan and Pauli Kohberger
- Ending Picture by Pauli Kohberger
- Localisations by [our localisation teams](desktop_version/TRANSLATORS.txt)
- With additional contributions by [many others here on github](desktop_version/CONTRIBUTORS.txt) <3
================================================
FILE: desktop_version/.dockerignore
================================================
**
!Dockerfile
================================================
FILE: desktop_version/.gitignore
================================================
# Build objects
build/
flibitBuild/
CMakeCache.txt
CMakeFiles/
cmake_install.cmake
Makefile
VVVVVV.exe
VVVVVV
*.a
*.gch
src/Version.h.out
src/InterimVersion.out.c
# Game data
data.zip
# macOS files
.DS_Store
================================================
FILE: desktop_version/AppIcon.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
================================================
FILE: desktop_version/AppIcon.xcassets/Contents.json
================================================
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
================================================
FILE: desktop_version/CMakeLists.txt
================================================
# CMake File for VVVVVV
# Written by Ethan "flibitijibibo" Lee
cmake_minimum_required(VERSION 2.8.12...3.5)
# CMake Options
option(ENABLE_WARNINGS "Enable compilation warnings" ON)
option(ENABLE_WERROR "Treat compilation warnings as errors" OFF)
option(BUNDLE_DEPENDENCIES "Use bundled TinyXML-2, PhysicsFS, and FAudio (if disabled, TinyXML-2, PhysicsFS, and FAudio will be dynamically linked; LodePNG, C-HashMap and SheenBidi will still be statically linked)" ON)
option(STEAM "Use the Steam API" OFF)
option(GOG "Use the GOG API" OFF)
option(OFFICIAL_BUILD "Compile an official build of the game" OFF)
option(MAKEANDPLAY "Compile a version of the game without the main campaign (provided for convenience; consider modifying MakeAndPlay.h instead" OFF)
if(OFFICIAL_BUILD AND NOT MAKEANDPLAY)
set(STEAM ON)
set(GOG ON)
endif()
option(REMOVE_ABSOLUTE_PATHS "If supported by the compiler, replace all absolute paths to source directories compiled into the binary (if any) with relative paths" ON)
# Architecture Flags
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# Wow, Apple is a huge jerk these days huh?
set(OSX_10_9_SDK_PATH /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk)
if(NOT CMAKE_OSX_SYSROOT)
if(IS_DIRECTORY ${OSX_10_9_SDK_PATH})
set(CMAKE_OSX_SYSROOT ${OSX_10_9_SDK_PATH})
else()
message(WARNING "CMAKE_OSX_SYSROOT not set and macOS 10.9 SDK not found! Using default one.")
endif()
endif()
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
link_directories(/usr/local/lib)
add_compile_options(-Werror=partial-availability)
elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0) # SDL goes back to iOS 8.0, but modern Xcode doesn't
endif()
project(VVVVVV)
if(APPLE)
message(STATUS "Using macOS SDK at ${CMAKE_OSX_SYSROOT}")
endif()
# RPATH
if(NOT WIN32)
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
set(BIN_LIBROOT "Frameworks")
set(BIN_RPATH "@executable_path/Frameworks")
elseif(APPLE)
set(BIN_LIBROOT "osx")
set(BIN_RPATH "@executable_path/osx")
elseif(CMAKE_SIZEOF_VOID_P MATCHES "8")
set(BIN_LIBROOT "lib64")
set(BIN_RPATH "\$ORIGIN/lib64")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
else()
set(BIN_LIBROOT "lib")
set(BIN_RPATH "\$ORIGIN/lib")
endif()
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH ${BIN_RPATH})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
endif()
# Source Lists
set(VVV_CXX_SRC
src/BinaryBlob.cpp
src/BlockV.cpp
src/ButtonGlyphs.cpp
src/CustomLevels.cpp
src/CWrappers.cpp
src/Editor.cpp
src/Ent.cpp
src/Entity.cpp
src/FileSystemUtils.cpp
src/Finalclass.cpp
src/Font.cpp
src/FontBidi.cpp
src/Game.cpp
src/Graphics.cpp
src/GraphicsResources.cpp
src/GraphicsUtil.cpp
src/IMERender.cpp
src/Input.cpp
src/KeyPoll.cpp
src/Labclass.cpp
src/LevelDebugger.cpp
src/Localization.cpp
src/LocalizationMaint.cpp
src/LocalizationStorage.cpp
src/Logic.cpp
src/Map.cpp
src/Music.cpp
src/Otherlevel.cpp
src/preloader.cpp
src/Render.cpp
src/RenderFixed.cpp
src/RoomnameTranslator.cpp
src/Screen.cpp
src/Script.cpp
src/Scripts.cpp
src/Spacestation2.cpp
src/TerminalScripts.cpp
src/Textbox.cpp
src/Tower.cpp
src/UtilityClass.cpp
src/WarpClass.cpp
src/XMLUtils.cpp
src/main.cpp
)
set(VVV_C_SRC
src/DeferCallbacks.c
src/GlitchrunnerMode.c
src/Network.c
src/Textbook.c
src/ThirdPartyDeps.c
src/UTF8.c
src/VFormat.c
src/Vlogging.c
src/Xoshiro.c
../third_party/physfs/extras/physfsrwops.c
)
if(STEAM)
list(APPEND VVV_C_SRC src/SteamNetwork.c)
endif()
if(GOG)
list(APPEND VVV_C_SRC src/GOGNetwork.c)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
list(APPEND VVV_C_SRC src/SDL_uikit_main.c)
endif()
set(VVV_SRC ${VVV_CXX_SRC} ${VVV_C_SRC})
# Executable information
if(WIN32)
add_executable(VVVVVV WIN32 ${VVV_SRC} icon.rc)
elseif(ANDROID)
add_library(VVVVVV SHARED ${VVV_SRC})
elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
file(GLOB_RECURSE REPO_RESOURCES "fonts/*" "lang/*")
add_executable(VVVVVV MACOSX_BUNDLE ${VVV_SRC} ${DATA_ZIP} AppIcon.xcassets ${REPO_RESOURCES})
set_target_properties(VVVVVV PROPERTIES
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.distractionware.vvvvvvmobile"
XCODE_ATTRIBUTE_PRODUCT_NAME "VVVVVV"
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" # iPhone, iPad
XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION "2.5"
XCODE_ATTRIBUTE_MARKETING_VERSION "2.5"
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
XCODE_ATTRIBUTE_GENERATE_INFOPLIST_FILE YES
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
XCODE_ATTRIBUTE_INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace YES
XCODE_ATTRIBUTE_INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents YES
RESOURCE "${DATA_ZIP};AppIcon.xcassets"
)
foreach(REPO_FILE ${REPO_RESOURCES})
file(RELATIVE_PATH REPO_FILE_REL "${CMAKE_CURRENT_SOURCE_DIR}" ${REPO_FILE})
get_filename_component(REPO_FILE_DIR ${REPO_FILE_REL} DIRECTORY)
set_property(SOURCE ${REPO_FILE} PROPERTY MACOSX_PACKAGE_LOCATION "Resources/${REPO_FILE_DIR}")
source_group("Resources/${REPO_FILE_DIR}" FILES "${REPO_FILE}")
endforeach()
else()
add_executable(VVVVVV ${VVV_SRC})
endif()
# Include Directories
if(BUNDLE_DEPENDENCIES)
target_include_directories(
VVVVVV PRIVATE
src
../third_party
../third_party/tinyxml2
../third_party/physfs/src
../third_party/physfs/extras
../third_party/lodepng
../third_party/c-hashmap
../third_party/FAudio/include
../third_party/FAudio/src
../third_party/SheenBidi/Headers
)
else()
target_include_directories(
VVVVVV PRIVATE
src
../third_party
../third_party/lodepng
../third_party/physfs/extras
../third_party/c-hashmap
../third_party/FAudio/src
../third_party/SheenBidi/Headers
)
endif()
if(MAKEANDPLAY)
target_compile_definitions(VVVVVV PRIVATE -DMAKEANDPLAY)
endif()
if(STEAM)
target_compile_definitions(VVVVVV PRIVATE -DSTEAM_NETWORK)
endif()
if(GOG)
target_compile_definitions(VVVVVV PRIVATE -DGOG_NETWORK)
endif()
set(XML2_SRC
../third_party/tinyxml2/tinyxml2.cpp
)
set(FAUDIO_SRC
../third_party/FAudio/src/FAudio.c
../third_party/FAudio/src/FAudio_internal.c
../third_party/FAudio/src/FAudio_internal_simd.c
../third_party/FAudio/src/FAudio_operationset.c
../third_party/FAudio/src/FAudio_platform_sdl2.c
)
set(PFS_SRC
../third_party/physfs/src/physfs.c
../third_party/physfs/src/physfs_archiver_dir.c
../third_party/physfs/src/physfs_archiver_unpacked.c
../third_party/physfs/src/physfs_archiver_zip.c
../third_party/physfs/src/physfs_byteorder.c
../third_party/physfs/src/physfs_unicode.c
../third_party/physfs/src/physfs_platform_posix.c
../third_party/physfs/src/physfs_platform_unix.c
../third_party/physfs/src/physfs_platform_windows.c
../third_party/physfs/src/physfs_platform_haiku.cpp
../third_party/physfs/src/physfs_platform_android.c
)
if(APPLE)
# Are you noticing a pattern with this Apple crap yet?
set(PFS_SRC ${PFS_SRC} ../third_party/physfs/src/physfs_platform_apple.m)
endif()
set(PNG_SRC src/lodepng_wrapper.c)
set(PNG_DEF -DLODEPNG_NO_COMPILE_ALLOCATORS -DLODEPNG_NO_COMPILE_DISK)
set(CHM_SRC ../third_party/c-hashmap/map.c)
set(SBIDI_SRC ../third_party/SheenBidi/Source/SheenBidi.c)
if(NOT OFFICIAL_BUILD)
# Add interim commit hash and its date to the build
# These filenames have to be qualified, because when we run
# the CMake script, its work dir gets set to the build folder
set(VERSION_INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/InterimVersion.in.c)
set(VERSION_OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/src/InterimVersion.out.c)
add_custom_command(
# This OUTPUT line is required for this to be ran every time
OUTPUT ${VERSION_OUTPUT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/src/_dummy.c
COMMAND ${CMAKE_COMMAND}
# These args have to be passed through, otherwise the script can't see them
# Also, these args have to come BEFORE `-P`! (Otherwise it fails with an unclear error)
-DINPUT_FILE=${VERSION_INPUT_FILE}
-DOUTPUT_FILE=${VERSION_OUTPUT_FILE}
-P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
)
target_compile_definitions(VVVVVV PRIVATE -DINTERIM_VERSION_EXISTS)
add_library(InterimVersion STATIC src/InterimVersion.out.c)
list(APPEND STATIC_LIBRARIES InterimVersion)
endif()
# Build options
if(ENABLE_WARNINGS)
# The weird syntax is due to CMake generator expressions.
# Saves quite a few lines and boilerplate at the price of readability.
target_compile_options(VVVVVV PRIVATE
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
-Wall -Wpedantic $<$<BOOL:${ENABLE_WERROR}>:-Werror>>
$<$<CXX_COMPILER_ID:MSVC>:
/W4 $<$<BOOL:${ENABLE_WERROR}>:/WX>>)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(SUPPORTS_IMPLICIT_FALLTHROUGH TRUE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
set(SUPPORTS_IMPLICIT_FALLTHROUGH TRUE)
else()
set(SUPPORTS_IMPLICIT_FALLTHROUGH FALSE)
endif()
else()
set(SUPPORTS_IMPLICIT_FALLTHROUGH FALSE)
endif()
if(SUPPORTS_IMPLICIT_FALLTHROUGH)
target_compile_options(VVVVVV PRIVATE -Werror=implicit-fallthrough)
endif()
if(MSVC)
# Disable MSVC warnings about implicit conversion
target_compile_options(VVVVVV PRIVATE /wd4244)
endif()
# Disable warnings about `long long` in C++03 (from including PhysFS)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(VVVVVV PRIVATE -Wno-long-long)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(VVVVVV PRIVATE -Wno-c++11-long-long)
endif()
# Disable warnings about flexible array members in C++ (from including FAudio)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(VVVVVV PRIVATE -Wno-c99-extensions)
endif()
# Set standards version, disable exceptions and RTTI
if(MSVC)
# MSVC doesn't have /std:c99 or /std:c++98 switches!
# MSVC does not officially support disabling exceptions,
# so this is as far as we are willing to go to disable them.
string(REGEX REPLACE "/EH[a-z]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set_source_files_properties(${VVV_CXX_SRC} PROPERTIES COMPILE_FLAGS "/EHsc /GR-")
if(MSVC_VERSION GREATER 1900)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
endif()
else()
string(REGEX REPLACE "-std=[a-z0-9]+" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set_source_files_properties(${VVV_C_SRC} PROPERTIES COMPILE_FLAGS -std=c99)
string(REGEX REPLACE "-std=[a-z0-9+]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set_source_files_properties(${VVV_CXX_SRC} PROPERTIES COMPILE_FLAGS "-std=c++98 -fno-exceptions -fno-rtti")
# Dependencies (as needed)
set_source_files_properties(${FAUDIO_SRC} PROPERTIES COMPILE_FLAGS -std=c99)
set_source_files_properties(${CHM_SRC} PROPERTIES COMPILE_FLAGS -std=c99)
endif()
add_library(c-hashmap-static STATIC ${CHM_SRC})
add_library(sheenbidi-static STATIC ${SBIDI_SRC})
target_compile_definitions(sheenbidi-static PRIVATE
-DSB_CONFIG_UNITY
)
target_include_directories(sheenbidi-static PRIVATE
../third_party/SheenBidi/Headers
)
if(BUNDLE_DEPENDENCIES)
list(APPEND STATIC_LIBRARIES lodepng-static physfs-static tinyxml2-static c-hashmap-static faudio-static sheenbidi-static)
else()
list(APPEND STATIC_LIBRARIES c-hashmap-static sheenbidi-static)
endif()
if(BUNDLE_DEPENDENCIES)
add_library(lodepng-static STATIC ${PNG_SRC})
target_compile_definitions(lodepng-static PRIVATE ${PNG_DEF})
add_library(tinyxml2-static STATIC ${XML2_SRC})
add_library(physfs-static STATIC ${PFS_SRC})
target_compile_definitions(physfs-static PRIVATE
-DPHYSFS_SUPPORTS_DEFAULT=0 -DPHYSFS_SUPPORTS_ZIP=1
)
add_library(faudio-static STATIC ${FAUDIO_SRC})
target_include_directories(
faudio-static PRIVATE
../third_party/FAudio/include
)
# Disable FAudio debug stuff in release mode. This needs a generator expression for CMake reasons(TM)
target_compile_definitions(faudio-static PRIVATE $<$<CONFIG:Release>:FAUDIO_DISABLE_DEBUGCONFIGURATION>)
target_link_libraries(VVVVVV ${STATIC_LIBRARIES})
else()
target_compile_definitions(VVVVVV PRIVATE
${PNG_DEF}
-DSYSTEM_LODEPNG
)
target_link_libraries(VVVVVV ${STATIC_LIBRARIES} physfs tinyxml2 FAudio lodepng)
endif()
if(MSVC)
# Statically link Microsoft's runtime library so end users don't have to install it (/MT)
# Also, build with multiple processors (/MP)
list(APPEND GLOBAL_COMPILE_FLAGS /MT /MP)
endif()
if(REMOVE_ABSOLUTE_PATHS)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.8)
set(SUPPORTS_DEBUG_PREFIX_MAP TRUE)
else()
set(SUPPORTS_DEBUG_PREFIX_MAP FALSE)
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 10.0)
set(SUPPORTS_FILE_PREFIX_MAP TRUE)
else()
set(SUPPORTS_FILE_PREFIX_MAP FALSE)
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(SUPPORTS_DEBUG_PREFIX_MAP TRUE)
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
set(SUPPORTS_FILE_PREFIX_MAP TRUE)
else()
set(SUPPORTS_FILE_PREFIX_MAP FALSE)
endif()
else()
set(SUPPORTS_DEBUG_PREFIX_MAP FALSE)
set(SUPPORTS_FILE_PREFIX_MAP FALSE)
endif()
get_filename_component(REPO_DIR ../ ABSOLUTE)
# Remove absolute source paths from compiled binary
if(SUPPORTS_FILE_PREFIX_MAP)
list(APPEND GLOBAL_COMPILE_FLAGS -ffile-prefix-map=${REPO_DIR}=.)
elseif(SUPPORTS_DEBUG_PREFIX_MAP)
list(APPEND GLOBAL_COMPILE_FLAGS -fdebug-prefix-map=${REPO_DIR}=.)
endif()
endif()
target_compile_options(VVVVVV PRIVATE ${GLOBAL_COMPILE_FLAGS})
foreach(static_library IN LISTS STATIC_LIBRARIES)
target_compile_options(${static_library} PRIVATE ${GLOBAL_COMPILE_FLAGS})
endforeach(static_library)
# SDL2 Dependency (Detection pulled from FAudio)
if(DEFINED SDL2_INCLUDE_DIRS AND DEFINED SDL2_LIBRARIES)
message(STATUS "Using pre-defined SDL2 variables SDL2_INCLUDE_DIRS and SDL2_LIBRARIES")
target_include_directories(VVVVVV SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>")
target_link_libraries(VVVVVV ${SDL2_LIBRARIES})
if(BUNDLE_DEPENDENCIES)
target_include_directories(faudio-static SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>")
target_link_libraries(faudio-static ${SDL2_LIBRARIES})
endif()
elseif (EMSCRIPTEN)
message(STATUS "Using Emscripten SDL2")
target_compile_options(VVVVVV PUBLIC -sUSE_SDL=2)
target_link_libraries(VVVVVV -sUSE_SDL=2)
if(BUNDLE_DEPENDENCIES)
target_compile_options(faudio-static PUBLIC -sUSE_SDL=2)
target_link_libraries(faudio-static -sUSE_SDL=2)
endif()
elseif(DEFINED SDL2_FRAMEWORK)
message(STATUS "Using pre-defined SDL2 variable SDL2_FRAMEWORK")
target_include_directories(VVVVVV SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_FRAMEWORK}/Headers>")
target_link_libraries(VVVVVV ${SDL2_FRAMEWORK})
if(BUNDLE_DEPENDENCIES)
target_include_directories(faudio-static SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_FRAMEWORK}/Headers>")
target_link_libraries(faudio-static ${SDL2_FRAMEWORK})
endif()
set_target_properties(VVVVVV PROPERTIES XCODE_EMBED_FRAMEWORKS ${SDL2_FRAMEWORK})
else()
# Only try to autodetect if both SDL2 variables aren't explicitly set
find_package(SDL2 CONFIG)
if(TARGET SDL2::SDL2)
message(STATUS "Using TARGET SDL2::SDL2")
target_link_libraries(VVVVVV SDL2::SDL2)
if(BUNDLE_DEPENDENCIES)
target_link_libraries(faudio-static SDL2::SDL2)
endif()
elseif(TARGET SDL2)
message(STATUS "Using TARGET SDL2")
target_link_libraries(VVVVVV SDL2)
if(BUNDLE_DEPENDENCIES)
target_link_libraries(faudio-static SDL2)
endif()
else()
message(STATUS "No TARGET SDL2::SDL2, or SDL2, using variables")
target_include_directories(VVVVVV SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>")
target_link_libraries(VVVVVV ${SDL2_LIBRARIES})
if(BUNDLE_DEPENDENCIES)
target_include_directories(faudio-static SYSTEM PRIVATE "$<BUILD_INTERFACE:${SDL2_INCLUDE_DIRS}>")
target_link_libraries(faudio-static ${SDL2_LIBRARIES})
endif()
endif()
endif()
# Yes, more Apple Crap
if(APPLE)
find_library(FOUNDATION NAMES Foundation)
find_library(IOKIT NAMES IOKit)
target_link_libraries(VVVVVV objc ${IOKIT} ${FOUNDATION})
endif()
# But hey, also some Haiku crap
if(HAIKU)
find_library(BE_LIBRARY be)
find_library(ROOT_LIBRARY root)
target_link_libraries(VVVVVV ${BE_LIBRARY} ${ROOT_LIBRARY})
endif()
if(EMSCRIPTEN)
# 256MB is enough for everybody
target_link_libraries(VVVVVV -sFORCE_FILESYSTEM=1 -sTOTAL_MEMORY=256MB)
endif()
================================================
FILE: desktop_version/CONTRIBUTORS.txt
================================================
Contributors
------------
(Ordered alphabetically by first name.)
* Alexandra Fox
* AlexApps99 (@AlexApps99)
* Allison Fleischer (AllisonFleischer)
* Brian Callahan (@ibara)
* Charlie Bruce (@charliebruce)
* Christoph Böhmwalder (@chrboe)
* Daniel Lee (@ddm999)
* Dav999 (@Daaaav)
* Elijah Stone (@moon-chilled)
* Elliott Saltar (@eboyblue3)
* Emmanuel Vadot (@evadot)
* fraZ0R (@f-raZ0R)
* Fredrik Ljungdahl (@FredrIQ)
* iliana etaoin (@iliana)
* Jules de Sartiges (@strikersh)
* Keith Stellyes (@keithstellyes)
* KyoZM (@lsaa)
* leo vriska (@leo60228)
* MAO3J1m0Op (@MAO3J1m0Op)
* Malte Grimm (@trelbutate)
* Marvin Scholz (@ePirat)
* Matt Penny (@mwpenny)
* Misa Elizabeth Kai (@InfoTeddy)
* mothbeanie (@mothbeanie)
* Nichole Mattera (@NicholeMattera)
* Pierre-Alain TORET (@daftaupe)
* Reese Rivers (@ReeseTheRivers)
* Rémi Verschelde (@akien-mga)
* SnDream (@SnDream)
* Space-G (@Space-G)
* Thomas Sänger (@HorayNarea)
* Tynan Richards (@tzann)
* Wouter (@Xesxen)
* viri (viri.moe)
* Vittorio Romeo (@SuperV1234)
* Yussur Mustafa Oraji (@N00byKing)
================================================
FILE: desktop_version/Dockerfile
================================================
FROM centos:7
# run first to improve caching (other things update more often than SDL2)
WORKDIR /tmp
RUN curl -LJO https://github.com/libsdl-org/SDL/releases/download/release-2.24.0/SDL2-2.24.0.tar.gz
RUN tar -xf SDL2-2.24.0.tar.gz
RUN mkdir SDL2-2.24.0/build
# add EPEL (for SDL2)
RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# install dependencies
RUN yum -y install \
# used below
yum-utils \
# VVVVVV dependencies
gcc-c++ cmake make
RUN yum-builddep -y SDL2
RUN yum clean all
WORKDIR /tmp/SDL2-2.24.0/build
RUN ../configure
RUN make -j $(nproc)
RUN make install
WORKDIR /tmp
RUN rm -rf SDL2-2.24.0.tar.gz SDL2-2.24.0/
WORKDIR /
================================================
FILE: desktop_version/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIFileSharingEnabled</key>
<true/>
</dict>
</plist>
================================================
FILE: desktop_version/README.md
================================================
How to Build
------------
VVVVVV's official desktop versions are built with the following environments:
- Windows: Visual Studio 2010
- macOS: Xcode CLT, currently targeting 10.9 SDK
- GNU/Linux: CentOS 7
The engine depends solely on [SDL2](https://libsdl.org/) 2.24.0+. All other dependencies
are statically linked into the engine. The development libraries for Windows can
be downloaded from SDL's website, Linux developers can find the dev libraries from their
respective repositories, and macOS developers should compile and install from source.
(If you're on Ubuntu and your Ubuntu is too old to have this SDL version, then
[see here](https://github.com/TerryCavanagh/VVVVVV/issues/618#issuecomment-968338212)
for workarounds.)
Since VVVVVV 2.4, git submodules are used for the
[third party libraries](https://github.com/TerryCavanagh/VVVVVV/tree/master/third_party).
After cloning, run `git submodule update --init` to set all of these up.
You can also use this command whenever the submodules need to be updated.
Steamworks support is included and the DLL is loaded dynamically, you do not
need the SDK headers and there is no special Steam or non-Steam version. The
current implementation has been tested with Steamworks SDK v1.46.
To build the Make and Play edition of the game, uncomment `#define MAKEANDPLAY`
in `MakeAndPlay.h`.
To generate the projects on Windows:
```
# Put your SDL2 folders somewhere nice!
mkdir build
cd build
cmake -A Win32 -G "Visual Studio 10 2010" .. -DSDL2_INCLUDE_DIRS="C:\SDL2-2.24.0\include" -DSDL2_LIBRARIES="C:\SDL2-2.24.0\lib\x86\SDL2;C:\SDL2-2.24.0\lib\x86\SDL2main"
```
Then to compile the game, open the solution and click Build.
For more detailed information and troubleshooting, see the [Compiling VVVVVV
Guide](https://vsix.dev/wiki/Guide:Compiling_VVVVVV_on_Windows_with_Visual_Studio)
on the Viki.
To generate everywhere else:
```
mkdir build
cd build
cmake ..
```
Then to compile the game, type `make`.
Including data.zip
------------
You'll need the data.zip file from VVVVVV to actually run the game! You can grab
it from your copy of the game, or you can just download it for free from the [Make
and Play](https://thelettervsixtim.es/makeandplay/) page. Put this file next to
your executable and the game should run.
This is intended for personal use only - our license doesn't allow you to
actually distribute this data.zip file with your own forks without getting
permission from us first. See [LICENSE.md](../LICENSE.md) for more details.
================================================
FILE: desktop_version/TRANSLATORS.txt
================================================
Translators
------------
Arabic (Eternal Dream Arabization):
- Montassar Ghanmi
- Mohammed Seif Eddine Chaib
Catalan:
- Eduard Ereza Martínez
Welsh:
- Morgan Roberts
German:
- Thomas Faust
Esperanto:
- Reese Rivers
Spanish (ES):
- Felipe Mercader
- Sara Marín
Spanish (LATAM):
- LocQuest
- Guido Di Carlo
Spanish (ARG.):
- LocQuest
- Guido Di Carlo
French:
- Words of Magic
Irish:
- Úna-Minh Kavanagh
- Seaghán Ó Modhráin
- Davis Sandefur
Italian (gloc.team):
- Alain Dellepiane
- Matteo Scarabelli
- Lorenzo Bertolucci
- Fabio Bortolotti
Japanese:
- Nicalis, Inc.
- KabanFriends
Korean:
- Bada Im
- Hyungseok Cho
Dutch:
- Dav999
Polish:
- Kuba Kallus
Brazilian Portuguese:
Translators:
- Lucas Araujo
- Thiago Araujo
Editing and LQA:
- Ivan Lopes
- Lucas Nunes
European Portuguese:
- Locsmiths
Russian:
- TheMysticSword
Silesian:
- Kuba Kallus
Turkish:
- Engin İlkiz
Ukrainian:
- Olya Sushytska
Chinese (Simplified):
- Sound of Mystery
Chinese (Traditional):
- Sound of Mystery / craft
================================================
FILE: desktop_version/VVVVVV-android/.gitignore
================================================
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Log/OS Files
*.log
# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json
output-metadata.json
# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml
# Keystore files
*.jks
*.keystore
# Google Services (e.g. APIs or Firebase)
google-services.json
# Android Profiling
*.hprof
================================================
FILE: desktop_version/VVVVVV-android/README.md
================================================
Android port for C++ version
============================
This is _not_ the other existing mobile version (which is a fork of the original Flash
version). This is a port of the C++ desktop version, because the C++ version has gotten
many improvements since the source release (along with Flash being deprecated in
general).
How to Build
------------
The recommended way is to install Android Studio and Maven. These instructions are for
SDL 2.30.8; adapt your SDL version accordingly.
1. Place a copy of `data.zip` in `desktop_version/VVVVVV-android/app/src/main/assets/`.
(If the `assets/` folder doesn't exist, then create it.)
2. Obtain the SDL 2.30.8 Maven package. As of writing, SDL currently does not publish
Maven packages, so here is one way to obtain them (other methods are possible):
1. Download the SDL 2.30.8 source code.
2. Run the `build-scripts/android-prefab.sh` script in the SDL repository.
3. After building, run `mvn install:install-file
-Dfile=build-android-prefab/prefab-2.30.8/SDL2-2.30.8.aar
-DpomFile=build-android-prefab/prefab-2.30.8/SDL2-2.30.8.pom` to install it to
Maven Local.
3. Open the `desktop_version/VVVVVV-android/` folder in Android Studio.
4. Click 'Build'.
How to Install and Play
-----------------------
After building, go to `desktop_version/VVVVVV-android/app/build/outputs/apk/`, copy the
APK of the appropriate architecture to your device, and install it.
Touchscreen support is currently not implemented, so you will need to connect a keyboard
or controller to your device in order to play the game.
================================================
FILE: desktop_version/VVVVVV-android/app/build.gradle
================================================
def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');
def buildAsApplication = !buildAsLibrary
if (buildAsApplication) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
android {
if (buildAsApplication) {
namespace "com.distractionware.vvvvvv"
}
compileSdkVersion 34
defaultConfig {
minSdkVersion 29
targetSdkVersion 34
versionCode 20005000
versionName "2.5"
applicationId "air.com.distractionware.vvvvvvmobile"
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_shared"
}
}
}
buildFeatures {
prefab true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
applicationVariants.all { variant ->
tasks["merge${variant.name.capitalize()}Assets"]
.dependsOn("externalNativeBuild${variant.name.capitalize()}")
}
if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) {
sourceSets.main {
jniLibs.srcDir 'libs'
}
externalNativeBuild {
cmake {
path 'jni/CMakeLists.txt'
}
}
}
lint {
abortOnError false
}
aaptOptions {
noCompress 'zip'
}
if (buildAsLibrary) {
libraryVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(".aar")) {
def fileName = "org.libsdl.app.aar";
output.outputFile = new File(outputFile.parent, fileName);
}
}
}
}
splits {
abi {
enable true
}
}
sourceSets {
main {
assets {
srcDir layout.buildDirectory.dir("generated/main/assets")
}
}
}
}
def zipRepoAssetsTask = tasks.register("zipRepoAssets", Zip) {
from('../../fonts') { spec ->
spec.into('graphics')
}
from('../../lang') { spec ->
spec.into('lang')
}
archiveFileName.set('repo.zip')
destinationDirectory.value(layout.buildDirectory.dir("generated/main/assets"))
}
project.android.applicationVariants.configureEach { variant ->
def compressAssetsTask = project.tasks.named("merge${variant.name.capitalize()}Assets")
compressAssetsTask.configure { task ->
task.dependsOn zipRepoAssetsTask
}
}
afterEvaluate {
[lintReportDebug, lintAnalyzeDebug, lintReportRelease, lintAnalyzeRelease, lintVitalReportRelease, lintVitalAnalyzeRelease].each { task ->
task.dependsOn zipRepoAssetsTask
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'org.jetbrains:annotations:15.0'
implementation 'androidx.core:core:1.10.1'
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'org.libsdl.android:SDL2:2.30.8'
}
================================================
FILE: desktop_version/VVVVVV-android/app/jni/Android.mk
================================================
include $(call all-subdir-makefiles)
================================================
FILE: desktop_version/VVVVVV-android/app/jni/Application.mk
================================================
# Uncomment this if you're using STL in your project
# You can find more information here:
# https://developer.android.com/ndk/guides/cpp-support
# APP_STL := c++_shared
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
# Min runtime API level
APP_PLATFORM=android-16
================================================
FILE: desktop_version/VVVVVV-android/app/jni/CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.6)
project(VVVVVV_android)
# armeabi-v7a requires cpufeatures library
# include(AndroidNdkModules)
# android_ndk_import_module_cpufeatures()
# Compilation of companion libraries
#add_subdirectory(SDL_image)
#add_subdirectory(SDL_mixer)
#add_subdirectory(SDL_ttf)
add_subdirectory(../../.. desktop_version)
================================================
FILE: desktop_version/VVVVVV-android/app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in [sdk]/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Replace com.test.game with the identifier of your game below, e.g.
com.gamemaker.game
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="auto">
<!-- OpenGL ES 2.0 -->
<uses-feature android:glEsVersion="0x00020000" />
<!-- Touchscreen support -->
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<!-- Game controller support -->
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.hardware.gamepad"
android:required="false" />
<uses-feature
android:name="android.hardware.usb.host"
android:required="false" />
<!-- External mouse input events -->
<uses-feature
android:name="android.hardware.type.pc"
android:required="false" />
<!-- Audio recording support -->
<!-- if you want to capture audio, uncomment this. -->
<!-- <uses-feature
android:name="android.hardware.microphone"
android:required="false" /> -->
<!-- Allow downloading to the external storage on Android 5.1 and older -->
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22" /> -->
<!-- Allow access to Bluetooth devices -->
<!-- Currently this is just for Steam Controller support and requires setting SDL_HINT_JOYSTICK_HIDAPI_STEAM -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> -->
<!-- Allow access to the vibrator -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- if you want to capture audio, uncomment this. -->
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
<!-- Create a Java class extending SDLActivity and place it in a
directory under app/src/main/java matching the package, e.g. app/src/main/java/com/gamemaker/game/MyGame.java
then replace "SDLActivity" with the name of your class (e.g. "MyGame")
in the XML below.
An example Java class can be found in README-android.md
-->
<application android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:hardwareAccelerated="true" >
<!-- Example of setting SDL hints from AndroidManifest.xml:
<meta-data android:name="SDL_ENV.SDL_ACCELEROMETER_AS_JOYSTICK" android:value="0"/>
-->
<meta-data android:name="SDL_ENV.SDL_IOS_ORIENTATIONS" android:value="LandscapeLeft LandscapeRight"/>
<activity android:name="VVVVVV"
android:label="@string/app_name"
android:alwaysRetainTaskState="true"
android:launchMode="singleInstance"
android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:preferMinimalPostProcessing="true"
android:screenOrientation="landscape"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Let Android know that we can handle some USB devices and should receive this event -->
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<!-- Drop file event -->
<!--
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
-->
</activity>
<provider
android:name="com.distractionware.vvvvvv.BaseDirProvider"
android:authorities="com.distractionware.vvvvvv.basedir"
android:grantUriPermissions="true"
android:exported="true"
android:permission="android.permission.MANAGE_DOCUMENTS">
<intent-filter>
<action android:name="android.content.action.DOCUMENTS_PROVIDER" />
</intent-filter>
</provider>
</application>
</manifest>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/BaseDirProvider.java
================================================
package com.distractionware.vvvvvv;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MatrixCursor.RowBuilder;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
import android.provider.DocumentsContract.Root;
import java.io.File;
import java.io.FileNotFoundException;
public class BaseDirProvider extends FileSystemProvider {
private static final String AUTHORITY = "com.distractionware.vvvvvv.basedir";
private static final String DOC_ID_ROOT = "vvvvvv";
private static final String[] DEFAULT_ROOT_PROJECTION = new String[]{
Root.COLUMN_ROOT_ID, Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
Root.COLUMN_DOCUMENT_ID,
};
private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[]{
Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE, Document.COLUMN_DISPLAY_NAME,
Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, Document.COLUMN_SIZE,
};
private File mRoot;
@Override
public boolean onCreate() {
super.onCreate(DEFAULT_DOCUMENT_PROJECTION);
mRoot = getContext().getExternalFilesDir(null);
return true;
}
@Override
public Cursor queryRoots(String[] projection) throws FileNotFoundException {
final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection));
final RowBuilder row = result.newRow();
row.add(Root.COLUMN_ROOT_ID, DOC_ID_ROOT);
row.add(Root.COLUMN_FLAGS,
Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_CREATE | Root.FLAG_SUPPORTS_SEARCH |
Root.FLAG_SUPPORTS_IS_CHILD);
row.add(Root.COLUMN_ICON, R.mipmap.ic_launcher);
row.add(Root.COLUMN_TITLE, "VVVVVV");
row.add(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT);
return result;
}
@Override
protected Uri buildNotificationUri(String docId) {
return DocumentsContract.buildChildDocumentsUri(AUTHORITY, docId);
}
private static String[] resolveRootProjection(String[] projection) {
return projection != null ? projection : DEFAULT_ROOT_PROJECTION;
}
private static String[] resolveDocumentProjection(String[] projection) {
return projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION;
}
@Override
protected String getDocIdForFile(File file) {
return "raw:" + file.getAbsolutePath();
}
@Override
protected File getFileForDocId(String documentId, boolean visible)
throws FileNotFoundException {
if (DOC_ID_ROOT.equals(documentId)) {
return mRoot;
} else if (documentId.startsWith("raw:")) {
final String name = documentId.substring(4);
final File file = new File(name);
if (!file.exists()) {
throw new FileNotFoundException("File not found: " + name);
}
return file;
} else {
throw new FileNotFoundException("Invalid document ID: " + documentId);
}
}
}
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/FileSystemProvider.java
================================================
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.distractionware.vvvvvv;
import static android.provider.DocumentsContract.EXTRA_ORIENTATION;
import static android.provider.DocumentsContract.QUERY_ARG_DISPLAY_NAME;
import static android.provider.DocumentsContract.QUERY_ARG_EXCLUDE_MEDIA;
import static android.provider.DocumentsContract.QUERY_ARG_FILE_SIZE_OVER;
import static android.provider.DocumentsContract.QUERY_ARG_LAST_MODIFIED_AFTER;
import static android.provider.DocumentsContract.QUERY_ARG_MIME_TYPES;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MatrixCursor.RowBuilder;
import android.graphics.Point;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.FileObserver;
import android.os.Handler;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
import android.provider.DocumentsProvider;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.webkit.MimeTypeMap;
import androidx.core.content.MimeTypeFilter;
import androidx.exifinterface.media.ExifInterface;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
/**
* A helper class for {@link android.provider.DocumentsProvider} to perform file operations on local
* files.
*/
public abstract class FileSystemProvider extends DocumentsProvider {
private static final String TAG = "FileSystemProvider";
private static final boolean LOG_INOTIFY = false;
protected static final String SUPPORTED_QUERY_ARGS = joinNewline(
QUERY_ARG_DISPLAY_NAME,
QUERY_ARG_FILE_SIZE_OVER,
QUERY_ARG_LAST_MODIFIED_AFTER,
QUERY_ARG_MIME_TYPES);
private static String joinNewline(String... args) {
return TextUtils.join("\n", args);
}
private String[] mDefaultProjection;
private final ArrayMap<File, DirectoryObserver> mObservers = new ArrayMap<>();
private Handler mHandler;
protected abstract File getFileForDocId(String docId, boolean visible)
throws FileNotFoundException;
protected abstract String getDocIdForFile(File file) throws FileNotFoundException;
protected abstract Uri buildNotificationUri(String docId);
/**
* Callback indicating that the given document has been modified. This gives the provider a hook
* to invalidate cached data, such as {@code sdcardfs}.
*/
protected void onDocIdChanged(String docId) {
// Default is no-op
}
/**
* Callback indicating that the given document has been deleted or moved. This gives the
* provider a hook to revoke the uri permissions.
*/
protected void onDocIdDeleted(String docId) {
// Default is no-op
}
@Override
public boolean onCreate() {
throw new UnsupportedOperationException(
"Subclass should override this and call onCreate(defaultDocumentProjection)");
}
protected void onCreate(String[] defaultProjection) {
mHandler = new Handler();
mDefaultProjection = defaultProjection;
}
private static boolean contains(String dirPath, String filePath) {
if (dirPath.equals(filePath)) {
return true;
}
if (!dirPath.endsWith("/")) {
dirPath += "/";
}
return filePath.startsWith(dirPath);
}
private static boolean contains(File dir, File file) {
if (dir == null || file == null) return false;
return contains(dir.getAbsolutePath(), file.getAbsolutePath());
}
@Override
public boolean isChildDocument(String parentDocId, String docId) {
try {
final File parent = getFileForDocId(parentDocId).getCanonicalFile();
final File doc = getFileForDocId(docId).getCanonicalFile();
return contains(parent, doc);
} catch (IOException e) {
throw new IllegalArgumentException(
"Failed to determine if " + docId + " is child of " + parentDocId + ": " + e);
}
}
protected final List<String> findDocumentPath(File parent, File doc)
throws FileNotFoundException {
if (!doc.exists()) {
throw new FileNotFoundException(doc + " is not found.");
}
if (!contains(parent, doc)) {
throw new FileNotFoundException(doc + " is not found under " + parent);
}
LinkedList<String> path = new LinkedList<>();
while (doc != null && contains(parent, doc)) {
path.addFirst(getDocIdForFile(doc));
doc = doc.getParentFile();
}
return path;
}
private static boolean isValidFatFilenameChar(char c) {
if ((0x00 <= c && c <= 0x1f)) {
return false;
}
switch (c) {
case '"':
case '*':
case '/':
case ':':
case '<':
case '>':
case '?':
case '\\':
case '|':
case 0x7F:
return false;
default:
return true;
}
}
private static String buildValidFatFilename(String name) {
if (TextUtils.isEmpty(name) || ".".equals(name) || "..".equals(name)) {
return "(invalid)";
}
final StringBuilder res = new StringBuilder(name.length());
for (int i = 0; i < name.length(); i++) {
final char c = name.charAt(i);
if (isValidFatFilenameChar(c)) {
res.append(c);
} else {
res.append('_');
}
}
// Even though vfat allows 255 UCS-2 chars, we might eventually write to
// ext4 through a FUSE layer, so use that limit.
trimFilename(res, 255);
return res.toString();
}
private static String trimFilename(String str, int maxBytes) {
final StringBuilder res = new StringBuilder(str);
trimFilename(res, maxBytes);
return res.toString();
}
private static void trimFilename(StringBuilder res, int maxBytes) {
byte[] raw = res.toString().getBytes(StandardCharsets.UTF_8);
if (raw.length > maxBytes) {
maxBytes -= 3;
while (raw.length > maxBytes) {
res.deleteCharAt(res.length() / 2);
raw = res.toString().getBytes(StandardCharsets.UTF_8);
}
res.insert(res.length() / 2, "...");
}
}
private static File buildFile(File parent, String name, String ext) {
if (TextUtils.isEmpty(ext)) {
return new File(parent, name);
} else {
return new File(parent, name + "." + ext);
}
}
private static File buildUniqueFileWithExtension(File parent, String name, String ext)
throws FileNotFoundException {
File file = buildFile(parent, name, ext);
// If conflicting file, try adding counter suffix
int n = 0;
while (file.exists()) {
if (n++ >= 32) {
throw new FileNotFoundException("Failed to create unique file");
}
file = buildFile(parent, name + " (" + n + ")", ext);
}
return file;
}
private static String[] splitFileName(String mimeType, String displayName) {
String name;
String ext;
if (Document.MIME_TYPE_DIR.equals(mimeType)) {
name = displayName;
ext = null;
} else {
String mimeTypeFromExt;
// Extract requested extension from display name
final int lastDot = displayName.lastIndexOf('.');
if (lastDot >= 0) {
name = displayName.substring(0, lastDot);
ext = displayName.substring(lastDot + 1);
mimeTypeFromExt = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
ext.toLowerCase());
} else {
name = displayName;
ext = null;
mimeTypeFromExt = null;
}
if (mimeTypeFromExt == null) {
mimeTypeFromExt = "application/octet-stream";
}
final String extFromMimeType;
if ("application/octet-stream".equals(mimeType)) {
extFromMimeType = null;
} else {
extFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);
}
if (Objects.equals(mimeType, mimeTypeFromExt) || Objects.equals(ext, extFromMimeType)) {
// Extension maps back to requested MIME type; allow it
} else {
// No match; insist that create file matches requested MIME
name = displayName;
ext = extFromMimeType;
}
}
if (ext == null) {
ext = "";
}
return new String[]{name, ext};
}
private static File buildUniqueFile(File parent, String mimeType, String displayName)
throws FileNotFoundException {
final String[] parts = splitFileName(mimeType, displayName);
return buildUniqueFileWithExtension(parent, parts[0], parts[1]);
}
@Override
public String createDocument(String docId, String mimeType, String displayName)
throws FileNotFoundException {
displayName = buildValidFatFilename(displayName);
final File parent = getFileForDocId(docId);
if (!parent.isDirectory()) {
throw new IllegalArgumentException("Parent document isn't a directory");
}
final File file = buildUniqueFile(parent, mimeType, displayName);
final String childId;
if (Document.MIME_TYPE_DIR.equals(mimeType)) {
if (!file.mkdir()) {
throw new IllegalStateException("Failed to mkdir " + file);
}
childId = getDocIdForFile(file);
onDocIdChanged(childId);
} else {
try {
if (!file.createNewFile()) {
throw new IllegalStateException("Failed to touch " + file);
}
childId = getDocIdForFile(file);
onDocIdChanged(childId);
} catch (IOException e) {
throw new IllegalStateException("Failed to touch " + file + ": " + e);
}
}
updateMediaStore(getContext(), file);
return childId;
}
private static File buildUniqueFile(File parent, String displayName)
throws FileNotFoundException {
final String name;
final String ext;
// Extract requested extension from display name
final int lastDot = displayName.lastIndexOf('.');
if (lastDot >= 0) {
name = displayName.substring(0, lastDot);
ext = displayName.substring(lastDot + 1);
} else {
name = displayName;
ext = null;
}
return buildUniqueFileWithExtension(parent, name, ext);
}
@Override
public String renameDocument(String docId, String displayName) throws FileNotFoundException {
// Since this provider treats renames as generating a completely new
// docId, we're okay with letting the MIME type change.
displayName = buildValidFatFilename(displayName);
final File before = getFileForDocId(docId);
final File beforeVisibleFile = getFileForDocId(docId, true);
final File after = buildUniqueFile(before.getParentFile(), displayName);
if (!before.renameTo(after)) {
throw new IllegalStateException("Failed to rename to " + after);
}
final String afterDocId = getDocIdForFile(after);
onDocIdChanged(docId);
onDocIdDeleted(docId);
onDocIdChanged(afterDocId);
final File afterVisibleFile = getFileForDocId(afterDocId, true);
updateMediaStore(getContext(), beforeVisibleFile);
updateMediaStore(getContext(), afterVisibleFile);
if (!TextUtils.equals(docId, afterDocId)) {
return afterDocId;
} else {
return null;
}
}
@Override
public String moveDocument(String sourceDocumentId, String sourceParentDocumentId,
String targetParentDocumentId)
throws FileNotFoundException {
final File before = getFileForDocId(sourceDocumentId);
final File after = new File(getFileForDocId(targetParentDocumentId), before.getName());
final File visibleFileBefore = getFileForDocId(sourceDocumentId, true);
if (after.exists()) {
throw new IllegalStateException("Already exists " + after);
}
if (!before.renameTo(after)) {
throw new IllegalStateException("Failed to move to " + after);
}
final String docId = getDocIdForFile(after);
onDocIdChanged(sourceDocumentId);
onDocIdDeleted(sourceDocumentId);
onDocIdChanged(docId);
// update the database
updateMediaStore(getContext(), visibleFileBefore);
updateMediaStore(getContext(), getFileForDocId(docId, true));
return docId;
}
private static void updateMediaStore(@NotNull Context context, File file) {
if (file != null) {
final ContentResolver resolver = context.getContentResolver();
final String noMedia = ".nomedia";
// For file, check whether the file name is .nomedia or not.
// If yes, scan the parent directory to update all files in the directory.
if (!file.isDirectory() && file.getName().toLowerCase(Locale.ROOT).endsWith(noMedia)) {
MediaScannerConnection.scanFile(context, new String[]{file.getParent()}, null,
null);
} else {
MediaScannerConnection.scanFile(context, new String[]{file.getParent()}, null,
null);
}
}
}
private static boolean deleteContents(File dir) {
File[] files = dir.listFiles();
boolean success = true;
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
success &= deleteContents(file);
}
if (!file.delete()) {
Log.w(TAG, "Failed to delete " + file);
success = false;
}
}
}
return success;
}
@Override
public void deleteDocument(String docId) throws FileNotFoundException {
final File file = getFileForDocId(docId);
final File visibleFile = getFileForDocId(docId, true);
final boolean isDirectory = file.isDirectory();
if (isDirectory) {
deleteContents(file);
}
// We could be deleting pending media which doesn't have any content yet, so only throw
// if the file exists and we fail to delete it.
if (file.exists() && !file.delete()) {
throw new IllegalStateException("Failed to delete " + file);
}
onDocIdChanged(docId);
onDocIdDeleted(docId);
updateMediaStore(getContext(), visibleFile);
}
@Override
public Cursor queryDocument(String documentId, String[] projection)
throws FileNotFoundException {
final MatrixCursor result = new MatrixCursor(resolveProjection(projection));
includeFile(result, documentId, null);
return result;
}
/**
* This method is similar to
* {@link DocumentsProvider#queryChildDocuments(String, String[], String)}. This method returns
* all children documents including hidden directories/files.
*
* <p>
* In a scoped storage world, access to "Android/data" style directories are hidden for privacy
* reasons. This method may show privacy sensitive data, so its usage should only be in
* restricted modes.
*
* @param parentDocumentId the directory to return children for.
* @param projection list of {@link Document} columns to put into the cursor. If
* {@code null} all supported columns should be included.
* @param sortOrder how to order the rows, formatted as an SQL {@code ORDER BY} clause
* (excluding the ORDER BY itself). Passing {@code null} will use the
* default sort order, which may be unordered. This ordering is a hint
* that can be used to prioritize how data is fetched from the network,
* but UI may always enforce a specific ordering
* @throws FileNotFoundException when parent document doesn't exist or query fails
*/
protected Cursor queryChildDocumentsShowAll(
String parentDocumentId, String[] projection, String sortOrder)
throws FileNotFoundException {
return queryChildDocuments(parentDocumentId, projection, sortOrder, File -> true);
}
@Override
public Cursor queryChildDocuments(
String parentDocumentId, String[] projection, String sortOrder)
throws FileNotFoundException {
// Access to some directories is hidden for privacy reasons.
return queryChildDocuments(parentDocumentId, projection, sortOrder, this::shouldShow);
}
private static @NotNull File[] listFilesOrEmpty(@Nullable File dir) {
if (dir == null) {
return new File[]{};
} else {
File[] files = dir.listFiles();
if (files == null) {
return new File[]{};
} else {
return files;
}
}
}
private Cursor queryChildDocuments(
String parentDocumentId, String[] projection, String sortOrder,
@NotNull Predicate<File> filter) throws FileNotFoundException {
final File parent = getFileForDocId(parentDocumentId);
final MatrixCursor result = new DirectoryCursor(
resolveProjection(projection), parentDocumentId, parent);
if (!filter.test(parent)) {
Log.w(TAG, "No permission to access parentDocumentId: " + parentDocumentId);
return result;
}
if (parent.isDirectory()) {
for (File file : listFilesOrEmpty(parent)) {
if (filter.test(file)) {
includeFile(result, null, file);
}
}
} else {
Log.w(TAG, "parentDocumentId '" + parentDocumentId + "' is not Directory");
}
return result;
}
private static String[] getHandledQueryArguments(Bundle queryArgs) {
if (queryArgs == null) {
return new String[0];
}
final ArrayList<String> args = new ArrayList<>();
if (queryArgs.keySet().contains(QUERY_ARG_EXCLUDE_MEDIA)) {
args.add(QUERY_ARG_EXCLUDE_MEDIA);
}
if (queryArgs.keySet().contains(QUERY_ARG_DISPLAY_NAME)) {
args.add(QUERY_ARG_DISPLAY_NAME);
}
if (queryArgs.keySet().contains(QUERY_ARG_FILE_SIZE_OVER)) {
args.add(QUERY_ARG_FILE_SIZE_OVER);
}
if (queryArgs.keySet().contains(QUERY_ARG_LAST_MODIFIED_AFTER)) {
args.add(QUERY_ARG_LAST_MODIFIED_AFTER);
}
if (queryArgs.keySet().contains(QUERY_ARG_MIME_TYPES)) {
args.add(QUERY_ARG_MIME_TYPES);
}
return args.toArray(new String[0]);
}
/**
* Searches documents under the given folder.
* <p>
* To avoid runtime explosion only returns the at most 23 items.
*
* @param folder the root folder where recursive search begins
* @param projection projection of the returned cursor
* @param exclusion absolute file paths to exclude from result
* @param queryArgs the query arguments for search
* @return cursor containing search result. Include {@link ContentResolver#EXTRA_HONORED_ARGS}
* in {@link Cursor} extras {@link Bundle} when any QUERY_ARG_* value was honored during the
* preparation of the results.
* @throws FileNotFoundException when root folder doesn't exist or search fails
* @see ContentResolver#EXTRA_HONORED_ARGS
*/
protected final Cursor querySearchDocuments(
File folder, String[] projection, Set<String> exclusion, Bundle queryArgs)
throws FileNotFoundException {
final MatrixCursor result = new MatrixCursor(resolveProjection(projection));
final LinkedList<File> pending = new LinkedList<>();
pending.add(folder);
while (!pending.isEmpty() && result.getCount() < 24) {
final File file = pending.removeFirst();
if (shouldHide(file)) continue;
if (file.isDirectory()) {
for (File child : listFilesOrEmpty(file)) {
pending.add(child);
}
}
if (!exclusion.contains(file.getAbsolutePath()) && matchSearchQueryArguments(file,
queryArgs)) {
includeFile(result, null, file);
}
}
final String[] handledQueryArgs = getHandledQueryArguments(queryArgs);
if (handledQueryArgs.length > 0) {
final Bundle extras = new Bundle();
extras.putStringArray(ContentResolver.EXTRA_HONORED_ARGS, handledQueryArgs);
result.setExtras(extras);
}
return result;
}
@Override
public String getDocumentType(String documentId) throws FileNotFoundException {
return getDocumentType(documentId, getFileForDocId(documentId));
}
private String getDocumentType(final String documentId, final File file)
throws FileNotFoundException {
if (file.isDirectory()) {
return Document.MIME_TYPE_DIR;
} else {
final int lastDot = documentId.lastIndexOf('.');
if (lastDot >= 0) {
final String extension = documentId.substring(lastDot + 1).toLowerCase();
final String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
if (mime != null) {
return mime;
}
}
return "application/octet-stream";
}
}
@Override
public ParcelFileDescriptor openDocument(
String documentId, String mode, CancellationSignal signal)
throws FileNotFoundException {
final File file = getFileForDocId(documentId);
final File visibleFile = getFileForDocId(documentId, true);
final int pfdMode = ParcelFileDescriptor.parseMode(mode);
if (visibleFile == null || pfdMode == ParcelFileDescriptor.MODE_READ_ONLY) {
return ParcelFileDescriptor.open(file, pfdMode);
} else {
try {
// When finished writing, kick off media scanner
return ParcelFileDescriptor.open(
file, pfdMode, mHandler, (IOException e) -> {
onDocIdChanged(documentId);
scanFile(visibleFile);
});
} catch (IOException e) {
throw new FileNotFoundException("Failed to open for writing: " + e);
}
}
}
public static boolean matchSearchQueryArguments(Bundle queryArgs, String displayName,
String mimeType, long lastModified, long size) {
if (queryArgs == null) {
return true;
}
final String argDisplayName = queryArgs.getString(QUERY_ARG_DISPLAY_NAME, "");
if (!argDisplayName.isEmpty()) {
// TODO (118795812) : Enhance the search string handled in DocumentsProvider
if (!displayName.toLowerCase().contains(argDisplayName.toLowerCase())) {
return false;
}
}
final long argFileSize = queryArgs.getLong(QUERY_ARG_FILE_SIZE_OVER, -1 /* defaultValue */);
if (argFileSize != -1 && size < argFileSize) {
return false;
}
final long argLastModified = queryArgs.getLong(QUERY_ARG_LAST_MODIFIED_AFTER,
-1 /* defaultValue */);
if (argLastModified != -1 && lastModified < argLastModified) {
return false;
}
final String[] argMimeTypes = queryArgs.getStringArray(QUERY_ARG_MIME_TYPES);
if (argMimeTypes != null && argMimeTypes.length > 0) {
mimeType = Intent.normalizeMimeType(mimeType);
for (String type : argMimeTypes) {
if (MimeTypeFilter.matches(mimeType, Intent.normalizeMimeType(type))) {
return true;
}
}
return false;
}
return true;
}
/**
* Test if the file matches the query arguments.
*
* @param file the file to test
* @param queryArgs the query arguments
*/
private boolean matchSearchQueryArguments(File file, Bundle queryArgs) {
if (file == null) {
return false;
}
final String fileMimeType;
final String fileName = file.getName();
if (file.isDirectory()) {
fileMimeType = DocumentsContract.Document.MIME_TYPE_DIR;
} else {
int dotPos = fileName.lastIndexOf('.');
if (dotPos < 0) {
return false;
}
final String extension = fileName.substring(dotPos + 1);
fileMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return matchSearchQueryArguments(queryArgs, fileName, fileMimeType,
file.lastModified(), file.length());
}
private void scanFile(File visibleFile) {
final Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(visibleFile));
getContext().sendBroadcast(intent);
}
private static AssetFileDescriptor openImageThumbnail(File file) throws FileNotFoundException {
final ParcelFileDescriptor pfd = ParcelFileDescriptor.open(
file, ParcelFileDescriptor.MODE_READ_ONLY);
try {
final ExifInterface exif = new ExifInterface(file.getAbsolutePath());
final long[] thumb = exif.getThumbnailRange();
if (thumb != null) {
// If we use thumb to decode, we need to handle the rotation by ourselves.
Bundle extras = null;
switch (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1)) {
case ExifInterface.ORIENTATION_ROTATE_90:
extras = new Bundle(1);
extras.putInt(EXTRA_ORIENTATION, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
extras = new Bundle(1);
extras.putInt(EXTRA_ORIENTATION, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
extras = new Bundle(1);
extras.putInt(EXTRA_ORIENTATION, 270);
break;
}
return new AssetFileDescriptor(pfd, thumb[0], thumb[1], extras);
}
} catch (IOException ignored) {
}
// Do full file decoding, we don't need to handle the orientation
return new AssetFileDescriptor(pfd, 0, AssetFileDescriptor.UNKNOWN_LENGTH, null);
}
@Override
public AssetFileDescriptor openDocumentThumbnail(
String documentId, Point sizeHint, CancellationSignal signal)
throws FileNotFoundException {
final File file = getFileForDocId(documentId);
return openImageThumbnail(file);
}
protected RowBuilder includeFile(final MatrixCursor result, String docId, File file)
throws FileNotFoundException {
final String[] columns = result.getColumnNames();
final RowBuilder row = result.newRow();
if (docId == null) {
docId = getDocIdForFile(file);
} else {
file = getFileForDocId(docId);
}
final String mimeType = getDocumentType(docId, file);
row.add(Document.COLUMN_DOCUMENT_ID, docId);
row.add(Document.COLUMN_MIME_TYPE, mimeType);
final int flagIndex = Arrays.asList(columns).indexOf(Document.COLUMN_FLAGS);
if (flagIndex != -1) {
int flags = 0;
if (file.canWrite()) {
if (mimeType.equals(Document.MIME_TYPE_DIR)) {
flags |= Document.FLAG_DIR_SUPPORTS_CREATE;
flags |= Document.FLAG_SUPPORTS_DELETE;
flags |= Document.FLAG_SUPPORTS_RENAME;
flags |= Document.FLAG_SUPPORTS_MOVE;
} else {
flags |= Document.FLAG_SUPPORTS_WRITE;
flags |= Document.FLAG_SUPPORTS_DELETE;
flags |= Document.FLAG_SUPPORTS_RENAME;
flags |= Document.FLAG_SUPPORTS_MOVE;
}
}
if (mimeType.startsWith("image/")) {
flags |= Document.FLAG_SUPPORTS_THUMBNAIL;
}
if (typeSupportsMetadata(mimeType)) {
flags |= Document.FLAG_SUPPORTS_METADATA;
}
row.add(Document.COLUMN_FLAGS, flags);
}
final int displayNameIndex = Arrays.asList(columns).indexOf(Document.COLUMN_DISPLAY_NAME);
if (displayNameIndex != -1) {
row.add(Document.COLUMN_DISPLAY_NAME, file.getName());
}
final int lastModifiedIndex = Arrays.asList(columns).indexOf(Document.COLUMN_LAST_MODIFIED);
if (lastModifiedIndex != -1) {
final long lastModified = file.lastModified();
// Only publish dates reasonably after epoch
if (lastModified > 31536000000L) {
row.add(Document.COLUMN_LAST_MODIFIED, lastModified);
}
}
final int sizeIndex = Arrays.asList(columns).indexOf(Document.COLUMN_SIZE);
if (sizeIndex != -1) {
row.add(Document.COLUMN_SIZE, file.length());
}
// Return the row builder just in case any subclass want to add more stuff to it.
return row;
}
protected boolean shouldHide(@NotNull File file) {
return false;
}
private boolean shouldShow(@NotNull File file) {
return !shouldHide(file);
}
protected boolean typeSupportsMetadata(String mimeType) {
return Document.MIME_TYPE_DIR.equals(mimeType);
}
protected final File getFileForDocId(String docId) throws FileNotFoundException {
return getFileForDocId(docId, false);
}
private String[] resolveProjection(String[] projection) {
return projection == null ? mDefaultProjection : projection;
}
private void startObserving(File file, Uri notifyUri, DirectoryCursor cursor) {
synchronized (mObservers) {
DirectoryObserver observer = mObservers.get(file);
if (observer == null) {
observer =
new DirectoryObserver(file, getContext().getContentResolver(), notifyUri);
observer.startWatching();
mObservers.put(file, observer);
}
observer.mCursors.add(cursor);
if (LOG_INOTIFY) Log.d(TAG, "after start: " + observer);
}
}
private void stopObserving(File file, DirectoryCursor cursor) {
synchronized (mObservers) {
DirectoryObserver observer = mObservers.get(file);
if (observer == null) return;
observer.mCursors.remove(cursor);
if (observer.mCursors.size() == 0) {
mObservers.remove(file);
observer.stopWatching();
}
if (LOG_INOTIFY) Log.d(TAG, "after stop: " + observer);
}
}
private static class DirectoryObserver extends FileObserver {
private static final int NOTIFY_EVENTS = ATTRIB | CLOSE_WRITE | MOVED_FROM | MOVED_TO
| CREATE | DELETE | DELETE_SELF | MOVE_SELF;
private final File mFile;
private final ContentResolver mResolver;
private final Uri mNotifyUri;
private final CopyOnWriteArrayList<DirectoryCursor> mCursors;
DirectoryObserver(File file, ContentResolver resolver, Uri notifyUri) {
super(file.getAbsolutePath(), NOTIFY_EVENTS);
mFile = file;
mResolver = resolver;
mNotifyUri = notifyUri;
mCursors = new CopyOnWriteArrayList<>();
}
@Override
public void onEvent(int event, String path) {
if ((event & NOTIFY_EVENTS) != 0) {
if (LOG_INOTIFY) Log.d(TAG, "onEvent() " + event + " at " + path);
for (DirectoryCursor cursor : mCursors) {
cursor.notifyChanged();
}
mResolver.notifyChange(mNotifyUri, null, false);
}
}
@Override
public String toString() {
String filePath = mFile.getAbsolutePath();
return "DirectoryObserver{file=" + filePath + ", ref=" + mCursors.size() + "}";
}
}
private class DirectoryCursor extends MatrixCursor {
private final File mFile;
public DirectoryCursor(String[] columnNames, String docId, File file) {
super(columnNames);
final Uri notifyUri = buildNotificationUri(docId);
boolean registerSelfObserver = false; // Our FileObserver sees all relevant changes.
setNotificationUris(getContext().getContentResolver(), Arrays.asList(notifyUri));
mFile = file;
startObserving(mFile, notifyUri, this);
}
public void notifyChanged() {
onChange(false);
}
@Override
public void close() {
super.close();
stopObserving(mFile, this);
}
}
}
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/VVVVVV.java
================================================
package com.distractionware.vvvvvv;
import org.libsdl.app.SDLActivity;
public class VVVVVV extends SDLActivity {
@Override
protected String[] getLibraries() {
return new String[] {
"SDL2",
"VVVVVV"
};
}
@Override
protected String[] getArguments() {
// always pass -debug, logcat has level filtering anyway
return new String[] {
"-debug"
};
}
}
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/values/ic_launcher_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#000000</color>
</resources>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/values/strings.xml
================================================
<resources>
<string name="app_name">VVVVVV</string>
</resources>
================================================
FILE: desktop_version/VVVVVV-android/app/src/main/res/values/styles.xml
================================================
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
================================================
FILE: desktop_version/VVVVVV-android/build.gradle
================================================
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenCentral()
google()
mavenLocal()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
================================================
FILE: desktop_version/VVVVVV-android/gradle/wrapper/gradle-wrapper.properties
================================================
#Thu Nov 11 18:20:34 PST 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-rc-2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
================================================
FILE: desktop_version/VVVVVV-android/gradle.properties
================================================
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m -XX:-UseContainerSupport
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=true
================================================
FILE: desktop_version/VVVVVV-android/gradlew
================================================
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|grep -E -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|grep -E -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
================================================
FILE: desktop_version/VVVVVV-android/gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: desktop_version/VVVVVV-android/settings.gradle
================================================
include ':app'
================================================
FILE: desktop_version/fixupMac.sh
================================================
#!/bin/bash
# flibit has this solely for convenience when cleaning up Mac binaries.
install_name_tool -change /usr/local/lib/libSDL2-2.0.0.dylib @rpath/libSDL2-2.0.0.dylib VVVVVV
strip -S VVVVVV
otool -L VVVVVV
================================================
FILE: desktop_version/fonts/README.txt
================================================
=== I N T R O D U C T I O N ===
This file will explain the font format.
If you need a font (like a TTF) converted into the format that the game can read, for now you might want to ask Dav, who has tools for it.
=== F O N T F O R M A T ===
Fonts consist of two files: a .png and a .fontmeta. The .png contains all the "images" for all glyphs, and the .fontmeta is an XML document containing all information about which characters are in the file and other metadata.
For example, a font for Japanese might be called font_ja.png and font_ja.fontmeta.
The fontmeta file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<display_name>日本語</display_name>
<width>12</width>
<height>12</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0x20" end="0x7F"/>
<range start="0xA0" end="0x17F"/>
<range start="0x18F" end="0x18F"/>
<range start="0x218" end="0x21B"/>
<range start="0x259" end="0x25A"/>
<!-- ... -->
</chars>
<special>
<range start="0x00" end="0x1F" advance="6"/>
<range start="0xEB00" end="0xEBFF" color="1"/>
</special>
<fallback>buttons_12x12</fallback>
</font_metadata>
* type: not specified for normal fonts. <type>buttons</type> is used in button glyph fonts.
* display_name: the name of the language the font is specifically meant for - in the language itself. Users will see this in the level editor when choosing a font to use. If this font is used equally by multiple translations, this could be set to a combination like "繁體中文/한국어". (If you are creating a custom player level: don't worry about this)
* width/height: the width and height of each glyph in the font. Every character will always be drawn as a rectangle of this size. VVVVVV is rated to support fonts up to 12 pixels high - anything higher may cause text overlapping or not fitting in place.
* white_teeth: indicates that all characters in the font are white, so the game itself doesn't have to remove all color from the image and make all pixels white like it would in old versions of the game. If this is not set to 1, this font cannot have colored (button) glyphs, and the game has to specifically process the font every time it is loaded, so 1 is highly recommended.
* chars: defines which characters are in the image. Starting at the top left of the image, each character is simply a rectangle of equal size (defined in <width> and <height>) from left to right, top to bottom. In the example given above, the image first has Unicode every character from U+0020 up to and including U+007F, then every character from U+00A0 to U+017F, and so on. To include a single character, simply use a range with equal start and end attributes equal.
* special: defines special attributes that will be applied to a range of characters. One or more of the following attributes can be used:
- color: set to 1 if these glyphs should be drawn with its original colors (for button glyphs, or even emoji...)
- advance: instead of <width>, the cursor (for drawing the next character) should be advanced this amount of pixels to the right. This controls the width of a character, but it does not affect how characters are arranged in the image, and the full glyph will still be drawn. While this means the font system has support for variable-width fonts, it's recommended to not use this option. There are some problems arising from using a variable-width font (especially in text boxes), so please consider copying the font's fullwidth forms (U+FF01-U+FF5E) to ASCII U+0021-U+007E instead. One may argue that a monospaced font also fits more with the game's style.
* fallback: specifies the button glyphs font to use. Make sure to choose one that fits fully within your [width]x[height] rectangle, so for an 8x12 font, choose buttons_8x8, not buttons_12x12.
================================================
FILE: desktop_version/fonts/buttons_10x10.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<type>buttons</type>
<width>10</width>
<height>10</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0xEB00" end="0xEB36"/>
</chars>
<special>
<range start="0xEB00" end="0xEB36" color="1"/>
</special>
</font_metadata>
================================================
FILE: desktop_version/fonts/buttons_12x12.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<type>buttons</type>
<width>12</width>
<height>12</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0xEB00" end="0xEB36"/>
</chars>
<special>
<range start="0xEB00" end="0xEB36" color="1"/>
</special>
</font_metadata>
================================================
FILE: desktop_version/fonts/buttons_8x8.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<type>buttons</type>
<width>8</width>
<height>8</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0xEB00" end="0xEB36"/>
</chars>
<special>
<range start="0xEB00" end="0xEB36" color="1"/>
</special>
</font_metadata>
================================================
FILE: desktop_version/fonts/font.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<display_name>english/…</display_name>
<width>8</width>
<height>8</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0x00" end="0x7F"/>
<range start="0xA0" end="0x17F"/>
<range start="0x18F" end="0x18F"/>
<range start="0x218" end="0x21B"/>
<range start="0x259" end="0x25A"/>
<range start="0x37E" end="0x37E"/>
<range start="0x386" end="0x386"/>
<range start="0x388" end="0x38A"/>
<range start="0x38C" end="0x38C"/>
<range start="0x38E" end="0x3A1"/>
<range start="0x3A3" end="0x3CE"/>
<range start="0x400" end="0x45F"/>
<range start="0x490" end="0x491"/>
<range start="0x49A" end="0x49B"/>
<range start="0x4A2" end="0x4A3"/>
<range start="0x5D0" end="0x5EA"/>
<range start="0x5F0" end="0x5F4"/>
<range start="0x16A0" end="0x16F0"/>
<range start="0x1E9E" end="0x1E9E"/>
<range start="0x2014" end="0x2014"/>
<range start="0x2018" end="0x2019"/>
<range start="0x201C" end="0x201E"/>
<range start="0x2026" end="0x2026"/>
<range start="0x203C" end="0x203D"/>
<range start="0x2070" end="0x2070"/>
<range start="0x2074" end="0x2079"/>
<range start="0x20AC" end="0x20AC"/>
<range start="0x2122" end="0x2122"/>
<range start="0x2190" end="0x2199"/>
<range start="0x21B0" end="0x21B3"/>
<range start="0x21B6" end="0x21B7"/>
<range start="0x21BA" end="0x21C3"/>
<range start="0x21C5" end="0x21C6"/>
<range start="0x21CB" end="0x21CC"/>
<range start="0x2318" end="0x2318"/>
<range start="0x2325" end="0x2325"/>
<range start="0x237C" end="0x237C"/>
<range start="0x23B2" end="0x23B3"/>
<range start="0x23CE" end="0x23CE"/>
<range start="0x23E9" end="0x23EF"/>
<range start="0x23F4" end="0x23FA"/>
<range start="0x2500" end="0x25A2"/>
<range start="0x25B2" end="0x25B3"/>
<range start="0x25B6" end="0x25B7"/>
<range start="0x25BC" end="0x25BD"/>
<range start="0x25C0" end="0x25C1"/>
<range start="0x2600" end="0x2606"/>
<range start="0x2609" end="0x2609"/>
<range start="0x260E" end="0x260F"/>
<range start="0x261C" end="0x2620"/>
<range start="0x2622" end="0x2623"/>
<range start="0x262E" end="0x262E"/>
<range start="0x263A" end="0x2640"/>
<range start="0x2642" end="0x2653"/>
<range start="0x2660" end="0x2660"/>
<range start="0x2663" end="0x2663"/>
<range start="0x2665" end="0x2666"/>
<range start="0x2669" end="0x266B"/>
<range start="0x2690" end="0x2691"/>
<range start="0x2693" end="0x2693"/>
<range start="0x269B" end="0x269B"/>
<range start="0x26A0" end="0x26A1"/>
<range start="0x26A5" end="0x26A6"/>
<range start="0x26B3" end="0x26B6"/>
<range start="0x26B8" end="0x26B8"/>
<range start="0x26C4" end="0x26C4"/>
<range start="0x26CF" end="0x26CF"/>
<range start="0x26D3" end="0x26D4"/>
<range start="0x26E2" end="0x26E2"/>
<range start="0x26EC" end="0x26EC"/>
<range start="0x26F6" end="0x26F6"/>
<range start="0x26FA" end="0x26FA"/>
<range start="0x2709" end="0x2709"/>
<range start="0x270F" end="0x270F"/>
<range start="0x2713" end="0x2713"/>
<range start="0x274C" end="0x274C"/>
<range start="0x2753" end="0x2753"/>
<range start="0x2962" end="0x296F"/>
<range start="0x2BD3" end="0x2BD3"/>
<range start="0x2E18" end="0x2E18"/>
<range start="0xE0A0" end="0xE0A3"/>
<range start="0xFFFD" end="0xFFFD"/>
<range start="0x1F311" end="0x1F318"/>
<range start="0x1F451" end="0x1F451"/>
<range start="0x1F4BF" end="0x1F4BF"/>
<range start="0x1F700" end="0x1F705"/>
<range start="0x1F707" end="0x1F707"/>
<range start="0x1F709" end="0x1F709"/>
<range start="0x1F70B" end="0x1F70B"/>
<range start="0x1F70D" end="0x1F70D"/>
<range start="0x1F713" end="0x1F716"/>
<range start="0x1F71A" end="0x1F71A"/>
<range start="0x1F728" end="0x1F728"/>
<range start="0x1F741" end="0x1F741"/>
<range start="0x1FA99" end="0x1FA99"/>
</chars>
<special>
<range start="0x00" end="0x1F" advance="6"/>
</special>
<fallback>buttons_8x8</fallback>
</font_metadata>
================================================
FILE: desktop_version/fonts/font_ar.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<display_name>العربية/فارسی</display_name>
<width>8</width>
<height>10</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0x00" end="0x7F"/>
<range start="0xA0" end="0xFF"/>
<range start="0xFE80" end="0xFEFF"/>
<range start="0x0600" end="0x06FF"/>
<range start="0xFB50" end="0xFBFF"/>
<range start="0x2190" end="0x2193"/>
</chars>
<special>
<range start="0x064B" end="0x065F" advance="0"/>
<range start="0xFBB2" end="0xFBC1" advance="0"/>
</special>
<fallback>buttons_8x8</fallback>
</font_metadata>
================================================
FILE: desktop_version/fonts/font_ja.fontmeta
================================================
<?xml version="1.0" encoding="UTF-8"?>
<font_metadata>
<display_name>日本語</display_name>
<width>8</width>
<height>12</height>
<white_teeth>1</white_teeth>
<chars>
<range start="0x20" end="0x7E"/>
<range start="0xA2" end="0xA3"/>
<range start="0xA5" end="0xA8"/>
<range start="0xAC" end="0xAD"/>
<range start="0xAF" end="0xB1"/>
<range start="0xB4" end="0xB4"/>
<range start="0xB6" end="0xB6"/>
<range start="0xD7" end="0xD7"/>
<range start="0xF7" end="0xF7"/>
<range start="0x391" end="0x3A1"/>
<range start="0x3A3" end="0x3A9"/>
<range start="0x3B1" end="0x3C1"/>
<range start="0x3C3" end="0x3C9"/>
<range start="0x401" end="0x401"/>
<range start="0x410" end="0x44F"/>
<range start="0x451" end="0x451"/>
<range start="0x2010" end="0x2016"/>
<range start="0x2018" end="0x2019"/>
<range start="0x201C" end="0x201D"/>
<range start="0x2020" end="0x2021"/>
<range start="0x2025" end="0x2026"/>
<range start="0x2030" end="0x2030"/>
<range start="0x2032" end="0x2033"/>
<range start="0x203B" end="0x203B"/>
<range start="0x203E" end="0x203E"/>
<range start="0x2103" end="0x2103"/>
<range start="0x2116" end="0x2116"/>
<range start="0x2121" end="0x2121"/>
<range start="0x212B" end="0x212B"/>
<range start="0x2160" end="0x2169"/>
<range start="0x2190" end="0x2193"/>
<range start="0x21D2" end="0x21D2"/>
<range start="0x21D4" end="0x21D4"/>
<range start="0x2200" end="0x2200"/>
<range start="0x2202" end="0x2203"/>
<range start="0x2207" end="0x2208"/>
<range start="0x220B" end="0x220B"/>
<range start="0x2211" end="0x2212"/>
<range start="0x221A" end="0x221A"/>
<range start="0x221D" end="0x2220"/>
<range start="0x2225" end="0x2225"/>
<range start="0x2227" end="0x222C"/>
<range start="0x222E" end="0x222E"/>
<range start="0x2234" end="0x2235"/>
<range start="0x223D" end="0x223D"/>
<range start="0x2252" end="0x2252"/>
<range start="0x2260" end="0x2261"/>
<range start="0x2266" end="0x2267"/>
<range start="0x226A" end="0x226B"/>
<range start="0x2282" end="0x2283"/>
<range start="0x2286" end="0x2287"/>
<range start="0x22A5" end="0x22A5"/>
<range start="0x22BF" end="0x22BF"/>
<range start="0x2312" end="0x2312"/>
<range start="0x2423" end="0x2423"/>
<range start="0x2460" end="0x2473"/>
<range start="0x2500" end="0x2503"/>
<range start="0x250C" end="0x250C"/>
<range start="0x250F" end="0x2510"/>
<range start="0x2513" end="0x2514"/>
<range start="0x2517" end="0x2518"/>
<range start="0x251B" end="0x251D"/>
<range start="0x2520" end="0x2520"/>
<range start="0x2523" end="0x2525"/>
<range start="0x2528" end="0x2528"/>
<range start="0x252B" end="0x252C"/>
<range start="0x252F" end="0x2530"/>
<range start="0x2533" end="0x2534"/>
<range start="0x2537" end="0x2538"/>
<range start="0x253B" end="0x253C"/>
<range start="0x253F" end="0x253F"/>
<range start="0x2542" end="0x2542"/>
<range start="0x254B" end="0x254B"/>
<range start="0x2550" end="0x2550"/>
<range start="0x255E" end="0x255E"/>
<range start="0x2561" end="0x2561"/>
<range start="0x256A" end="0x256A"/>
<range start="0x256D" end="0x2573"/>
<range start="0x2581" end="0x258F"/>
<range start="0x2594" end="0x2595"/>
<range start="0x25A0" end="0x25A1"/>
<range start="0x25B2" end="0x25B3"/>
<range start="0x25BC" end="0x25BD"/>
<range start="0x25C6" end="0x25C7"/>
<range start="0x25CB" end="0x25CB"/>
<range start="0x25CE" end="0x25CF"/>
<range start="0x25E2" end="0x25E5"/>
<range start="0x25EF" end="0x25EF"/>
<range start="0x2605" end="0x2606"/>
<range start="0x2640" end="0x2640"/>
<range start="0x2642" end="0x2642"/>
<range start="0x2660" end="0x2667"/>
<range start="0x266A" end="0x266A"/>
<range start="0x266D" end="0x266D"/>
<range start="0x266F" end="0x266F"/>
<range start="0x3000" end="0x3003"/>
<range start="0x3005" end="0x3015"/>
<range start="0x301C" end="0x301D"/>
<range start="0x301F" end="0x301F"/>
<range start="0x3041" end="0x3093"/>
<range start="0x309B" end="0x309E"/>
<range start="0x30A1" end="0x30F6"/>
<range start="0x30FB" end="0x30FE"/>
<range start="0x3231" end="0x3232"/>
<range start="0x3239" end="0x3239"/>
<range start="0x32A4" end="0x32A8"/>
<range start="0x3303" end="0x3303"/>
<range start="0x330D" end="0x330D"/>
<range start="0x3314" end="0x3314"/>
<range start="0x3318" end="0x3318"/>
<range start="0x3322" end="0x3323"/>
<range start="0x3326" end="0x3327"/>
<range start="0x332B" end="0x332B"/>
<range start="0x3336" end="0x3336"/>
<range start="0x333B" end="0x333B"/>
<range start="0x3349" end="0x334A"/>
<range start="0x334D" end="0x334D"/>
<range start="0x3351" end="0x3351"/>
<range start="0x3357" end="0x3357"/>
<range start="0x337B" end="0x337E"/>
<range start="0x338E" end="0x338F"/>
<range start="0x339C" end="0x339E"/>
<range start="0x33A1" end="0x33A1"/>
<range start="0x33C4" end="0x33C4"/>
<range start="0x33CD" end="0x33CD"/>
<range start="0x4E00" end="0x4E01"/>
<range start="0x4E03" end="0x4E03"/>
<range start="0x4E07" end="0x4E0B"/>
<range start="0x4E0D" end="0x4E0E"/>
<range start="0x4E10" end="0x4E11"/>
<range start="0x4E14" end="0x4E19"/>
<range start="0x4E1E" end="0x4E1E"/>
<range start="0x4E21" end="0x4E21"/>
<range start="0x4E26" end="0x4E26"/>
<range start="0x4E2A" end="0x4E2A"/>
<range start="0x4E2D" end="0x4E2D"/>
<range start="0x4E31" end="0x4E32"/>
<range start="0x4E36" end="0x4E36"/>
<range start="0x4E38" end="0x4E39"/>
<range start="0x4E3B" end="0x4E3C"/>
<range start="0x4E3F" end="0x4E3F"/>
<range start="0x4E42" end="0x4E43"/>
<range start="0x4E45" end="0x4E45"/>
<range start="0x4E4B" end="0x4E4B"/>
<range start="0x4E4D" end="0x4E4F"/>
<range start="0x4E55" end="0x4E59"/>
<range start="0x4E5D" end="0x4E5F"/>
<range start="0x4E62" end="0x4E62"/>
<range start="0x4E71" end="0x4E71"/>
<range start="0x4E73" end="0x4E73"/>
<range start="0x4E7E" end="0x4E7E"/>
<range start="0x4E80" end="0x4E80"/>
<range start="0x4E82" end="0x4E82"/>
<range start="0x4E85" end="0x4E86"/>
<range start="0x4E88" end="0x4E8C"/>
<range start="0x4E8E" end="0x4E8E"/>
<range start="0x4E91" end="0x4E92"/>
<range start="0x4E94" end="0x4E95"/>
<range start="0x4E98" end="0x4E99"/>
<range start="0x4E9B" end="0x4E9C"/>
<range start="0x4E9E" end="0x4EA2"/>
<range start="0x4EA4" end="0x4EA6"/>
<range start="0x4EA8" end="0x4EA8"/>
<range start="0x4EAB" end="0x4EAE"/>
<range start="0x4EB0" end="0x4EB0"/>
<range start="0x4EB3" end="0x4EB3"/>
<range start="0x4EB6" end="0x4EB6"/>
<range start="0x4EBA" end="0x4EBA"/>
<range start="0x4EC0" end="0x4EC2"/>
<range start="0x4EC4" end="0x4EC4"/>
<range start="0x4EC6" end="0x4EC7"/>
<range start="0x4ECA" end="0x4ECB"/>
<range start="0x4ECD" end="0x4ECF"/>
<range start="0x4ED4" end="0x4ED9"/>
<range start="0x4EDD" end="0x4EDF"/>
<range start="0x4EE3" end="0x4EE5"/>
<range start="0x4EED" end="0x4EEE"/>
<range start="0x4EF0" end="0x4EF0"/>
<range start="0x4EF2" end="0x4EF2"/>
<range start="0x4EF6" end="0x4EF7"/>
<range start="0x4EFB" end="0x4EFB"/>
<range start="0x4F01" end="0x4F01"/>
<range start="0x4F09" end="0x4F0A"/>
<range start="0x4F0D" end="0x4F11"/>
<range start="0x4F1A" end="0x4F1A"/>
<range start="0x4F1C" end="0x4F1D"/>
<range start="0x4F2F" end="0x4F30"/>
<range start="0x4F34" end="0x4F34"/>
<range start="0x4F36" end="0x4F36"/>
<range start="0x4F38" end="0x4F38"/>
<range start="0x4F3A" end="0x4F3A"/>
<range start="0x4F3C" end="0x4F3D"/>
<range start="0x4F43" end="0x4F43"/>
<range start="0x4F46" end="0x4F47"/>
<range start="0x4F4D" end="0x4F51"/>
<range start="0x4F53" end="0x4F53"/>
<range start="0x4F55" end="0x4F55"/>
<range start="0x4F57" end="0x4F57"/>
<range start="0x4F59" end="0x4F5E"/>
<range start="0x4F69" end="0x4F69"/>
<range start="0x4F6F" end="0x4F70"/>
<range start="0x4F73" end="0x4F73"/>
<range start="0x4F75" end="0x4F76"/>
<range start="0x4F7B" end="0x4F7C"/>
<range start="0x4F7F" end="0x4F7F"/>
<range start="0x4F83" end="0x4F83"/>
<range start="0x4F86" end="0x4F86"/>
<range start="0x4F88" end="0x4F88"/>
<range start="0x4F8B" end="0x4F8B"/>
<range start="0x4F8D" end="0x4F8D"/>
<range start="0x4F8F" end="0x4F8F"/>
<range start="0x4F91" end="0x4F91"/>
<range start="0x4F96" end="0x4F96"/>
<range start="0x4F98" end="0x4F98"/>
<range start="0x4F9B" end="0x4F9B"/>
<range start="0x4F9D" end="0x4F9D"/>
<range start="0x4FA0" end="0x4FA1"/>
<range start="0x4FAB" end="0x4FAB"/>
<range start="0x4FAD" end="0x4FAF"/>
<range start="0x4FB5" end="0x4FB6"/>
<range start="0x4FBF" end="0x4FBF"/>
<range start="0x4FC2" end="0x4FC4"/>
<range start="0x4FCA" end="0x4FCA"/>
<range start="0x4FCE" end="0x4FCE"/>
<range start="0x4FD0" end="0x4FD1"/>
<range start="0x4FD4" end="0x4FD4"/>
<range start="0x4FD7" end="0x4FD8"/>
<range start="0x4FDA" end="0x4FDB"/>
<range start="0x4FDD" end="0x4FDD"/>
<range start="0x4FDF" end="0x4FDF"/>
<range start="0x4FE1" end="0x4FE1"/>
<range start="0x4FE3" end="0x4FE5"/>
<range start="0x4FEE" end="0x4FEF"/>
<range start="0x4FF3" end="0x4FF3"/>
<range start="0x4FF5" end="0x4FF6"/>
<range start="0x4FF8" end="0x4FF8"/>
<range start="0x4FFA" end="0x4FFA"/>
<range start="0x4FFE" end="0x4FFE"/>
<range start="0x5005" end="0x5006"/>
<range start="0x5009" end="0x5009"/>
<range start="0x500B" end="0x500B"/>
<range start="0x500D" end="0x500D"/>
<range start="0x500F" end="0x500F"/>
<range start="0x5011" end="0x5012"/>
<range start="0x5014" end="0x5014"/>
<range start="0x5016" end="0x5016"/>
<range start="0x5019" end="0x501A"/>
<range start="0x501F" end="0x501F"/>
<range start="0x5021" end="0x5021"/>
<range start="0x5023" end="0x5026"/>
<range start="0x5028" end="0x502D"/>
<range start="0x5036" end="0x5036"/>
<range start="0x5039" end="0x5039"/>
<range start="0x5043" end="0x5043"/>
<range start="0x5047" end="0x5049"/>
<range start="0x504F" end="0x5050"/>
<range start="0x5055" end="0x5056"/>
<range start="0x505A" end="0x505A"/>
<range start="0x505C" end="0x505C"/>
<range start="0x5065" end="0x5065"/>
<range start="0x506C" end="0x506C"/>
<range start="0x5072" end="0x5072"/>
<range start="0x5074" end="0x5076"/>
<range start="0x5078" end="0x5078"/>
<range start="0x507D" end="0x507D"/>
<range start="0x5080" end="0x5080"/>
<range start="0x5085" end="0x5085"/>
<range start="0x508D" end="0x508D"/>
<range start="0x5091" end="0x5091"/>
<range start="0x5098" end="0x509A"/>
<range start="0x50AC" end="0x50AD"/>
<range start="0x50B2" end="0x50B5"/>
<range start="0x50B7" end="0x50B7"/>
<range start="0x50BE" end="0x50BE"/>
<range start="0x50C2" end="0x50C2"/>
<range start="0x50C5" end="0x50C5"/>
<range start="0x50C9" end="0x50CA"/>
<range start="0x50CD" end="0x50CD"/>
<range start="0x50CF" end="0x50CF"/>
<range start="0x50D1" end="0x50D1"/>
<range start="0x50D5" end="0x50D6"/>
<range start="0x50DA" end="0x50DA"/>
<range start="0x50DE" end="0x50DE"/>
<range start="0x50E3" end="0x50E3"/>
<range start="0x50E5" end="0x50E5"/>
<range start="0x50E7" end="0x50E7"/>
<range start="0x50ED" end="0x50EE"/>
<range start="0x50F5" end="0x50F5"/>
<range start="0x50F9" end="0x50F9"/>
<range start="0x50FB" end="0x50FB"/>
<range start="0x5100" end="0x5102"/>
<range start="0x5104" end="0x5104"/>
<range start="0x5109" end="0x5109"/>
<range start="0x5112" end="0x5112"/>
<range start="0x5114" end="0x5116"/>
<range start="0x5118" end="0x5118"/>
<range start="0x511A" end="0x511A"/>
<range start="0x511F" end="0x511F"/>
<range start="0x5121" end="0x5121"/>
<range start="0x512A" end="0x512A"/>
<range start="0x5132" end="0x5132"/>
<range start="0x5137" end="0x5137"/>
<range start="0x513A" end="0x513C"/>
<range start="0x513F" end="0x5141"/>
<range start="0x5143" end="0x5149"/>
<range start="0x514B" end="0x514E"/>
<range start="0x5150" end="0x5150"/>
<range start="0x5152" end="0x5152"/>
<range start="0x5154" end="0x5154"/>
<range start="0x515A" end="0x515A"/>
<range start="0x515C" end="0x515C"/>
<range start="0x5162" end="0x5162"/>
<range start="0x5165" end="0x5165"/>
<range start="0x5168" end="0x516E"/>
<range start="0x5171" end="0x5171"/>
<range start="0x5175" end="0x5178"/>
<range start="0x517C" end="0x517C"/>
<range start="0x5180" end="0x5180"/>
<range start="0x5182" end="0x5182"/>
<range start="0x5185" end="0x5186"/>
<range start="0x5189" end="0x518A"/>
<range start="0x518C" end="0x518D"/>
<range start="0x518F" end="0x5193"/>
<range start="0x5195" end="0x5197"/>
<range start="0x5199" end="0x5199"/>
<range start="0x51A0" end="0x51A0"/>
<range start="0x51A2" end="0x51A2"/>
<range start="0x51A4" end="0x51A6"/>
<range start="0x51A8" end="0x51AC"/>
<range start="0x51B0" end="0x51B7"/>
<range start="0x51BD" end="0x51BD"/>
<range start="0x51C4" end="0x51C6"/>
<range start="0x51C9" end="0x51C9"/>
<range start="0x51CB" end="0x51CD"/>
<range start="0x51D6" end="0x51D6"/>
<range start="0x51DB" end="0x51DD"/>
<range start="0x51E0" end="0x51E1"/>
<range start="0x51E6" end="0x51E7"/>
<range start="0x51E9" end="0x51EA"/>
<range start="0x51ED" end="0x51ED"/>
<range start="0x51F0" end="0x51F1"/>
<range start="0x51F5" end="0x51F6"/>
<range start="0x51F8" end="0x51FA"/>
<range start="0x51FD" end="0x51FE"/>
<range start="0x5200" end="0x5200"/>
<range start="0x5203" end="0x5204"/>
<range start="0x5206" end="0x5208"/>
<range start="0x520A" end="0x520B"/>
<range start="0x520E" end="0x520E"/>
<range start="0x5211" end="0x5211"/>
<range start="0x5214" end="0x5214"/>
<range start="0x5217" end="0x5217"/>
<range start="0x521D" end="0x521D"/>
<range start="0x5224" end="0x5225"/>
<range start="0x5227" end="0x5227"/>
<range start="0x5229" end="0x522A"/>
<range start="0x522E" end="0x522E"/>
<range start="0x5230" end="0x5230"/>
<range start="0x5233" end="0x5233"/>
<range start="0x5236" end="0x523B"/>
<range start="0x5243" end="0x5244"/>
<range start="0x5247" end="0x5247"/>
<range start="0x524A" end="0x524D"/>
<range start="0x524F" end="0x524F"/>
<range start="0x5254" end="0x5254"/>
<range start="0x5256" end="0x5256"/>
<range start="0x525B" end="0x525B"/>
<range start="0x525E" end="0x525E"/>
<range start="0x5263" end="0x5265"/>
<range start="0x5269" end="0x526A"/>
<range start="0x526F" end="0x5275"/>
<range start="0x527D" end="0x527D"/>
<range start="0x527F" end="0x527F"/>
<range start="0x5283" end="0x5283"/>
<range start="0x5287" end="0x5289"/>
<range start="0x528D" end="0x528D"/>
<range start="0x5291" end="0x5292"/>
<range start="0x5294" end="0x5294"/>
<range start="0x529B" end="0x529B"/>
<range start="0x529F" end="0x52A0"/>
<range start="0x52A3" end="0x52A3"/>
<range start="0x52A9" end="0x52AD"/>
<range start="0x52B1" end="0x52B1"/>
<range start="0x52B4" end="0x52B5"/>
<range start="0x52B9" end="0x52B9"/>
<range start="0x52BC" end="0x52BC"/>
<range start="0x52BE" end="0x52BE"/>
<range start="0x52C1" end="0x52C1"/>
<range start="0x52C3" end="0x52C3"/>
<range start="0x52C5" end="0x52C5"/>
<range start="0x52C7" end="0x52C7"/>
<range start="0x52C9" end="0x52C9"/>
<range start="0x52CD" end="0x52CD"/>
<range start="0x52D2" end="0x52D2"/>
<range start="0x52D5" end="0x52D5"/>
<range start="0x52D7" end="0x52D9"/>
<range start="0x52DD" end="0x52E0"/>
<range start="0x52E2" end="0x52E4"/>
<range start="0x52E6" end="0x52E7"/>
<range start="0x52F2" end="0x52F3"/>
<range start="0x52F5" end="0x52F5"/>
<range start="0x52F8" end="0x52FA"/>
<range start="0x52FE" end="0x52FF"/>
<range start="0x5301" end="0x5302"/>
<range start="0x5305" end="0x5306"/>
<range start="0x5308" end="0x5308"/>
<range start="0x530D" end="0x530D"/>
<range start="0x530F" end="0x5310"/>
<range start="0x5315" end="0x5317"/>
<range start="0x5319" end="0x531A"/>
<range start="0x531D" end="0x531D"/>
<range start="0x5320" end="0x5321"/>
<range start="0x5323" end="0x5323"/>
<range start="0x532A" end="0x532A"/>
<range start="0x532F" end="0x532F"/>
<range start="0x5331" end="0x5331"/>
<range start="0x5333" end="0x5333"/>
<range start="0x5338" end="0x533B"/>
<range start="0x533F" end="0x5341"/>
<range start="0x5343" end="0x5343"/>
<range start="0x5345" end="0x534A"/>
<range start="0x534D" end="0x534D"/>
<range start="0x5351" end="0x5354"/>
<range start="0x5357" end="0x5358"/>
<range start="0x535A" end="0x535A"/>
<range start="0x535C" end="0x535C"/>
<range start="0x535E" end="0x535E"/>
<range start="0x5360" end="0x5360"/>
<range start="0x5366" end="0x5366"/>
<range start="0x5369" end="0x5369"/>
<range start="0x536E" end="0x5371"/>
<range start="0x5373" end="0x5375"/>
<range start="0x5377" end="0x5378"/>
<range start="0x537B" end="0x537B"/>
<range start="0x537F" end="0x537F"/>
<range start="0x5382" end="0x5382"/>
<range start="0x5384" end="0x5384"/>
<range start="0x5396" end="0x5396"/>
<range start="0x5398" end="0x5398"/>
<range start="0x539A" end="0x539A"/>
<range start="0x539F" end="0x53A0"/>
<range start="0x53A5" end="0x53A6"/>
<range start="0x53A8" end="0x53A9"/>
<range start="0x53AD" end="0x53AE"/>
<range start="0x53B0" end="0x53B0"/>
<range start="0x53B3" end="0x53B3"/>
<range start="0x53B6" end="0x53B6"/>
<range start="0x53BB" end="0x53BB"/>
<range start="0x53C2" end="0x53C3"/>
<range start="0x53C8" end="0x53CE"/>
<range start="0x53D4" end="0x53D4"/>
<range start="0x53D6" end="0x53D7"/>
<range start="0x53D9" end="0x53D9"/>
<range start="0x53DB" end="0x53DB"/>
<range start="0x53DF" end="0x53DF"/>
<range start="0x53E1" end="0x53E5"/>
<range start="0x53E8" end="0x53F3"/>
<range start="0x53F6" end="0x53F8"/>
<range start="0x53FA" end="0x53FA"/>
<range start="0x5401" end="0x5401"/>
<range start="0x5403" end="0x5404"/>
<range start="0x5408" end="0x5411"/>
<range start="0x541B" end="0x541B"/>
<range start="0x541D" end="0x541D"/>
<range start="0x541F" end="0x5420"/>
<range start="0x5426" end="0x5426"/>
<range start="0x5429" end="0x5429"/>
<range start="0x542B" end="0x542E"/>
<range start="0x5436" end="0x5436"/>
<range start="0x5438" end="0x5439"/>
<range start="0x543B" end="0x543E"/>
<range start="0x5440" end="0x5440"/>
<range start="0x5442" end="0x5442"/>
<range start="0x5446" end="0x5446"/>
<range start="0x5448" end="0x544A"/>
<range start="0x544E" end="0x544E"/>
<range start="0x5451" end="0x5451"/>
<range start="0x545F" end="0x545F"/>
<range start="0x5468" end="0x5468"/>
<range start="0x546A" end="0x546A"/>
<range start="0x5470" end="0x5471"/>
<range start="0x5473" end="0x5473"/>
<range start="0x5475" end="0x5477"/>
<range start="0x547B" end="0x547D"/>
<range start="0x5480" end="0x5480"/>
<range start="0x5484" end="0x5484"/>
<range start="0x5486" end="0x5486"/>
<range start="0x548B" end="0x548C"/>
<range start="0x548E" end="0x5490"/>
<range start="0x5492" end="0x5492"/>
<range start="0x54A2" end="0x54A2"/>
<range start="0x54A4" end="0x54A5"/>
<range start="0x54A8" end="0x54A8"/>
<range start="0x54AB" end="0x54AC"/>
<range start="0x54AF" end="0x54AF"/>
<range start="0x54B2" end="0x54B3"/>
<range start="0x54B8" end="0x54B8"/>
<range start="0x54BC" end="0x54BE"/>
<range start="0x54C0" end="0x54C2"/>
<range start="0x54C4" end="0x54C4"/>
<range start="0x54C7" end="0x54C9"/>
<range start="0x54D8" end="0x54D8"/>
<range start="0x54E1" end="0x54E2"/>
<range start="0x54E5" end="0x54E6"/>
<range start="0x54E8" end="0x54E9"/>
<range start="0x54ED" end="0x54EE"/>
<range start="0x54F2" end="0x54F2"/>
<range start="0x54FA" end="0x54FA"/>
<range start="0x54FD" end="0x54FD"/>
<range start="0x5504" end="0x5504"/>
<range start="0x5506" end="0x5507"/>
<range start="0x550F" end="0x5510"/>
<range start="0x5514" end="0x5514"/>
<range start="0x5516" end="0x5516"/>
<range start="0x552E" end="0x552F"/>
<range start="0x5531" end="0x5531"/>
<range start="0x5533" end="0x5533"/>
<range start="0x5538" end="0x5539"/>
<range start="0x553E" end="0x553E"/>
<range start="0x5540" end="0x5540"/>
<range start="0x5544" end="0x5546"/>
<range start="0x554C" end="0x554C"/>
<range start="0x554F" end="0x554F"/>
<range start="0x5553" end="0x5553"/>
<range start="0x5556" end="0x5557"/>
<range start="0x555C" end="0x555D"/>
<range start="0x5563" end="0x5563"/>
<range start="0x557B" end="0x557C"/>
<range start="0x557E" end="0x557E"/>
<range start="0x5580" end="0x5580"/>
<range start="0x5583" end="0x5584"/>
<range start="0x5587" end="0x5587"/>
<range start="0x5589" end="0x558B"/>
<range start="0x5598" end="0x559A"/>
<range start="0x559C" end="0x559F"/>
<range start="0x55A7" end="0x55AC"/>
<range start="0x55AE" end="0x55AE"/>
<range start="0x55B0" end="0x55B0"/>
<range start="0x55B6" end="0x55B6"/>
<range start="0x55C4" end="0x55C5"/>
<range start="0x55C7" end="0x55C7"/>
<range start="0x55D4" end="0x55D4"/>
<range start="0x55DA" end="0x55DA"/>
<range start="0x55DC" end="0x55DC"/>
<range start="0x55DF" end="0x55DF"/>
<range start="0x55E3" end="0x55E4"/>
<range start="0x55F7" end="0x55F7"/>
<range start="0x55F9" end="0x55F9"/>
<range start="0x55FD" end="0x55FE"/>
<range start="0x5606" end="0x5606"/>
<range start="0x5609" end="0x5609"/>
<range start="0x5614" end="0x5614"/>
<range start="0x5616" end="0x5618"/>
<range start="0x561B" end="0x561B"/>
<range start="0x5629" end="0x5629"/>
<range start="0x562F" end="0x562F"/>
<range start="0x5631" end="0x5632"/>
<range start="0x5634" end="0x5634"/>
<range start="0x5636" end="0x5636"/>
<range start="0x5638" end="0x5638"/>
<range start="0x5642" end="0x5642"/>
<range start="0x564C" end="0x564C"/>
<range start="0x564E" end="0x564E"/>
<range start="0x5650" end="0x5650"/>
<range start="0x565B" end="0x565B"/>
<range start="0x5664" end="0x5664"/>
<range start="0x5668" end="0x5668"/>
<range start="0x566A" end="0x566C"/>
<range start="0x5674" end="0x5674"/>
<range start="0x5678" end="0x5678"/>
<range start="0x567A" end="0x567A"/>
<range start="0x5680" end="0x5680"/>
<range start="0x5686" end="0x5687"/>
<range start="0x568A" end="0x568A"/>
<range start="0x568F" end="0x568F"/>
<range start="0x5694" end="0x5694"/>
<range start="0x56A0" end="0x56A0"/>
<range start="0x56A2" end="0x56A2"/>
<range start="0x56A5" end="0x56A5"/>
<range start="0x56AE" end="0x56AE"/>
<range start="0x56B4" end="0x56B4"/>
<range start="0x56B6" end="0x56B6"/>
<range start="0x56BC" end="0x56BC"/>
<range start="0x56C0" end="0x56C3"/>
<range start="0x56C8" end="0x56C8"/>
<range start="0x56CE" end="0x56CE"/>
<range start="0x56D1" end="0x56D1"/>
<range start="0x56D3" end="0x56D3"/>
<range start="0x56D7" end="0x56D8"/>
<range start="0x56DA" end="0x56DB"/>
<range start="0x56DE" end="0x56DE"/>
<range start="0x56E0" end="0x56E0"/>
<range start="0x56E3" end="0x56E3"/>
<range start="0x56EE" end="0x56EE"/>
<range start="0x56F0" end="0x56F0"/>
<range start="0x56F2" end="0x56F3"/>
<range start="0x56F9" end="0x56FA"/>
<range start="0x56FD" end="0x56FD"/>
<range start="0x56FF" end="0x5700"/>
<range start="0x5703" end="0x5704"/>
<range start="0x5708" end="0x5709"/>
<range start="0x570B" end="0x570B"/>
<range start="0x570D" end="0x570D"/>
<range start="0x570F" end="0x570F"/>
<range start="0x5712" end="0x5713"/>
<range start="0x5716" end="0x5716"/>
<range start="0x5718" end="0x5718"/>
<range start="0x571C" end="0x571C"/>
<range start="0x571F" end="0x571F"/>
<range start="0x5726" end="0x5728"/>
<range start="0x572D" end="0x572D"/>
<range start="0x5730" end="0x5730"/>
<range start="0x5737" end="0x5738"/>
<range start="0x573B" end="0x573B"/>
<range start="0x5740" end="0x5740"/>
<range start="0x5742" end="0x5742"/>
<range start="0x5747" end="0x5747"/>
<range start="0x574A" end="0x574A"/>
<range start="0x574E" end="0x5751"/>
<range start="0x5761" end="0x5761"/>
<range start="0x5764" end="0x5764"/>
<range start="0x5766" end="0x5766"/>
<range start="0x5769" end="0x576A"/>
<range start="0x577F" end="0x577F"/>
<range start="0x5782" end="0x5782"/>
<range start="0x5788" end="0x5789"/>
<range start="0x578B" end="0x578B"/>
<range start="0x5793" end="0x5793"/>
<range start="0x57A0" end="0x57A0"/>
<range start="0x57A2" end="0x57A4"/>
<range start="0x57AA" end="0x57AA"/>
<range start="0x57B0" end="0x57B0"/>
<range start="0x57B3" end="0x57B3"/>
<range start="0x57C0" end="0x57C0"/>
<range start="0x57C3" end="0x57C3"/>
<range start="0x57C6" end="0x57C6"/>
<range start="0x57CB" end="0x57CB"/>
<range start="0x57CE" end="0x57CE"/>
<range start="0x57D2" end="0x57D4"/>
<range start="0x57D6" end="0x57D6"/>
<range start="0x57DC" end="0x57DC"/>
<range start="0x57DF" end="0x57E0"/>
<range start="0x57E3" end="0x57E3"/>
<range start="0x57F4" end="0x57F4"/>
<range start="0x57F7" end="0x57F7"/>
<range start="0x57F9" end="0x57FA"/>
<range start="0x57FC" end="0x57FC"/>
<range start="0x5800" end="0x5800"/>
<range start="0x5802" end="0x5802"/>
<range start="0x5805" end="0x5806"/>
<range start="0x580A" end="0x580B"/>
<range start="0x5815" end="0x5815"/>
<range start="0x5819" end="0x5819"/>
<range start="0x581D" end="0x581D"/>
<range start="0x5821" end="0x5821"/>
<range start="0x5824" end="0x5824"/>
<range start="0x582A" end="0x582A"/>
<range start="0x582F" end="0x5831"/>
<range start="0x5834" end="0x5835"/>
<range start="0x583A" end="0x583A"/>
<range start="0x583D" end="0x583D"/>
<range start="0x5840" end="0x5841"/>
<range start="0x584A" end="0x584B"/>
<range start="0x5851" end="0x5852"/>
<range start="0x5854" end="0x5854"/>
<range start="0x5857" end="0x585A"/>
<range start="0x585E" end="0x585E"/>
<range start="0x5862" end="0x5862"/>
<range start="0x5869" end="0x5869"/>
<range start="0x586B" end="0x586B"/>
<range start="0x5870" end="0x5870"/>
<range start="0x5872" end="0x5872"/>
<range start="0x5875" end="0x5875"/>
<range start="0x5879" end="0x5879"/>
<range start="0x587E" end="0x587E"/>
<range start="0x5883" end="0x5883"/>
<range start="0x5885" end="0x5885"/>
<range start="0x5893" end="0x5893"/>
<range start="0x5897" end="0x5897"/>
<range start="0x589C" end="0x589C"/>
<range start="0x589F" end="0x589F"/>
<range start="0x58A8" end="0x58A8"/>
<range start="0x58AB" end="0x58AB"/>
<range start="0x58AE" end="0x58AE"/>
<range start="0x58B3" end="0x58B3"/>
<range start="0x58B8" end="0x58BB"/>
<range start="0x58BE" end="0x58BE"/>
<range start="0x58C1" end="0x58C1"/>
<range start="0x58C5" end="0x58C5"/>
<range start="0x58C7" end="0x58C7"/>
<range start="0x58CA" end="0x58CA"/>
<range start="0x58CC" end="0x58CC"/>
<range start="0x58D1" end="0x58D1"/>
<range start="0x58D3" end="0x58D3"/>
<range start="0x58D5" end="0x58D5"/>
<range start="0x58D7" end="0x58D9"/>
<range start="0x58DC" end="0x58DC"/>
<range start="0x58DE" end="0x58DF"/>
<range start="0x58E4" end="0x58E5"/>
<range start="0x58EB" end="0x58EC"/>
<range start="0x58EE" end="0x58F2"/>
<range start="0x58F7" end="0x58F7"/>
<range start="0x58F9" end="0x58FD"/>
<range start="0x5902" end="0x5902"/>
<range start="0x5909" end="0x590A"/>
<range start="0x590F" end="0x5910"/>
<range start="0x5915" end="0x5916"/>
<range start="0x5918" end="0x591C"/>
<range start="0x5922" end="0x5922"/>
<range start="0x5925" end="0x5925"/>
<range start="0x5927" end="0x5927"/>
<range start="0x5929" end="0x592E"/>
<range start="0x5931" end="0x5932"/>
<range start="0x5937" end="0x5938"/>
<range start="0x593E" end="0x593E"/>
<range start="0x5944" end="0x5944"/>
<range start="0x5947" end="0x5949"/>
<range start="0x594E" end="0x5951"/>
<range start="0x5954" end="0x5955"/>
<range start="0x5957" end="0x5958"/>
<range start="0x595A" end="0x595A"/>
<range start="0x5960" end="0x5960"/>
<range start="0x5962" end="0x5962"/>
<range start="0x5965" end="0x5965"/>
<range start="0x5967" end="0x596A"/>
<range start="0x596C" end="0x596C"/>
<range start="0x596E" end="0x596E"/>
<range start="0x5973" end="0x5974"/>
<range start="0x5978" end="0x5978"/>
<range start="0x597D" end="0x597D"/>
<range start="0x5981" end="0x5984"/>
<range start="0x598A" end="0x598A"/>
<range start="0x598D" end="0x598D"/>
<range start="0x5993" end="0x5993"/>
<range start="0x5996" end="0x5996"/>
<range start="0x5999" end="0x5999"/>
<range start="0x599B" end="0x599B"/>
<range start="0x599D" end="0x599D"/>
<range start="0x59A3" end="0x59A3"/>
<range start="0x59A5" end="0x59A5"/>
<range start="0x59A8" end="0x59A8"/>
<range start="0x59AC" end="0x59AC"/>
<range start="0x59B2" end="0x59B2"/>
<range start="0x59B9" end="0x59B9"/>
<range start="0x59BB" end="0x59BB"/>
<range start="0x59BE" end="0x59BE"/>
<range start="0x59C6" end="0x59C6"/>
<range start="0x59C9" end="0x59C9"/>
<range start="0x59CB" end="0x59CB"/>
<range start="0x59D0" end="0x59D1"/>
<range start="0x59D3" end="0x59D4"/>
<range start="0x59D9" end="0x59DA"/>
<range start="0x59DC" end="0x59DC"/>
<range start="0x59E5" end="0x59E6"/>
<range start="0x59E8" end="0x59E8"/>
<range start="0x59EA" end="0x59EB"/>
<range start="0x59F6" end="0x59F6"/>
<range start="0x59FB" end="0x59FB"/>
<range start="0x59FF" end="0x59FF"/>
<range start="0x5A01" end="0x5A01"/>
<range start="0x5A03" end="0x5A03"/>
<range start="0x5A09" end="0x5A09"/>
<range start="0x5A11" end="0x5A11"/>
<range start="0x5A18" end="0x5A18"/>
<range start="0x5A1A" end="0x5A1A"/>
<range start="0x5A1C" end="0x5A1C"/>
<range start="0x5A1F" end="0x5A20"/>
<range start="0x5A25" end="0x5A25"/>
<range start="0x5A29" end="0x5A29"/>
<range start="0x5A2F" end="0x5A2F"/>
<range start="0x5A35" end="0x5A36"/>
<range start="0x5A3C" end="0x5A3C"/>
<range start="0x5A40" end="0x5A41"/>
<range start="0x5A46" end="0x5A46"/>
<range start="0x5A49" end="0x5A49"/>
<range start="0x5A5A" end="0x5A5A"/>
<range start="0x5A62" end="0x5A62"/>
<range start="0x5A66" end="0x5A66"/>
<range start="0x5A6A" end="0x5A6A"/>
<range start="0x5A6C" end="0x5A6C"/>
<range start="0x5A7F" end="0x5A7F"/>
<range start="0x5A92" end="0x5A92"/>
<range start="0x5A9A" end="0x5A9B"/>
<range start="0x5ABC" end="0x5ABE"/>
<range start="0x5AC1" end="0x5AC2"/>
<range start="0x5AC9" end="0x5AC9"/>
<range start="0x5ACB" end="0x5ACC"/>
<range start="0x5AD0" end="0x5AD0"/>
<range start="0x5AD6" end="0x5AD7"/>
<range start="0x5AE1" end="0x5AE1"/>
<range start="0x5AE3" end="0x5AE3"/>
<range start="0x5AE6" end="0x5AE6"/>
<range start="0x5AE9" end="0x5AE9"/>
<range start="0x5AFA" end="0x5AFB"/>
<range start="0x5B09" end="0x5B09"/>
<range start="0x5B0B" end="0x5B0C"/>
<range start="0x5B16" end="0x5B16"/>
<range start="0x5B22" end="0x5B22"/>
<range start="0x5B2A" end="0x5B2A"/>
<range start="0x5B2C" end="0x5B2C"/>
<range start="0x5B30" end="0x5B30"/>
<range start="0x5B32" end="0x5B32"/>
<range start="0x5B36" end="0x5B36"/>
<range start="0x5B3E" end="0x5B3E"/>
<range start="0x5B40" end="0x5B40"/>
<range start="0x5B43" end="0x5B43"/>
<range start="0x5B45" end="0x5B45"/>
<range start="0x5B50" end="0x5B51"/>
<range start="0x5B54" end="0x5B55"/>
<range start="0x5B57" end="0x5B58"/>
<range start="0x5B5A" end="0x5B5D"/>
<range start="0x5B5F" end="0x5B5F"/>
<range start="0x5B63" end="0x5B66"/>
<range start="0x5B69" end="0x5B69"/>
<range start="0x5B6B" end="0x5B6B"/>
<range start="0x5B70" end="0x5B71"/>
<range start="0x5B73" end="0x5B73"/>
<range start="0x5B75" end="0x5B75"/>
<range start="0x5B78" end="0x5B78"/>
<range start="0x5B7A" end="0x5B7A"/>
<range start="0x5B80" end="0x5B80"/>
<range start="0x5B83" end="0x5B83"/>
<range start="0x5B85" end="0x5B85"/>
<range start="0x5B87" end="0x5B89"/>
<range start="0x5B8B" end="0x5B8D"/>
<range start="0x5B8F" end="0x5B8F"/>
<range start="0x5B95" end="0x5B95"/>
<range start="0x5B97" end="0x5B9D"/>
<range start="0x5B9F" end="0x5B9F"/>
<range start="0x5BA2" end="0x5BA6"/>
<range start="0x5BAE" end="0x5BAE"/>
<range start="0x5BB0" end="0x5BB0"/>
<range start="0x5BB3" end="0x5BB6"/>
<range start="0x5BB8" end="0x5BB9"/>
<range start="0x5BBF" end="0x5BBF"/>
<range start="0x5BC2" end="0x5BC7"/>
<range start="0x5BC9" end="0x5BC9"/>
<range start="0x5BCC" end="0x5BCC"/>
<range start="0x5BD0" end="0x5BD0"/>
<range start="0x5BD2" end="0x5BD4"/>
<range start="0x5BDB" end="0x5BDB"/>
<range start="0x5BDD" end="0x5BDF"/>
<range start="0x5BE1" end="0x5BE2"/>
<range start="0x5BE4" end="0x5BE9"/>
<range start="0x5BEB" end="0x5BEB"/>
<range start="0x5BEE" end="0x5BEE"/>
<range start="0x5BF0" end="0x5BF0"/>
<range start="0x5BF3" end="0x5BF3"/>
<range start="0x5BF5" end="0x5BF6"/>
<range start="0x5BF8" end="0x5BF8"/>
<range start="0x5BFA" end="0x5BFA"/>
<range start="0x5BFE" end="0x5BFF"/>
<range start="0x5C01" end="0x5C02"/>
<range start="0x5C04" end="0x5C0B"/>
<range start="0x5C0D" end="0x5C0F"/>
<range start="0x5C11" end="0x5C11"/>
<range start="0x5C13" end="0x5C13"/>
<range start="0x5C16" end="0x5C16"/>
<range start="0x5C1A" end="0x5C1A"/>
<range start="0x5C20" end="0x5C20"/>
<range start="0x5C22" end="0x5C22"/>
<range start="0x5C24" end="0x5C24"/>
<range start="0x5C28" end="0x5C28"/>
<range start="0x5C2D" end="0x5C2D"/>
<range start="0x5C31" end="0x5C31"/>
<range start="0x5C38" end="0x5C41"/>
<range start="0x5C45" end="0x5C46"/>
<range start="0x5C48" end="0x5C48"/>
<range start="0x5C4A" end="0x5C4B"/>
<range start="0x5C4D" end="0x5C51"/>
<range start="0x5C53" end="0x5C53"/>
<range start="0x5C55" end="0x5C55"/>
<range start="0x5C5E" end="0x5C5E"/>
<range start="0x5C60" end="0x5C61"/>
<range start="0x5C64" end="0x5C65"/>
<range start="0x5C6C" end="0x5C6C"/>
<range start="0x5C6E" end="0x5C6F"/>
<range start="0x5C71" end="0x5C71"/>
<range start="0x5C76" end="0x5C76"/>
<range start="0x5C79" end="0x5C79"/>
<range start="0x5C8C" end="0x5C8C"/>
<range start="0x5C90" end="0x5C91"/>
<range start="0x5C94" end="0x5C94"/>
<range start="0x5CA1" end="0x5CA1"/>
<range start="0x5CA8" end="0x5CA9"/>
<range start="0x5CAB" end="0x5CAC"/>
<range start="0x5CB1" end="0x5CB1"/>
<range start="0x5CB3" end="0x5CB3"/>
<range start="0x5CB6" end="0x5CB8"/>
<range start="0x5CBB" end="0x5CBC"/>
<range start="0x5CBE" end="0x5CBE"/>
<range start="0x5CC5" end="0x5CC5"/>
<range start="0x5CC7" end="0x5CC7"/>
<range start="0x5CD9" end="0x5CD9"/>
<range start="0x5CE0" end="0x5CE1"/>
<range start="0x5CE8" end="0x5CEA"/>
<range start="0x5CED" end="0x5CED"/>
<range start="0x5CEF" end="0x5CF0"/>
<range start="0x5CF6" end="0x5CF6"/>
<range start="0x5CFA" end="0x5CFB"/>
<range start="0x5CFD" end="0x5CFD"/>
<range start="0x5D07" end="0x5D07"/>
<range start="0x5D0B" end="0x5D0B"/>
<range start="0x5D0E" end="0x5D0E"/>
<range start="0x5D11" end="0x5D11"/>
<range start="0x5D14" end="0x5D1B"/>
<range start="0x5D1F" end="0x5D1F"/>
<range start="0x5D22" end="0x5D22"/>
<range start="0x5D29" end="0x5D29"/>
<range start="0x5D4B" end="0x5D4C"/>
<range start="0x5D4E" end="0x5D4E"/>
<range start="0x5D50" end="0x5D50"/>
<range start="0x5D52" end="0x5D52"/>
<range start="0x5D5C" end="0x5D5C"/>
<range start="0x5D69" end="0x5D69"/>
<range start="0x5D6C" end="0x5D6C"/>
<range start="0x5D6F" end="0x5D6F"/>
<range start="0x5D73" end="0x5D73"/>
<range start="0x5D76" end="0x5D76"/>
<range start="0x5D82" end="0x5D82"/>
<range start="0x5D84" end="0x5D84"/>
<range start="0x5D87" end="0x5D87"/>
<range start="0x5D8B" end="0x5D8C"/>
<range start="0x5D90" end="0x5D90"/>
<range start="0x5D9D" end="0x5D9D"/>
<range start="0x5DA2" end="0x5DA2"/>
<range start="0x5DAC" end="0x5DAC"/>
<range start="0x5DAE" end="0x5DAE"/>
<range start="0x5DB7" end="0x5DB7"/>
<range start="0x5DBA" end="0x5DBA"/>
<range start="0x5DBC" end="0x5DBD"/>
<range start="0x5DC9" end="0x5DC9"/>
<range start="0x5DCC" end="0x5DCD"/>
<range start="0x5DD2" end="0x5DD3"/>
<range start="0x5DD6" end="0x5DD6"/>
<range start="0x5DDB" end="0x5DDB"/>
<range start="0x5DDD" end="0x5DDE"/>
<range start="0x5DE1" end="0x5DE1"/>
<range start="0x5DE3" end="0x5DE3"/>
<range start="0x5DE5" end="0x5DE8"/>
<range start="0x5DEB" end="0x5DEB"/>
<range start="0x5DEE" end="0x5DEE"/>
<range start="0x5DF1" end="0x5DF5"/>
<range start="0x5DF7" end="0x5DF7"/>
<range start="0x5DFB" end="0x5DFB"/>
<range start="0x5DFD" end="0x5DFE"/>
<range start="0x5E02" end="0x5E03"/>
<range start="0x5E06" end="0x5E06"/>
<range start="0x5E0B" end="0x5E0C"/>
<range start="0x5E11" end="0x5E11"/>
<range start="0x5E16" end="0x5E16"/>
<range start="0x5E19" end="0x5E1B"/>
<range start="0x5E1D" end="0x5E1D"/>
<range start="0x5E25" end="0x5E25"/>
<range start="0x5E2B" end="0x5E2B"/>
<range start="0x5E2D" end="0x5E2D"/>
<range start="0x5E2F" end="0x5E30"/>
<range start="0x5E33" end="0x5E33"/>
<range start="0x5E36" end="0x5E38"/>
<range start="0x5E3D" end="0x5E3D"/>
<range start="0x5E40" end="0x5E40"/>
<range start="0x5E43" end="0x5E45"/>
<range start="0x5E47" end="0x5E47"/>
<range start="0x5E4C" end="0x5E4C"/>
<range start="0x5E4E" end="0x5E4E"/>
<range start="0x5E54" end="0x5E55"/>
<range start="0x5E57" end="0x5E57"/>
<range start="0x5E5F" end="0x5E5F"/>
<range start="0x5E61" end="0x5E64"/>
<range start="0x5E72" end="0x5E76"/>
<range start="0x5E78" end="0x5E7F"/>
<range start="0x5E81" end="0x5E81"/>
<range start="0x5E83" end="0x5E84"/>
<range start="0x5E87" end="0x5E87"/>
<range start="0x5E8A" end="0x5E8A"/>
<range start="0x5E8F" end="0x5E8F"/>
<range start="0x5E95" end="0x5E97"/>
<range start="0x5E9A" end="0x5E9A"/>
<range start="0x5E9C" end="0x5E9C"/>
<range start="0x5EA0" end="0x5EA0"/>
<range start="0x5EA6" end="0x5EA7"/>
<range start="0x5EAB" end="0x5EAB"/>
<range start="0x5EAD" end="0x5EAD"/>
<range start="0x5EB5" end="0x5EB8"/>
<range start="0x5EC1" end="0x5EC3"/>
<range start="0x5EC8" end="0x5ECA"/>
<range start="0x5ECF" end="0x5ED0"/>
<range start="0x5ED3" end="0x5ED3"/>
<range start="0x5ED6" end="0x5ED6"/>
<range start="0x5EDA" end="0x5EDB"/>
<range start="0x5EDD" end="0x5EDD"/>
<range start="0x5EDF" end="0x5EE3"/>
<range start="0x5EE8" end="0x5EE9"/>
<range start="0x5EEC" end="0x5EEC"/>
<range start="0x5EF0" end="0x5EF1"/>
<range start="0x5EF3" end="0x5EF4"/>
<range start="0x5EF6" end="0x5EF8"/>
<range start="0x5EFA" end="0x5EFC"/>
<range start="0x5EFE" end="0x5EFF"/>
<range start="0x5F01" end="0x5F01"/>
<range start="0x5F03" end="0x5F04"/>
<range start="0x5F09" end="0x5F0D"/>
<range start="0x5F0F" end="0x5F11"/>
<range start="0x5F13" end="0x5F18"/>
<range start="0x5F1B" end="0x5F1B"/>
<range start="0x5F1F" end="0x5F1F"/>
<range start="0x5F25" end="0x5F27"/>
<range start="0x5F29" end="0x5F29"/>
<range start="0x5F2D" end="0x5F2D"/>
<range start="0x5F2F" end="0x5F2F"/>
<range start="0x5F31" end="0x5F31"/>
<range start="0x5F35" end="0x5F35"/>
<range start="0x5F37" end="0x5F38"/>
<range start="0x5F3C" end="0x5F3C"/>
<range start="0x5F3E" end="0x5F3E"/>
<range start="0x5F41" end="0x5F41"/>
<range start="0x5F48" end="0x5F48"/>
<range start="0x5F4A" end="0x5F4A"/>
<range start="0x5F4C" end="0x5F4C"/>
<range start="0x5F4E" end="0x5F4E"/>
<range start="0x5F51" end="0x5F51"/>
<range start="0x5F53" end="0x5F53"/>
<range start="0x5F56" end="0x5F57"/>
<range start="0x5F59" end="0x5F59"/>
<range start="0x5F5C" end="0x5F5D"/>
<range start="0x5F61" end="0x5F62"/>
<range start="0x5F66" end="0x5F66"/>
<range start="0x5F69" end="0x5F6D"/>
<range start="0x5F70" end="0x5F71"/>
<range start="0x5F73" end="0x5F73"/>
<range start="0x5F77" end="0x5F77"/>
<range start="0x5F79" end="0x5F79"/>
<range start="0x5F7C" end="0x5F7C"/>
<range start="0x5F7F" end="0x5F85"/>
<range start="0x5F87" end="0x5F88"/>
<range start="0x5F8A" end="0x5F8C"/>
<range start="0x5F90" end="0x5F93"/>
<range start="0x5F97" end="0x5F99"/>
<range start="0x5F9E" end="0x5F9E"/>
<range start="0x5FA0" end="0x5FA1"/>
<range start="0x5FA8" end="0x5FAA"/>
<range start="0x5FAD" end="0x5FAE"/>
<range start="0x5FB3" end="0x5FB4"/>
<range start="0x5FB9" end="0x5FB9"/>
<range start="0x5FBC" end="0x5FBD"/>
<range start="0x5FC3" end="0x5FC3"/>
<range start="0x5FC5" end="0x5FC5"/>
<range start="0x5FCC" end="0x5FCD"/>
<range start="0x5FD6" end="0x5FD9"/>
<range start="0x5FDC" end="0x5FDD"/>
<range start="0x5FE0" end="0x5FE0"/>
<range start="0x5FE4" end="0x5FE4"/>
<range start="0x5FEB" end="0x5FEB"/>
<range start="0x5FF0" end="0x5FF1"/>
<range start="0x5FF5" end="0x5FF5"/>
<range start="0x5FF8" end="0x5FF8"/>
<range start="0x5FFB" end="0x5FFB"/>
<range start="0x5FFD" end="0x5FFD"/>
<range start="0x5FFF" end="0x5FFF"/>
<range start="0x600E" end="0x6010"/>
<range start="0x6012" end="0x6012"/>
<range start="0x6015" end="0x6016"/>
<range start="0x6019" end="0x6019"/>
<range start="0x601B" end="0x601D"/>
<range start="0x6020" end="0x6021"/>
<range start="0x6025" end="0x602B"/>
<range start="0x602F" end="0x602F"/>
<range start="0x6031" end="0x6031"/>
<range start="0x603A" end="0x603A"/>
<range start="0x6041" end="0x6043"/>
<range start="0x6046" end="0x6046"/>
<range start="0x604A" end="0x604B"/>
<range start="0x604D" end="0x604D"/>
<range start="0x6050" end="0x6050"/>
<range start="0x6052" end="0x6052"/>
<range start="0x6055" end="0x6055"/>
<range start="0x6059" end="0x605A"/>
<range start="0x605F" end="0x6060"/>
<range start="0x6062" end="0x6065"/>
<range start="0x6068" end="0x606D"/>
<range start="0x606F" end="0x6070"/>
<range start="0x6075" end="0x6075"/>
<range start="0x6077" end="0x6077"/>
<range start="0x6081" end="0x6081"/>
<range start="0x6083" end="0x6084"/>
<range start="0x6089" end="0x6089"/>
<range start="0x608B" end="0x608D"/>
<range start="0x6092" end="0x6092"/>
<range start="0x6094" end="0x6094"/>
<range start="0x6096" end="0x6097"/>
<range start="0x609A" end="0x609B"/>
<range start="0x609F" end="0x60A0"/>
<range start="0x60A3" end="0x60A3"/>
<range start="0x60A6" end="0x60A7"/>
<range start="0x60A9" end="0x60AA"/>
<range start="0x60B2" end="0x60B6"/>
<range start="0x60B8" end="0x60B8"/>
<range start="0x60BC" end="0x60BD"/>
<range start="0x60C5" end="0x60C7"/>
<range start="0x60D1" end="0x60D1"/>
<range start="0x60D3" end="0x60D3"/>
<range start="0x60D8" end="0x60D8"/>
<range start="0x60DA" end="0x60DA"/>
<range start="0x60DC" end="0x60DC"/>
<range start="0x60DF" end="0x60E1"/>
<range start="0x60E3" end="0x60E3"/>
<range start="0x60E7" end="0x60E8"/>
<range start="0x60F0" end="0x60F1"/>
<range start="0x60F3" end="0x60F4"/>
<range start="0x60F6" end="0x60F7"/>
<range start="0x60F9" end="0x60FB"/>
<range start="0x6100" end="0x6101"/>
<range start="0x6103" end="0x6103"/>
<range start="0x6106" end="0x6106"/>
<range start="0x6108" end="0x6109"/>
<range start="0x610D" end="0x610F"/>
<range start="0x6115" end="0x6115"/>
<range start="0x611A" end="0x611B"/>
<range start="0x611F" end="0x611F"/>
<range start="0x6121" end="0x6121"/>
<range start="0x6127" end="0x6128"/>
<range start="0x612C" end="0x612C"/>
<range start="0x6134" end="0x6134"/>
<range start="0x613C" end="0x613F"/>
<range start="0x6142" end="0x6142"/>
<range start="0x6144" end="0x6144"/>
<range start="0x6147" end="0x6148"/>
<range start="0x614A" end="0x614E"/>
<range start="0x6153" end="0x6153"/>
<range start="0x6155" end="0x6155"/>
<range start="0x6158" end="0x615A"/>
<range start="0x615D" end="0x615D"/>
<range start="0x615F" end="0x615F"/>
<range start="0x6162" end="0x6163"/>
<range start="0x6165" end="0x6165"/>
<range start="0x6167" end="0x6168"/>
<range start="0x616B" end="0x616B"/>
<range start="0x616E" end="0x6171"/>
<range start="0x6173" end="0x6177"/>
<range start="0x617E" end="0x617E"/>
<range start="0x6182" end="0x6182"/>
<range start="0x6187" end="0x6187"/>
<range start="0x618A" end="0x618A"/>
<range start="0x618E" end="0x618E"/>
<range start="0x6190" end="0x6191"/>
<range start="0x6194" end="0x6194"/>
<range start="0x6196" end="0x6196"/>
<range start="0x6199" end="0x619A"/>
<range start="0x61A4" end="0x61A4"/>
<range start="0x61A7" end="0x61A7"/>
<range start="0x61A9" end="0x61A9"/>
<range start="0x61AB" end="0x61AC"/>
<range start="0x61AE" end="0x61AE"/>
<range start="0x61B2" end="0x61B2"/>
<range start="0x61B6" end="0x61B6"/>
<range start="0x61BA" end="0x61BA"/>
<range start="0x61BE" end="0x61BE"/>
<range start="0x61C3" end="0x61C3"/>
<range start="0x61C6" end="0x61CD"/>
<range start="0x61D0" end="0x61D0"/>
<range start="0x61E3" end="0x61E3"/>
<range start="0x61E6" end="0x61E6"/>
<range start="0x61F2" end="0x61F2"/>
<range start="0x61F4" end="0x61F4"/>
<range start="0x61F6" end="0x61F8"/>
<range start="0x61FA" end="0x61FA"/>
<range start="0x61FC" end="0x6200"/>
<range start="0x6208" end="0x620A"/>
<range start="0x620C" end="0x620E"/>
<range start="0x6210" end="0x6212"/>
<range start="0x6214" end="0x6214"/>
<range start="0x6216" end="0x6216"/>
<range start="0x621A" end="0x621B"/>
<range start="0x621D" end="0x621F"/>
<range start="0x6221" end="0x6221"/>
<range start="0x6226" end="0x6226"/>
<range start="0x622A" end="0x622A"/>
<range start="0x622E" end="0x6230"/>
<range start="0x6232" end="0x6234"/>
<range start="0x6238" end="0x6238"/>
<range start="0x623B" end="0x623B"/>
<range start="0x623F" end="0x6241"/>
<range start="0x6247" end="0x6249"/>
<range start="0x624B" end="0x624B"/>
<range start="0x624D" end="0x624E"/>
<range start="0x6253" end="0x6253"/>
<range start="0x6255" end="0x6255"/>
<range start="0x6258" end="0x6258"/>
<range start="0x625B" end="0x625B"/>
<range start="0x625E" end="0x625E"/>
<range start="0x6260" end="0x6260"/>
<range start="0x6263" end="0x6263"/>
<range start="0x6268" end="0x6268"/>
<range start="0x626E" end="0x626E"/>
<range start="0x6271" end="0x6271"/>
<range start="0x6276" end="0x6276"/>
<range start="0x6279" end="0x6279"/>
<range start="0x627C" end="0x627C"/>
<range start="0x627E" end="0x6280"/>
<range start="0x6282" end="0x6284"/>
<range start="0x6289" end="0x628A"/>
<range start="0x6291" end="0x6298"/>
<range start="0x629B" end="0x629C"/>
<range start="0x629E" end="0x629E"/>
<range start="0x62AB" end="0x62AC"/>
<range start="0x62B1" end="0x62B1"/>
<range start="0x62B5" end="0x62B5"/>
<range start="0x62B9" end="0x62B9"/>
<range start="0x62BB" end="0x62BD"/>
<range start="0x62C2" end="0x62C2"/>
<range start="0x62C5" end="0x62CA"/>
<range start="0x62CC" end="0x62CD"/>
<range start="0x62CF" end="0x62D4"/>
<range start="0x62D7" end="0x62D9"/>
<range start="0x62DB" end="0x62DD"/>
<range start="0x62E0" end="0x62E1"/>
<range start="0x62EC" end="0x62EF"/>
<range start="0x62F1" end="0x62F1"/>
<range start="0x62F3" end="0x62F3"/>
<range start="0x62F5" end="0x62F7"/>
<range start="0x62FE" end="0x62FF"/>
<range start="0x6301" end="0x6302"/>
<range start="0x6307" end="0x6309"/>
<range start="0x630C" end="0x630C"/>
<range start="0x6311" end="0x6311"/>
<range start="0x6319" end="0x6319"/>
<range start="0x631F" end="0x631F"/>
<range start="0x6327" end="0x6328"/>
<range start="0x632B" end="0x632B"/>
<range start="0x632F" end="0x632F"/>
<range start="0x633A" end="0x633A"/>
<range start="0x633D" end="0x633F"/>
<range start="0x6349" end="0x6349"/>
<range start="0x634C" end="0x634D"/>
<range start="0x634F" end="0x6350"/>
<range start="0x6355" end="0x6355"/>
<range start="0x6357" end="0x6357"/>
<range start="0x635C" end="0x635C"/>
<range start="0x6367" end="0x6369"/>
<range start="0x636B" end="0x636B"/>
<range start="0x636E" end="0x636E"/>
<range start="0x6372" end="0x6372"/>
<range start="0x6376" end="0x6377"/>
<range start="0x637A" end="0x637B"/>
<range start="0x6380" end="0x6380"/>
<range start="0x6383" end="0x6383"/>
<range start="0x6388" end="0x6389"/>
<range start="0x638C" end="0x638C"/>
<range start="0x638E" end="0x638F"/>
<range start="0x6392" end="0x6392"/>
<range start="0x6396" end="0x6396"/>
<range start="0x6398" end="0x6398"/>
<range start="0x639B" end="0x639B"/>
<range start="0x639F" end="0x63A3"/>
<range start="0x63A5" end="0x63A5"/>
<range start="0x63A7" end="0x63AC"/>
<range start="0x63B2" end="0x63B2"/>
<range start="0x63B4" end="0x63B5"/>
<range start="0x63BB" end="0x63BB"/>
<range start="0x63BE" end="0x63BE"/>
<range start="0x63C0" end="0x63C0"/>
<range start="0x63C3" end="0x63C4"/>
<range start="0x63C6" end="0x63C6"/>
<range start="0x63C9" end="0x63C9"/>
<range start="0x63CF" end="0x63D0"/>
<range start="0x63D2" end="0x63D2"/>
<range start="0x63D6" end="0x63D6"/>
<range start="0x63DA" end="0x63DB"/>
<range start="0x63E1" end="0x63E1"/>
<range start="0x63E3" end="0x63E3"/>
<range start="0x63E9" end="0x63E9"/>
<range start="0x63EE" end="0x63EE"/>
<range start="0x63F4" end="0x63F4"/>
<range start="0x63F6" end="0x63F6"/>
<range start="0x63FA" end="0x63FA"/>
<range start="0x6406" end="0x6406"/>
<range start="0x640D" end="0x640D"/>
<range start="0x640F" end="0x640F"/>
<range start="0x6413" end="0x6413"/>
<range start="0x6416" end="0x6417"/>
<range start="0x641C" end="0x641C"/>
<range start="0x6426" end="0x6426"/>
<range start="0x6428" end="0x6428"/>
<range start="0x642C" end="0x642D"/>
<range start="0x6434" end="0x6434"/>
<range start="0x6436" end="0x6436"/>
<range start="0x643A" end="0x643A"/>
<range start="0x643E" end="0x643E"/>
<range start="0x6442" end="0x6442"/>
<range start="0x644E" end="0x644E"/>
<range start="0x6458" end="0x6458"/>
<range start="0x6467" end="0x6467"/>
<range start="0x6469" end="0x6469"/>
<range start="0x646F" end="0x646F"/>
<range start="0x6476" end="0x6476"/>
<range start="0x6478" end="0x6478"/>
<range start="0x647A" end="0x647A"/>
<range start="0x6483" end="0x6483"/>
<range start="0x6488" end="0x6488"/>
<range start="0x6492" end="0x6493"/>
<range start="0x6495" end="0x6495"/>
<range start="0x649A" end="0x649A"/>
<range start="0x649E" end="0x649E"/>
<range start="0x64A4" end="0x64A5"/>
<range start="0x64A9" end="0x64A9"/>
<range start="0x64AB" end="0x64AB"/>
<range start="0x64AD" end="0x64AE"/>
<range start="0x64B0" end="0x64B0"/>
<range start="0x64B2" end="0x64B2"/>
<range start="0x64B9" end="0x64B9"/>
<range start="0x64BB" end="0x64BC"/>
<range start="0x64C1" end="0x64C2"/>
<range start="0x64C5" end="0x64C5"/>
<range start="0x64C7" end="0x64C7"/>
<range start="0x64CD" end="0x64CD"/>
<range start="0x64D2" end="0x64D2"/>
<range start="0x64D4" end="0x64D4"/>
<range start="0x64D8" end="0x64D8"/>
<range start="0x64DA" end="0x64DA"/>
<range start="0x64E0" end="0x64E3"/>
<range start="0x64E6" end="0x64E7"/>
<range start="0x64EC" end="0x64EC"/>
<range start="0x64EF" end="0x64EF"/>
<range start="0x64F1" end="0x64F2"/>
<range start="0x64F4" end="0x64F4"/>
<range start="0x64F6" end="0x64F6"/>
<range start="0x64FA" end="0x64FA"/>
<range start="0x64FD" end="0x64FE"/>
<range start="0x6500" end="0x6500"/>
<range start="0x6505" end="0x6505"/>
<range start="0x6518" end="0x6518"/>
<range start="0x651C" end="0x651D"/>
<range start="0x6523" end="0x6524"/>
<range start="0x652A" end="0x652C"/>
<range start="0x652F" end="0x652F"/>
<range start="0x6534" end="0x6539"/>
<range start="0x653B" end="0x653B"/>
<range start="0x653E" end="0x653F"/>
<range start="0x6545" end="0x6545"/>
<range start="0x6548" end="0x6548"/>
<range start="0x654D" end="0x654D"/>
<range start="0x654F" end="0x654F"/>
<range start="0x6551" end="0x6551"/>
<range start="0x6555" end="0x6559"/>
<range start="0x655D" end="0x655E"/>
<range start="0x6562" end="0x6563"/>
<range start="0x6566" end="0x6566"/>
<range start="0x656C" end="0x656C"/>
<range start="0x6570" end="0x6570"/>
<range start="0x6572" end="0x6572"/>
<range start="0x6574" end="0x6575"/>
<range start="0x6577" end="0x6578"/>
<range start="0x6582" end="0x6583"/>
<range start="0x6587" end="0x6589"/>
<range start="0x658C" end="0x658C"/>
<range start="0x658E" end="0x658E"/>
<range start="0x6590" end="0x6591"/>
<range start="0x6597" end="0x6597"/>
<range start="0x6599" end="0x6599"/>
<range start="0x659B" end="0x659C"/>
<range start="0x659F" end="0x659F"/>
<range start="0x65A1" end="0x65A1"/>
<range start="0x65A4" end="0x65A5"/>
<range start="0x65A7" end="0x65A7"/>
<range start="0x65AB" end="0x65AD"/>
<range start="0x65AF" end="0x65B0"/>
<range start="0x65B7" end="0x65B7"/>
<range start="0x65B9" end="0x65B9"/>
<range start="0x65BC" end="0x65BD"/>
<range start="0x65C1" end="0x65C1"/>
<range start="0x65C3" end="0x65C6"/>
<range start="0x65CB" end="0x65CC"/>
<range start="0x65CF" end="0x65CF"/>
<range start="0x65D2" end="0x65D2"/>
<range start="0x65D7" end="0x65D7"/>
<range start="0x65D9" end="0x65D9"/>
<range start="0x65DB" end="0x65DB"/>
<range start="0x65E0" end="0x65E2"/>
<range start="0x65E5" end="0x65E9"/>
<range start="0x65EC" end="0x65ED"/>
<range start="0x65F1" end="0x65F1"/>
<range start="0x65FA" end="0x65FB"/>
<range start="0x6602" end="0x6603"/>
<range start="0x6606" end="0x6607"/>
<range start="0x660A" end="0x660A"/>
<range start="0x660C" end="0x660C"/>
<range start="0x660E" end="0x660F"/>
<range start="0x6613" end="0x6614"/>
<range start="0x661C" end="0x661C"/>
<range start="0x661F" end="0x6620"/>
<range start="0x6625" end="0x6625"/>
<range start="0x6627" end="0x6628"/>
<range start="0x662D" end="0x662D"/>
<range start="0x662F" end="0x662F"/>
<range start="0x6634" end="0x6636"/>
<range start="0x663C" end="0x663C"/>
<range start="0x663F" end="0x663F"/>
<range start="0x6641" end="0x6644"/>
<range start="0x6649" end="0x6649"/>
<range start="0x664B" end="0x664B"/>
<range start="0x664F" end="0x664F"/>
<range start="0x6652" end="0x6652"/>
<range start="0x665D" end="0x665F"/>
<range start="0x6662" end="0x6662"/>
<range start="0x6664" end="0x6664"/>
<range start="0x6666" end="0x6669"/>
<range start="0x666E" end="0x6670"/>
<range start="0x6674" end="0x6674"/>
<range start="0x6676" end="0x6676"/>
<range start="0x667A" end="0x667A"/>
<range start="0x6681" end="0x6681"/>
<range start="0x6683" end="0x6684"/>
<range start="0x6687" end="0x6689"/>
<range start="0x668E" end="0x668E"/>
<range start="0x6691" end="0x6691"/>
<range start="0x6696" end="0x6698"/>
<range start="0x669D" end="0x669D"/>
<range start="0x66A2" end="0x66A2"/>
<range start="0x66A6" end="0x66A6"/>
<range start="0x66AB" end="0x66AB"/>
<range start="0x66AE" end="0x66AE"/>
<range start="0x66B4" end="0x66B4"/>
<range start="0x66B8" end="0x66B9"/>
<range start="0x66BC" end="0x66BC"/>
<range start="0x66BE" end="0x66BE"/>
<range start="0x66C1" end="0x66C1"/>
<range start="0x66C4" end="0x66C4"/>
<range start="0x66C7" end="0x66C7"/>
<range start="0x66C9" end="0x66C9"/>
<range start="0x66D6" end="0x66D6"/>
<range start="0x66D9" end="0x66DA"/>
<range start="0x66DC" end="0x66DD"/>
<range start="0x66E0" end="0x66E0"/>
<range start="0x66E6" end="0x66E6"/>
<range start="0x66E9" end="0x66E9"/>
<range start="0x66F0" end="0x66F0"/>
<range start="0x66F2" end="0x66F5"/>
<range start="0x66F7" end="0x66F9"/>
<range start="0x66FC" end="0x6700"/>
<range start="0x6703" end="0x6703"/>
<range start="0x6708" end="0x6709"/>
<range start="0x670B" end="0x670B"/>
<range start="0x670D" end="0x670D"/>
<range start="0x670F" end="0x670F"/>
<range start="0x6714" end="0x6717"/>
<range start="0x671B" end="0x671B"/>
<range start="0x671D" end="0x671F"/>
<range start="0x6726" end="0x6728"/>
<range start="0x672A" end="0x672E"/>
<range start="0x6731" end="0x6731"/>
<range start="0x6734" end="0x6734"/>
<range start="0x6736" end="0x6738"/>
<range start="0x673A" end="0x673A"/>
<range start="0x673D" end="0x673D"/>
<range start="0x673F" end="0x673F"/>
<range start="0x6741" end="0x6741"/>
<range start="0x6746" end="0x6746"/>
<range start="0x6749" end="0x6749"/>
<range start="0x674E" end="0x6751"/>
<range start="0x6753" end="0x6753"/>
<range start="0x6756" end="0x6756"/>
<range start="0x6759" end="0x6759"/>
<range start="0x675C" end="0x675C"/>
<range start="0x675E" end="0x6765"/>
<range start="0x676A" end="0x676A"/>
<range start="0x676D" end="0x676D"/>
<range start="0x676F" end="0x6773"/>
<range start="0x6775" end="0x6775"/>
<range start="0x6777" end="0x6777"/>
<range start="0x677C" end="0x677C"/>
<range start="0x677E" end="0x677F"/>
<range start="0x6785" end="0x6785"/>
<range start="0x6787" end="0x6787"/>
<range start="0x6789" end="0x6789"/>
<range start="0x678B" end="0x678C"/>
<range start="0x6790" end="0x6790"/>
<range start="0x6795" end="0x6795"/>
<range start="0x6797" end="0x6797"/>
<range start="0x679A" end="0x679A"/>
<range start="0x679C" end="0x679D"/>
<range start="0x67A0" end="0x67A2"/>
<range start="0x67A6" end="0x67A6"/>
<range start="0x67A9" end="0x67A9"/>
<range start="0x67AF" end="0x67AF"/>
<range start="0x67B3" end="0x67B4"/>
<range start="0x67B6" end="0x67B9"/>
<range start="0x67C1" end="0x67C1"/>
<range start="0x67C4" end="0x67C4"/>
<range start="0x67C6" end="0x67C6"/>
<range start="0x67CA" end="0x67CA"/>
<range start="0x67CE" end="0x67D1"/>
<range start="0x67D3" end="0x67D4"/>
<range start="0x67D8" end="0x67D8"/>
<range start="0x67DA" end="0x67DA"/>
<range start="0x67DD" end="0x67DE"/>
<range start="0x67E2" end="0x67E2"/>
<range start="0x67E4" end="0x67E4"/>
<range start="0x67E7" end="0x67E7"/>
<range start="0x67E9" end="0x67E9"/>
<range start="0x67EC" end="0x67EC"/>
<range start="0x67EE" end="0x67EF"/>
<range start="0x67F1" end="0x67F1"/>
<range start="0x67F3" end="0x67F5"/>
<range start="0x67FB" end="0x67FB"/>
<range start="0x67FE" end="0x67FF"/>
<range start="0x6802" end="0x6804"/>
<range start="0x6813" end="0x6813"/>
<range start="0x6816" end="0x6817"/>
<range start="0x681E" end="0x681E"/>
<range start="0x6821" end="0x6822"/>
<range start="0x6829" end="0x682B"/>
<range start="0x6832" end="0x6832"/>
<range start="0x6834" end="0x6834"/>
<range start="0x6838" end="0x6839"/>
<range start="0x683C" end="0x683D"/>
<range start="0x6840" end="0x6843"/>
<range start="0x6846" end="0x6846"/>
<range start="0x6848" end="0x6848"/>
<range start="0x684D" end="0x684E"/>
<range start="0x6850" end="0x6851"/>
<range start="0x6853" end="0x6854"/>
<range start="0x6859" end="0x6859"/>
<range start="0x685C" end="0x685D"/>
<range start="0x685F" end="0x685F"/>
<range start="0x6863" end="0x6863"/>
<range start="0x6867" end="0x6867"/>
<range start="0x6874" end="0x6874"/>
<range start="0x6876" end="0x6877"/>
<range start="0x687E" end="0x687F"/>
<range start="0x6881" end="0x6881"/>
<range start="0x6883" end="0x6883"/>
<range start="0x6885" end="0x6885"/>
<range start="0x688D" end="0x688D"/>
<range start="0x688F" end="0x688F"/>
<range start="0x6893" end="0x6894"/>
<range start="0x6897" end="0x6897"/>
<range start="0x689B" end="0x689B"/>
<range start="0x689D" end="0x689D"/>
<range start="0x689F" end="0x68A0"/>
<range start="0x68A2" end="0x68A2"/>
<range start="0x68A6" end="0x68A8"/>
<range start="0x68AD" end="0x68AD"/>
<range start="0x68AF" end="0x68B1"/>
<range start="0x68B3" end="0x68B3"/>
<range start="0x68B5" end="0x68B6"/>
<range start="0x68B9" end="0x68BA"/>
<range start="0x68BC" end="0x68BC"/>
<range start="0x68C4" end="0x68C4"/>
<range start="0x68C6" end="0x68C6"/>
<range start="0x68C9" end="0x68CB"/>
<range start="0x68CD" end="0x68CD"/>
<range start="0x68D2" end="0x68D2"/>
<range start="0x68D4" end="0x68D5"/>
<range start="0x68D7" end="0x68D8"/>
<range start="0x68DA" end="0x68DA"/>
<range start="0x68DF" end="0x68E1"/>
<range start="0x68E3" end="0x68E3"/>
<range start="0x68E7" end="0x68E7"/>
<range start="0x68EE" end="0x68EF"/>
<range start="0x68F2" end="0x68F2"/>
<range start="0x68F9" end="0x68FA"/>
<range start="0x6900" end="0x6901"/>
<range start="0x6904" end="0x6905"/>
<range start="0x6908" end="0x6908"/>
<range start="0x690B" end="0x690F"/>
<range start="0x6912" end="0x6912"/>
<range start="0x6919" end="0x691C"/>
<range start="0x6921" end="0x6923"/>
<range start="0x6925" end="0x6926"/>
<range start="0x6928" end="0x6928"/>
<range start="0x692A" end="0x692A"/>
<range start="0x6930" end="0x6930"/>
<range start="0x6934" end="0x6934"/>
<range start="0x6936" end="0x6936"/>
<range start="0x6939" end="0x6939"/>
<range start="0x693D" end="0x693D"/>
<range start="0x693F" end="0x693F"/>
<range start="0x694A" end="0x694A"/>
<range start="0x6953" end="0x6955"/>
<range start="0x6959" end="0x695A"/>
<range start="0x695C" end="0x695E"/>
<range start="0x6960" end="0x6962"/>
<range start="0x696A" end="0x696B"/>
<range start="0x696D" end="0x696F"/>
<range start="0x6973" end="0x6975"/>
<range start="0x6977" end="0x6979"/>
<range start="0x697C" end="0x697E"/>
<range start="0x6981" end="0x6982"/>
<range start="0x698A" end="0x698A"/>
<range start="0x698E" end="0x698E"/>
<range start="0x6991" end="0x6991"/>
<range start="0x6994" end="0x6995"/>
<range start="0x699B" end="0x699C"/>
<range start="0x69A0" end="0x69A0"/>
<range start="0x69A7" end="0x69A7"/>
<range start="0x69AE" end="0x69AE"/>
<range start="0x69B1" end="0x69B2"/>
<range start="0x69B4" end="0x69B4"/>
<range start="0x69BB" end="0x69BB"/>
<range start="0x69BE" end="0x69BF"/>
<range start="0x69C1" end="0x69C1"/>
<range start="0x69C3" end="0x69C3"/>
<range start="0x69C7" end="0x69C7"/>
<range start="0x69CA" end="0x69CE"/>
<range start="0x69D0" end="0x69D0"/>
<range start="0x69D3" end="0x69D3"/>
<range start="0x69D8" end="0x69D9"/>
<range start="0x69DD" end="0x69DE"/>
<range start="0x69E7" end="0x69E8"/>
<range start="0x69EB" end="0x69EB"/>
<range start="0x69ED" end="0x69ED"/>
<range start="0x69F2" end="0x69F2"/>
<range start="0x69F9" end="0x69F9"/>
<range start="0x69FB" end="0x69FB"/>
<range start="0x69FD" end="0x69FD"/>
<range start="0x69FF" end="0x69FF"/>
<range start="0x6A02" end="0x6A02"/>
<range start="0x6A05" end="0x6A05"/>
<range start="0x6A0A" end="0x6A0C"/>
<range start="0x6A12" end="0x6A14"/>
<range start="0x6A17" end="0x6A17"/>
<range start="0x6A19" end="0x6A19"/>
<range start="0x6A1B" end="0x6A1B"/>
<range start="0x6A1E" end="0x6A1F"/>
<range start="0x6A21" end="0x6A23"/>
<range start="0x6A29" end="0x6A2B"/>
<range start="0x6A2E" end="0x6A2E"/>
<range start="0x6A35" end="0x6A36"/>
<range start="0x6A38" end="0x6A3A"/>
<range start="0x6A3D" end="0x6A3D"/>
<range start="0x6A44" end="0x6A44"/>
<range start="0x6A47" end="0x6A48"/>
<range start="0x6A4B" end="0x6A4B"/>
<range start="0x6A58" end="0x6A59"/>
<range start="0x6A5F" end="0x6A5F"/>
<range start="0x6A61" end="0x6A62"/>
<range start="0x6A66" end="0x6A66"/>
<range start="0x6A72" end="0x6A72"/>
<range start="0x6A78" end="0x6A78"/>
<range start="0x6A7F" end="0x6A80"/>
<range start="0x6A84" end="0x6A84"/>
<range start="0x6A8D" end="0x6A8E"/>
<range start="0x6A90" end="0x6A90"/>
<range start="0x6A97" end="0x6A97"/>
<range start="0x6A9C" end="0x6A9C"/>
<range start="0x6AA0" end="0x6AA0"/>
<range start="0x6AA2" end="0x6AA3"/>
<range start="0x6AAA" end="0x6AAA"/>
<range start="0x6AAC" end="0x6AAC"/>
<range start="0x6AAE" end="0x6AAE"/>
<range start="0x6AB3" end="0x6AB3"/>
<range start="0x6AB8" end="0x6AB8"/>
<range start="0x6ABB" end="0x6ABB"/>
<range start="0x6AC1" end="0x6AC3"/>
<range start="0x6AD1" end="0x6AD1"/>
<range start="0x6AD3" end="0x6AD3"/>
<range start="0x6ADA" end="0x6ADB"/>
<range start="0x6ADE" end="0x6ADF"/>
<range start="0x6AE8" end="0x6AE8"/>
<range start="0x6AEA" end="0x6AEA"/>
<range start="0x6AFA" end="0x6AFB"/>
<range start="0x6B04" end="0x6B05"/>
<range start="0x6B0A" end="0x6B0A"/>
<range start="0x6B12" end="0x6B12"/>
<range start="0x6B16" end="0x6B16"/>
<range start="0x6B1D" end="0x6B1D"/>
<range start="0x6B1F" end="0x6B21"/>
<range start="0x6B23" end="0x6B23"/>
<range start="0x6B27" end="0x6B27"/>
<range start="0x6B32" end="0x6B32"/>
<range start="0x6B37" end="0x6B3A"/>
<range start="0x6B3D" end="0x6B3E"/>
<range start="0x6B43" end="0x6B43"/>
<range start="0x6B47" end="0x6B47"/>
<range start="0x6B49" end="0x6B49"/>
<range start="0x6B4C" end="0x6B4C"/>
<range start="0x6B4E" end="0x6B4E"/>
<range start="0x6B50" end="0x6B50"/>
<range start="0x6B53" end="0x6B54"/>
<range start="0x6B59" end="0x6B59"/>
<range start="0x6B5B" end="0x6B5B"/>
<range start="0x6B5F" end="0x6B5F"/>
<range start="0x6B61" end="0x6B64"/>
<range start="0x6B66" end="0x6B66"/>
<range start="0x6B69" end="0x6B6A"/>
<range start="0x6B6F" end="0x6B6F"/>
<range start="0x6B73" end="0x6B74"/>
<range start="0x6B78" end="0x6B79"/>
<range start="0x6B7B" end="0x6B7B"/>
<range start="0x6B7F" end="0x6B80"/>
<range start="0x6B83" end="0x6B84"/>
<range start="0x6B86" end="0x6B86"/>
<range start="0x6B89" end="0x6B8B"/>
<range start="0x6B8D" end="0x6B8D"/>
<range start="0x6B95" end="0x6B96"/>
<range start="0x6B98" end="0x6B98"/>
<range start="0x6B9E" end="0x6B9E"/>
<range start="0x6BA4" end="0x6BA4"/>
<range start="0x6BAA" end="0x6BAB"/>
<range start="0x6BAF" end="0x6BAF"/>
<range start="0x6BB1" end="0x6BB5"/>
<range start="0x6BB7" end="0x6BB7"/>
<range start="0x6BBA" end="0x6BBC"/>
<range start="0x6BBF" end="0x6BC0"/>
<range start="0x6BC5" end="0x6BC6"/>
<range start="0x6BCB" end="0x6BCB"/>
<range start="0x6BCD" end="0x6BCE"/>
<range start="0x6BD2" end="0x6BD4"/>
<range start="0x6BD8" end="0x6BD8"/>
<range start="0x6BDB" end="0x6BDB"/>
<range start="0x6BDF" end="0x6BDF"/>
<range start="0x6BEB" end="0x6BEC"/>
<range start="0x6BEF" end="0x6BEF"/>
<range start="0x6BF3" end="0x6BF3"/>
<range start="0x6C08" end="0x6C08"/>
<range start="0x6C0F" end="0x6C0F"/>
<range start="0x6C11" end="0x6C11"/>
<range start="0x6C13" end="0x6C14"/>
<range start="0x6C17" end="0x6C17"/>
<range start="0x6C1B" end="0x6C1B
gitextract_64v64ki7/
├── .gitattributes
├── .github/
│ ├── pull_request_template.md
│ └── workflows/
│ ├── android.yml
│ └── ci.yml
├── .gitmodules
├── LICENSE.md
├── License exceptions.md
├── README.md
├── desktop_version/
│ ├── .dockerignore
│ ├── .gitignore
│ ├── AppIcon.xcassets/
│ │ ├── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── CMakeLists.txt
│ ├── CONTRIBUTORS.txt
│ ├── Dockerfile
│ ├── Info.plist
│ ├── README.md
│ ├── TRANSLATORS.txt
│ ├── VVVVVV-android/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── build.gradle
│ │ │ ├── jni/
│ │ │ │ ├── Android.mk
│ │ │ │ ├── Application.mk
│ │ │ │ └── CMakeLists.txt
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── distractionware/
│ │ │ │ └── vvvvvv/
│ │ │ │ ├── BaseDirProvider.java
│ │ │ │ ├── FileSystemProvider.java
│ │ │ │ └── VVVVVV.java
│ │ │ └── res/
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ └── settings.gradle
│ ├── fixupMac.sh
│ ├── fonts/
│ │ ├── README.txt
│ │ ├── buttons_10x10.fontmeta
│ │ ├── buttons_12x12.fontmeta
│ │ ├── buttons_8x8.fontmeta
│ │ ├── font.fontmeta
│ │ ├── font_ar.fontmeta
│ │ ├── font_ja.fontmeta
│ │ ├── font_ko.fontmeta
│ │ ├── font_ko_license.txt
│ │ ├── font_sc.fontmeta
│ │ ├── font_sc_tc_license.txt
│ │ └── font_tc.fontmeta
│ ├── icon.rc
│ ├── lang/
│ │ ├── README-programmers.txt
│ │ ├── README-translators.txt
│ │ ├── ar/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ca/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── cy/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── de/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── en/
│ │ │ ├── cutscenes.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── eo/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es_419/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── es_AR/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── fa/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── fr/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ga/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── it/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ja/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ko/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── nl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pt_BR/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── pt_PT/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── ru/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── szl/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── tr/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── uk/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ ├── zh/
│ │ │ ├── cutscenes.xml
│ │ │ ├── graphics/
│ │ │ │ └── spritesmask.xml
│ │ │ ├── meta.xml
│ │ │ ├── numbers.xml
│ │ │ ├── roomnames.xml
│ │ │ ├── roomnames_special.xml
│ │ │ ├── strings.xml
│ │ │ └── strings_plural.xml
│ │ └── zh_TW/
│ │ ├── cutscenes.xml
│ │ ├── graphics/
│ │ │ └── spritesmask.xml
│ │ ├── meta.xml
│ │ ├── numbers.xml
│ │ ├── roomnames.xml
│ │ ├── roomnames_special.xml
│ │ ├── strings.xml
│ │ └── strings_plural.xml
│ ├── src/
│ │ ├── ActionSets.h
│ │ ├── Alloc.h
│ │ ├── BinaryBlob.cpp
│ │ ├── BinaryBlob.h
│ │ ├── BlockV.cpp
│ │ ├── BlockV.h
│ │ ├── ButtonGlyphs.cpp
│ │ ├── ButtonGlyphs.h
│ │ ├── CWrappers.cpp
│ │ ├── CWrappers.h
│ │ ├── Constants.h
│ │ ├── Credits.h
│ │ ├── CustomLevels.cpp
│ │ ├── CustomLevels.h
│ │ ├── DeferCallbacks.c
│ │ ├── DeferCallbacks.h
│ │ ├── Editor.cpp
│ │ ├── Editor.h
│ │ ├── Ent.cpp
│ │ ├── Ent.h
│ │ ├── Entity.cpp
│ │ ├── Entity.h
│ │ ├── Enums.h
│ │ ├── Exit.h
│ │ ├── FileSystemUtils.cpp
│ │ ├── FileSystemUtils.h
│ │ ├── Finalclass.cpp
│ │ ├── Finalclass.h
│ │ ├── Font.cpp
│ │ ├── Font.h
│ │ ├── FontBidi.cpp
│ │ ├── FontBidi.h
│ │ ├── GOGNetwork.c
│ │ ├── Game.cpp
│ │ ├── Game.h
│ │ ├── GlitchrunnerMode.c
│ │ ├── GlitchrunnerMode.h
│ │ ├── Graphics.cpp
│ │ ├── Graphics.h
│ │ ├── GraphicsResources.cpp
│ │ ├── GraphicsResources.h
│ │ ├── GraphicsUtil.cpp
│ │ ├── GraphicsUtil.h
│ │ ├── IMERender.cpp
│ │ ├── IMERender.h
│ │ ├── Input.cpp
│ │ ├── Input.h
│ │ ├── InterimVersion.h
│ │ ├── InterimVersion.in.c
│ │ ├── KeyPoll.cpp
│ │ ├── KeyPoll.h
│ │ ├── Labclass.cpp
│ │ ├── Labclass.h
│ │ ├── LevelDebugger.cpp
│ │ ├── LevelDebugger.h
│ │ ├── Localization.cpp
│ │ ├── Localization.h
│ │ ├── LocalizationMaint.cpp
│ │ ├── LocalizationMaint.h
│ │ ├── LocalizationStorage.cpp
│ │ ├── LocalizationStorage.h
│ │ ├── Logic.cpp
│ │ ├── Logic.h
│ │ ├── MakeAndPlay.h
│ │ ├── Map.cpp
│ │ ├── Map.h
│ │ ├── Maths.h
│ │ ├── Music.cpp
│ │ ├── Music.h
│ │ ├── Network.c
│ │ ├── Network.h
│ │ ├── Otherlevel.cpp
│ │ ├── Otherlevel.h
│ │ ├── ReleaseVersion.h
│ │ ├── Render.cpp
│ │ ├── Render.h
│ │ ├── RenderFixed.cpp
│ │ ├── RenderFixed.h
│ │ ├── RoomnameTranslator.cpp
│ │ ├── RoomnameTranslator.h
│ │ ├── SDL_uikit_main.c
│ │ ├── Screen.cpp
│ │ ├── Screen.h
│ │ ├── ScreenSettings.h
│ │ ├── Script.cpp
│ │ ├── Script.h
│ │ ├── Scripts.cpp
│ │ ├── Spacestation2.cpp
│ │ ├── Spacestation2.h
│ │ ├── SteamNetwork.c
│ │ ├── TerminalScripts.cpp
│ │ ├── Textbook.c
│ │ ├── Textbook.h
│ │ ├── Textbox.cpp
│ │ ├── Textbox.h
│ │ ├── ThirdPartyDeps.c
│ │ ├── Tower.cpp
│ │ ├── Tower.h
│ │ ├── TowerBG.h
│ │ ├── UTF8.c
│ │ ├── UTF8.h
│ │ ├── Unreachable.h
│ │ ├── Unused.h
│ │ ├── UtilityClass.cpp
│ │ ├── UtilityClass.h
│ │ ├── VFormat.c
│ │ ├── VFormat.h
│ │ ├── Vlogging.c
│ │ ├── Vlogging.h
│ │ ├── WarpClass.cpp
│ │ ├── WarpClass.h
│ │ ├── XMLUtils.cpp
│ │ ├── XMLUtils.h
│ │ ├── Xoshiro.c
│ │ ├── Xoshiro.h
│ │ ├── lodepng_wrapper.c
│ │ ├── main.cpp
│ │ ├── preloader.cpp
│ │ └── preloader.h
│ └── version.cmake
├── mobile_version/
│ ├── application.xml
│ ├── data/
│ │ ├── c64.fnt
│ │ └── vvvvvv_graphics.xml
│ ├── levels/
│ │ ├── eurogamer fork/
│ │ │ └── eurogamerotherlevelclass.as
│ │ ├── finalclass.as
│ │ ├── labclass.as
│ │ ├── newgameclass.as
│ │ ├── otherlevelclass.as
│ │ ├── spacestation2class.as
│ │ ├── towerclass.as
│ │ └── warpclass.as
│ ├── readme.MD
│ └── src/
│ ├── EditorDataclass.as
│ ├── EmbeddedAssets.as
│ ├── LevelMetaData.as
│ ├── Load.as
│ ├── Main.as
│ ├── bigroom/
│ │ └── input/
│ │ └── KeyPoll.as
│ ├── blockclass.as
│ ├── com/
│ │ └── adobe/
│ │ └── utils/
│ │ └── AGALMiniAssembler.as
│ ├── device.as
│ ├── dwgraphicsclass.as
│ ├── edentitiesclass.as
│ ├── editor.as
│ ├── edlevelclass.as
│ ├── entclass.as
│ ├── entityclass.as
│ ├── gameclass.as
│ ├── helpclass.as
│ ├── includes/
│ │ ├── input.as
│ │ ├── logic.as
│ │ ├── render.as
│ │ ├── scripts.as
│ │ └── terminalscripts.as
│ ├── mapclass.as
│ ├── musicclass.as
│ ├── platformclass.as
│ ├── saveclass.as
│ ├── scoreclass.as
│ ├── scriptclass.as
│ ├── starling/
│ │ ├── animation/
│ │ │ ├── DelayedCall.as
│ │ │ ├── IAnimatable.as
│ │ │ ├── Juggler.as
│ │ │ ├── Transitions.as
│ │ │ └── Tween.as
│ │ ├── assets/
│ │ │ ├── AssetFactory.as
│ │ │ ├── AssetFactoryHelper.as
│ │ │ ├── AssetManager.as
│ │ │ ├── AssetReference.as
│ │ │ ├── AssetType.as
│ │ │ ├── AtfTextureFactory.as
│ │ │ ├── BitmapTextureFactory.as
│ │ │ ├── ByteArrayFactory.as
│ │ │ ├── DataLoader.as
│ │ │ ├── JsonFactory.as
│ │ │ ├── SoundFactory.as
│ │ │ └── XmlFactory.as
│ │ ├── core/
│ │ │ ├── Starling.as
│ │ │ ├── StatsDisplay.as
│ │ │ └── starling_internal.as
│ │ ├── display/
│ │ │ ├── BlendMode.as
│ │ │ ├── Button.as
│ │ │ ├── ButtonState.as
│ │ │ ├── Canvas.as
│ │ │ ├── DisplayObject.as
│ │ │ ├── DisplayObjectContainer.as
│ │ │ ├── Image.as
│ │ │ ├── Mesh.as
│ │ │ ├── MeshBatch.as
│ │ │ ├── MovieClip.as
│ │ │ ├── Quad.as
│ │ │ ├── Sprite.as
│ │ │ ├── Sprite3D.as
│ │ │ └── Stage.as
│ │ ├── errors/
│ │ │ ├── AbstractClassError.as
│ │ │ ├── AbstractMethodError.as
│ │ │ ├── MissingContextError.as
│ │ │ └── NotSupportedError.as
│ │ ├── events/
│ │ │ ├── EnterFrameEvent.as
│ │ │ ├── Event.as
│ │ │ ├── EventDispatcher.as
│ │ │ ├── KeyboardEvent.as
│ │ │ ├── ResizeEvent.as
│ │ │ ├── Touch.as
│ │ │ ├── TouchEvent.as
│ │ │ ├── TouchMarker.as
│ │ │ ├── TouchPhase.as
│ │ │ └── TouchProcessor.as
│ │ ├── filters/
│ │ │ ├── BlurFilter.as
│ │ │ ├── ColorMatrixFilter.as
│ │ │ ├── CompositeFilter.as
│ │ │ ├── DisplacementMapFilter.as
│ │ │ ├── DropShadowFilter.as
│ │ │ ├── FilterChain.as
│ │ │ ├── FilterHelper.as
│ │ │ ├── FragmentFilter.as
│ │ │ ├── GlowFilter.as
│ │ │ └── IFilterHelper.as
│ │ ├── geom/
│ │ │ └── Polygon.as
│ │ ├── rendering/
│ │ │ ├── BatchProcessor.as
│ │ │ ├── BatchToken.as
│ │ │ ├── Effect.as
│ │ │ ├── FilterEffect.as
│ │ │ ├── IndexData.as
│ │ │ ├── MeshEffect.as
│ │ │ ├── Painter.as
│ │ │ ├── Program.as
│ │ │ ├── RenderState.as
│ │ │ ├── VertexData.as
│ │ │ ├── VertexDataAttribute.as
│ │ │ └── VertexDataFormat.as
│ │ ├── styles/
│ │ │ ├── DistanceFieldStyle.as
│ │ │ └── MeshStyle.as
│ │ ├── text/
│ │ │ ├── BitmapChar.as
│ │ │ ├── BitmapFont.as
│ │ │ ├── ITextCompositor.as
│ │ │ ├── MiniBitmapFont.as
│ │ │ ├── TextField.as
│ │ │ ├── TextFieldAutoSize.as
│ │ │ ├── TextFormat.as
│ │ │ ├── TextOptions.as
│ │ │ └── TrueTypeCompositor.as
│ │ ├── textures/
│ │ │ ├── AtfData.as
│ │ │ ├── ConcretePotTexture.as
│ │ │ ├── ConcreteRectangleTexture.as
│ │ │ ├── ConcreteTexture.as
│ │ │ ├── ConcreteVideoTexture.as
│ │ │ ├── RenderTexture.as
│ │ │ ├── SubTexture.as
│ │ │ ├── Texture.as
│ │ │ ├── TextureAtlas.as
│ │ │ ├── TextureOptions.as
│ │ │ └── TextureSmoothing.as
│ │ └── utils/
│ │ ├── Align.as
│ │ ├── AssetManager.as
│ │ ├── Color.as
│ │ ├── MathUtil.as
│ │ ├── MatrixUtil.as
│ │ ├── MeshSubset.as
│ │ ├── MeshUtil.as
│ │ ├── Padding.as
│ │ ├── Pool.as
│ │ ├── RectangleUtil.as
│ │ ├── RenderUtil.as
│ │ ├── ScaleMode.as
│ │ ├── StringUtil.as
│ │ ├── SystemUtil.as
│ │ ├── deg2rad.as
│ │ ├── execute.as
│ │ └── rad2deg.as
│ ├── textboxclass.as
│ └── tmap.as
└── tools/
├── editors/
│ ├── Final Level Editor/
│ │ ├── imports/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ └── intermission/
│ │ │ ├── x41y56.txt
│ │ │ ├── x42y56.txt
│ │ │ ├── x43y56.txt
│ │ │ ├── x44y56.txt
│ │ │ ├── x45y56.txt
│ │ │ ├── x46y56.txt
│ │ │ ├── x47y56.txt
│ │ │ ├── x48y56.txt
│ │ │ ├── x49y56.txt
│ │ │ ├── x50y56.txt
│ │ │ ├── x51y56.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x53y56.txt
│ │ │ └── x54y56.txt
│ │ ├── main.cpp
│ │ ├── maps/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ └── intermission/
│ │ │ ├── x41y56.txt
│ │ │ ├── x42y56.txt
│ │ │ ├── x43y56.txt
│ │ │ ├── x44y56.txt
│ │ │ ├── x45y56.txt
│ │ │ ├── x46y56.txt
│ │ │ ├── x47y56.txt
│ │ │ ├── x48y56.txt
│ │ │ ├── x49y56.txt
│ │ │ ├── x50y56.txt
│ │ │ ├── x51y56.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x53y56.txt
│ │ │ └── x54y56.txt
│ │ ├── tower1/
│ │ │ ├── imports/
│ │ │ │ ├── tower (background).txt
│ │ │ │ ├── tower (foreground).txt
│ │ │ │ └── tower.txt
│ │ │ ├── main.cpp
│ │ │ └── maps/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ └── tower2/
│ │ ├── imports/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ ├── tower (background).txt
│ │ ├── tower (foreground).txt
│ │ └── tower.txt
│ ├── Lab Map Editor/
│ │ ├── imports/
│ │ │ ├── lab/
│ │ │ │ ├── rx50y50.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── otherlevel/
│ │ │ │ ├── x1y1.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ └── x50y50.txt
│ │ │ └── spacestation/
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ └── x53y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── lab/
│ │ ├── x48y52.txt
│ │ ├── x48y53.txt
│ │ ├── x49y51.txt
│ │ ├── x49y52.txt
│ │ ├── x49y53.txt
│ │ ├── x49y54.txt
│ │ ├── x49y55.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x50y52.txt
│ │ ├── x50y53.txt
│ │ ├── x50y54.txt
│ │ ├── x50y55.txt
│ │ ├── x50y58.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x51y53.txt
│ │ ├── x51y54.txt
│ │ ├── x51y55.txt
│ │ ├── x51y58.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x52y53.txt
│ │ ├── x52y54.txt
│ │ ├── x52y55.txt
│ │ ├── x52y56.txt
│ │ ├── x52y57.txt
│ │ ├── x52y58.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y54.txt
│ │ ├── x53y55.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y54.txt
│ │ ├── x54y55.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ ├── x55y52.txt
│ │ ├── x55y53.txt
│ │ └── x55y54.txt
│ ├── Level Mapping Editor/
│ │ ├── import.txt
│ │ ├── lab/
│ │ │ ├── import.txt
│ │ │ └── output.txt
│ │ ├── main.cpp
│ │ ├── output.txt
│ │ ├── space station/
│ │ │ ├── import.txt
│ │ │ └── output.txt
│ │ └── warpzone/
│ │ ├── import.txt
│ │ └── output.txt
│ ├── Original Space Station Map Editor/
│ │ ├── imports/
│ │ │ └── spacestation/
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ └── x53y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── spacestation/
│ │ ├── x49y48.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x49y51.txt
│ │ ├── x49y52.txt
│ │ ├── x50y48.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x50y52.txt
│ │ ├── x51y47.txt
│ │ ├── x51y48.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x51y53.txt
│ │ ├── x51y54.txt
│ │ ├── x52y48.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y47.txt
│ │ ├── x53y48.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ └── x53y52.txt
│ ├── Other Map Editor/
│ │ ├── imports/
│ │ │ └── otherlevel/
│ │ │ ├── x1y1.txt
│ │ │ ├── x46y49.txt
│ │ │ ├── x47y49.txt
│ │ │ ├── x48y49.txt
│ │ │ ├── x48y50.txt
│ │ │ ├── x48y51.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y50.txt
│ │ │ └── x51y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── otherlevel/
│ │ ├── x1y1.txt
│ │ ├── x46y49.txt
│ │ ├── x47y49.txt
│ │ ├── x48y49.txt
│ │ ├── x48y50.txt
│ │ ├── x48y51.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x50y50.txt
│ │ └── x51y50.txt
│ ├── Screenshot Outputting Map Editor/
│ │ ├── imports/
│ │ │ ├── final/
│ │ │ │ ├── x41y51.txt
│ │ │ │ ├── x41y52.txt
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y51.txt
│ │ │ │ ├── x42y52.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y51.txt
│ │ │ │ ├── x43y52.txt
│ │ │ │ ├── x44y51.txt
│ │ │ │ ├── x44y52.txt
│ │ │ │ ├── x45y51.txt
│ │ │ │ ├── x45y52.txt
│ │ │ │ ├── x46y51.txt
│ │ │ │ ├── x46y54.txt
│ │ │ │ ├── x47y51.txt
│ │ │ │ ├── x47y52.txt
│ │ │ │ ├── x47y54.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y54.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y52.txt
│ │ │ │ ├── x53y53.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y52.txt
│ │ │ │ └── x54y53.txt
│ │ │ ├── intermission/
│ │ │ │ ├── x41y56.txt
│ │ │ │ ├── x42y56.txt
│ │ │ │ ├── x43y56.txt
│ │ │ │ ├── x44y56.txt
│ │ │ │ ├── x45y56.txt
│ │ │ │ ├── x46y56.txt
│ │ │ │ ├── x47y56.txt
│ │ │ │ ├── x48y56.txt
│ │ │ │ ├── x49y56.txt
│ │ │ │ ├── x50y56.txt
│ │ │ │ ├── x51y56.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x53y56.txt
│ │ │ │ └── x54y56.txt
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── otherlevel/
│ │ │ │ ├── x1y1.txt
│ │ │ │ ├── x46y49.txt
│ │ │ │ ├── x47y49.txt
│ │ │ │ ├── x48y49.txt
│ │ │ │ ├── x48y50.txt
│ │ │ │ ├── x48y51.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x51y50.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── Space Station 2 Editor/
│ │ ├── imports/
│ │ │ └── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── spacestation2/
│ │ ├── x48y41.txt
│ │ ├── x48y42.txt
│ │ ├── x48y43.txt
│ │ ├── x49y41.txt
│ │ ├── x49y42.txt
│ │ ├── x49y43.txt
│ │ ├── x49y47.txt
│ │ ├── x49y48.txt
│ │ ├── x49y49.txt
│ │ ├── x49y50.txt
│ │ ├── x50y39.txt
│ │ ├── x50y40.txt
│ │ ├── x50y41.txt
│ │ ├── x50y42.txt
│ │ ├── x50y43.txt
│ │ ├── x50y47.txt
│ │ ├── x50y48.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y39.txt
│ │ ├── x51y40.txt
│ │ ├── x51y41.txt
│ │ ├── x51y42.txt
│ │ ├── x51y43.txt
│ │ ├── x51y44.txt
│ │ ├── x51y45.txt
│ │ ├── x51y46.txt
│ │ ├── x51y47.txt
│ │ ├── x51y48.txt
│ │ ├── x51y49.txt
│ │ ├── x52y39.txt
│ │ ├── x52y40.txt
│ │ ├── x52y41.txt
│ │ ├── x52y42.txt
│ │ ├── x52y43.txt
│ │ ├── x52y44.txt
│ │ ├── x52y45.txt
│ │ ├── x52y46.txt
│ │ ├── x52y47.txt
│ │ ├── x52y48.txt
│ │ ├── x52y49.txt
│ │ ├── x53y39.txt
│ │ ├── x53y40.txt
│ │ ├── x53y41.txt
│ │ ├── x53y42.txt
│ │ ├── x53y43.txt
│ │ ├── x53y44.txt
│ │ ├── x53y45.txt
│ │ ├── x53y46.txt
│ │ ├── x53y47.txt
│ │ ├── x53y48.txt
│ │ ├── x53y49.txt
│ │ ├── x54y42.txt
│ │ ├── x54y43.txt
│ │ ├── x54y44.txt
│ │ ├── x54y45.txt
│ │ ├── x54y46.txt
│ │ ├── x54y47.txt
│ │ ├── x54y48.txt
│ │ ├── x54y49.txt
│ │ ├── x55y43.txt
│ │ ├── x55y44.txt
│ │ ├── x55y45.txt
│ │ ├── x55y46.txt
│ │ ├── x55y47.txt
│ │ ├── x56y43.txt
│ │ ├── x56y44.txt
│ │ ├── x56y45.txt
│ │ ├── x56y46.txt
│ │ ├── x56y47.txt
│ │ ├── x56y48.txt
│ │ ├── x56y49.txt
│ │ └── x56y50.txt
│ ├── Tower Map Editor/
│ │ ├── imports/
│ │ │ ├── tower (background).txt
│ │ │ ├── tower (foreground).txt
│ │ │ └── tower.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ ├── tower (background).txt
│ │ ├── tower (foreground).txt
│ │ └── tower.txt
│ ├── Towerhallways Editor/
│ │ ├── imports/
│ │ │ └── towerhallway/
│ │ │ ├── x50y50.txt
│ │ │ ├── x52y50.txt
│ │ │ └── x53y50.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── towerhallway/
│ │ ├── x50y50.txt
│ │ ├── x52y50.txt
│ │ └── x53y50.txt
│ ├── Warp Zone Map Editor/
│ │ ├── imports/
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── main.cpp
│ │ └── maps/
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x50y51.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── World Map Fork (for Eurogamer)/
│ │ ├── areamap.txt
│ │ ├── areamapin.txt
│ │ ├── backup/
│ │ │ └── imports/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y101.txt
│ │ │ │ ├── x110y102.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y100.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x111y118.txt
│ │ │ │ ├── x111y119.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y118.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ └── x119y113.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── imports/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y111.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x100y117.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y111.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y106.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x105y115.txt
│ │ │ │ ├── x105y118.txt
│ │ │ │ ├── x105y119.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x106y115.txt
│ │ │ │ ├── x106y118.txt
│ │ │ │ ├── x106y119.txt
│ │ │ │ ├── x107y101.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y110.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y112.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y106.txt
│ │ │ │ ├── x108y107.txt
│ │ │ │ ├── x108y108.txt
│ │ │ │ ├── x108y110.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y101.txt
│ │ │ │ ├── x110y102.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y108.txt
│ │ │ │ ├── x110y109.txt
│ │ │ │ ├── x110y110.txt
│ │ │ │ ├── x110y111.txt
│ │ │ │ ├── x110y112.txt
│ │ │ │ ├── x110y113.txt
│ │ │ │ ├── x110y114.txt
│ │ │ │ ├── x110y115.txt
│ │ │ │ ├── x110y116.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y100.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y108.txt
│ │ │ │ ├── x111y109.txt
│ │ │ │ ├── x111y110.txt
│ │ │ │ ├── x111y116.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x111y118.txt
│ │ │ │ ├── x111y119.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y108.txt
│ │ │ │ ├── x112y109.txt
│ │ │ │ ├── x112y110.txt
│ │ │ │ ├── x112y116.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y118.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y114.txt
│ │ │ │ ├── x113y115.txt
│ │ │ │ ├── x113y116.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y114.txt
│ │ │ │ ├── x114y116.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x114y118.txt
│ │ │ │ ├── x114y119.txt
│ │ │ │ ├── x115y114.txt
│ │ │ │ ├── x115y116.txt
│ │ │ │ ├── x115y117.txt
│ │ │ │ ├── x115y118.txt
│ │ │ │ ├── x115y119.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x116y114.txt
│ │ │ │ ├── x116y117.txt
│ │ │ │ ├── x116y119.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x117y112.txt
│ │ │ │ ├── x117y113.txt
│ │ │ │ ├── x117y114.txt
│ │ │ │ ├── x117y115.txt
│ │ │ │ ├── x117y116.txt
│ │ │ │ ├── x117y117.txt
│ │ │ │ ├── x117y118.txt
│ │ │ │ ├── x117y119.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x118y115.txt
│ │ │ │ ├── x118y117.txt
│ │ │ │ ├── x118y119.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y111.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ ├── x119y113.txt
│ │ │ │ ├── x119y114.txt
│ │ │ │ ├── x119y115.txt
│ │ │ │ ├── x119y116.txt
│ │ │ │ ├── x119y117.txt
│ │ │ │ ├── x119y118.txt
│ │ │ │ └── x119y119.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── input.hpp
│ │ ├── logic.hpp
│ │ ├── main.cpp
│ │ ├── map.hpp
│ │ ├── maps/
│ │ │ ├── lab/
│ │ │ │ ├── x48y52.txt
│ │ │ │ ├── x48y53.txt
│ │ │ │ ├── x49y51.txt
│ │ │ │ ├── x49y52.txt
│ │ │ │ ├── x49y53.txt
│ │ │ │ ├── x49y54.txt
│ │ │ │ ├── x49y55.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x50y51.txt
│ │ │ │ ├── x50y52.txt
│ │ │ │ ├── x50y53.txt
│ │ │ │ ├── x50y54.txt
│ │ │ │ ├── x50y55.txt
│ │ │ │ ├── x50y58.txt
│ │ │ │ ├── x51y50.txt
│ │ │ │ ├── x51y51.txt
│ │ │ │ ├── x51y52.txt
│ │ │ │ ├── x51y53.txt
│ │ │ │ ├── x51y54.txt
│ │ │ │ ├── x51y55.txt
│ │ │ │ ├── x51y58.txt
│ │ │ │ ├── x52y50.txt
│ │ │ │ ├── x52y51.txt
│ │ │ │ ├── x52y52.txt
│ │ │ │ ├── x52y53.txt
│ │ │ │ ├── x52y54.txt
│ │ │ │ ├── x52y55.txt
│ │ │ │ ├── x52y56.txt
│ │ │ │ ├── x52y57.txt
│ │ │ │ ├── x52y58.txt
│ │ │ │ ├── x53y50.txt
│ │ │ │ ├── x53y51.txt
│ │ │ │ ├── x53y54.txt
│ │ │ │ ├── x53y55.txt
│ │ │ │ ├── x54y50.txt
│ │ │ │ ├── x54y51.txt
│ │ │ │ ├── x54y54.txt
│ │ │ │ ├── x54y55.txt
│ │ │ │ ├── x55y49.txt
│ │ │ │ ├── x55y50.txt
│ │ │ │ ├── x55y51.txt
│ │ │ │ ├── x55y52.txt
│ │ │ │ ├── x55y53.txt
│ │ │ │ └── x55y54.txt
│ │ │ ├── other/
│ │ │ │ ├── x100y100.txt
│ │ │ │ ├── x100y101.txt
│ │ │ │ ├── x100y102.txt
│ │ │ │ ├── x100y103.txt
│ │ │ │ ├── x100y104.txt
│ │ │ │ ├── x100y105.txt
│ │ │ │ ├── x100y106.txt
│ │ │ │ ├── x100y107.txt
│ │ │ │ ├── x100y108.txt
│ │ │ │ ├── x100y109.txt
│ │ │ │ ├── x100y110.txt
│ │ │ │ ├── x100y111.txt
│ │ │ │ ├── x100y112.txt
│ │ │ │ ├── x100y113.txt
│ │ │ │ ├── x100y114.txt
│ │ │ │ ├── x100y115.txt
│ │ │ │ ├── x100y116.txt
│ │ │ │ ├── x100y117.txt
│ │ │ │ ├── x101y102.txt
│ │ │ │ ├── x101y103.txt
│ │ │ │ ├── x101y104.txt
│ │ │ │ ├── x101y105.txt
│ │ │ │ ├── x101y106.txt
│ │ │ │ ├── x101y108.txt
│ │ │ │ ├── x101y109.txt
│ │ │ │ ├── x101y110.txt
│ │ │ │ ├── x101y111.txt
│ │ │ │ ├── x101y112.txt
│ │ │ │ ├── x101y113.txt
│ │ │ │ ├── x101y114.txt
│ │ │ │ ├── x101y115.txt
│ │ │ │ ├── x101y116.txt
│ │ │ │ ├── x102y102.txt
│ │ │ │ ├── x102y103.txt
│ │ │ │ ├── x102y105.txt
│ │ │ │ ├── x102y106.txt
│ │ │ │ ├── x102y108.txt
│ │ │ │ ├── x102y109.txt
│ │ │ │ ├── x102y110.txt
│ │ │ │ ├── x102y111.txt
│ │ │ │ ├── x102y112.txt
│ │ │ │ ├── x102y113.txt
│ │ │ │ ├── x102y114.txt
│ │ │ │ ├── x102y115.txt
│ │ │ │ ├── x103y102.txt
│ │ │ │ ├── x103y103.txt
│ │ │ │ ├── x103y105.txt
│ │ │ │ ├── x103y106.txt
│ │ │ │ ├── x103y107.txt
│ │ │ │ ├── x103y108.txt
│ │ │ │ ├── x103y109.txt
│ │ │ │ ├── x103y110.txt
│ │ │ │ ├── x103y111.txt
│ │ │ │ ├── x103y112.txt
│ │ │ │ ├── x103y113.txt
│ │ │ │ ├── x103y115.txt
│ │ │ │ ├── x104y105.txt
│ │ │ │ ├── x104y106.txt
│ │ │ │ ├── x104y107.txt
│ │ │ │ ├── x104y109.txt
│ │ │ │ ├── x104y110.txt
│ │ │ │ ├── x104y111.txt
│ │ │ │ ├── x104y112.txt
│ │ │ │ ├── x104y113.txt
│ │ │ │ ├── x104y114.txt
│ │ │ │ ├── x104y115.txt
│ │ │ │ ├── x105y102.txt
│ │ │ │ ├── x105y103.txt
│ │ │ │ ├── x105y104.txt
│ │ │ │ ├── x105y105.txt
│ │ │ │ ├── x105y106.txt
│ │ │ │ ├── x105y107.txt
│ │ │ │ ├── x105y108.txt
│ │ │ │ ├── x105y109.txt
│ │ │ │ ├── x105y110.txt
│ │ │ │ ├── x105y111.txt
│ │ │ │ ├── x105y112.txt
│ │ │ │ ├── x105y113.txt
│ │ │ │ ├── x105y114.txt
│ │ │ │ ├── x105y115.txt
│ │ │ │ ├── x105y118.txt
│ │ │ │ ├── x105y119.txt
│ │ │ │ ├── x106y102.txt
│ │ │ │ ├── x106y104.txt
│ │ │ │ ├── x106y105.txt
│ │ │ │ ├── x106y106.txt
│ │ │ │ ├── x106y107.txt
│ │ │ │ ├── x106y108.txt
│ │ │ │ ├── x106y109.txt
│ │ │ │ ├── x106y110.txt
│ │ │ │ ├── x106y111.txt
│ │ │ │ ├── x106y112.txt
│ │ │ │ ├── x106y113.txt
│ │ │ │ ├── x106y114.txt
│ │ │ │ ├── x106y115.txt
│ │ │ │ ├── x106y118.txt
│ │ │ │ ├── x106y119.txt
│ │ │ │ ├── x107y101.txt
│ │ │ │ ├── x107y102.txt
│ │ │ │ ├── x107y103.txt
│ │ │ │ ├── x107y104.txt
│ │ │ │ ├── x107y105.txt
│ │ │ │ ├── x107y106.txt
│ │ │ │ ├── x107y107.txt
│ │ │ │ ├── x107y108.txt
│ │ │ │ ├── x107y109.txt
│ │ │ │ ├── x107y110.txt
│ │ │ │ ├── x107y111.txt
│ │ │ │ ├── x107y112.txt
│ │ │ │ ├── x107y114.txt
│ │ │ │ ├── x108y100.txt
│ │ │ │ ├── x108y101.txt
│ │ │ │ ├── x108y102.txt
│ │ │ │ ├── x108y103.txt
│ │ │ │ ├── x108y104.txt
│ │ │ │ ├── x108y105.txt
│ │ │ │ ├── x108y106.txt
│ │ │ │ ├── x108y107.txt
│ │ │ │ ├── x108y108.txt
│ │ │ │ ├── x108y110.txt
│ │ │ │ ├── x108y111.txt
│ │ │ │ ├── x108y112.txt
│ │ │ │ ├── x108y113.txt
│ │ │ │ ├── x108y114.txt
│ │ │ │ ├── x108y115.txt
│ │ │ │ ├── x108y116.txt
│ │ │ │ ├── x108y117.txt
│ │ │ │ ├── x108y118.txt
│ │ │ │ ├── x108y119.txt
│ │ │ │ ├── x110y100.txt
│ │ │ │ ├── x110y103.txt
│ │ │ │ ├── x110y108.txt
│ │ │ │ ├── x110y109.txt
│ │ │ │ ├── x110y110.txt
│ │ │ │ ├── x110y111.txt
│ │ │ │ ├── x110y112.txt
│ │ │ │ ├── x110y113.txt
│ │ │ │ ├── x110y114.txt
│ │ │ │ ├── x110y115.txt
│ │ │ │ ├── x110y116.txt
│ │ │ │ ├── x110y117.txt
│ │ │ │ ├── x110y118.txt
│ │ │ │ ├── x110y119.txt
│ │ │ │ ├── x111y101.txt
│ │ │ │ ├── x111y102.txt
│ │ │ │ ├── x111y103.txt
│ │ │ │ ├── x111y108.txt
│ │ │ │ ├── x111y109.txt
│ │ │ │ ├── x111y110.txt
│ │ │ │ ├── x111y116.txt
│ │ │ │ ├── x111y117.txt
│ │ │ │ ├── x112y100.txt
│ │ │ │ ├── x112y101.txt
│ │ │ │ ├── x112y102.txt
│ │ │ │ ├── x112y108.txt
│ │ │ │ ├── x112y109.txt
│ │ │ │ ├── x112y110.txt
│ │ │ │ ├── x112y116.txt
│ │ │ │ ├── x112y117.txt
│ │ │ │ ├── x112y119.txt
│ │ │ │ ├── x113y101.txt
│ │ │ │ ├── x113y102.txt
│ │ │ │ ├── x113y114.txt
│ │ │ │ ├── x113y115.txt
│ │ │ │ ├── x113y116.txt
│ │ │ │ ├── x113y117.txt
│ │ │ │ ├── x113y118.txt
│ │ │ │ ├── x113y119.txt
│ │ │ │ ├── x114y114.txt
│ │ │ │ ├── x114y116.txt
│ │ │ │ ├── x114y117.txt
│ │ │ │ ├── x114y118.txt
│ │ │ │ ├── x114y119.txt
│ │ │ │ ├── x115y114.txt
│ │ │ │ ├── x115y116.txt
│ │ │ │ ├── x115y117.txt
│ │ │ │ ├── x115y118.txt
│ │ │ │ ├── x115y119.txt
│ │ │ │ ├── x116y104.txt
│ │ │ │ ├── x116y114.txt
│ │ │ │ ├── x116y117.txt
│ │ │ │ ├── x116y119.txt
│ │ │ │ ├── x117y104.txt
│ │ │ │ ├── x117y105.txt
│ │ │ │ ├── x117y112.txt
│ │ │ │ ├── x117y113.txt
│ │ │ │ ├── x117y114.txt
│ │ │ │ ├── x117y115.txt
│ │ │ │ ├── x117y116.txt
│ │ │ │ ├── x117y117.txt
│ │ │ │ ├── x117y118.txt
│ │ │ │ ├── x117y119.txt
│ │ │ │ ├── x118y104.txt
│ │ │ │ ├── x118y105.txt
│ │ │ │ ├── x118y115.txt
│ │ │ │ ├── x118y117.txt
│ │ │ │ ├── x118y119.txt
│ │ │ │ ├── x119y104.txt
│ │ │ │ ├── x119y105.txt
│ │ │ │ ├── x119y109.txt
│ │ │ │ ├── x119y110.txt
│ │ │ │ ├── x119y111.txt
│ │ │ │ ├── x119y112.txt
│ │ │ │ ├── x119y113.txt
│ │ │ │ ├── x119y114.txt
│ │ │ │ ├── x119y115.txt
│ │ │ │ ├── x119y116.txt
│ │ │ │ ├── x119y117.txt
│ │ │ │ ├── x119y118.txt
│ │ │ │ └── x119y119.txt
│ │ │ ├── spacestation2/
│ │ │ │ ├── x48y41.txt
│ │ │ │ ├── x48y42.txt
│ │ │ │ ├── x48y43.txt
│ │ │ │ ├── x49y41.txt
│ │ │ │ ├── x49y42.txt
│ │ │ │ ├── x49y43.txt
│ │ │ │ ├── x49y47.txt
│ │ │ │ ├── x49y48.txt
│ │ │ │ ├── x49y49.txt
│ │ │ │ ├── x49y50.txt
│ │ │ │ ├── x50y39.txt
│ │ │ │ ├── x50y40.txt
│ │ │ │ ├── x50y41.txt
│ │ │ │ ├── x50y42.txt
│ │ │ │ ├── x50y43.txt
│ │ │ │ ├── x50y47.txt
│ │ │ │ ├── x50y48.txt
│ │ │ │ ├── x50y49.txt
│ │ │ │ ├── x50y50.txt
│ │ │ │ ├── x51y39.txt
│ │ │ │ ├── x51y40.txt
│ │ │ │ ├── x51y41.txt
│ │ │ │ ├── x51y42.txt
│ │ │ │ ├── x51y43.txt
│ │ │ │ ├── x51y44.txt
│ │ │ │ ├── x51y45.txt
│ │ │ │ ├── x51y46.txt
│ │ │ │ ├── x51y47.txt
│ │ │ │ ├── x51y48.txt
│ │ │ │ ├── x51y49.txt
│ │ │ │ ├── x52y39.txt
│ │ │ │ ├── x52y40.txt
│ │ │ │ ├── x52y41.txt
│ │ │ │ ├── x52y42.txt
│ │ │ │ ├── x52y43.txt
│ │ │ │ ├── x52y44.txt
│ │ │ │ ├── x52y45.txt
│ │ │ │ ├── x52y46.txt
│ │ │ │ ├── x52y47.txt
│ │ │ │ ├── x52y48.txt
│ │ │ │ ├── x52y49.txt
│ │ │ │ ├── x53y39.txt
│ │ │ │ ├── x53y40.txt
│ │ │ │ ├── x53y41.txt
│ │ │ │ ├── x53y42.txt
│ │ │ │ ├── x53y43.txt
│ │ │ │ ├── x53y44.txt
│ │ │ │ ├── x53y45.txt
│ │ │ │ ├── x53y46.txt
│ │ │ │ ├── x53y47.txt
│ │ │ │ ├── x53y48.txt
│ │ │ │ ├── x53y49.txt
│ │ │ │ ├── x54y42.txt
│ │ │ │ ├── x54y43.txt
│ │ │ │ ├── x54y44.txt
│ │ │ │ ├── x54y45.txt
│ │ │ │ ├── x54y46.txt
│ │ │ │ ├── x54y47.txt
│ │ │ │ ├── x54y48.txt
│ │ │ │ ├── x54y49.txt
│ │ │ │ ├── x55y43.txt
│ │ │ │ ├── x55y44.txt
│ │ │ │ ├── x55y45.txt
│ │ │ │ ├── x55y46.txt
│ │ │ │ ├── x55y47.txt
│ │ │ │ ├── x56y43.txt
│ │ │ │ ├── x56y44.txt
│ │ │ │ ├── x56y45.txt
│ │ │ │ ├── x56y46.txt
│ │ │ │ ├── x56y47.txt
│ │ │ │ ├── x56y48.txt
│ │ │ │ ├── x56y49.txt
│ │ │ │ └── x56y50.txt
│ │ │ └── warp/
│ │ │ ├── old/
│ │ │ │ ├── x50y50.txt
│ │ │ │ └── x54y50.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y52.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y52.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ └── x55y52.txt
│ │ ├── misc.hpp
│ │ ├── overworld.txt
│ │ └── render.hpp
│ └── World Mapping Editor/
│ ├── areamap.txt
│ ├── areamapin.txt
│ ├── backup/
│ │ └── imports/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y101.txt
│ │ │ ├── x110y102.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y100.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x111y118.txt
│ │ │ ├── x111y119.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y118.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y112.txt
│ │ │ └── x119y113.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── imports/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── Copy of x102y110.txt
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y111.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x100y117.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y111.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y114.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x105y115.txt
│ │ │ ├── x105y118.txt
│ │ │ ├── x105y119.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x106y115.txt
│ │ │ ├── x106y118.txt
│ │ │ ├── x106y119.txt
│ │ │ ├── x107y101.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y110.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y106.txt
│ │ │ ├── x108y107.txt
│ │ │ ├── x108y108.txt
│ │ │ ├── x108y110.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y101.txt
│ │ │ ├── x110y102.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y108.txt
│ │ │ ├── x110y109.txt
│ │ │ ├── x110y110.txt
│ │ │ ├── x110y111.txt
│ │ │ ├── x110y112.txt
│ │ │ ├── x110y113.txt
│ │ │ ├── x110y114.txt
│ │ │ ├── x110y115.txt
│ │ │ ├── x110y116.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y100.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y108.txt
│ │ │ ├── x111y109.txt
│ │ │ ├── x111y110.txt
│ │ │ ├── x111y116.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x111y118.txt
│ │ │ ├── x111y119.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y108.txt
│ │ │ ├── x112y109.txt
│ │ │ ├── x112y110.txt
│ │ │ ├── x112y116.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y118.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y114.txt
│ │ │ ├── x113y115.txt
│ │ │ ├── x113y116.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y114.txt
│ │ │ ├── x114y116.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x114y118.txt
│ │ │ ├── x114y119.txt
│ │ │ ├── x115y114.txt
│ │ │ ├── x115y116.txt
│ │ │ ├── x115y117.txt
│ │ │ ├── x115y118.txt
│ │ │ ├── x115y119.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x116y105.txt
│ │ │ ├── x116y114.txt
│ │ │ ├── x116y117.txt
│ │ │ ├── x116y119.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x117y106.txt
│ │ │ ├── x117y112.txt
│ │ │ ├── x117y113.txt
│ │ │ ├── x117y114.txt
│ │ │ ├── x117y115.txt
│ │ │ ├── x117y116.txt
│ │ │ ├── x117y117.txt
│ │ │ ├── x117y118.txt
│ │ │ ├── x117y119.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x118y106.txt
│ │ │ ├── x118y115.txt
│ │ │ ├── x118y117.txt
│ │ │ ├── x118y119.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y106.txt
│ │ │ ├── x119y107.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y111.txt
│ │ │ ├── x119y112.txt
│ │ │ ├── x119y113.txt
│ │ │ ├── x119y114.txt
│ │ │ ├── x119y115.txt
│ │ │ ├── x119y116.txt
│ │ │ ├── x119y117.txt
│ │ │ ├── x119y118.txt
│ │ │ └── x119y119.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── input.hpp
│ ├── logic.hpp
│ ├── main.cpp
│ ├── map.hpp
│ ├── maps/
│ │ ├── lab/
│ │ │ ├── x48y52.txt
│ │ │ ├── x48y53.txt
│ │ │ ├── x49y51.txt
│ │ │ ├── x49y52.txt
│ │ │ ├── x49y53.txt
│ │ │ ├── x49y54.txt
│ │ │ ├── x49y55.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x50y51.txt
│ │ │ ├── x50y52.txt
│ │ │ ├── x50y53.txt
│ │ │ ├── x50y54.txt
│ │ │ ├── x50y55.txt
│ │ │ ├── x50y58.txt
│ │ │ ├── x51y50.txt
│ │ │ ├── x51y51.txt
│ │ │ ├── x51y52.txt
│ │ │ ├── x51y53.txt
│ │ │ ├── x51y54.txt
│ │ │ ├── x51y55.txt
│ │ │ ├── x51y58.txt
│ │ │ ├── x52y50.txt
│ │ │ ├── x52y51.txt
│ │ │ ├── x52y52.txt
│ │ │ ├── x52y53.txt
│ │ │ ├── x52y54.txt
│ │ │ ├── x52y55.txt
│ │ │ ├── x52y56.txt
│ │ │ ├── x52y57.txt
│ │ │ ├── x52y58.txt
│ │ │ ├── x53y50.txt
│ │ │ ├── x53y51.txt
│ │ │ ├── x53y54.txt
│ │ │ ├── x53y55.txt
│ │ │ ├── x54y50.txt
│ │ │ ├── x54y51.txt
│ │ │ ├── x54y54.txt
│ │ │ ├── x54y55.txt
│ │ │ ├── x55y49.txt
│ │ │ ├── x55y50.txt
│ │ │ ├── x55y51.txt
│ │ │ ├── x55y52.txt
│ │ │ ├── x55y53.txt
│ │ │ └── x55y54.txt
│ │ ├── other/
│ │ │ ├── Copy of x102y110.txt
│ │ │ ├── x100y100.txt
│ │ │ ├── x100y101.txt
│ │ │ ├── x100y102.txt
│ │ │ ├── x100y103.txt
│ │ │ ├── x100y104.txt
│ │ │ ├── x100y105.txt
│ │ │ ├── x100y106.txt
│ │ │ ├── x100y107.txt
│ │ │ ├── x100y108.txt
│ │ │ ├── x100y109.txt
│ │ │ ├── x100y110.txt
│ │ │ ├── x100y111.txt
│ │ │ ├── x100y112.txt
│ │ │ ├── x100y113.txt
│ │ │ ├── x100y114.txt
│ │ │ ├── x100y115.txt
│ │ │ ├── x100y116.txt
│ │ │ ├── x100y117.txt
│ │ │ ├── x101y102.txt
│ │ │ ├── x101y103.txt
│ │ │ ├── x101y104.txt
│ │ │ ├── x101y105.txt
│ │ │ ├── x101y106.txt
│ │ │ ├── x101y108.txt
│ │ │ ├── x101y109.txt
│ │ │ ├── x101y110.txt
│ │ │ ├── x101y111.txt
│ │ │ ├── x101y112.txt
│ │ │ ├── x101y113.txt
│ │ │ ├── x101y114.txt
│ │ │ ├── x101y115.txt
│ │ │ ├── x101y116.txt
│ │ │ ├── x102y102.txt
│ │ │ ├── x102y103.txt
│ │ │ ├── x102y105.txt
│ │ │ ├── x102y106.txt
│ │ │ ├── x102y108.txt
│ │ │ ├── x102y109.txt
│ │ │ ├── x102y110.txt
│ │ │ ├── x102y111.txt
│ │ │ ├── x102y112.txt
│ │ │ ├── x102y113.txt
│ │ │ ├── x102y114.txt
│ │ │ ├── x102y115.txt
│ │ │ ├── x103y102.txt
│ │ │ ├── x103y103.txt
│ │ │ ├── x103y105.txt
│ │ │ ├── x103y106.txt
│ │ │ ├── x103y107.txt
│ │ │ ├── x103y108.txt
│ │ │ ├── x103y109.txt
│ │ │ ├── x103y110.txt
│ │ │ ├── x103y111.txt
│ │ │ ├── x103y112.txt
│ │ │ ├── x103y113.txt
│ │ │ ├── x103y114.txt
│ │ │ ├── x103y115.txt
│ │ │ ├── x104y105.txt
│ │ │ ├── x104y107.txt
│ │ │ ├── x104y109.txt
│ │ │ ├── x104y110.txt
│ │ │ ├── x104y111.txt
│ │ │ ├── x104y112.txt
│ │ │ ├── x104y113.txt
│ │ │ ├── x104y114.txt
│ │ │ ├── x104y115.txt
│ │ │ ├── x105y102.txt
│ │ │ ├── x105y103.txt
│ │ │ ├── x105y104.txt
│ │ │ ├── x105y105.txt
│ │ │ ├── x105y106.txt
│ │ │ ├── x105y107.txt
│ │ │ ├── x105y108.txt
│ │ │ ├── x105y109.txt
│ │ │ ├── x105y110.txt
│ │ │ ├── x105y111.txt
│ │ │ ├── x105y112.txt
│ │ │ ├── x105y113.txt
│ │ │ ├── x105y114.txt
│ │ │ ├── x105y115.txt
│ │ │ ├── x105y118.txt
│ │ │ ├── x105y119.txt
│ │ │ ├── x106y102.txt
│ │ │ ├── x106y104.txt
│ │ │ ├── x106y105.txt
│ │ │ ├── x106y106.txt
│ │ │ ├── x106y107.txt
│ │ │ ├── x106y108.txt
│ │ │ ├── x106y109.txt
│ │ │ ├── x106y110.txt
│ │ │ ├── x106y111.txt
│ │ │ ├── x106y112.txt
│ │ │ ├── x106y113.txt
│ │ │ ├── x106y114.txt
│ │ │ ├── x106y115.txt
│ │ │ ├── x106y118.txt
│ │ │ ├── x106y119.txt
│ │ │ ├── x107y101.txt
│ │ │ ├── x107y102.txt
│ │ │ ├── x107y103.txt
│ │ │ ├── x107y104.txt
│ │ │ ├── x107y105.txt
│ │ │ ├── x107y106.txt
│ │ │ ├── x107y107.txt
│ │ │ ├── x107y108.txt
│ │ │ ├── x107y109.txt
│ │ │ ├── x107y110.txt
│ │ │ ├── x107y111.txt
│ │ │ ├── x107y114.txt
│ │ │ ├── x108y100.txt
│ │ │ ├── x108y101.txt
│ │ │ ├── x108y102.txt
│ │ │ ├── x108y103.txt
│ │ │ ├── x108y104.txt
│ │ │ ├── x108y105.txt
│ │ │ ├── x108y106.txt
│ │ │ ├── x108y107.txt
│ │ │ ├── x108y108.txt
│ │ │ ├── x108y110.txt
│ │ │ ├── x108y111.txt
│ │ │ ├── x108y112.txt
│ │ │ ├── x108y113.txt
│ │ │ ├── x108y114.txt
│ │ │ ├── x108y115.txt
│ │ │ ├── x108y116.txt
│ │ │ ├── x108y117.txt
│ │ │ ├── x108y118.txt
│ │ │ ├── x108y119.txt
│ │ │ ├── x110y100.txt
│ │ │ ├── x110y103.txt
│ │ │ ├── x110y108.txt
│ │ │ ├── x110y109.txt
│ │ │ ├── x110y110.txt
│ │ │ ├── x110y111.txt
│ │ │ ├── x110y112.txt
│ │ │ ├── x110y113.txt
│ │ │ ├── x110y114.txt
│ │ │ ├── x110y115.txt
│ │ │ ├── x110y116.txt
│ │ │ ├── x110y117.txt
│ │ │ ├── x110y118.txt
│ │ │ ├── x110y119.txt
│ │ │ ├── x111y101.txt
│ │ │ ├── x111y102.txt
│ │ │ ├── x111y103.txt
│ │ │ ├── x111y108.txt
│ │ │ ├── x111y109.txt
│ │ │ ├── x111y110.txt
│ │ │ ├── x111y116.txt
│ │ │ ├── x111y117.txt
│ │ │ ├── x112y100.txt
│ │ │ ├── x112y101.txt
│ │ │ ├── x112y102.txt
│ │ │ ├── x112y108.txt
│ │ │ ├── x112y109.txt
│ │ │ ├── x112y110.txt
│ │ │ ├── x112y116.txt
│ │ │ ├── x112y117.txt
│ │ │ ├── x112y119.txt
│ │ │ ├── x113y101.txt
│ │ │ ├── x113y102.txt
│ │ │ ├── x113y114.txt
│ │ │ ├── x113y115.txt
│ │ │ ├── x113y116.txt
│ │ │ ├── x113y117.txt
│ │ │ ├── x113y118.txt
│ │ │ ├── x113y119.txt
│ │ │ ├── x114y114.txt
│ │ │ ├── x114y116.txt
│ │ │ ├── x114y117.txt
│ │ │ ├── x114y118.txt
│ │ │ ├── x114y119.txt
│ │ │ ├── x115y114.txt
│ │ │ ├── x115y116.txt
│ │ │ ├── x115y117.txt
│ │ │ ├── x115y118.txt
│ │ │ ├── x115y119.txt
│ │ │ ├── x116y104.txt
│ │ │ ├── x116y105.txt
│ │ │ ├── x116y114.txt
│ │ │ ├── x116y117.txt
│ │ │ ├── x116y119.txt
│ │ │ ├── x117y104.txt
│ │ │ ├── x117y105.txt
│ │ │ ├── x117y106.txt
│ │ │ ├── x117y112.txt
│ │ │ ├── x117y113.txt
│ │ │ ├── x117y114.txt
│ │ │ ├── x117y115.txt
│ │ │ ├── x117y116.txt
│ │ │ ├── x117y117.txt
│ │ │ ├── x117y118.txt
│ │ │ ├── x117y119.txt
│ │ │ ├── x118y104.txt
│ │ │ ├── x118y105.txt
│ │ │ ├── x118y106.txt
│ │ │ ├── x118y115.txt
│ │ │ ├── x118y117.txt
│ │ │ ├── x118y119.txt
│ │ │ ├── x119y104.txt
│ │ │ ├── x119y105.txt
│ │ │ ├── x119y106.txt
│ │ │ ├── x119y107.txt
│ │ │ ├── x119y109.txt
│ │ │ ├── x119y110.txt
│ │ │ ├── x119y111.txt
│ │ │ ├── x119y112.txt
│ │ │ ├── x119y113.txt
│ │ │ ├── x119y114.txt
│ │ │ ├── x119y115.txt
│ │ │ ├── x119y116.txt
│ │ │ ├── x119y117.txt
│ │ │ ├── x119y118.txt
│ │ │ └── x119y119.txt
│ │ ├── spacestation2/
│ │ │ ├── x48y41.txt
│ │ │ ├── x48y42.txt
│ │ │ ├── x48y43.txt
│ │ │ ├── x49y41.txt
│ │ │ ├── x49y42.txt
│ │ │ ├── x49y43.txt
│ │ │ ├── x49y47.txt
│ │ │ ├── x49y48.txt
│ │ │ ├── x49y49.txt
│ │ │ ├── x49y50.txt
│ │ │ ├── x50y39.txt
│ │ │ ├── x50y40.txt
│ │ │ ├── x50y41.txt
│ │ │ ├── x50y42.txt
│ │ │ ├── x50y43.txt
│ │ │ ├── x50y47.txt
│ │ │ ├── x50y48.txt
│ │ │ ├── x50y49.txt
│ │ │ ├── x50y50.txt
│ │ │ ├── x51y39.txt
│ │ │ ├── x51y40.txt
│ │ │ ├── x51y41.txt
│ │ │ ├── x51y42.txt
│ │ │ ├── x51y43.txt
│ │ │ ├── x51y44.txt
│ │ │ ├── x51y45.txt
│ │ │ ├── x51y46.txt
│ │ │ ├── x51y47.txt
│ │ │ ├── x51y48.txt
│ │ │ ├── x51y49.txt
│ │ │ ├── x52y39.txt
│ │ │ ├── x52y40.txt
│ │ │ ├── x52y41.txt
│ │ │ ├── x52y42.txt
│ │ │ ├── x52y43.txt
│ │ │ ├── x52y44.txt
│ │ │ ├── x52y45.txt
│ │ │ ├── x52y46.txt
│ │ │ ├── x52y47.txt
│ │ │ ├── x52y48.txt
│ │ │ ├── x52y49.txt
│ │ │ ├── x53y39.txt
│ │ │ ├── x53y40.txt
│ │ │ ├── x53y41.txt
│ │ │ ├── x53y42.txt
│ │ │ ├── x53y43.txt
│ │ │ ├── x53y44.txt
│ │ │ ├── x53y45.txt
│ │ │ ├── x53y46.txt
│ │ │ ├── x53y47.txt
│ │ │ ├── x53y48.txt
│ │ │ ├── x53y49.txt
│ │ │ ├── x54y42.txt
│ │ │ ├── x54y43.txt
│ │ │ ├── x54y44.txt
│ │ │ ├── x54y45.txt
│ │ │ ├── x54y46.txt
│ │ │ ├── x54y47.txt
│ │ │ ├── x54y48.txt
│ │ │ ├── x54y49.txt
│ │ │ ├── x55y43.txt
│ │ │ ├── x55y44.txt
│ │ │ ├── x55y45.txt
│ │ │ ├── x55y46.txt
│ │ │ ├── x55y47.txt
│ │ │ ├── x56y43.txt
│ │ │ ├── x56y44.txt
│ │ │ ├── x56y45.txt
│ │ │ ├── x56y46.txt
│ │ │ ├── x56y47.txt
│ │ │ ├── x56y48.txt
│ │ │ ├── x56y49.txt
│ │ │ └── x56y50.txt
│ │ └── warp/
│ │ ├── old/
│ │ │ ├── x50y50.txt
│ │ │ └── x54y50.txt
│ │ ├── x49y49.txt
│ │ ├── x50y49.txt
│ │ ├── x50y50.txt
│ │ ├── x51y49.txt
│ │ ├── x51y50.txt
│ │ ├── x51y51.txt
│ │ ├── x51y52.txt
│ │ ├── x52y49.txt
│ │ ├── x52y50.txt
│ │ ├── x52y51.txt
│ │ ├── x52y52.txt
│ │ ├── x53y49.txt
│ │ ├── x53y50.txt
│ │ ├── x53y51.txt
│ │ ├── x53y52.txt
│ │ ├── x54y49.txt
│ │ ├── x54y50.txt
│ │ ├── x54y51.txt
│ │ ├── x54y52.txt
│ │ ├── x55y49.txt
│ │ ├── x55y50.txt
│ │ ├── x55y51.txt
│ │ └── x55y52.txt
│ ├── misc.hpp
│ ├── overworld.txt
│ └── render.hpp
└── readme.MD
SYMBOL INDEX (1088 symbols across 112 files)
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/BaseDirProvider.java
class BaseDirProvider (line 14) | public class BaseDirProvider extends FileSystemProvider {
method onCreate (line 30) | @Override
method queryRoots (line 37) | @Override
method buildNotificationUri (line 51) | @Override
method resolveRootProjection (line 56) | private static String[] resolveRootProjection(String[] projection) {
method resolveDocumentProjection (line 60) | private static String[] resolveDocumentProjection(String[] projection) {
method getDocIdForFile (line 64) | @Override
method getFileForDocId (line 69) | @Override
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/FileSystemProvider.java
class FileSystemProvider (line 73) | public abstract class FileSystemProvider extends DocumentsProvider {
method joinNewline (line 85) | private static String joinNewline(String... args) {
method getFileForDocId (line 95) | protected abstract File getFileForDocId(String docId, boolean visible)
method getDocIdForFile (line 98) | protected abstract String getDocIdForFile(File file) throws FileNotFou...
method buildNotificationUri (line 100) | protected abstract Uri buildNotificationUri(String docId);
method onDocIdChanged (line 106) | protected void onDocIdChanged(String docId) {
method onDocIdDeleted (line 114) | protected void onDocIdDeleted(String docId) {
method onCreate (line 118) | @Override
method onCreate (line 124) | protected void onCreate(String[] defaultProjection) {
method contains (line 129) | private static boolean contains(String dirPath, String filePath) {
method contains (line 139) | private static boolean contains(File dir, File file) {
method isChildDocument (line 144) | @Override
method findDocumentPath (line 156) | protected final List<String> findDocumentPath(File parent, File doc)
method isValidFatFilenameChar (line 177) | private static boolean isValidFatFilenameChar(char c) {
method buildValidFatFilename (line 198) | private static String buildValidFatFilename(String name) {
method trimFilename (line 217) | private static String trimFilename(String str, int maxBytes) {
method trimFilename (line 223) | private static void trimFilename(StringBuilder res, int maxBytes) {
method buildFile (line 235) | private static File buildFile(File parent, String name, String ext) {
method buildUniqueFileWithExtension (line 243) | private static File buildUniqueFileWithExtension(File parent, String n...
method splitFileName (line 257) | private static String[] splitFileName(String mimeType, String displayN...
method buildUniqueFile (line 300) | private static File buildUniqueFile(File parent, String mimeType, Stri...
method createDocument (line 306) | @Override
method buildUniqueFile (line 339) | private static File buildUniqueFile(File parent, String displayName)
method renameDocument (line 355) | @Override
method moveDocument (line 385) | @Override
method updateMediaStore (line 410) | private static void updateMediaStore(@NotNull Context context, File fi...
method deleteContents (line 426) | private static boolean deleteContents(File dir) {
method deleteDocument (line 443) | @Override
method queryDocument (line 463) | @Override
method queryChildDocumentsShowAll (line 491) | protected Cursor queryChildDocumentsShowAll(
method queryChildDocuments (line 497) | @Override
method listFilesOrEmpty (line 505) | private static @NotNull File[] listFilesOrEmpty(@Nullable File dir) {
method queryChildDocuments (line 518) | private Cursor queryChildDocuments(
method getHandledQueryArguments (line 542) | private static String[] getHandledQueryArguments(Bundle queryArgs) {
method querySearchDocuments (line 580) | protected final Cursor querySearchDocuments(
method getDocumentType (line 610) | @Override
method getDocumentType (line 615) | private String getDocumentType(final String documentId, final File file)
method openDocument (line 632) | @Override
method matchSearchQueryArguments (line 656) | public static boolean matchSearchQueryArguments(Bundle queryArgs, Stri...
method matchSearchQueryArguments (line 696) | private boolean matchSearchQueryArguments(File file, Bundle queryArgs) {
method scanFile (line 718) | private void scanFile(File visibleFile) {
method openImageThumbnail (line 724) | private static AssetFileDescriptor openImageThumbnail(File file) throw...
method openDocumentThumbnail (line 755) | @Override
method includeFile (line 763) | protected RowBuilder includeFile(final MatrixCursor result, String doc...
method shouldHide (line 827) | protected boolean shouldHide(@NotNull File file) {
method shouldShow (line 831) | private boolean shouldShow(@NotNull File file) {
method typeSupportsMetadata (line 835) | protected boolean typeSupportsMetadata(String mimeType) {
method getFileForDocId (line 839) | protected final File getFileForDocId(String docId) throws FileNotFound...
method resolveProjection (line 843) | private String[] resolveProjection(String[] projection) {
method startObserving (line 847) | private void startObserving(File file, Uri notifyUri, DirectoryCursor ...
method stopObserving (line 862) | private void stopObserving(File file, DirectoryCursor cursor) {
class DirectoryObserver (line 877) | private static class DirectoryObserver extends FileObserver {
method DirectoryObserver (line 886) | DirectoryObserver(File file, ContentResolver resolver, Uri notifyUri) {
method onEvent (line 894) | @Override
method toString (line 905) | @Override
class DirectoryCursor (line 912) | private class DirectoryCursor extends MatrixCursor {
method DirectoryCursor (line 915) | public DirectoryCursor(String[] columnNames, String docId, File file) {
method notifyChanged (line 926) | public void notifyChanged() {
method close (line 930) | @Override
FILE: desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/VVVVVV.java
class VVVVVV (line 5) | public class VVVVVV extends SDLActivity {
method getLibraries (line 6) | @Override
method getArguments (line 14) | @Override
FILE: desktop_version/src/ActionSets.h
type ActionSet (line 24) | typedef enum
type Action_Menu (line 46) | typedef enum
type Action_InGame (line 52) | typedef enum
type Action (line 75) | typedef union
FILE: desktop_version/src/BinaryBlob.h
type resourceheader (line 28) | struct resourceheader
function class (line 36) | class binaryBlob
FILE: desktop_version/src/BlockV.h
function class (line 8) | class blockclass
FILE: desktop_version/src/ButtonGlyphs.cpp
function BUTTONGLYPHS_init (line 161) | void BUTTONGLYPHS_init(void)
function BUTTONGLYPHS_keyboard_is_available (line 170) | bool BUTTONGLYPHS_keyboard_is_available(void)
function BUTTONGLYPHS_keyboard_is_active (line 188) | bool BUTTONGLYPHS_keyboard_is_active(void)
function BUTTONGLYPHS_keyboard_set_active (line 195) | void BUTTONGLYPHS_keyboard_set_active(bool active)
function BUTTONGLYPHS_update_layout (line 200) | void BUTTONGLYPHS_update_layout(SDL_GameController *c)
FILE: desktop_version/src/CWrappers.cpp
function LOC_toupper_ch (line 27) | uint32_t LOC_toupper_ch(uint32_t ch)
function SDL_Surface (line 32) | SDL_Surface* GRAPHICS_tempScreenshot(void)
function SDL_Surface (line 37) | SDL_Surface* GRAPHICS_tempScreenshot2x(void)
function UTIL_TakeScreenshot (line 42) | uint8_t UTIL_TakeScreenshot(SDL_Surface** surface)
function UTIL_UpscaleScreenshot2x (line 47) | uint8_t UTIL_UpscaleScreenshot2x(SDL_Surface* src, SDL_Surface** dest)
FILE: desktop_version/src/Credits.h
function namespace (line 6) | namespace Credits {
FILE: desktop_version/src/CustomLevels.cpp
function compare_nocase (line 70) | static bool compare_nocase (std::string first, std::string second)
function translate_title (line 91) | bool translate_title(const std::string& title)
function translate_creator (line 96) | bool translate_creator(const std::string& creator)
function levelZipCallback (line 101) | static void levelZipCallback(const char* filename)
function replace_all (line 119) | static void replace_all(std::string& str, const std::string& from, const...
function find_tag (line 135) | static std::string find_tag(const std::string& buf, const std::string& s...
function levelMetaDataCallback (line 232) | static void levelMetaDataCallback(const char* filename)
function unloadZips (line 255) | static void unloadZips(void)
function RoomProperty (line 875) | const RoomProperty* customlevelclass::getroomprop(const int rx, const in...
function SDL_Color (line 1794) | SDL_Color customlevelclass::getonewaycol(const int rx, const int ry)
function SDL_Color (line 1953) | SDL_Color customlevelclass::getonewaycol(void)
function SDL_INLINE (line 1968) | static SDL_INLINE bool inbounds(const CustomEntity* entity)
FILE: desktop_version/src/CustomLevels.h
function class (line 8) | class CustomEntity
function class (line 37) | class RoomProperty
type LevelMetaData (line 46) | struct LevelMetaData
type CliPlaytestArgs (line 73) | struct CliPlaytestArgs
function class (line 87) | class customlevelclass
FILE: desktop_version/src/DeferCallbacks.c
type DEFER_Callback (line 15) | struct DEFER_Callback
function DEFER_add_callback (line 18) | void DEFER_add_callback(struct DEFER_Callback* callback)
function DEFER_execute_callbacks (line 60) | void DEFER_execute_callbacks(void)
FILE: desktop_version/src/DeferCallbacks.h
type DEFER_Callback (line 9) | struct DEFER_Callback
type DEFER_Callback (line 15) | struct DEFER_Callback
FILE: desktop_version/src/Editor.cpp
function editormenurender (line 521) | static void editormenurender(int tr, int tg, int tb)
function draw_background_grid (line 698) | static void draw_background_grid(void)
function draw_background (line 726) | static void draw_background(int warpdir)
function draw_edgeguide (line 749) | static void draw_edgeguide(const TileTypes type, const int x, const int ...
function draw_edgeguides (line 769) | static void draw_edgeguides(void)
function update_entities (line 829) | static void update_entities(void)
function draw_entities (line 889) | static void draw_entities(void)
function draw_ghosts (line 1162) | static void draw_ghosts(void)
function adjust_box_coordinates (line 1189) | static void adjust_box_coordinates(int x1, int y1, int x2, int y2, int* ...
function draw_bounds (line 1214) | static void draw_bounds(void)
function check_point (line 1253) | static inline bool check_point(bool connected[SCREEN_HEIGHT_TILES][SCREE...
function draw_cursor (line 1263) | static void draw_cursor(void)
function draw_tile_drawer (line 1391) | static void draw_tile_drawer(int tileset)
function draw_box_placer (line 1477) | static void draw_box_placer()
function draw_note (line 1529) | static void draw_note()
function draw_toolbox (line 1547) | static void draw_toolbox(const char* coords)
function draw_main_ui (line 1613) | static void draw_main_ui(void)
function editorrender (line 1765) | void editorrender(void)
function editorrenderfixed (line 1956) | void editorrenderfixed(void)
function input_submitted (line 2064) | static void input_submitted(void)
function editorlogic (line 2219) | void editorlogic(void)
function set_tile_interpolated (line 2287) | static void set_tile_interpolated(const int x1, const int x2, const int ...
function creategameoptions (line 2656) | static void creategameoptions(void)
function nextbgcolor (line 2661) | static void nextbgcolor(void)
function editormenuactionpress (line 2666) | static void editormenuactionpress(void)
function start_at_checkpoint (line 2897) | static void start_at_checkpoint(void)
function handle_draw_input (line 2978) | static void handle_draw_input()
type TextMode (line 3176) | enum TextMode
function editorinput (line 3197) | void editorinput(void)
function EditorTilecolInfo (line 3978) | EditorTilecolInfo editorclass::get_tilecol_data(void)
function TileTypes (line 4080) | TileTypes editorclass::get_abs_tile_type(int x, int y, const bool wrap)
function TileTypes (line 4128) | TileTypes editorclass::get_tile_type(int x, int y, bool wrap)
FILE: desktop_version/src/Editor.h
type EditorTilesets (line 12) | enum EditorTilesets
type EditorTilecolInfo (line 23) | struct EditorTilecolInfo
type EditorTools (line 33) | enum EditorTools
type EditorStates (line 56) | enum EditorStates
type EditorSubStates (line 63) | enum EditorSubStates
type TileTypes (line 76) | enum TileTypes
type BoxTypes (line 83) | enum BoxTypes
type BoxCorner (line 91) | enum BoxCorner
type TextMode (line 98) | enum TextMode
type GhostInfo (line 125) | struct GhostInfo
function class (line 136) | class editorclass
FILE: desktop_version/src/Ent.h
type EntityType (line 8) | enum EntityType
function class (line 36) | class entclass
FILE: desktop_version/src/Entity.cpp
function getgridpoint (line 20) | static int getgridpoint( int t )
function gridmatch (line 1227) | static bool gridmatch( int p1, int p2, int p3, int p4, int p11, int p21,...
function entityclonefix (line 1233) | static void entityclonefix(entclass* entity)
function yline (line 4267) | static int yline( int a, int b )
FILE: desktop_version/src/Entity.h
function class (line 23) | class entityclass
FILE: desktop_version/src/Enums.h
type GameGamestate (line 4) | enum GameGamestate
FILE: desktop_version/src/FileSystemUtils.cpp
function mkdir (line 27) | static int mkdir(char* path, int mode)
function mount_pre_datazip (line 81) | static bool mount_pre_datazip(
function FILESYSTEM_init (line 181) | int FILESYSTEM_init(char *argvZero, char* baseDir, char *assetsPath, cha...
function FILESYSTEM_isInit (line 379) | bool FILESYSTEM_isInit(void)
function FILESYSTEM_deinit (line 387) | void FILESYSTEM_deinit(void)
function FILESYSTEM_isMainLangDirFromRepo (line 413) | bool FILESYSTEM_isMainLangDirFromRepo(void)
function FILESYSTEM_doesLangDirExist (line 418) | bool FILESYSTEM_doesLangDirExist(void)
function FILESYSTEM_doesFontsDirExist (line 423) | bool FILESYSTEM_doesFontsDirExist(void)
function FILESYSTEM_restoreWriteDir (line 428) | bool FILESYSTEM_restoreWriteDir(void)
function FILESYSTEM_setLangWriteDir (line 433) | bool FILESYSTEM_setLangWriteDir(void)
function FILESYSTEM_isFileType (line 451) | bool FILESYSTEM_isFileType(const char* filename, PHYSFS_FileType filetype)
function FILESYSTEM_isFile (line 473) | bool FILESYSTEM_isFile(const char* filename)
function FILESYSTEM_isDirectory (line 478) | bool FILESYSTEM_isDirectory(const char* filename)
function FILESYSTEM_isMounted (line 483) | bool FILESYSTEM_isMounted(const char* filename)
function FILESYSTEM_exists (line 488) | static bool FILESYSTEM_exists(const char *fname)
function generateBase36 (line 493) | static void generateBase36(char* string, const size_t string_size)
function generateVirtualMountPath (line 514) | static void generateVirtualMountPath(char* path, const size_t path_size)
function FILESYSTEM_levelDirHasError (line 530) | bool FILESYSTEM_levelDirHasError(void)
function FILESYSTEM_clearLevelDirError (line 535) | void FILESYSTEM_clearLevelDirError(void)
function FILESYSTEM_setLevelDirError (line 545) | void FILESYSTEM_setLevelDirError(const char* text, const char* args_inde...
function FILESYSTEM_mountAssetsFrom (line 557) | static bool FILESYSTEM_mountAssetsFrom(const char *fname)
function FILESYSTEM_loadZip (line 590) | void FILESYSTEM_loadZip(const char* filename)
function FILESYSTEM_mountAssets (line 612) | bool FILESYSTEM_mountAssets(const char* path)
function FILESYSTEM_unmountAssets (line 670) | void FILESYSTEM_unmountAssets(void)
function getMountedPath (line 685) | static void getMountedPath(
function FILESYSTEM_isAssetMounted (line 717) | bool FILESYSTEM_isAssetMounted(const char* filename)
function FILESYSTEM_areAssetsInSameRealDir (line 740) | bool FILESYSTEM_areAssetsInSameRealDir(const char* filenameA, const char...
function load_stdin (line 765) | static void load_stdin(void)
function PHYSFS_sint64 (line 814) | static PHYSFS_sint64 read_bytes(
function FILESYSTEM_saveFile (line 846) | bool FILESYSTEM_saveFile(const char* name, const unsigned char* data, co...
function FILESYSTEM_loadFileToMemory (line 878) | void FILESYSTEM_loadFileToMemory(
function FILESYSTEM_loadAssetToMemory (line 962) | void FILESYSTEM_loadAssetToMemory(
function FILESYSTEM_loadBinaryBlob (line 974) | bool FILESYSTEM_loadBinaryBlob(binaryBlob* blob, const char* filename)
function FILESYSTEM_saveTiXml2Document (line 1095) | bool FILESYSTEM_saveTiXml2Document(const char *name, tinyxml2::XMLDocume...
function FILESYSTEM_loadTiXml2Document (line 1133) | bool FILESYSTEM_loadTiXml2Document(const char *name, tinyxml2::XMLDocume...
function FILESYSTEM_loadAssetTiXml2Document (line 1147) | bool FILESYSTEM_loadAssetTiXml2Document(const char *name, tinyxml2::XMLD...
type CallbackWrapper (line 1161) | struct CallbackWrapper
function PHYSFS_EnumerateCallbackResult (line 1166) | static PHYSFS_EnumerateCallbackResult enumerateCallback(
function FILESYSTEM_enumerateLevelDirFileNames (line 1188) | void FILESYSTEM_enumerateLevelDirFileNames(
function FILESYSTEM_freeEnumerate (line 1286) | void FILESYSTEM_freeEnumerate(EnumHandle* handle)
function PLATFORM_getOSDirectory (line 1297) | static int PLATFORM_getOSDirectory(char* output, const size_t output_size)
function FILESYSTEM_openDirectoryEnabled (line 1382) | bool FILESYSTEM_openDirectoryEnabled(void)
function FILESYSTEM_openDirectory (line 1388) | bool FILESYSTEM_openDirectory(const char *dname)
function FILESYSTEM_openDirectory (line 1393) | bool FILESYSTEM_openDirectory(const char *dname)
function FILESYSTEM_delete (line 1406) | bool FILESYSTEM_delete(const char *name)
function levelSaveCallback (line 1411) | static void levelSaveCallback(const char* filename)
function FILESYSTEM_deleteLevelSaves (line 1422) | void FILESYSTEM_deleteLevelSaves(void)
FILE: desktop_version/src/FileSystemUtils.h
function namespace (line 10) | namespace tinyxml2 { class XMLDocument; }
type EnumHandle (line 52) | struct EnumHandle
FILE: desktop_version/src/Finalclass.h
function class (line 4) | class finalclass
FILE: desktop_version/src/Font.cpp
type font (line 24) | namespace font
type GlyphInfo (line 30) | struct GlyphInfo
type FontType (line 42) | enum FontType
type Font (line 48) | struct Font
type FontContainer (line 67) | struct FontContainer
type PrintFlags (line 74) | struct PrintFlags
function codepoint_split (line 101) | static void codepoint_split(
function GlyphInfo (line 117) | static GlyphInfo* get_glyphinfo(
function add_glyphinfo (line 133) | static void add_glyphinfo(
function glyph_is_valid (line 161) | static bool glyph_is_valid(const GlyphInfo* glyph)
function Font (line 166) | static Font* fallback_for(const Font* f)
function GlyphInfo (line 175) | static GlyphInfo* find_glyphinfo(const Font* f, const uint32_t codepoi...
function get_advance_ff (line 209) | static int get_advance_ff(const Font* f, const Font* f_glyph, const Gl...
function get_advance (line 229) | int get_advance(const Font* f, const uint32_t codepoint)
function decode_xml_range (line 242) | static bool decode_xml_range(tinyxml2::XMLElement* elem, unsigned* sta...
function load_font (line 257) | static uint8_t load_font(FontContainer* container, const char* name)
function find_font_by_name (line 502) | static bool find_font_by_name(FontContainer* container, const char* na...
function find_main_font_by_name (line 520) | bool find_main_font_by_name(const char* name, uint8_t* idx)
function get_font_idx_8x8 (line 525) | uint8_t get_font_idx_8x8(void)
function level_font_is_main_idx (line 530) | bool level_font_is_main_idx(const uint8_t idx)
function set_level_font (line 535) | void set_level_font(const char* name)
function set_level_font_interface (line 564) | void set_level_font_interface(void)
function set_level_font_new (line 571) | void set_level_font_new(void)
function fill_map_name_idx (line 597) | static void fill_map_name_idx(FontContainer* container)
function set_fallbacks (line 610) | static void set_fallbacks(FontContainer* container)
function load_font_filename (line 624) | static void load_font_filename(bool is_custom, const char* filename)
function load_main (line 652) | void load_main(void)
function load_custom (line 689) | void load_custom(const char* name)
function unload_font (line 707) | void unload_font(Font* f)
function unload_font_container (line 717) | void unload_font_container(FontContainer* container)
function unload_custom (line 730) | void unload_custom(void)
function destroy (line 736) | void destroy(void)
function Font (line 743) | static Font* container_get(FontContainer* container, uint8_t idx)
function Font (line 768) | static Font* fontsel_to_font(int sel, bool* rtl, bool custom)
function PrintFlags (line 820) | static PrintFlags decode_print_flags(uint32_t flags)
function next_wrap (line 849) | static bool next_wrap(
function next_wrap_buf (line 916) | static bool next_wrap_buf(
function string_wordwrap (line 950) | std::string string_wordwrap(const uint32_t flags, const std::string& s...
function string_wordwrap_balanced (line 1001) | std::string string_wordwrap_balanced(const uint32_t flags, const std::...
function string_unwordwrap (line 1035) | std::string string_unwordwrap(const std::string& s)
function print_char (line 1093) | static int print_char(
function glyph_dimensions (line 1213) | bool glyph_dimensions(uint32_t flags, uint8_t* glyph_w, uint8_t* glyph_h)
function len (line 1235) | int len(const uint32_t flags, const char* text)
function height (line 1256) | int height(const uint32_t flags)
function is_rtl (line 1267) | bool is_rtl(const uint32_t flags)
function print (line 1273) | void print(
function print (line 1393) | void print(
function print_wrap (line 1407) | int print_wrap(
FILE: desktop_version/src/Font.h
function namespace (line 62) | namespace font
FILE: desktop_version/src/FontBidi.cpp
type font (line 14) | namespace font
type ArabicLetter (line 17) | struct ArabicLetter
type ArabicLigature (line 189) | struct ArabicLigature
function bidi_init (line 232) | void bidi_init(void)
function bidi_destroy (line 259) | void bidi_destroy(void)
function is_directional_character (line 266) | bool is_directional_character(const uint32_t codepoint)
function is_joiner (line 280) | bool is_joiner(const uint32_t codepoint)
function bidi_should_transform (line 285) | bool bidi_should_transform(const bool rtl, const char* text)
type arabic_form (line 393) | enum arabic_form { NONE, ISOLATED, INITIAL, MEDIAL, FINAL }
FILE: desktop_version/src/FontBidi.h
function namespace (line 6) | namespace font
FILE: desktop_version/src/GOGNetwork.c
function GOG_init (line 9) | int32_t GOG_init(void)
function GOG_shutdown (line 14) | void GOG_shutdown(void)
function GOG_update (line 18) | void GOG_update(void)
function GOG_unlockAchievement (line 22) | void GOG_unlockAchievement(const char *name)
FILE: desktop_version/src/Game.cpp
function GetButtonFromString (line 37) | static bool GetButtonFromString(const char *pText, SDL_GameControllerBut...
type Game::Summary (line 115) | struct Game::Summary
function get_summary (line 119) | static struct Game::Summary get_summary(
function compute_crewmate_textbox (line 725) | static void compute_crewmate_textbox(textboxclass* THIS)
function compute_remaining_textbox (line 770) | static void compute_remaining_textbox(textboxclass* THIS)
function compute_actionprompt_textbox (line 803) | static void compute_actionprompt_textbox(textboxclass* THIS)
function savetele_textbox_success (line 828) | static void savetele_textbox_success(textboxclass* THIS)
function save_textbox_fail (line 835) | static void save_textbox_fail(textboxclass* THIS)
function wasd_textbox (line 890) | static void wasd_textbox(textboxclass* THIS)
function flip_textbox (line 899) | static void flip_textbox(textboxclass* THIS)
function arrowkey_textbox (line 916) | static void arrowkey_textbox(textboxclass* THIS)
function map_textbox (line 925) | static void map_textbox(textboxclass* THIS)
function im1_instructions_textbox1 (line 943) | static void im1_instructions_textbox1(textboxclass* THIS)
function im1_instructions_textbox2 (line 980) | static void im1_instructions_textbox2(textboxclass* THIS)
function im1_instructions_textbox3 (line 1017) | static void im1_instructions_textbox3(textboxclass* THIS)
function foundtrinket_textbox1 (line 1044) | void foundtrinket_textbox1(textboxclass* THIS)
function foundtrinket_textbox2 (line 1055) | void foundtrinket_textbox2(textboxclass* THIS)
function foundcrewmate_textbox1 (line 1081) | static void foundcrewmate_textbox1(textboxclass* THIS)
function foundcrewmate_textbox2 (line 1091) | static void foundcrewmate_textbox2(textboxclass* THIS)
function gamecomplete_textbox2 (line 1123) | static void gamecomplete_textbox2(textboxclass* THIS)
function gamecomplete_textbox3 (line 1129) | static void gamecomplete_textbox3(textboxclass* THIS)
function gamecomplete_textbox4 (line 1138) | static void gamecomplete_textbox4(textboxclass* THIS)
function gamecomplete_textbox5 (line 1152) | static void gamecomplete_textbox5(textboxclass* THIS)
function gamecomplete_textbox6 (line 1161) | static void gamecomplete_textbox6(textboxclass* THIS)
function gamecomplete_textbox7 (line 1171) | static void gamecomplete_textbox7(textboxclass* THIS)
function gamecomplete_textbox9 (line 1180) | static void gamecomplete_textbox9(textboxclass* THIS)
function gamecomplete_textbox11 (line 1189) | static void gamecomplete_textbox11(textboxclass* THIS)
function gamecomplete_textbox12 (line 1205) | static void gamecomplete_textbox12(textboxclass* THIS)
type ScreenSettings (line 4657) | struct ScreenSettings
type ScreenSettings (line 4738) | struct ScreenSettings
type ScreenSettings (line 4985) | struct ScreenSettings
type ScreenSettings (line 4992) | struct ScreenSettings
type ScreenSettings (line 5103) | struct ScreenSettings
type ScreenSettings (line 5242) | struct ScreenSettings
type ScreenSettings (line 5273) | struct ScreenSettings
type ScreenSettings (line 5280) | struct ScreenSettings
function loadthissummary (line 6000) | static void loadthissummary(
type Game::Summary (line 6159) | struct Game::Summary
type Game::Summary (line 6163) | struct Game::Summary
type Menu::MenuName (line 6606) | enum Menu::MenuName
type Menu::MenuName (line 6633) | enum Menu::MenuName
type Menu::MenuName (line 6659) | enum Menu::MenuName
type GlitchrunnerMode (line 6971) | enum GlitchrunnerMode
function hardreset (line 7691) | static void hardreset(void)
function returntoeditor_callback (line 7696) | static void returntoeditor_callback(void)
function resetbg (line 7804) | static void resetbg(void)
function returntoingametemp (line 7845) | static void returntoingametemp(void)
function returntoedsettings (line 7851) | static void returntoedsettings(void)
function nextbgcolor (line 7857) | static void nextbgcolor(void)
function setfademode (line 7862) | static void setfademode(void)
function setflipmode (line 7867) | static void setflipmode(void)
type GameGamestate (line 7918) | enum GameGamestate
function get_framerate (line 7962) | static inline int get_framerate(const int slowdown, const int deathseq)
FILE: desktop_version/src/Game.h
function namespace (line 20) | namespace tinyxml2
type MenuOption (line 29) | struct MenuOption
function namespace (line 37) | namespace Menu
type SLIDERMODE (line 117) | enum SLIDERMODE
type SWNMODE (line 125) | enum SWNMODE
type MenuStackFrame (line 177) | struct MenuStackFrame
function class (line 184) | class Game
type Menu (line 402) | enum Menu
type SWNMODE (line 416) | enum SWNMODE
function inspecial (line 577) | bool inline inspecial(void)
FILE: desktop_version/src/GlitchrunnerMode.c
type GlitchrunnerMode (line 11) | enum GlitchrunnerMode
function GlitchrunnerMode_string_to_enum (line 32) | enum GlitchrunnerMode GlitchrunnerMode_string_to_enum(const char* string)
type GlitchrunnerMode (line 49) | enum GlitchrunnerMode
function GlitchrunnerMode_set (line 51) | void GlitchrunnerMode_set(const enum GlitchrunnerMode mode)
function GlitchrunnerMode_get (line 56) | enum GlitchrunnerMode GlitchrunnerMode_get(void)
function GlitchrunnerMode_less_than_or_equal (line 61) | int GlitchrunnerMode_less_than_or_equal(const enum GlitchrunnerMode mode)
FILE: desktop_version/src/GlitchrunnerMode.h
type GlitchrunnerMode (line 13) | enum GlitchrunnerMode
type GlitchrunnerMode (line 21) | enum GlitchrunnerMode
type GlitchrunnerMode (line 23) | enum GlitchrunnerMode
type GlitchrunnerMode (line 25) | enum GlitchrunnerMode
type GlitchrunnerMode (line 27) | enum GlitchrunnerMode
type GlitchrunnerMode (line 29) | enum GlitchrunnerMode
FILE: desktop_version/src/Graphics.cpp
type Menu::MenuName (line 1697) | enum Menu::MenuName
function SDL_Color (line 2967) | SDL_Color Graphics::getcol( int t )
function commsrelay_textbox (line 3393) | static void commsrelay_textbox(textboxclass* THIS)
function SDL_Color (line 3670) | SDL_Color Graphics::getRGBA(const Uint8 r, const Uint8 g, const Uint8 b,...
function SDL_Color (line 3676) | SDL_Color Graphics::getRGB(const Uint8 r, const Uint8 g, const Uint8 b)
function SDL_Color (line 3682) | SDL_Color Graphics::RGBf(int r, int g, int b)
function make_array (line 3726) | static void make_array(
function SDL_Color (line 3800) | SDL_Color Graphics::crewcolourreal(int t)
FILE: desktop_version/src/Graphics.h
type FadeBars (line 13) | enum FadeBars
type ImageNames (line 23) | enum ImageNames
type EntityColour (line 43) | enum EntityColour
function class (line 91) | class Graphics
FILE: desktop_version/src/GraphicsResources.cpp
function SDL_Surface (line 35) | static SDL_Surface* LoadImageRaw(const char* filename, unsigned char** d...
function SDL_Surface (line 78) | static SDL_Surface* LoadSurfaceFromRaw(SDL_Surface* loadedImage)
function SDL_Surface (line 89) | SDL_Surface* LoadImageSurface(const char* filename)
function SDL_Texture (line 112) | static SDL_Texture* LoadTextureFromRaw(const char* filename, SDL_Surface...
function SDL_Texture (line 178) | SDL_Texture* LoadImage(const char *filename, const TextureLoadType loadt...
function SDL_Texture (line 202) | static SDL_Texture* LoadImage(const char* filename)
function LoadVariants (line 208) | static void LoadVariants(const char* filename, SDL_Texture** colored, SD...
function LoadSprites (line 252) | static void LoadSprites(const char* filename, SDL_Texture** texture, SDL...
function LoadSpritesTranslation (line 279) | static void LoadSpritesTranslation(
function SaveImage (line 517) | bool SaveImage(const SDL_Surface* surface, const char* filename)
function SaveScreenshot (line 547) | bool SaveScreenshot(void)
FILE: desktop_version/src/GraphicsResources.h
type TextureLoadType (line 6) | enum TextureLoadType
function class (line 13) | class GraphicsResources
FILE: desktop_version/src/GraphicsUtil.cpp
function setRect (line 16) | void setRect( SDL_Rect& _r, int x, int y, int w, int h )
function SDL_Surface (line 24) | static SDL_Surface* RecreateSurfaceWithDimensions(
function SDL_Surface (line 59) | SDL_Surface* GetSubSurface( SDL_Surface* metaSurface, int x, int y, int ...
function DrawPixel (line 82) | void DrawPixel(SDL_Surface* surface, const int x, const int y, const SDL...
function SDL_Color (line 124) | SDL_Color ReadPixel(const SDL_Surface* surface, const int x, const int y)
function UpdateFilter (line 172) | void UpdateFilter(void)
function ApplyFilter (line 194) | void ApplyFilter(SDL_Surface** src, SDL_Surface** dest)
function TakeScreenshot (line 287) | bool TakeScreenshot(SDL_Surface** surface)
function UpscaleScreenshot2x (line 359) | bool UpscaleScreenshot2x(SDL_Surface* src, SDL_Surface** dest)
FILE: desktop_version/src/IMERender.cpp
function ime_render (line 12) | void ime_render(void)
function ime_set_rect (line 91) | void ime_set_rect(SDL_Rect* stretch_info)
FILE: desktop_version/src/Input.cpp
function updatebuttonmappings (line 29) | static void updatebuttonmappings(int bind)
function recomputetextboxes (line 309) | void recomputetextboxes(void)
function toggleflipmode (line 320) | static void toggleflipmode(void)
type StartMode (line 344) | enum StartMode
function startmode (line 346) | static void startmode(const enum StartMode mode)
function handlefadetomode (line 354) | static void handlefadetomode(void)
function initvolumeslider (line 377) | static void initvolumeslider(const int menuoption)
function deinitvolumeslider (line 398) | static void deinitvolumeslider(void)
function slidermodeinput (line 405) | static void slidermodeinput(void)
function menuactionpress (line 424) | static void menuactionpress(void)
FILE: desktop_version/src/KeyPoll.cpp
function changemousestate (line 104) | static int changemousestate(
function cycle_language (line 156) | bool cycle_language(bool should_recompute_textboxes)
FILE: desktop_version/src/KeyPoll.h
type Kybrd (line 9) | enum Kybrd
function class (line 32) | class KeyPoll
FILE: desktop_version/src/Labclass.h
function class (line 4) | class labclass
FILE: desktop_version/src/LevelDebugger.cpp
type level_debugger (line 15) | namespace level_debugger
function is_pausing (line 32) | bool is_pausing(void)
function is_active (line 37) | bool is_active(void)
function toggle_active (line 42) | void toggle_active(void)
function mouse_within (line 47) | bool mouse_within(SDL_Rect* rect)
function set_forced (line 53) | void set_forced(void)
function input (line 58) | void input(void)
function logic (line 192) | void logic(void)
function render_info (line 236) | void render_info(int y, const char* text)
function render_coords (line 241) | void render_coords(int y, const char* text, int first, int second)
function render_info (line 248) | void render_info(int y, const char* text, std::string value)
function render (line 255) | void render(void)
FILE: desktop_version/src/LevelDebugger.h
function namespace (line 6) | namespace level_debugger
FILE: desktop_version/src/Localization.cpp
type loc (line 11) | namespace loc
function LangMeta (line 38) | const LangMeta* get_langmeta(void)
function gettext_plural_fill (line 111) | void gettext_plural_fill(char* buf, size_t buf_len, const char* eng_pl...
function getnumber (line 128) | std::string getnumber(int n, const char* number_class)
function is_script_custom (line 152) | static bool is_script_custom(const char* script_id)
function TextboxFormat (line 157) | const TextboxFormat* gettext_cutscene(const std::string& script_id, co...
function is_cutscene_translated (line 289) | bool is_cutscene_translated(const std::string& script_id)
function toupper_ch (line 313) | uint32_t toupper_ch(uint32_t ch)
function toupper (line 373) | std::string toupper(const std::string& lower)
function remove_toupper_escape_chars (line 408) | std::string remove_toupper_escape_chars(const std::string& _s)
FILE: desktop_version/src/Localization.h
function namespace (line 15) | namespace loc
FILE: desktop_version/src/LocalizationMaint.cpp
type loc (line 16) | namespace loc
function write_max_local (line 19) | static void write_max_local(tinyxml2::XMLElement* pElem, uint8_t glyph...
function write_max_local_decl (line 49) | static void write_max_local_decl(tinyxml2::XMLDocument* doc, uint8_t g...
function sync_lang_file (line 56) | static void sync_lang_file(const std::string& langcode)
function sync_lang_files (line 370) | bool sync_lang_files(void)
function save_roomname_to_file (line 395) | bool save_roomname_to_file(const std::string& langcode, bool custom_le...
function save_roomname_explanation_to_files (line 460) | bool save_roomname_explanation_to_files(bool custom_level, int roomx, ...
function local_limits_check (line 475) | void local_limits_check(void)
function global_limits_check (line 482) | void global_limits_check(void)
function populate_testable_script_ids (line 508) | void populate_testable_script_ids(void)
function populate_cutscene_test (line 533) | bool populate_cutscene_test(const char* script_id)
FILE: desktop_version/src/LocalizationMaint.h
function namespace (line 4) | namespace loc
FILE: desktop_version/src/LocalizationStorage.cpp
type loc (line 17) | namespace loc
function load_lang_doc (line 27) | bool load_lang_doc(
function loadmeta (line 58) | static void loadmeta(LangMeta& meta, const std::string& langcode = lang)
function map_store_translation (line 122) | static void map_store_translation(Textbook* textbook, hashmap* map, co...
function form_for_count (line 144) | unsigned char form_for_count(int n)
function callback_free_map_value (line 163) | static void callback_free_map_value(void* key, size_t ksize, uintptr_t...
function resettext_custom (line 172) | static void resettext_custom(bool final_shutdown)
function unloadtext_custom (line 204) | void unloadtext_custom(void)
function resettext (line 214) | void resettext(bool final_shutdown)
function parse_max (line 266) | bool parse_max(const char* max, unsigned short* max_w, unsigned short*...
function max_check_string (line 298) | static bool max_check_string(const char* str, const char* max)
function max_check_string_plural (line 368) | static void max_check_string_plural(unsigned char form, const char* st...
function tally_untranslated (line 411) | static void tally_untranslated(const char* tra, int* counter)
function loadtext_strings (line 425) | static void loadtext_strings(bool check_max)
function loadtext_strings_plural (line 487) | static void loadtext_strings_plural(bool check_max)
function get_level_lang_path (line 542) | static bool get_level_lang_path(bool custom_level, const char* cat, st...
function loadtext_cutscenes (line 611) | static void loadtext_cutscenes(bool custom_level)
function loadtext_numbers (line 723) | static void loadtext_numbers(void)
function fix_room_coords (line 771) | bool fix_room_coords(bool custom_level, int* roomx, int* roomy)
function coords_to_area (line 793) | static unsigned coords_to_area(int roomx, int roomy)
function update_left_counter (line 868) | static void update_left_counter(const char* old_text, const char* new_...
function store_roomname_translation (line 889) | bool store_roomname_translation(bool custom_level, int roomx, int room...
function loadtext_roomnames (line 932) | static void loadtext_roomnames(bool custom_level, bool check_max)
function loadtext_roomnames_special (line 999) | static void loadtext_roomnames_special(bool check_max)
function loadtext_custom (line 1030) | void loadtext_custom(const char* custom_path)
function loadtext (line 1041) | void loadtext(bool check_max)
function loadlanguagelist (line 1072) | void loadlanguagelist(void)
FILE: desktop_version/src/LocalizationStorage.h
function namespace (line 20) | namespace loc
FILE: desktop_version/src/Logic.cpp
function titlelogic (line 15) | void titlelogic(void)
function maplogic (line 46) | void maplogic(void)
function gamecompletelogic (line 53) | void gamecompletelogic(void)
function gamecompletelogic2 (line 87) | void gamecompletelogic2(void)
function gotoroom_wrapper (line 126) | static void gotoroom_wrapper(const int rx, const int ry)
function gamelogic (line 131) | void gamelogic(void)
FILE: desktop_version/src/Map.cpp
function copy_short_to_int (line 1303) | static void copy_short_to_int(int* dest, const short* src, const size_t ...
function MapRenderData (line 2230) | MapRenderData mapclass::get_render_data(void)
FILE: desktop_version/src/Map.h
type MapRenderData (line 15) | struct MapRenderData
type Roomtext (line 30) | struct Roomtext
type RoomnameType (line 37) | enum RoomnameType
type Roomname (line 44) | struct Roomname
function class (line 56) | class mapclass
FILE: desktop_version/src/Maths.h
function fRandom (line 11) | float inline fRandom(void)
FILE: desktop_version/src/Music.cpp
class SoundTrack (line 85) | class SoundTrack
method SoundTrack (line 96) | SoundTrack(const char* fileName, const char* _id, bool _extra)
method LoadWAV (line 126) | void LoadWAV(const char* fileName, unsigned char* mem, const size_t le...
method LoadOGG (line 148) | void LoadOGG(const char* fileName, unsigned char* mem, const size_t le...
method Dispose (line 178) | void Dispose(void)
method Play (line 189) | void Play(void)
method Init (line 257) | static void Init(int audio_rate)
method Pause (line 282) | static void Pause(void)
method Resume (line 290) | static void Resume(void)
method Destroy (line 298) | static void Destroy(void)
method SetVolume (line 310) | static void SetVolume(int soundVolume)
method refillReserve (line 319) | static void refillReserve(FAudioVoiceCallback* callback, void* ctx)
method swapBuffers (line 344) | static void swapBuffers(FAudioVoiceCallback* callback, void* ctx)
class MusicTrack (line 86) | class MusicTrack
method MusicTrack (line 382) | MusicTrack(SDL_RWops *rw)
method Dispose (line 422) | void Dispose(void)
method Play (line 434) | bool Play(bool loop)
method Halt (line 476) | static void Halt(void)
method IsHalted (line 486) | static bool IsHalted(void)
method Pause (line 491) | static void Pause(void)
method IsPaused (line 500) | static bool IsPaused(void)
method Resume (line 505) | static void Resume(void)
method SetVolume (line 514) | static void SetVolume(int controlVolume)
method refillReserve (line 542) | static void refillReserve(FAudioVoiceCallback* callback, void* ctx)
method swapBuffers (line 589) | static void swapBuffers(FAudioVoiceCallback* callback, void* ctx)
method parseComments (line 599) | static void parseComments(
method _Mix_ParseTime (line 669) | static int _Mix_ParseTime(char* time, const long samplerate_hz)
class SoundTrack (line 93) | class SoundTrack
method SoundTrack (line 96) | SoundTrack(const char* fileName, const char* _id, bool _extra)
method LoadWAV (line 126) | void LoadWAV(const char* fileName, unsigned char* mem, const size_t le...
method LoadOGG (line 148) | void LoadOGG(const char* fileName, unsigned char* mem, const size_t le...
method Dispose (line 178) | void Dispose(void)
method Play (line 189) | void Play(void)
method Init (line 257) | static void Init(int audio_rate)
method Pause (line 282) | static void Pause(void)
method Resume (line 290) | static void Resume(void)
method Destroy (line 298) | static void Destroy(void)
method SetVolume (line 310) | static void SetVolume(int soundVolume)
method refillReserve (line 319) | static void refillReserve(FAudioVoiceCallback* callback, void* ctx)
method swapBuffers (line 344) | static void swapBuffers(FAudioVoiceCallback* callback, void* ctx)
class MusicTrack (line 379) | class MusicTrack
method MusicTrack (line 382) | MusicTrack(SDL_RWops *rw)
method Dispose (line 422) | void Dispose(void)
method Play (line 434) | bool Play(bool loop)
method Halt (line 476) | static void Halt(void)
method IsHalted (line 486) | static bool IsHalted(void)
method Pause (line 491) | static void Pause(void)
method IsPaused (line 500) | static bool IsPaused(void)
method Resume (line 505) | static void Resume(void)
method SetVolume (line 514) | static void SetVolume(int controlVolume)
method refillReserve (line 542) | static void refillReserve(FAudioVoiceCallback* callback, void* ctx)
method swapBuffers (line 589) | static void swapBuffers(FAudioVoiceCallback* callback, void* ctx)
method parseComments (line 599) | static void parseComments(
method _Mix_ParseTime (line 669) | static int _Mix_ParseTime(char* time, const long samplerate_hz)
function add_builtin_sound (line 739) | static void add_builtin_sound(const char* id)
type FadeState (line 1122) | struct FadeState
type FadeState (line 1130) | struct FadeState
type FadeCode (line 1132) | enum FadeCode
function processmusicfade (line 1138) | static enum FadeCode processmusicfade(struct FadeState* state, int* volume)
type FadeCode (line 1210) | enum FadeCode
type FadeCode (line 1219) | enum FadeCode
FILE: desktop_version/src/Music.h
function class (line 66) | class musicclass
FILE: desktop_version/src/Network.c
type NetworkBackend (line 40) | typedef struct NetworkBackend
function NETWORK_init (line 53) | int NETWORK_init(void)
function NETWORK_shutdown (line 80) | void NETWORK_shutdown(void)
function NETWORK_update (line 92) | void NETWORK_update(void)
function NETWORK_unlockAchievement (line 104) | void NETWORK_unlockAchievement(const char *name)
FILE: desktop_version/src/Otherlevel.h
function class (line 4) | class otherlevelclass
FILE: desktop_version/src/Render.cpp
function drawslowdowntext (line 35) | static inline void drawslowdowntext(const int y)
function slider_get (line 54) | static void slider_get(char* buffer, size_t buffer_len, int position, in...
function volumesliderrender (line 89) | static void volumesliderrender(void)
function drawglitchrunnertext (line 125) | static void inline drawglitchrunnertext(const int y)
type Game::Summary (line 1402) | struct Game::Summary
function titlerender (line 1938) | void titlerender(void)
function gamecompleterender (line 1998) | void gamecompleterender(void)
function gamecompleterender2 (line 2248) | void gamecompleterender2(void)
function mode_indicator_text (line 2297) | static void mode_indicator_text(const int alpha)
function gamerender (line 2383) | void gamerender(void)
function draw_roomname_menu (line 2840) | static void draw_roomname_menu(void)
function rendermap (line 2862) | static void rendermap(void)
function rendermapfog (line 2889) | static void rendermapfog(void)
function rendermaplegend (line 2912) | static void rendermaplegend(void)
function rendermapcursor (line 2952) | static void rendermapcursor(const bool flashing)
function maprender (line 2996) | void maprender(void)
function teleporterrender (line 3552) | void teleporterrender(void)
FILE: desktop_version/src/RenderFixed.cpp
function titleupdatetextcol (line 11) | static inline void titleupdatetextcol(void)
function tick_skip_message_timer (line 24) | static inline void tick_skip_message_timer(void)
function gamerenderfixed (line 39) | void gamerenderfixed(void)
function titlerenderfixed (line 175) | void titlerenderfixed(void)
function maprenderfixed (line 203) | void maprenderfixed(void)
function teleporterrenderfixed (line 267) | void teleporterrenderfixed(void)
function gamecompleterenderfixed (line 274) | void gamecompleterenderfixed(void)
function gamecompleterenderfixed2 (line 283) | void gamecompleterenderfixed2(void)
FILE: desktop_version/src/RoomnameTranslator.cpp
type roomname_translator (line 18) | namespace roomname_translator
function set_enabled (line 28) | void set_enabled(bool value)
function is_pausing (line 34) | bool is_pausing(void)
function print_explanation (line 39) | static void print_explanation(const char* explanation)
function overlay_render (line 53) | void overlay_render(bool* force_roomname_hidden, bool* roomname_untran...
function key_pressed_once (line 240) | static bool key_pressed_once(SDL_Keycode keyc, bool* held)
function save_explanation (line 258) | static void save_explanation(const char* explanation, const char* succ...
function save_translation (line 278) | static void save_translation(const char* translation)
function overlay_input (line 310) | bool overlay_input(void)
FILE: desktop_version/src/RoomnameTranslator.h
function namespace (line 6) | namespace roomname_translator
FILE: desktop_version/src/SDL_uikit_main.c
function main (line 15) | int main(int argc, char *argv[])
FILE: desktop_version/src/Screen.cpp
function ScreenSettings_default (line 20) | void ScreenSettings_default(struct ScreenSettings* _this)
type ScreenSettings (line 32) | struct ScreenSettings
type ScreenSettings (line 98) | struct ScreenSettings
function constrain_to_desktop (line 182) | static void constrain_to_desktop(int display_index, int* width, int* hei...
FILE: desktop_version/src/Screen.h
function class (line 8) | class Screen
FILE: desktop_version/src/ScreenSettings.h
type ScreenSettings (line 12) | struct ScreenSettings
type ScreenSettings (line 24) | struct ScreenSettings
FILE: desktop_version/src/Script.cpp
function getcolorfromname (line 136) | static int getcolorfromname(std::string name)
function getcrewmanfromname (line 154) | static int getcrewmanfromname(std::string name)
function foundlab_textbox1 (line 166) | static void foundlab_textbox1(textboxclass* THIS)
function foundlab_textbox2 (line 176) | static void foundlab_textbox2(textboxclass* THIS)
function gotoerrorloadinglevel (line 2693) | static void gotoerrorloadinglevel(void)
type StartMode (line 2713) | enum StartMode
FILE: desktop_version/src/Script.h
type Script (line 19) | struct Script
type StartMode (line 27) | enum StartMode
function class (line 66) | class scriptclass
FILE: desktop_version/src/Spacestation2.h
function class (line 4) | class spacestation2class
FILE: desktop_version/src/SteamNetwork.c
type ISteamClient (line 31) | struct ISteamClient
type ISteamUserStats (line 32) | struct ISteamUserStats
type ISteamScreenshots (line 33) | struct ISteamScreenshots
type CallbackMsg_t (line 34) | struct CallbackMsg_t
type SteamAPICallCompleted_t (line 41) | struct SteamAPICallCompleted_t
type ISteamUserStats (line 100) | struct ISteamUserStats
type ISteamScreenshots (line 101) | struct ISteamScreenshots
function ClearPointers (line 109) | static void ClearPointers(void)
function run_screenshot (line 119) | static void run_screenshot()
function STEAM_init (line 154) | int32_t STEAM_init(void)
function STEAM_shutdown (line 228) | void STEAM_shutdown(void)
function STEAM_update (line 237) | void STEAM_update(void)
function STEAM_unlockAchievement (line 257) | void STEAM_unlockAchievement(const char *name)
FILE: desktop_version/src/Textbook.c
function textbook_init (line 8) | void textbook_init(Textbook* textbook)
function textbook_clear (line 14) | void textbook_clear(Textbook* textbook)
function textbook_set_protected (line 28) | void textbook_set_protected(Textbook* textbook, bool protect)
FILE: desktop_version/src/Textbook.h
type Textbook (line 17) | typedef struct _Textbook
FILE: desktop_version/src/Textbox.h
type TextboxCrewmatePosition (line 10) | struct TextboxCrewmatePosition
type TextboxOriginalContext (line 20) | struct TextboxOriginalContext
type TextboxSpacing (line 30) | struct TextboxSpacing
type TextboxSprite (line 38) | struct TextboxSprite
type TextboxImage (line 46) | enum TextboxImage
type TextboxTranslate (line 53) | enum TextboxTranslate
function class (line 63) | class textboxclass
FILE: desktop_version/src/ThirdPartyDeps.c
function lodepng_free (line 17) | void lodepng_free(void* ptr)
FILE: desktop_version/src/Tower.h
function class (line 4) | class towerclass
FILE: desktop_version/src/TowerBG.h
type TowerBG (line 6) | struct TowerBG
FILE: desktop_version/src/UTF8.c
function is_illegal (line 10) | static inline bool is_illegal(uint32_t codepoint)
function UTF8_peek_next (line 15) | uint32_t UTF8_peek_next(const char* s_str, uint8_t* codepoint_nbytes)
function UTF8_next (line 111) | uint32_t UTF8_next(const char** p_str)
function UTF8_encoding (line 134) | UTF8_encoding UTF8_encode(uint32_t codepoint)
function UTF8_total_codepoints (line 177) | size_t UTF8_total_codepoints(const char* str)
function UTF8_backspace (line 187) | size_t UTF8_backspace(const char* str, size_t len)
FILE: desktop_version/src/UTF8.h
type UTF8_encoding (line 13) | typedef struct
FILE: desktop_version/src/Unreachable.h
function VVV_unreachable (line 6) | void VVV_unreachable(void)
FILE: desktop_version/src/UtilityClass.cpp
function ss_toi (line 12) | int ss_toi(const std::string& str)
function next_split (line 47) | bool next_split(
function next_split_s (line 79) | bool next_split_s(
function is_number (line 236) | bool is_number(const char* str)
function is_positive_num (line 259) | bool is_positive_num(const char* str, const bool hex)
function endsWith (line 287) | bool endsWith(const char* str, const char* suffix)
function VVV_fillstring (line 300) | void VVV_fillstring(
function _VVV_between (line 308) | void _VVV_between(
FILE: desktop_version/src/UtilityClass.h
function class (line 95) | class UtilityClass
FILE: desktop_version/src/VFormat.c
function is_whitespace (line 12) | static inline bool is_whitespace(char ch)
function trim_whitespace (line 17) | static inline void trim_whitespace(const char** string, size_t* bytes)
function vformat_button (line 32) | int vformat_button(ActionSet actionset, int action)
function vformat_unbutton (line 39) | static void vformat_unbutton(ActionSet* actionset, Action* action, const...
function call_with_button (line 46) | static inline void call_with_button(format_callback callback, void* user...
function call_with_upper (line 64) | static inline void call_with_upper(format_callback callback, void* userd...
function vformat_cb_valist (line 82) | void vformat_cb_valist(
function vformat_cb (line 342) | void vformat_cb(
type buffer_info (line 362) | typedef struct _buffer_info
function callback_buffer_append (line 369) | static void callback_buffer_append(void* userdata, const char* string, s...
function vformat_buf_valist (line 387) | size_t vformat_buf_valist(
function vformat_buf (line 417) | size_t vformat_buf(
FILE: desktop_version/src/Vlogging.c
function vlog_init (line 44) | void vlog_init(void)
function vlog_toggle_output (line 52) | void vlog_toggle_output(const int enable_output)
function vlog_toggle_color (line 57) | void vlog_toggle_color(const int enable_color)
function vlog_toggle_debug (line 62) | void vlog_toggle_debug(const int enable_debug)
function vlog_toggle_info (line 67) | void vlog_toggle_info(const int enable_info)
function vlog_toggle_warn (line 72) | void vlog_toggle_warn(const int enable_warn)
function vlog_toggle_error (line 77) | void vlog_toggle_error(const int enable_error)
function vlog_debug (line 82) | void vlog_debug(const char* text, ...)
function vlog_info (line 109) | void vlog_info(const char* text, ...)
function vlog_warn (line 136) | void vlog_warn(const char* text, ...)
function vlog_error (line 163) | void vlog_error(const char* text, ...)
function vlog_open_console (line 191) | void vlog_open_console(void)
function check_color_support (line 243) | static void check_color_support(void)
FILE: desktop_version/src/WarpClass.h
function class (line 4) | class warpclass
FILE: desktop_version/src/XMLUtils.cpp
type xml (line 4) | namespace xml
FILE: desktop_version/src/XMLUtils.h
function namespace (line 2) | namespace tinyxml2
function namespace (line 11) | namespace xml
FILE: desktop_version/src/Xoshiro.c
function rotl (line 7) | static uint32_t rotl(const uint32_t x, const int k)
function splitmix32 (line 14) | static uint32_t splitmix32(uint32_t* x)
function seed (line 22) | static void seed(
function xoshiro_next (line 34) | uint32_t xoshiro_next(void)
function xoshiro_seed (line 54) | void xoshiro_seed(uint32_t s)
function xoshiro_rand (line 65) | float xoshiro_rand(void)
FILE: desktop_version/src/main.cpp
type FuncType (line 75) | enum FuncType
type ImplFunc (line 83) | struct ImplFunc
type FuncType (line 85) | enum FuncType
function runscript (line 89) | static void runscript(void)
function teleportermodeinput (line 94) | static void teleportermodeinput(void)
function flipmodeoff (line 107) | static void flipmodeoff(void)
type ImplFunc (line 115) | struct ImplFunc
type FuncType (line 85) | enum FuncType
type IndexCode (line 201) | enum IndexCode
type ImplFunc (line 207) | struct ImplFunc
type FuncType (line 85) | enum FuncType
function increment_gamestate_func_index (line 211) | static enum IndexCode increment_gamestate_func_index(void)
type ImplFunc (line 238) | struct ImplFunc
type FuncType (line 85) | enum FuncType
type ImplFunc (line 248) | struct ImplFunc
type FuncType (line 85) | enum FuncType
function increment_unfocused_func_index (line 252) | static enum IndexCode increment_unfocused_func_index(void)
type ImplFunc (line 266) | struct ImplFunc
type FuncType (line 85) | enum FuncType
type IndexCode (line 269) | enum IndexCode
type LoopCode (line 271) | enum LoopCode
function loop_assign_active_funcs (line 277) | static enum LoopCode loop_assign_active_funcs(void)
function loop_run_active_funcs (line 296) | static enum LoopCode loop_run_active_funcs(void)
type LoopCode (line 327) | enum LoopCode
type LoopCode (line 328) | enum LoopCode
type LoopCode (line 330) | enum LoopCode
function fixedloop (line 338) | static void inline fixedloop(void)
function emscriptenloop (line 358) | static void emscriptenloop(void)
function keep_console_open (line 366) | static void keep_console_open(const bool open_console)
function main (line 383) | int main(int argc, char *argv[])
type ScreenSettings (line 680) | struct ScreenSettings
function cleanup (line 894) | static void cleanup(void)
function SDL_NORETURN (line 916) | SDL_NORETURN void VVV_exit(const int exit_code)
function deltaloop (line 922) | static void inline deltaloop(void)
function loop_begin (line 974) | static enum LoopCode loop_begin(void)
function unfocused_run (line 987) | static void unfocused_run(void)
function focused_begin (line 1018) | static void focused_begin(void)
function focused_end (line 1023) | static void focused_end(void)
function loop_end (line 1030) | static enum LoopCode loop_end(void)
FILE: desktop_version/src/preloader.cpp
function preloaderinput (line 22) | void preloaderinput(void)
function preloaderrenderfixed (line 37) | void preloaderrenderfixed(void)
function preloaderrender (line 60) | void preloaderrender(void)
FILE: tools/editors/Final Level Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/Final Level Editor/tower1/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 38) | string its(int t, int s=0){
function sti (line 61) | int sti(string s){
class entities (line 68) | class entities{
function addentity (line 77) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 90) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 102) | void copyentity(int a, int b){
function removeentity (line 114) | void removeentity(int t){
function entat (line 123) | int entat(int xp, int yp){
function entclear (line 131) | bool entclear(int xp, int yp){
function savemapsimple (line 138) | void savemapsimple(){
function savemap (line 171) | void savemap(){
function loadmap (line 288) | bool loadmap(int x, int y){
function drawtile (line 334) | void drawtile(int xp, int yp, int t){
function print (line 338) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 348) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 360) | void copymap(){
function mapput (line 368) | void mapput(int x, int y, int t){
function oat (line 374) | int oat(int x, int y){
function at (line 385) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function oldmatch (line 425) | int oldmatch(int x, int y, int t){
function inbox (line 447) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 452) | int getbackground(){
function antiedge (line 472) | int antiedge(int x, int y, int t){
function edge (line 490) | int edge(int x, int y, int t){
function change_fullscreen (line 513) | void change_fullscreen(){
function change_windowed (line 526) | void change_windowed(){
function main (line 540) | int main(){
FILE: tools/editors/Final Level Editor/tower2/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 38) | string its(int t, int s=0){
function sti (line 61) | int sti(string s){
class entities (line 68) | class entities{
function addentity (line 77) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 90) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 102) | void copyentity(int a, int b){
function removeentity (line 114) | void removeentity(int t){
function entat (line 123) | int entat(int xp, int yp){
function entclear (line 131) | bool entclear(int xp, int yp){
function savemapsimple (line 138) | void savemapsimple(){
function savemap (line 171) | void savemap(){
function loadmap (line 288) | bool loadmap(int x, int y){
function drawtile (line 334) | void drawtile(int xp, int yp, int t){
function print (line 338) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 348) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 360) | void copymap(){
function mapput (line 368) | void mapput(int x, int y, int t){
function oat (line 374) | int oat(int x, int y){
function at (line 385) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function oldmatch (line 425) | int oldmatch(int x, int y, int t){
function inbox (line 447) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 452) | int getbackground(){
function antiedge (line 472) | int antiedge(int x, int y, int t){
function edge (line 490) | int edge(int x, int y, int t){
function change_fullscreen (line 513) | void change_fullscreen(){
function change_windowed (line 526) | void change_windowed(){
function main (line 540) | int main(){
FILE: tools/editors/Lab Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/Level Mapping Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function getgrid (line 27) | bool getgrid(int x, int y, int u, int d, int l, int r){
function string (line 40) | string its(int t, int s=0){
function sti (line 63) | int sti(string s){
function savemapsimple (line 70) | void savemapsimple(){
function savemap (line 106) | void savemap(){
function loadmap (line 145) | bool loadmap(){
function drawtile (line 185) | void drawtile(int xp, int yp, int t){
function print (line 189) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function main (line 201) | int main(){
FILE: tools/editors/Original Space Station Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/Other Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/Screenshot Outputting Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 39) | string its(int t, int s=0){
function sti (line 62) | int sti(string s){
class entities (line 69) | class entities{
function addentity (line 78) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 91) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 103) | void copyentity(int a, int b){
function removeentity (line 115) | void removeentity(int t){
function entat (line 124) | int entat(int xp, int yp){
function entclear (line 132) | bool entclear(int xp, int yp){
function savemapsimple (line 139) | void savemapsimple(){
function savemap (line 172) | void savemap(){
function loadmap (line 308) | bool loadmap(int x, int y){
function drawtile (line 355) | void drawtile(int xp, int yp, int t){
function print (line 359) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 369) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 381) | void copymap(){
function mapput (line 389) | void mapput(int x, int y, int t){
function at (line 395) | int at(int x, int y){
function match (line 406) | int match(int x, int y, int t){
function inbox (line 428) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 433) | int getbackground(){
function antiedge (line 453) | int antiedge(int x, int y, int t){
function edge (line 468) | int edge(int x, int y, int t){
function change_fullscreen (line 502) | void change_fullscreen(){
function change_windowed (line 515) | void change_windowed(){
function savescreen (line 529) | void savescreen(BITMAP* bmp){
function main (line 537) | int main(){
FILE: tools/editors/Space Station 2 Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 333) | bool loadmap(int x, int y){
function drawtile (line 379) | void drawtile(int xp, int yp, int t){
function print (line 383) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 393) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 405) | void copymap(){
function mapput (line 413) | void mapput(int x, int y, int t){
function at (line 419) | int at(int x, int y){
function match (line 430) | int match(int x, int y, int t){
function inbox (line 452) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 457) | int getbackground(){
function antiedge (line 477) | int antiedge(int x, int y, int t){
function edge (line 492) | int edge(int x, int y, int t){
function change_fullscreen (line 530) | void change_fullscreen(){
function change_windowed (line 543) | void change_windowed(){
function main (line 557) | int main(){
FILE: tools/editors/Tower Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 38) | string its(int t, int s=0){
function sti (line 61) | int sti(string s){
class entities (line 68) | class entities{
function addentity (line 77) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 90) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 102) | void copyentity(int a, int b){
function removeentity (line 114) | void removeentity(int t){
function entat (line 123) | int entat(int xp, int yp){
function entclear (line 131) | bool entclear(int xp, int yp){
function savemapsimple (line 138) | void savemapsimple(){
function savemap (line 171) | void savemap(){
function loadmap (line 288) | bool loadmap(int x, int y){
function drawtile (line 334) | void drawtile(int xp, int yp, int t){
function print (line 338) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 348) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 360) | void copymap(){
function mapput (line 368) | void mapput(int x, int y, int t){
function oat (line 374) | int oat(int x, int y){
function at (line 385) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function oldmatch (line 425) | int oldmatch(int x, int y, int t){
function inbox (line 447) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 452) | int getbackground(){
function antiedge (line 472) | int antiedge(int x, int y, int t){
function edge (line 490) | int edge(int x, int y, int t){
function change_fullscreen (line 513) | void change_fullscreen(){
function change_windowed (line 526) | void change_windowed(){
function main (line 540) | int main(){
FILE: tools/editors/Towerhallways Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/Warp Zone Map Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function string (line 37) | string its(int t, int s=0){
function sti (line 60) | int sti(string s){
class entities (line 67) | class entities{
function addentity (line 76) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 89) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 101) | void copyentity(int a, int b){
function removeentity (line 113) | void removeentity(int t){
function entat (line 122) | int entat(int xp, int yp){
function entclear (line 130) | bool entclear(int xp, int yp){
function savemapsimple (line 137) | void savemapsimple(){
function savemap (line 170) | void savemap(){
function loadmap (line 306) | bool loadmap(int x, int y){
function drawtile (line 352) | void drawtile(int xp, int yp, int t){
function print (line 356) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 366) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function copymap (line 378) | void copymap(){
function mapput (line 386) | void mapput(int x, int y, int t){
function at (line 392) | int at(int x, int y){
function match (line 403) | int match(int x, int y, int t){
function inbox (line 425) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 430) | int getbackground(){
function antiedge (line 450) | int antiedge(int x, int y, int t){
function edge (line 465) | int edge(int x, int y, int t){
function change_fullscreen (line 499) | void change_fullscreen(){
function change_windowed (line 512) | void change_windowed(){
function main (line 526) | int main(){
FILE: tools/editors/World Map Fork (for Eurogamer)/input.hpp
function mapeditinput (line 1) | void mapeditinput(){
function areainput (line 307) | void areainput(){
FILE: tools/editors/World Map Fork (for Eurogamer)/logic.hpp
function fillarea (line 2) | void fillarea(int x, int y, int w, int h, int t){
function initworld (line 10) | void initworld(){
function init (line 63) | void init(){
FILE: tools/editors/World Map Fork (for Eurogamer)/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function main (line 18) | int main(){
FILE: tools/editors/World Map Fork (for Eurogamer)/map.hpp
class entities (line 1) | class entities{
function addentity (line 10) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 23) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 35) | void copyentity(int a, int b){
function removeentity (line 47) | void removeentity(int t){
function entat (line 56) | int entat(int xp, int yp){
function entclear (line 64) | bool entclear(int xp, int yp){
function savemapsimple (line 71) | void savemapsimple(){
function saveareamapimport (line 105) | void saveareamapimport(){
function saveareamap (line 120) | void saveareamap(){
function existmap (line 139) | bool existmap(int x, int y){
function loadmap (line 154) | bool loadmap(int x, int y){
function supersavemap (line 238) | void supersavemap(){
function supersaveminimap (line 442) | void supersaveminimap(){
function savemap (line 487) | void savemap(){
function copymap (line 671) | void copymap(){
function mapput (line 679) | void mapput(int x, int y, int t){
function at (line 685) | int at(int x, int y){
function match (line 696) | int match(int x, int y, int t){
function inbox (line 718) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 723) | int getbackground(){
function antiedge (line 743) | int antiedge(int x, int y, int t){
function edge (line 758) | int edge(int x, int y, int t){
function drawentities (line 796) | void drawentities(){
FILE: tools/editors/World Map Fork (for Eurogamer)/misc.hpp
function string (line 33) | string its(int t, int s=0){
function sti (line 56) | int sti(string s){
function drawtile (line 63) | void drawtile(int xp, int yp, int t){
function print (line 71) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 81) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function r2print (line 92) | void r2print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, b...
function change_fullscreen (line 103) | void change_fullscreen(){
function change_windowed (line 116) | void change_windowed(){
function savescreen (line 130) | void savescreen(BITMAP* bmp){
FILE: tools/editors/World Map Fork (for Eurogamer)/render.hpp
function mapeditrender (line 1) | void mapeditrender(){
function arearender (line 102) | void arearender(){
FILE: tools/editors/World Mapping Editor/input.hpp
function mapeditinput (line 1) | void mapeditinput(){
function areainput (line 307) | void areainput(){
FILE: tools/editors/World Mapping Editor/logic.hpp
function fillarea (line 2) | void fillarea(int x, int y, int w, int h, int t){
function initworld (line 10) | void initworld(){
function init (line 63) | void init(){
FILE: tools/editors/World Mapping Editor/main.cpp
function increment_speed_counter (line 9) | void increment_speed_counter(){speed_counter++;}
function main (line 18) | int main(){
FILE: tools/editors/World Mapping Editor/map.hpp
class entities (line 1) | class entities{
function addentity (line 10) | void addentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, int...
function naddentity (line 23) | void naddentity(int xp, int yp, int tp, int p1=0, int p2=0, int p3=0, in...
function copyentity (line 35) | void copyentity(int a, int b){
function removeentity (line 47) | void removeentity(int t){
function entat (line 56) | int entat(int xp, int yp){
function entclear (line 64) | bool entclear(int xp, int yp){
function savemapsimple (line 71) | void savemapsimple(){
function saveareamapimport (line 105) | void saveareamapimport(){
function saveareamap (line 120) | void saveareamap(){
function existmap (line 139) | bool existmap(int x, int y){
function loadmap (line 154) | bool loadmap(int x, int y){
function supersavemap (line 238) | void supersavemap(){
function supersaveminimap (line 442) | void supersaveminimap(){
function savemap (line 487) | void savemap(){
function copymap (line 671) | void copymap(){
function mapput (line 679) | void mapput(int x, int y, int t){
function at (line 685) | int at(int x, int y){
function match (line 696) | int match(int x, int y, int t){
function inbox (line 718) | bool inbox(int x1, int y1, int x2, int y2, int xt, int yt){
function getbackground (line 723) | int getbackground(){
function antiedge (line 743) | int antiedge(int x, int y, int t){
function edge (line 758) | int edge(int x, int y, int t){
function drawentities (line 796) | void drawentities(){
FILE: tools/editors/World Mapping Editor/misc.hpp
function string (line 33) | string its(int t, int s=0){
function sti (line 56) | int sti(string s){
function drawtile (line 63) | void drawtile(int xp, int yp, int t){
function print (line 71) | void print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, boo...
function rprint (line 81) | void rprint(BITMAP* bmp, int x, int y, string t, int r, int g, int b, bo...
function r2print (line 92) | void r2print(BITMAP* bmp, int x, int y, string t, int r, int g, int b, b...
function change_fullscreen (line 103) | void change_fullscreen(){
function change_windowed (line 116) | void change_windowed(){
function savescreen (line 130) | void savescreen(BITMAP* bmp){
FILE: tools/editors/World Mapping Editor/render.hpp
function mapeditrender (line 1) | void mapeditrender(){
function arearender (line 102) | void arearender(){
Copy disabled (too large)
Download .json
Condensed preview — 3327 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,060K chars).
[
{
"path": ".gitattributes",
"chars": 36,
"preview": "*.as linguist-language=ActionScript\n"
},
{
"path": ".github/pull_request_template.md",
"chars": 1525,
"preview": "## The Basics\n\nThanks for making a pull request! Before making a pull request, we have some\nthings for you to read throu"
},
{
"path": ".github/workflows/android.yml",
"chars": 2654,
"preview": "name: CI (Android)\n\n# Only trigger workflow when Android-specific code could have changed.\n# This includes C/C++ files t"
},
{
"path": ".github/workflows/ci.yml",
"chars": 5083,
"preview": "name: CI\n\n# Only trigger workflow when code changes, or this file is changed.\n# Android has a different workflow and dif"
},
{
"path": ".gitmodules",
"chars": 640,
"preview": "[submodule \"third_party/lodepng\"]\n\tpath = third_party/lodepng\n\turl = https://github.com/lvandeve/lodepng\n[submodule \"thi"
},
{
"path": "LICENSE.md",
"chars": 2743,
"preview": "VVVVVV's source code is made available under a custom license. Basically, you can compile yourself a copy, for free, for"
},
{
"path": "License exceptions.md",
"chars": 5926,
"preview": "VVVVVV's source code is made available under a [custom license](LICENSE.md), which states that you must not distribute a"
},
{
"path": "README.md",
"chars": 1648,
"preview": "\r\n\r\nThis is the source code to VVVVVV, the 2010 indie game by [Terry Cavanagh](http://distract"
},
{
"path": "desktop_version/.dockerignore",
"chars": 15,
"preview": "**\n!Dockerfile\n"
},
{
"path": "desktop_version/.gitignore",
"chars": 210,
"preview": "# Build objects\nbuild/\nflibitBuild/\nCMakeCache.txt\nCMakeFiles/\ncmake_install.cmake\nMakefile\nVVVVVV.exe\nVVVVVV\n*.a\n*.gch\n"
},
{
"path": "desktop_version/AppIcon.xcassets/AppIcon.appiconset/Contents.json",
"chars": 211,
"preview": "{\n \"images\" : [\n {\n \"filename\" : \"AppIcon.png\",\n \"idiom\" : \"universal\",\n \"platform\" : \"ios\",\n \"s"
},
{
"path": "desktop_version/AppIcon.xcassets/Contents.json",
"chars": 63,
"preview": "{\n \"info\" : {\n \"author\" : \"xcode\",\n \"version\" : 1\n }\n}\n"
},
{
"path": "desktop_version/CMakeLists.txt",
"chars": 17974,
"preview": "# CMake File for VVVVVV\n# Written by Ethan \"flibitijibibo\" Lee\n\ncmake_minimum_required(VERSION 2.8.12...3.5)\n\n# CMake Op"
},
{
"path": "desktop_version/CONTRIBUTORS.txt",
"chars": 1057,
"preview": "Contributors\n------------\n\n(Ordered alphabetically by first name.)\n\n* Alexandra Fox\n* AlexApps99 (@AlexApps99)\n* Allison"
},
{
"path": "desktop_version/Dockerfile",
"chars": 701,
"preview": "FROM centos:7\n\n# run first to improve caching (other things update more often than SDL2)\nWORKDIR /tmp\nRUN curl -LJO http"
},
{
"path": "desktop_version/Info.plist",
"chars": 230,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "desktop_version/README.md",
"chars": 2509,
"preview": "How to Build\n------------\nVVVVVV's official desktop versions are built with the following environments:\n\n- Windows: Visu"
},
{
"path": "desktop_version/TRANSLATORS.txt",
"chars": 1056,
"preview": "Translators\n------------\n\nArabic (Eternal Dream Arabization):\n - Montassar Ghanmi\n - Mohammed Seif Eddine Chaib\n\nCatalan"
},
{
"path": "desktop_version/VVVVVV-android/.gitignore",
"chars": 452,
"preview": "# Gradle files\n.gradle/\nbuild/\n\n# Local configuration file (sdk path, etc)\nlocal.properties\n\n# Log/OS Files\n*.log\n\n# And"
},
{
"path": "desktop_version/VVVVVV-android/README.md",
"chars": 1591,
"preview": "Android port for C++ version\n============================\n\nThis is _not_ the other existing mobile version (which is a f"
},
{
"path": "desktop_version/VVVVVV-android/app/build.gradle",
"chars": 3137,
"preview": "def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');\ndef buildAsApplication = !buildAsLibrary\nif (buildAsApplic"
},
{
"path": "desktop_version/VVVVVV-android/app/jni/Android.mk",
"chars": 37,
"preview": "include $(call all-subdir-makefiles)\n"
},
{
"path": "desktop_version/VVVVVV-android/app/jni/Application.mk",
"chars": 265,
"preview": "\n# Uncomment this if you're using STL in your project\n# You can find more information here:\n# https://developer.android."
},
{
"path": "desktop_version/VVVVVV-android/app/jni/CMakeLists.txt",
"chars": 344,
"preview": "cmake_minimum_required(VERSION 3.6)\n\nproject(VVVVVV_android)\n\n# armeabi-v7a requires cpufeatures library\n# include(Andro"
},
{
"path": "desktop_version/VVVVVV-android/app/proguard-rules.pro",
"chars": 636,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in [s"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/AndroidManifest.xml",
"chars": 4723,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Replace com.test.game with the identifier of your game below, e.g.\n com."
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/BaseDirProvider.java",
"chars": 3108,
"preview": "package com.distractionware.vvvvvv;\n\nimport android.database.Cursor;\nimport android.database.MatrixCursor;\nimport androi"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/FileSystemProvider.java",
"chars": 35547,
"preview": "/*\n * Copyright (C) 2017 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/java/com/distractionware/vvvvvv/VVVVVV.java",
"chars": 447,
"preview": "package com.distractionware.vvvvvv;\n\nimport org.libsdl.app.SDLActivity;\n\npublic class VVVVVV extends SDLActivity {\n @"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 265,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 265,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/values/colors.xml",
"chars": 208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"colorPrimary\">#3F51B5</color>\n <color name=\"color"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/values/ic_launcher_background.xml",
"chars": 120,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">#000000</color>\n</resources>"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/values/strings.xml",
"chars": 69,
"preview": "<resources>\n <string name=\"app_name\">VVVVVV</string>\n</resources>\n"
},
{
"path": "desktop_version/VVVVVV-android/app/src/main/res/values/styles.xml",
"chars": 197,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"android:Theme.Holo.Light.DarkAction"
},
{
"path": "desktop_version/VVVVVV-android/build.gradle",
"chars": 563,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n r"
},
{
"path": "desktop_version/VVVVVV-android/gradle/wrapper/gradle-wrapper.properties",
"chars": 235,
"preview": "#Thu Nov 11 18:20:34 PST 2021\ndistributionBase=GRADLE_USER_HOME\ndistributionUrl=https\\://services.gradle.org/distributio"
},
{
"path": "desktop_version/VVVVVV-android/gradle.properties",
"chars": 808,
"preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
},
{
"path": "desktop_version/VVVVVV-android/gradlew",
"chars": 4975,
"preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n## Gradle start "
},
{
"path": "desktop_version/VVVVVV-android/gradlew.bat",
"chars": 2404,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "desktop_version/VVVVVV-android/settings.gradle",
"chars": 15,
"preview": "include ':app'\n"
},
{
"path": "desktop_version/fixupMac.sh",
"chars": 214,
"preview": "#!/bin/bash\n\n# flibit has this solely for convenience when cleaning up Mac binaries.\n\ninstall_name_tool -change /usr/loc"
},
{
"path": "desktop_version/fonts/README.txt",
"chars": 3873,
"preview": "=== I N T R O D U C T I O N ===\n\nThis file will explain the font format.\n\nIf you need a font (like a TTF) converted into"
},
{
"path": "desktop_version/fonts/buttons_10x10.fontmeta",
"chars": 330,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <type>buttons</type>\n <width>10</width>\n <height>10</he"
},
{
"path": "desktop_version/fonts/buttons_12x12.fontmeta",
"chars": 330,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <type>buttons</type>\n <width>12</width>\n <height>12</he"
},
{
"path": "desktop_version/fonts/buttons_8x8.fontmeta",
"chars": 328,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <type>buttons</type>\n <width>8</width>\n <height>8</heig"
},
{
"path": "desktop_version/fonts/font.fontmeta",
"chars": 4600,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>english/…</display_name>\n <width>8</width>\n "
},
{
"path": "desktop_version/fonts/font_ar.fontmeta",
"chars": 664,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>العربية/فارسی</display_name>\n <width>8</widt"
},
{
"path": "desktop_version/fonts/font_ja.fontmeta",
"chars": 187485,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>日本語</display_name>\n <width>8</width>\n <he"
},
{
"path": "desktop_version/fonts/font_ko.fontmeta",
"chars": 188513,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>한국어</display_name>\n <width>10</width>\n <h"
},
{
"path": "desktop_version/fonts/font_ko_license.txt",
"chars": 4408,
"preview": "This is a Modified Version.\nOriginal Version: Copyright (c) 2019-2023 Minseo Lee (itoupluk427@gmail.com)\n\nThis Font Soft"
},
{
"path": "desktop_version/fonts/font_sc.fontmeta",
"chars": 148504,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>简体中文</display_name>\n <width>12</width>\n <"
},
{
"path": "desktop_version/fonts/font_sc_tc_license.txt",
"chars": 18574,
"preview": "This is a Modified Version.\nOriginal Version: Copyright (c) 2022, TakWolf (https://takwolf.com),\nwith Reserved Font Name"
},
{
"path": "desktop_version/fonts/font_tc.fontmeta",
"chars": 148504,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<font_metadata>\n <display_name>繁體中文</display_name>\n <width>12</width>\n <"
},
{
"path": "desktop_version/icon.rc",
"chars": 20,
"preview": "AAA ICON \"icon.ico\"\n"
},
{
"path": "desktop_version/lang/README-programmers.txt",
"chars": 9147,
"preview": "=== I N T R O D U C T I O N ===\n\nThis file will explain what you need to know when maintaining translations of VVVVVV (l"
},
{
"path": "desktop_version/lang/README-translators.txt",
"chars": 27249,
"preview": "=== I N T R O D U C T I O N ===\n\nThis file will explain everything you need to know when making translations of VVVVVV.\n"
},
{
"path": "desktop_version/lang/ar/cutscenes.xml",
"chars": 87906,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/ar/graphics/spritesmask.xml",
"chars": 397,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"8\" y=\"1\" w=\"2\"/> <!-- Ch"
},
{
"path": "desktop_version/lang/ar/meta.xml",
"chars": 1559,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/ar/numbers.xml",
"chars": 11552,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/ar/roomnames.xml",
"chars": 39276,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/ar/roomnames_special.xml",
"chars": 7787,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/ar/strings.xml",
"chars": 120604,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ar/strings_plural.xml",
"chars": 4443,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ca/cutscenes.xml",
"chars": 91754,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/ca/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/ca/meta.xml",
"chars": 1564,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/ca/numbers.xml",
"chars": 8799,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/ca/roomnames.xml",
"chars": 40255,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/ca/roomnames_special.xml",
"chars": 7924,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/ca/strings.xml",
"chars": 115595,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ca/strings_plural.xml",
"chars": 2947,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/cy/cutscenes.xml",
"chars": 95138,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/cy/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/cy/meta.xml",
"chars": 1556,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/cy/numbers.xml",
"chars": 8923,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/cy/roomnames.xml",
"chars": 39819,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/cy/roomnames_special.xml",
"chars": 7792,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/cy/strings.xml",
"chars": 116010,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/cy/strings_plural.xml",
"chars": 3033,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/de/cutscenes.xml",
"chars": 94964,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/de/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/de/meta.xml",
"chars": 1548,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/de/numbers.xml",
"chars": 8988,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/de/roomnames.xml",
"chars": 39823,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/de/roomnames_special.xml",
"chars": 7777,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/de/strings.xml",
"chars": 114850,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/de/strings_plural.xml",
"chars": 2955,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/en/cutscenes.xml",
"chars": 68846,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/en/meta.xml",
"chars": 1510,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/en/numbers.xml",
"chars": 7790,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/en/roomnames.xml",
"chars": 36534,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/en/roomnames_special.xml",
"chars": 6787,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/en/strings.xml",
"chars": 93758,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/en/strings_plural.xml",
"chars": 2431,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/eo/cutscenes.xml",
"chars": 90414,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/eo/graphics/spritesmask.xml",
"chars": 397,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"8\" y=\"1\" w=\"2\"/> <!-- Ch"
},
{
"path": "desktop_version/lang/eo/meta.xml",
"chars": 1549,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/eo/numbers.xml",
"chars": 8658,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/eo/roomnames.xml",
"chars": 39424,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/eo/roomnames_special.xml",
"chars": 7689,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/eo/strings.xml",
"chars": 113404,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/eo/strings_plural.xml",
"chars": 2953,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es/cutscenes.xml",
"chars": 92496,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/es/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/es/meta.xml",
"chars": 1583,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/es/numbers.xml",
"chars": 11798,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/es/roomnames.xml",
"chars": 39884,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/es/roomnames_special.xml",
"chars": 7855,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/es/strings.xml",
"chars": 115688,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es/strings_plural.xml",
"chars": 2889,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es_419/cutscenes.xml",
"chars": 92281,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/es_419/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/es_419/meta.xml",
"chars": 1590,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/es_419/numbers.xml",
"chars": 11798,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/es_419/roomnames.xml",
"chars": 39899,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/es_419/roomnames_special.xml",
"chars": 7871,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/es_419/strings.xml",
"chars": 115774,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es_419/strings_plural.xml",
"chars": 2871,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es_AR/cutscenes.xml",
"chars": 92325,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/es_AR/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/es_AR/meta.xml",
"chars": 1587,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/es_AR/numbers.xml",
"chars": 11798,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/es_AR/roomnames.xml",
"chars": 39915,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/es_AR/roomnames_special.xml",
"chars": 7876,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/es_AR/strings.xml",
"chars": 115850,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/es_AR/strings_plural.xml",
"chars": 2859,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/fa/cutscenes.xml",
"chars": 86841,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/fa/graphics/spritesmask.xml",
"chars": 397,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"8\" y=\"1\" w=\"2\"/> <!-- Ch"
},
{
"path": "desktop_version/lang/fa/meta.xml",
"chars": 1573,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/fa/numbers.xml",
"chars": 8569,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/fa/roomnames.xml",
"chars": 38865,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/fa/roomnames_special.xml",
"chars": 7519,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/fa/strings.xml",
"chars": 120487,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/fa/strings_plural.xml",
"chars": 3051,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/fr/cutscenes.xml",
"chars": 98918,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/fr/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/fr/meta.xml",
"chars": 1554,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/fr/numbers.xml",
"chars": 9006,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/fr/roomnames.xml",
"chars": 39949,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/fr/roomnames_special.xml",
"chars": 7962,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/fr/strings.xml",
"chars": 116840,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/fr/strings_plural.xml",
"chars": 2973,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ga/cutscenes.xml",
"chars": 94181,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/ga/graphics/spritesmask.xml",
"chars": 351,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"8\" y=\"1\" w=\"2\"/> <!-- Ch"
},
{
"path": "desktop_version/lang/ga/meta.xml",
"chars": 1570,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/ga/numbers.xml",
"chars": 7790,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/ga/roomnames.xml",
"chars": 39679,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/ga/roomnames_special.xml",
"chars": 7794,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/ga/strings.xml",
"chars": 116513,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ga/strings_plural.xml",
"chars": 5356,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/it/cutscenes.xml",
"chars": 91404,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/it/graphics/spritesmask.xml",
"chars": 298,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"3\" w=\"4\"/> <!-- YE"
},
{
"path": "desktop_version/lang/it/meta.xml",
"chars": 1582,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/it/numbers.xml",
"chars": 8783,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/it/roomnames.xml",
"chars": 39798,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/it/roomnames_special.xml",
"chars": 7866,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/it/strings.xml",
"chars": 115143,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/it/strings_plural.xml",
"chars": 2938,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ja/cutscenes.xml",
"chars": 81933,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/ja/graphics/spritesmask.xml",
"chars": 342,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\r\n <sprite x=\"4\" y=\"2\" w=\"4\"/> <!-- "
},
{
"path": "desktop_version/lang/ja/meta.xml",
"chars": 1531,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/ja/numbers.xml",
"chars": 7790,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/ja/roomnames.xml",
"chars": 38627,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/ja/roomnames_special.xml",
"chars": 7431,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/ja/strings.xml",
"chars": 114253,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ja/strings_plural.xml",
"chars": 2370,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ko/cutscenes.xml",
"chars": 79765,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/ko/graphics/spritesmask.xml",
"chars": 344,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"2\" w=\"4\"/> <!-- ST"
},
{
"path": "desktop_version/lang/ko/meta.xml",
"chars": 1518,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/ko/numbers.xml",
"chars": 7790,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/ko/roomnames.xml",
"chars": 37818,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/ko/roomnames_special.xml",
"chars": 7185,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/ko/strings.xml",
"chars": 113822,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/ko/strings_plural.xml",
"chars": 2424,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/nl/cutscenes.xml",
"chars": 93576,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/nl/graphics/spritesmask.xml",
"chars": 253,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"3\" y=\"4\"/> <!-- OB"
},
{
"path": "desktop_version/lang/nl/meta.xml",
"chars": 1557,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/nl/numbers.xml",
"chars": 11620,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/nl/roomnames.xml",
"chars": 39725,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/nl/roomnames_special.xml",
"chars": 7819,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/nl/strings.xml",
"chars": 114795,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/nl/strings_plural.xml",
"chars": 2970,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/pl/cutscenes.xml",
"chars": 91158,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/pl/graphics/spritesmask.xml",
"chars": 351,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"8\" y=\"1\" w=\"2\"/> <!-- Ch"
},
{
"path": "desktop_version/lang/pl/meta.xml",
"chars": 1547,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/pl/numbers.xml",
"chars": 9408,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/pl/roomnames.xml",
"chars": 39498,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/pl/roomnames_special.xml",
"chars": 7716,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/pl/strings.xml",
"chars": 113489,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/pl/strings_plural.xml",
"chars": 5172,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/pt_BR/cutscenes.xml",
"chars": 91708,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<cutscen"
},
{
"path": "desktop_version/lang/pt_BR/graphics/spritesmask.xml",
"chars": 344,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<spritesmask sprite_w=\"32\" sprite_h=\"32\">\n <sprite x=\"4\" y=\"2\" w=\"4\"/> <!-- ST"
},
{
"path": "desktop_version/lang/pt_BR/meta.xml",
"chars": 1590,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<langmeta>\n <active>1</active>\n\n <!-- should be lowercase because menu styl"
},
{
"path": "desktop_version/lang/pt_BR/numbers.xml",
"chars": 10595,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<numbers"
},
{
"path": "desktop_version/lang/pt_BR/roomnames.xml",
"chars": 39650,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- You can translate these in-game to get better context! See README.txt -->\n<r"
},
{
"path": "desktop_version/lang/pt_BR/roomnames_special.xml",
"chars": 7857,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<roomnam"
},
{
"path": "desktop_version/lang/pt_BR/strings.xml",
"chars": 115233,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
},
{
"path": "desktop_version/lang/pt_BR/strings_plural.xml",
"chars": 2934,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Please read README.txt for information about the language files -->\n<strings"
}
]
// ... and 3127 more files (download for full content)
About this extraction
This page contains the full source code of the TerryCavanagh/VVVVVV GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3327 files (28.2 MB), approximately 7.6M tokens, and a symbol index with 1088 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.